Czy istnieje prosty sposób na przekształcanie obiektów foremnych (a mianowicie wielokątów i wielokątów) z jednego rzutu na drugi bez konieczności ręcznego kopania i wyodrębniania współrzędnych?
W rzeczywistości nie dbam nawet o to, czy w tym momencie są one obiektami foremnymi, chcę tylko przekazać funkcje i projekcję i odzyskać ponownie zestaw funkcji.
Czy taka funkcjonalność istnieje, czy musi być ręcznie kodowana?
python
coordinate-system
shapely
pyproj
Chris Fonnesbeck
źródło
źródło
fiona.transform
wygląda na to, czego potrzebujesz.Odpowiedzi:
Chociaż foremnie nie rozumie natywnie układów współrzędnych,
shapely.ops.transform()
może to zrobić wraz zpyproj
. Jeślipyproj.Proj
jest w stanie zrozumieć oba układy współrzędnych, można go przekształcić w funkcję, którą można kształtnie przekształcać.Od zgrabnych dokumentów :
źródło
itertools
modułu można zrobićproject = lambda x, y: pyproj.transform(pyproj.Proj(init='epsg:4326'), pyproj.Proj(init='epsg:26913'), x, y)
i potemg2 = transform(project, g1)
.Transformer
. Zobacz tutaj: pyproj4.github.io/pyproj/stable/gotchas.htmlChociaż nie jest to zgrabne rozwiązanie, użycie GeoPandas pozwala na stosunkowo prostą projekcję. Na przykład, jeśli chcemy przekonwertować plik shapefile na ESPG 4326:
źródło
Jeśli używasz pyproj2, znacznie łatwiej jest użyć transformatora. Oto przykład:
Jest to również znacznie szybsze, ponieważ pyproj nie musi odtwarzać projekcji dla każdego punktu.
źródło