Mam wielokąty ze współrzędnych w (kształtny python), które wyglądają tak
POLYGON ((24.8085317 46.8512821, 24.7986952 46.8574619, 24.8088238 46.8664741, 24.8155239 46.8576335, 24.8085317 46.8512821))
Chciałbym obliczyć powierzchnię tego wielokąta w km ^ 2. Jaki byłby najlepszy sposób, aby to zrobić w Pythonie?
Odpowiedzi:
Nie było dla mnie oczywiste, jak korzystać z odpowiedzi @sgillies, więc oto bardziej szczegółowa wersja:
źródło
Wygląda na to, że twoje współrzędne to długość i szerokość geograficzna, tak? Użyj
shapely.ops.transform
funkcji Shapely, aby przekształcić wielokąt w rzutowane współrzędne równego obszaru, a następnie obierz obszar.źródło
partial
nie jest to wbudowane;pyproj
będą musiały zostać zaimportowane i prawdopodobnie zainstalowane itp.pyproj.Proj(proj='aea', lat1=lat1, lat2=lat2)
że w rezultacieCRSError: Invalid projection: +proj=aea +lat1=5.0 +lat2=6.0 +type=crs
. Zmianalat{1,2}
wlat_{1,2}
jak sugeruje dokumentacja proj4 ustalone to:pyproj.Proj(proj='aea', lat1=lat1, lat2=lat2)
. Czy ta odpowiedź jest dokładna, czy powinna zostać zaktualizowana?lat_1
ilat_2
zamiastlat1
ilat2
. Podejrzewam, że dotyczy to postu PROJ 6.0.0Powyższe odpowiedzi wydają się poprawne, Z WYJĄTKIEM, że w pewnym momencie parametry lat1 i lat2 w kodzie pyproj zostały przemianowane na podkreślenia: lat_1 i lat_2 (patrz /programming//a/55259718/1538758 ). Nie mam wystarczającej liczby przedstawicieli, aby móc komentować, więc robię nową odpowiedź (przepraszam, nie przepraszam)
źródło
Natknąłem się na „obszar”, który wydaje się prostszy w użyciu:
https://pypi.org/project/area/
Na przykład:
... zwroty:
powierzchnia m2: 1082979.880942425
powierzchnia km2: 1,082979880942425
źródło