Geopandas - QGIS - ArcGIS alan değerleri

Dec 20 2020

QGIS, ArcGIS ve GeoPandas'ta bir KML'nin alanlarını hesaplıyorum ve hepsi farklı, sonuçlarım şu:

Jeopandalar ArcGIS QGIS
29.3498 28.500084 25.651554

KML'nin orijinal crs'si 4326'dır, bu yüzden önce QGIS ve ArcGIS'te KML'yi yeniden yazıyorum (ArcGIS'te önce KML'yi bir shp veya özellik yapmalıyım) ve sonra alanı hesaplıyorum.

Bunu kontrol yazı ArcGIS Benzer bir şey yaptım aynı sorun hakkında ancak QGIS ile ve onlar dediğim gibi QGIS bölgeyi hesaplamak, ilk o zaman dataframe için koordinat sistemi ve set GeoPandas I'ile bölgeyi hesaplamak re Bunu yapıyorum:

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()

Birinin işlemi kontrol etmek istemesi durumunda dosyalar burada

Yanıtlar

5 KadirŞahbaz Dec 20 2020 at 03:00

GeoPandas'ta, şekil dosyasının coğrafi koordinat sistemini uyumlu bir projeksiyon sistemine dönüştürürsünüz (açı koruma, yani alanları korumaz). Farklı alan değerleri alması beklenir. Aslında, bu durumda, GeoPandalarda aynı değere sahip olsaydınız, o zaman bir şeyler yanlış olurdu.

QGIS ve ArcGIS söz konusu olduğunda, verilerinizde birçok geçersiz geometri vardır. QGIS'de Dağıtma aracını uygularsanız, bunu göreceksiniz. (Benim tahminim) ArcGIS ve QGIS geçersiz geometrileri farklı şekilde ele alıyor olabilir veya bizim farkında olmadığımız veya başka bir şey yapıyor olabilir.

Benim önerim:

  • CR'leri değiştirdikten sonra gdfkullanarak kaydedin gdf.to_file("new_file_path").
  • Ardından yeni şekil dosyasını açın ve alanları karşılaştırın.

Elimde olan bu:

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

Bu cevap, alanların neden farklı olduğunu tam olarak açıklamıyor. En azından farklı alanlardan kurtulursunuz.