Byłem bardzo niezadowolony z obliczania długości pościeli w WGS84 w Milach . Zastanawiałem się, czy istnieje wygodniejszy, Pythoński sposób obliczania długości linii WKT zgodnie z danym SRID.
Mam na myśli coś takiego:
srid="WGS84"
line="LINESTRING(3.0 4.0, 3.1 4.1)"
print length(line, srid)
Szukam dokładnej odpowiedzi, a nie sin\cos
przybliżeń.
Jakieś pomysły?
Odpowiedzi:
Geopy moduł stanowi wzór Wincenty , który zapewnia dokładne odległości elipsoidy. Połącz to z
wkt
ładowaniem w Shapely, a masz dość prosty kod:źródło
Możesz także użyć właściwości długości Shapely , tj .:
źródło
Użyłbym ogr2ogr ( http://www.gdal.org/ogr/index.html ), aby zrobić to bezpośrednio, ale jeśli naprawdę musisz użyć Pythona, to istnieją powiązania python ( http://pypi.python.org/pypi / GDAL / ), aby to zrobić.
źródło
Późno na imprezę, ale z nadzieją użyteczną pomocą. Opierając się na odpowiedzi scw za pomocą geopoli, napisałem małą funkcję, która wykonuje obliczenia dla foremnego obiektu LineString o dowolnie wielu współrzędnych. Używa
pairs
iteratora z Stackoverflow.Główna cecha: dokumenty są znacznie dłuższe niż fragmenty.
źródło
[, z]
, ale swap argumentem(y, x)
na(x, y)
to jest konieczne. Dzięki za wykrycie tego. Czy potrafisz spojrzeć, czy ta edycja wygląda mniej na błędy?