Geopandas vs QGIS vsArcGISエリア値

Dec 20 2020

QGIS、ArcGIS、GeoPandasでKMLの面積を計算していますが、すべてが異なります。結果は次のとおりです。

ジオパンダ ArcGIS QGIS
29.3498 28.500084 25,651554

KMLの元のcrsは4326であるため、最初にQGISとArcGISでKMLを再投影し(ArcGISでは最初にKMLをshpまたはフィーチャにする必要があります)、次に面積を計算します。

私は同じ問題についてこの投稿をチェックしましたが、QGISを使用して、QGISで面積を計算しました。ArcGISでは、最初に座標系をデータフレームに設定してから、GeoPandas I´を使用して面積を再計算しました。 mこれを行う:

import geopandas as gpd
import fiona

gpd.io.file.fiona.drvsupport.supported_drivers['KML'] = 'rw'
df = gpd.read_file('original_kml.kml', driver='KML')
gdf = df.to_crs('esri:102015')
gdf["area"] = gdf['geometry'].area/ 10**6

gdf.sum()

誰かがプロセスをチェックしたい場合に備えて、ファイルはここにあります

回答

5 KadirŞahbaz Dec 20 2020 at 03:00

GeoPandasでは、シェープファイルの地理座標系を等角投影座標系に変換します(角度保存、つまり領域を保存しません)。異なる面積値を取得することが期待されます。実際、この場合、GeoPandasで同じ値を使用していると、何かがおかしくなります。

QGISとArcGISに関しては、データに多くの無効なジオメトリがあります。QGISでディゾルブツールを適用すると、それが表示されます。(私の推測)ArcGISとQGISは無効なジオメトリを異なる方法で処理しているか、私たちが気付いていないことや他のことをしている可能性があります。

私のおすすめ:

  • crsを変更した後、をgdf使用して保存しgdf.to_file("new_file_path")ます。
  • 次に、新しいシェープファイルを開き、領域を比較します。

これは私が持っているものです:

Geopandas: 29.3497 km²  
ArcGIS   : 29.349727079406 km²
QGIS     : 29.349727432 km²

この答えは、領域が異なる理由を完全には説明していません。少なくとも、さまざまな領域の問題を取り除きます。