Geopandy vs QGIS vs ArcGIS wartości obszaru
Obliczam obszary KML w QGIS, ArcGIS i GeoPandas, a wszystkie są różne, moje wyniki są następujące:
Geopandy | ArcGIS | QGIS |
---|---|---|
29,3498 | 28.500084 | 25,651554 |
Oryginalny crs KML to 4326, więc w QGIS i ArcGIS najpierw ponownie projektuję KML (w ArcGIS najpierw muszę uczynić KML shp lub funkcją), a następnie obliczam obszar.
Sprawdziłem ten post dotyczący tego samego problemu, ale z QGIS i obliczam obszar w QGIS, tak jak powiedzieli, w ArcGIS zrobiłem coś podobnego, najpierw ustawiłem układ współrzędnych na ramkę danych, a następnie ponownie obliczyłem obszar, z GeoPandas I´ robię to:
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()
Na wypadek, gdyby ktoś chciał sprawdzić proces, pliki są tutaj
Odpowiedzi
W GeoPandas przekształcasz geograficzny układ współrzędnych pliku shapefile na konformalny rzutowany (z zachowaniem kąta, co oznacza, że nie zachowuje obszarów). Oczekuje się, że uzyska różne wartości powierzchni. W rzeczywistości w tym przypadku, gdybyś miał tę samą wartość w GeoPandas, coś byłoby nie tak.
Jeśli chodzi o QGIS i ArcGIS, w Twoich danych znajduje się wiele nieprawidłowych geometrii. Jeśli zastosujesz narzędzie Dissolve w QGIS, zobaczysz to. (Moje przypuszczenie) ArcGIS i QGIS mogą inaczej obsługiwać nieprawidłowe geometrie lub robią coś, czego nie jesteśmy świadomi, lub coś innego.
Moja sugestia:
- Po zmianie crs zapisz
gdf
używającgdf.to_file("new_file_path")
. - Następnie otwórz nowy shapefile i porównaj obszary.
Oto co mam:
Geopandas: 29.3497 km²
ArcGIS : 29.349727079406 km²
QGIS : 29.349727432 km²
Ta odpowiedź nie wyjaśnia doskonale, dlaczego te obszary są różne. Przynajmniej pozbędziesz się problemu z różnymi obszarami.