Sistem Koordinasi
[...]
Shapely tidak mendukung transformasi sistem koordinat. Semua operasi pada dua atau lebih fitur menganggap bahwa fitur ada di pesawat Cartesian yang sama.
Sumber: http://toblerity.org/shapely/manual.html#coordinate-systems
Menjadi shapely
sepenuhnya agnostik sehubungan dengan SRS, cukup jelas bahwa atribut panjang dinyatakan dalam satuan koordinat yang sama dengan linestring Anda, yaitu derajat. Faktanya:
>>> from shapely.geometry import LineString
>>> line = LineString([(0, 0), (1, 1)])
>>> line.length
1.4142135623730951
Sebaliknya, jika Anda ingin mengekspresikan panjang dalam meter, Anda harus mengubah geometri Anda dari WGS84 ke SRS yang diproyeksikan menggunakan pyproj (atau, lebih baik, jalankan perhitungan jarak geodesik, lihat jawaban Gene). Secara terperinci, sejak versi 1.2.18 ( shapely.__version__
), shapely
mendukung fungsi transformasi geometri ( http://toblerity.org/shapely/shapely.html#module-shapely.ops ) yang dapat kita gunakan bersamaan pyproj
. Ini contoh singkatnya:
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(init='EPSG:4326'),
pyproj.Proj(init='EPSG:32633'))
line2 = transform(project, line1)
print str(line2.length) + " meters"
# 1021.77585965 meters