Геопанды против QGIS против значений площади ArcGIS
Я вычисляю области KML в QGIS, ArcGIS и GeoPandas, и все они разные, мои результаты следующие:
Геопанды | ArcGIS | QGIS |
---|---|---|
29,3498 | 28,500084 | 25,651554 |
Исходный crs KML - 4326, поэтому в QGIS и ArcGIS сначала я перепроектирую KML (в ArcGIS сначала мне нужно сделать KML shp или функцией), а затем я вычисляю площадь.
Я проверил этот пост о той же проблеме, но с QGIS, и я вычислил площадь в QGIS, как они сказали, в ArcGIS я сделал нечто подобное, сначала я установил систему координат для фрейма данных, а затем повторно вычислил площадь с помощью GeoPandas I´ я делаю это:
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()
На всякий случай, если кто-то захочет проверить процесс, файлы здесь
Ответы
В GeoPandas вы преобразуете географическую систему координат шейп-файла в систему конформной проекции (сохраняющую угол, что означает, что она не сохраняет области). Ожидается, что будут получены разные значения площади. Фактически, в этом случае, если бы у вас было такое же значение в GeoPandas, то что-то было бы неправильно.
Когда дело доходит до QGIS и ArcGIS, в ваших данных много недопустимой геометрии. Если вы примените инструмент Dissolve в QGIS, вы это увидите. (Я предполагаю) ArcGIS и QGIS могут по-разному обрабатывать недопустимую геометрию, или они делают что-то, о чем мы не знаем, или что-то еще.
Мое предложение:
- После изменения crs сохраните,
gdf
используяgdf.to_file("new_file_path")
. - Затем откройте новый шейп-файл и сравните области.
Вот что у меня есть:
Geopandas: 29.3497 km²
ArcGIS : 29.349727079406 km²
QGIS : 29.349727432 km²
Этот ответ не совсем объясняет, почему области разные. По крайней мере, вы избавитесь от проблем с разными областями.