それはばかげた質問のように見えますが、それについて明確な答えを見つけることができません:どのユニットがジオパンダ/シェイプを使用してオブジェクト間の距離/面積を計算しますか?
それはばかげた質問のように見えますが、それについて明確な答えを見つけることができません:どのユニットがジオパンダ/シェイプを使用してオブジェクト間の距離/面積を計算しますか?
回答:
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に変換するにはどうすればよいですか? )
read_postgis
結果のデータフレームを呼び出すときに引数として座標を設定してcrs
いるのは、stringであるattributeのみです。属性はありませんcrs['units']
。TypeErrorになる結果を要求しようとしています。