У меня есть координаты (широта и долгота) в документе Excel. У меня есть шейп-файл, который содержит все фигуры различных провинций Канады. Я хотел бы иметь возможность создать новое поле в Excel, чтобы классифицировать разные координаты по разным провинциям Канады. Я попробовал приведенный ниже код, но он не работает.
import fiona
import shapely.geometry
with fiona.open(r"D:\Users\Jonathan\Desktop\CRA-Project v2\Census Division\lcd_000b16a_e.shp") as fiona_collection:
shapefile_record = fiona_collection.next()
# Use Shapely to create the polygon
shape = shapely.geometry.asShape(shapefile_record['geometry'])
#print(shape)
point = shapely.geometry.Point(46.362914,-63.503809) # longitude, latitude
# Alternative: if point.within(shape)
if shape.contains(point):
print("Found shape for point.")
Обновление 1: точка = shapely.geometry.Point (46.362914, -63.503809)
Многоугольник: Ссылка
Обновление решения. Я обновляю этот пост, потому что нашел решение и, надеюсь, оно кому-то поможет!
- Если вы используете шейп-файлы, с ними связана проекция (документация)
- Изучите документацию и определите, какую проекцию она использует. Например: в Канаде это конформная коника Ламберта.
- Преобразуйте ваши широты и долготы в эквивалент проекции
- Прокрутите шейп-файл, чтобы определить, находится ли новый эквивалент широты / долготы внутри многоугольника / мультиполигона. Вы можете сделать это с помощью Python!