Je n'étais pas du tout satisfait du calcul de la longueur des chaînes linéaires en WGS84 en miles . Cela m'a incité à me demander s'il existe un moyen Pythonique plus pratique de calculer la longueur d'une chaîne de caractères WKT en fonction d'un SRID donné.
Je pense à quelque chose comme:
srid="WGS84"
line="LINESTRING(3.0 4.0, 3.1 4.1)"
print length(line, srid)
Je cherche une réponse précise, pas des sin\cos
approximations.
Des idées?
Réponses:
Le module geopy fournit la formule Vincenty , qui fournit des distances ellipsoïdes précises.
wkt
Ajoutez ceci au chargement dans Shapely, et vous avez un code assez simple:la source
Vous pouvez également utiliser la propriété length de Shapely , c'est-à-dire:
la source
J'utiliserais ogr2ogr ( http://www.gdal.org/ogr/index.html ) pour le faire directement mais si vous devez vraiment utiliser python, il y a des liaisons python ( http://pypi.python.org/pypi / GDAL / ) pour vous permettre de le faire.
la source
Tard dans la soirée, mais avec une contribution si tout va bien utile. En s'appuyant sur la réponse de scw en utilisant geopy, j'ai écrit une petite fonction qui fait le calcul pour un objet LineString galbé avec arbitrairement de nombreuses coordonnées. Il utilise un
pairs
itérateur de Stackoverflow.Caractéristique principale: les docstrings sont beaucoup plus longs que les extraits.
la source
[, z]
, mais l'échange d'arguments(y, x)
à(x, y)
ce qui est nécessaire. Merci de l'avoir repéré. Pouvez-vous savoir si cette modification semble moins parasitée?