Existe uma maneira fácil de transformar objetos Shapely (polígonos e poligonais) de uma projeção para outra sem precisar cavar e extrair coordenadas manualmente?
Na verdade, eu nem me importo se eles são objetos Shapely neste momento, só quero passar recursos e uma projeção e recuperar um conjunto reprojetado de recursos.
Esse tipo de funcionalidade existe ou deve ser codificado manualmente?
python
coordinate-system
shapely
pyproj
Chris Fonnesbeck
fonte
fonte
fiona.transform
parece ter o que você precisa.Respostas:
Embora bem tornado não entenda nativamente os sistemas de coordenadas, ele
shapely.ops.transform()
pode fazer isso juntopyproj
. Se vocêpyproj.Proj
consegue entender seus dois sistemas de coordenadas, pode ser transformado em uma função que pode ser transformada com facilidade.Dos documentos bem torneados :
fonte
itertools
módulo, poderá fazê-loproject = lambda x, y: pyproj.transform(pyproj.Proj(init='epsg:4326'), pyproj.Proj(init='epsg:26913'), x, y)
e depoisg2 = transform(project, g1)
.Transformer
. Veja aqui: pyproj4.github.io/pyproj/stable/gotchas.htmlEmbora não seja uma solução bem torneada, o uso do GeoPandas permite uma projeção relativamente direta. Por exemplo, se queremos converter um shapefile em ESPG 4326:
fonte
Se você estiver usando pyproj2, é muito mais fácil usar um Transformer. Aqui está um exemplo:
Isso também é muito mais rápido, porque o pyproj não precisa recriar a projeção para cada ponto.
fonte