座標系
[...]
Shapelyは座標系変換をサポートしていません。2つ以上のフィーチャに対するすべての操作は、フィーチャが同じデカルト平面に存在することを前提としています。
出典: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
代わりに、長さをメートルで表現したい場合は、pyprojを使用して、ジオメトリをWGS84から投影されたSRSに変換する必要があります(または、測地線距離の計算を実行します。Geneの回答を参照してください)。詳細には、バージョン1.2.18(shapely.__version__
)以降、と組み合わせて使用できるジオメトリ変換関数(http://toblerity.org/shapely/shapely.html#module-shapely.ops)をshapely
サポートしています。ここに簡単な例があります: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(init='EPSG:4326'),
pyproj.Proj(init='EPSG:32633'))
line2 = transform(project, line1)
print str(line2.length) + " meters"
# 1021.77585965 meters