Я был совершенно недоволен вычислением длины строк в WGS84 в милях . Это заставило меня задуматься, есть ли более удобный, Pythonic способ вычислить длину строки WKT в соответствии с данным SRID.
Я имею в виду что-то вроде:
srid="WGS84"
line="LINESTRING(3.0 4.0, 3.1 4.1)"
print length(line, srid)
Я ищу точный ответ, а не sin\cos
приближения.
Есть идеи?
Ответы:
Модуль геопсии предоставляет формулу Винсенти , которая обеспечивает точные эллипсоидальные расстояния.
wkt
Соедините это с загрузкой в Shapely, и вы получите достаточно простой код:источник
Вы также можете использовать свойство длины Shapely , то есть:
источник
Я бы использовал ogr2ogr ( http://www.gdal.org/ogr/index.html ), чтобы сделать это напрямую, но если вам действительно нужно использовать python, то существуют привязки python ( http://pypi.python.org/pypi / GDAL / ), чтобы позволить вам сделать это.
источник
Поздно на вечеринку, но с полезным вкладом. Основываясь на ответе scw с использованием geopy, я написал небольшую функцию, которая выполняет расчет для стройного объекта LineString с произвольным количеством координат. Он использует
pairs
итератор из Stackoverflow.Основная особенность: строки документов намного длиннее фрагментов.
источник
[, z]
, но обмен аргументами(y, x)
на(x, y)
это необходим. Спасибо, что заметили это. Можете ли вы заметить, выглядит ли это редактирование менее подверженным ошибкам?