Added feature to export to GeoSummary format
This MR:
- adds the capability to export the GDE model to what is being called a "GeoSummary" format; the output consists of a GeoPackage (.gpkg) file that summarises relevant values per quadtile;
- fixes an issue of compatibility of geometry types to append to GPKG that arose in the functionality to export to
OpenQuake
while testing this new feature.
Details on the capability to export the GDE model to the "GeoSummary" format:
The output GeoPackage (.gpkg) file has name pattern [quadkeys_group]_[occupancy_case]_geosummary_tiles.gpkg
and contains the following fields:
- quadkey (str): Quadkey of the tile.
- geometry (geometry): Geometry of the tile.
- [occupancy_case]_number_data_units: Number of data units associated with this quadtile and occupancy case.
- [occupancy_case]_[building_type]_buildings: Number of buildings in the tile of the type
building_type
(each of the elements ofbuildings_to_export
specified in the configuration file) and ofoccupancy_case
. - [occupancy_case]_[building_type]_XXX: Fields in which
occupancy_case
andbuilding_type
have the same meaning as above, and XXX refers to:- Columns associated with building replacement costs, whose name and contents are user-defined (
cost_cases
specified in the configuration file). - Columns associated with the number of people in the building at different times of the day, whose names and contents are user-defined (
people_cases
specified in the configuration file). In all of the cost- and people-cases columns, the values stored correspond to the sum of all buildings in the tile of the correspondingoccupancy_case
andbuilding_type
([occupancy_case]_[building_type]_buildings
field).
- Columns associated with building replacement costs, whose name and contents are user-defined (
Details on the issue of compatibility of geometry types to append to GPKG:
When appending to a GPKG file, the geometry types of the existing file and the data to be appended need to be the same. While trying out the code I encountered cases of OBM buildings whose geometries are defined as MultiPolygons instead of Polygons. If the GPKG file is first created first with only Polygon geometries, then geopandas
throws an error when trying to append MultiPolygon geometries. This was addressed by converting all OBM footprints to MultiPolygons when retrieving data using DatabaseQueries.get_GDE_buildings
. It was done there because that method was already looping through OSM IDs, while adding this check elsewhere would make the code loop again.