Geopandas vs QGIS vs nilai area ArcGIS
Saya menghitung area KML di QGIS, ArcGIS, dan GeoPandas dan semuanya berbeda, hasil saya adalah ini:
Geopanda | ArcGIS | QGIS |
---|---|---|
29.3498 | 28,500084 | 25.651554 |
Cr asli dari KML adalah 4326, jadi di QGIS dan ArcGIS pertama, saya memproyeksikan ulang KML (di ArcGIS pertama saya harus membuat KML menjadi shp atau fitur) dan kemudian saya menghitung luasnya.
Saya memeriksa posting ini tentang masalah yang sama tetapi dengan QGIS, dan saya menghitung area di QGIS seperti yang mereka katakan, di ArcGIS saya melakukan sesuatu yang serupa, pertama saya mengatur sistem koordinat ke kerangka data dan kemudian menghitung ulang luasnya, dengan GeoPandas I´ saya melakukan ini:
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()
Untuk berjaga-jaga jika seseorang ingin memeriksa proses, file tersebut ada di sini
Jawaban
Di GeoPandas, Anda mengubah sistem koordinat geografis dari shapefile menjadi yang diproyeksikan sesuai (menjaga sudut, yang berarti tidak melestarikan area). Diharapkan mendapatkan nilai wilayah yang berbeda. Faktanya, dalam kasus ini, jika Anda memiliki nilai yang sama di GeoPandas, maka ada sesuatu yang salah.
Dalam hal QGIS vs ArcGIS, ada banyak geometri yang tidak valid di data Anda. Jika Anda menerapkan alat Dissolve di QGIS, Anda akan melihatnya. (Asumsi saya) ArcGIS dan QGIS mungkin menangani geometri yang tidak valid secara berbeda atau mereka melakukan sesuatu yang tidak kita sadari atau sesuatu yang lain.
Saran saya:
- Setelah mengganti crs, simpan
gdf
menggunakangdf.to_file("new_file_path")
. - Kemudian buka shapefile baru dan bandingkan areanya.
Inilah yang saya punya:
Geopandas: 29.3497 km²
ArcGIS : 29.349727079406 km²
QGIS : 29.349727432 km²
Jawaban ini tidak menjelaskan dengan sempurna mengapa area tersebut berbeda. Setidaknya, Anda menyingkirkan masalah area yang berbeda.