Fiquei bastante insatisfeito com o cálculo do comprimento das cadeias de linhas no WGS84 em milhas . Isso me fez pensar se existe uma maneira Python mais conveniente de calcular o comprimento de uma cadeia de linhas WKT de acordo com um determinado SRID.
Eu tenho em mente algo como:
srid="WGS84"
line="LINESTRING(3.0 4.0, 3.1 4.1)"
print length(line, srid)
Estou procurando uma resposta precisa, não sin\cos
aproximações.
Alguma ideia?
Respostas:
O módulo geopy fornece a fórmula Vincenty , que fornece distâncias elipsóides precisas. Junte isso ao
wkt
carregamento no Shapely e você terá um código razoavelmente simples:fonte
Você também pode usar a propriedade length da Shapely , ou seja:
fonte
Eu usaria ogr2ogr ( http://www.gdal.org/ogr/index.html ) para fazê-lo diretamente, mas se você realmente precisar usar python, existem ligações python ( http://pypi.python.org/pypi / GDAL / ) para permitir que você faça isso.
fonte
Tarde para a festa, mas com uma contribuição esperançosamente útil. Com base na resposta do scw usando geopy, escrevi uma pequena função que faz o cálculo para um objeto LineString bem torneado com arbitrariamente muitas coordenadas. Ele usa um
pairs
iterador do Stackoverflow.Recurso principal: os documentos são muito mais longos que os trechos.
fonte
[, z]
, mas a troca de argumento(y, x)
para(x, y)
o que é necessário. Obrigado por detectá-lo. Você pode observar se essa edição parece menos cheia de bugs?