как назначить единицы измерениям геометрии и проекции многоугольника в python3? - PullRequest
0 голосов
/ 06 августа 2020

Я создал мультиполигон (шейп-файл) из изображения PNG. Изображение PNG изначально было в формате GeoTIFF. Геометрия моего мультиполигона - это значения нормальной оси x, y (с 0,0 в качестве начала координат). Другими словами, геометрия не широка, а длинна. См. Пример:

geometry  
0  POLYGON ((0.000 0.000, 0.000 310.000, 5.000 31...  
1  POLYGON ((160.000 0.000, 160.000 3.000, 159.00...  
2  POLYGON ((794.000 219.000, 794.000 0.000, 443....  
3  POLYGON ((555.000 451.000, 793.000 451.000, 79...  
4  POLYGON ((417.000 451.000, 555.000 451.000, 55...  
5  POLYGON ((237.000 196.000, 237.000 205.000, 23...

Я хочу спроецировать свой многоугольник в определенном c CRS и местоположении на Земле. Этот многоугольник должен соответствовать bbox и CRS исходного GeoTIFF. Для моего мультиполигона не определена CRS.

Как я могу спроецировать свой мультиполигон? Я попробовал следующее и получил ошибку: AttributeError: объект 'GeoDataFrame' не имеет атрибута 'set_crs'

import geopandas as gpd

fp = r"C:\foo\intersection_all2.shp" 

data = gpd.read_file(fp)
data['geometry'].head()


# Let's make a copy of our data
orig = data.copy()

# Reproject the data
data = data.set_crs(epsg=32618)

Я ищу решение для Python 3.7, Windows 10.

1 Ответ

1 голос
/ 28 августа 2020

он не говорит об отсутствии атрибута, поэтому установите crs в свойстве объекта, как это

gdf.crs = {"init":"epsg:4326"}

, тогда вы можете проецировать его на другое с помощью to_crs(), например

gdf.to_crs(epsg=3857)
...