Координатні системи
[...]
Shapely не підтримує перетворень системи координат. Усі операції з двома або більше ознаками передбачають, що функції існують в одній декартовій площині.
Джерело: http://toblerity.org/shapely/manual.html#coordinate-systems
Будучи shapely
повністю агностичним щодо посилання на SRS, цілком очевидно, що атрибут довжини виражається в одній і тій же одиниці координат вашої рядкової лінії, тобто градусах. Фактично:
>>> from shapely.geometry import LineString
>>> line = LineString([(0, 0), (1, 1)])
>>> line.length
1.4142135623730951
Натомість, якщо ви хочете виразити довжину в метрах, вам доведеться перетворити геометрії з WGS84 в проектований SRS за допомогою pyproj (або, краще, виконати обчислення геодезичної відстані, див. Відповідь Гена). Детально, оскільки версія 1.2.18 ( shapely.__version__
) shapely
підтримує функції перетворення геометрії ( http://toblerity.org/shapely/shapely.html#module-shapely.ops ), якими ми можемо користуватися разом із ними pyproj
. Ось короткий приклад:
from shapely.geometry import LineString
from shapely.ops import transform
from functools import partial
import pyproj
line1 = LineString([(15.799406, 40.636069), (15.810173,40.640246)])
print(str(line1.length) + " degrees")
# 0.0115488362184 degrees
# Geometry transform function based on pyproj.transform
project = partial(
pyproj.transform,
pyproj.Proj('EPSG:4326'),
pyproj.Proj('EPSG:32633'))
line2 = transform(project, line1)
print(str(line2.length) + " meters")
# 1021.77585965 meters