Ich war ziemlich unzufrieden mit der Berechnung der Länge der Linienfolgen in WGS84 in Meilen . Ich habe mich gefragt, ob es eine bequemere, pythonische Methode gibt, um die Länge einer WKT-Linienfolge gemäß einer bestimmten SRID zu berechnen.
Ich denke an etwas wie:
srid="WGS84"
line="LINESTRING(3.0 4.0, 3.1 4.1)"
print length(line, srid)
Ich suche eine genaue Antwort, keine sin\cos
Annäherungen.
Irgendwelche Ideen?
Antworten:
Das Geopy- Modul liefert die Vincenty-Formel , die genaue Ellipsoidabstände liefert. Verbinden Sie dies mit dem
wkt
Laden in Shapely, und Sie haben einigermaßen einfachen Code:quelle
Sie können auch die Längeneigenschaft von Shapely verwenden , dh:
quelle
Ich würde ogr2ogr ( http://www.gdal.org/ogr/index.html ) verwenden, um dies direkt zu tun, aber wenn Sie wirklich Python verwenden müssen, gibt es Python-Bindungen ( http://pypi.python.org/pypi) / GDAL / ), damit Sie es tun können.
quelle
Spät zur Party, aber mit einem hoffentlich nützlichen Beitrag. Aufbauend auf der Antwort von scw mit Hilfe von Geopy habe ich eine kleine Funktion geschrieben, die die Berechnung für ein formschönes LineString-Objekt mit beliebig vielen Koordinaten durchführt. Es wird ein
pairs
Iterator von Stackoverflow verwendet.Hauptmerkmal: Die Docstrings sind viel länger als die Snippets.
quelle
[, z]
, aber das Argument(y, x)
dafür(x, y)
ist notwendig. Danke, dass du es gesehen hast. Kannst du gucken, ob diese Bearbeitung weniger fehlerhaft aussieht?