GeoPandas / Shapelyエリアおよび距離関数で使用される単位は何ですか?


13

それはばかげた質問のように見えますが、それについて明確な答えを見つけることができません:どのユニットがジオパンダ/シェイプを使用してオブジェクト間の距離/面積を計算しますか?

回答:


15

Shapelyは、デカルト平面システムを使用してジオメトリを計算します(距離=ユークリッド距離)

Shapelyは座標系変換をサポートしていません。2つ以上のフィーチャに対するすべての操作は、フィーチャが同じデカルト平面に存在することを前提としています。

GeoPandasは、Fionaを使用してシェープファイル(およびその他)を読み取り、Pyprojを使用してカートグラフィック変換を行います。

コレクションのベクターデータの座標参照系(CRS)は、読み取り専用のcrs属性を介してアクセスされます。

import fiona
c = fiona.open("test.shp")
print c.crs['units']
m

Shapelyでオブジェクト間の距離/面積を計算する単位は、この場合メートルです。

GeoPandasでも同じです

import geopandas as gp
df = gp.GeoDataFrame.from_file('test.shp')
print df.crs['units']
m

つまり、crs.unit = degree(WGS84など)で作業する場合、すべての計算が間違っていることを意味します。最初にレイヤーを再投影する必要があります(geopandasでEastings and Northings投影をWSG84に変換するにはどうすればよいですか?


1
代わりにPostGISから読み込むと何か変更はありますか?read_postgis結果のデータフレームを呼び出すときに引数として座標を設定してcrsいるのは、stringであるattributeのみです。属性はありませんcrs['units']。TypeErrorになる結果を要求しようとしています。
クアンブ

3

ジオメトリの座標で表されるユニット。

シェイプジオメトリはデカルト座標であり、Lon / Latまたはその他のことを仮定していません。


0

Geopandasの場合、GeoDataFrameに割り当てられた座標参照システムに依存します。

shapelyは、デカルト平面の同じ単位で、shapelyはCRS sourceをサポートしません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.