From eea0bb9ca7d9bf363ac71eee7832da86826b1ad4 Mon Sep 17 00:00:00 2001 From: willjnz Date: Wed, 29 Apr 2026 13:18:00 +1000 Subject: [PATCH] Fix nan check for ABS States. It has a null geom. --- Makefile | 2 +- csdr/geometries.py | 10 +++++++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/Makefile b/Makefile index 898ec21..d2aa464 100644 --- a/Makefile +++ b/Makefile @@ -414,7 +414,7 @@ geometry-aus-states-convert-local: --create-pmtiles geometry-aus-states-provenance-local-db: csdr provenance geometry \ - --id=0b9b8e1a-d20a-41c2-843d-1f2b47d6a512 \ + --id=australia-geometries \ --run-id=aus-states-test-run-id \ --geometry-url=./cache/geometries/aus-states/0-0-1/runs/aus-states-test-run-id/STE_2021_AUST_GDA2020.parquet \ --pmtiles-url=./cache/geometries/aus-states/0-0-1/runs/aus-states-test-run-id/STE_2021_AUST_GDA2020.pmtiles \ diff --git a/csdr/geometries.py b/csdr/geometries.py index 2879dd5..a794a16 100644 --- a/csdr/geometries.py +++ b/csdr/geometries.py @@ -20,12 +20,16 @@ def convert_gdf_row_to_geometry_output( gdf_row: Series, crs: pyproj_crs.CRS ) -> dict | None: - if not gdf_row.geometry: + geom = gdf_row.geometry + if geom is None or not hasattr(geom, "__geo_interface__"): # This occurs for example in the ABS Australian States dataset where there are some null geometries - logger.warning(f"Geometry is None for geometry output. {gdf_row['csdr-id']}") + # NaN values (float) also end up here when geometry column has missing data. + logger.warning( + f"Geometry is None or invalid for geometry output. {gdf_row['csdr-id']}" + ) return None # Skip if geometry is None or empty - poly = Geometry(gdf_row.geometry, crs=crs) + poly = Geometry(geom, crs=crs) properties = gdf_row.drop(labels=["geometry"]).to_dict() # Clean data, replace NaN with None so that it works in JSON