Estaba bastante insatisfecho con el cálculo de la longitud de las cadenas lineales en WGS84 en millas . Me mantuvo preguntándome si hay una manera más conveniente y pitónica de calcular la longitud de una cadena lineal WKT de acuerdo con un SRID dado.
Tengo en mente algo como:
srid="WGS84"
line="LINESTRING(3.0 4.0, 3.1 4.1)"
print length(line, srid)
Estoy buscando una respuesta precisa, no sin\cos
aproximaciones.
¿Algunas ideas?
Respuestas:
El módulo geopy proporciona la fórmula de Vincenty , que proporciona distancias elipsoidales precisas.
wkt
Combine esto con la carga en Shapely, y tendrá un código razonablemente simple:fuente
También puede usar la propiedad de longitud de Shapely , es decir:
fuente
Usaría ogr2ogr ( http://www.gdal.org/ogr/index.html ) para hacerlo directamente, pero si realmente debe usar python, entonces hay enlaces de python ( http://pypi.python.org/pypi / GDAL / ) para que puedas hacerlo.
fuente
Tarde a la fiesta, pero con una contribución útil. Sobre la base de la respuesta de scw usando geopy, escribí una pequeña función que hace el cálculo para un objeto LineString bien formado con arbitrariamente muchas coordenadas. Utiliza un
pairs
iterador de Stackoverflow.Característica principal: las cadenas de documentos son mucho más largas que los fragmentos.
fuente
[, z]
, pero el argumento de intercambio(y, x)
a(x, y)
que es necesario. Gracias por verlo. ¿Puedes ver si esta edición parece menos cargada de errores?