Skip to content
Snippets Groups Projects
Commit 15c78502 authored by Karsten Prehn's avatar Karsten Prehn
Browse files

Added fix for false classification with duplicate tiles

parent 5a92e224
No related branches found
No related tags found
1 merge request!33Added fix for false classification with duplicate tiles
Pipeline #46864 passed
......@@ -521,6 +521,11 @@ class Discretizer(Quadtile, Config):
columns=["id", "completeness", "geometry"]
)
# Drop duplicate tiles from sea- and inland-water, so dissolving the combined tiles
# later by ID doesn't falsely sum up classification values
seawater_per_tile_gdf = seawater_per_tile_gdf.drop_duplicates(["id"])
inlandwater_per_tile_gdf = inlandwater_per_tile_gdf.drop_duplicates(["id"])
# Concatenate inland-water and sea-water tiles
water_per_tile_gdf = seawater_per_tile_gdf.append(inlandwater_per_tile_gdf)
......@@ -531,7 +536,6 @@ class Discretizer(Quadtile, Config):
water_per_tile_gdf = gpd.GeoDataFrame(columns=["id", "geometry", "completeness"])
# Sum up sea-water and inland-water classification and aggregate geometries
# _combined_water = water_per_tile_gdf.groupby(["id"]).agg(sum)
_combined_water = water_per_tile_gdf.dissolve(by="id", aggfunc={"completeness": "sum"})
_len = len(set(_combined_water.index.tolist()))
self.log.debug(f"<[{pid}]> Dissolved into {_len} water polygon geometries.")
......@@ -646,6 +650,13 @@ class Discretizer(Quadtile, Config):
water_per_tile_gdf.set_index("id")["completeness"] + self.classification.VALUE_LAND
)
# Check that classification is within the constraints of the bitmask
if not all(0 <= t <= 7 for t in tile_polygons_gdf["completeness"].tolist()):
_gdf = tile_polygons_gdf[tile_polygons_gdf["completeness"].between(0, 7)]
raise ValueError(
f"<[{pid}]> Coast-tile classification has to be between `000` and `111` (7). {_gdf}"
)
# Add water-polygon column to the tiles data set
# We call the water-polygon field `water_geom`; bear in mind the land-polygon field
# is called `geometry`
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment