feat(scope): make Belgium and North Sea operational default
GeoIntel release gates / Compile, test, contracts and builds (push) Canceled after 0s
GeoIntel release gates / Python and npm vulnerability policy (push) Canceled after 0s
GeoIntel release gates / GIS image, SBOM and container scan (push) Canceled after 0s

This commit is contained in:
Codex
2026-07-22 02:11:48 +02:00
parent 46884cbbc9
commit 0aff8e3b8c
61 changed files with 2499 additions and 194 deletions
@@ -71,6 +71,7 @@ class OfficialVectorProduct:
response_crs: str = "EPSG:4326"
identity_field: str | None = None
requires_coverage_area: bool = False
property_filter: dict[str, tuple[str, ...]] | None = None
class OfficialVectorAcquisitionService:
@@ -509,6 +510,57 @@ class OfficialVectorAcquisitionService:
identity_field="INSPIRE_ID",
requires_coverage_area=True,
),
OfficialVectorProduct(
key="urbis_street_axes",
display_name="UrbIS street axes",
theme="roads",
provider="Paradigm Brussels",
source_name="urbis",
reference_layer_name="roads",
service_type="WFS 2.0",
collection="urbisvector:StreetAxes",
source_crs="EPSG:31370",
source_version="2026-06-06",
observation_label="UrbIS revision 6 June 2026",
authority_level="authoritative",
catalog_url=(
"https://datastore.brussels/web/data/dataset/"
"2cf42541-1813-11ef-8a81-00090ffe0001"
),
attribution="Paradigm Brussels - UrbIS",
license_note="UrbIS topographic layers are published under CC0.",
limitation_message=(
"UrbIS street axes describe topographic road geometry for the Brussels-Capital "
"Region and are not a routing network or a traffic measurement."
),
source="UrbIS WFS",
observed_at=datetime(2026, 6, 6, tzinfo=UTC),
valid_from=None,
valid_to=None,
primary_metric={
"metric_key": "road_length",
"method": "intersection_length",
"label": "Wegaslengte",
"unit": "km",
"geometry_dimension": 1,
"is_estimate": False,
},
selection_metrics=(
{
"metric_key": "road_segment_count",
"method": "feature_count",
"label": "Wegsegmenten",
"unit": "objecten",
"geometry_dimension": 1,
},
),
geometry_types=("LineString", "MultiLineString"),
coverage_zones=("brussels",),
endpoint_kind="urbis_wfs",
response_crs="EPSG:31370",
identity_field="INSPIRE_ID",
requires_coverage_area=True,
),
OfficialVectorProduct(
key="urbis_cadastral_parcels",
display_name="UrbIS cadastral parcels",
@@ -561,6 +613,143 @@ class OfficialVectorAcquisitionService:
identity_field="INSPIRE_ID",
requires_coverage_area=True,
),
OfficialVectorProduct(
key="urbis_land_cover_blocks",
display_name="UrbIS land cover blocks",
theme="space_occupation",
provider="Paradigm Brussels",
source_name="urbis",
reference_layer_name="space_occupation",
service_type="WFS 2.0",
collection="urbisvector:Blocks",
source_crs="EPSG:31370",
source_version="UrbIS Land Cover 1.0; live WFS checked 2026-07-22",
observation_label="Current UrbIS land-cover WFS",
authority_level="authoritative",
catalog_url="https://urbisdownload.datastore.brussels/UrbIS/TechSpec/LandCover_TechSpec_NL20240401.pdf",
attribution="Paradigm Brussels - UrbIS Land Cover",
license_note="UrbIS Land Cover is available through the official download and WFS service; retain source attribution.",
limitation_message=(
"UrbIS blocks describe physical and biological land cover. They are not zoning, ownership or legal land use. "
"The WFS does not expose a separate observation date per feature."
),
source="UrbIS WFS",
observed_at=None,
valid_from=None,
valid_to=None,
primary_metric={
"metric_key": "land_cover_area",
"method": "intersection_area",
"label": "Landbedekking",
"unit": "ha",
"geometry_dimension": 2,
"is_estimate": False,
},
selection_metrics=(
{
"metric_key": "land_cover_block_count",
"method": "feature_count",
"label": "Landbedekkingsblokken",
"unit": "objecten",
"geometry_dimension": 2,
},
),
coverage_zones=("brussels",),
endpoint_kind="urbis_wfs",
response_crs="EPSG:31370",
identity_field="INSPIRE_ID",
requires_coverage_area=True,
),
OfficialVectorProduct(
key="urbis_forest_parks",
display_name="UrbIS forests and parks",
theme="forest",
provider="Paradigm Brussels",
source_name="urbis",
reference_layer_name="forest",
service_type="WFS 2.0",
collection="urbisvector:Blocks",
source_crs="EPSG:31370",
source_version="UrbIS Land Cover 1.0; live WFS checked 2026-07-22",
observation_label="Current UrbIS land-cover WFS",
authority_level="authoritative",
catalog_url="https://urbisdownload.datastore.brussels/UrbIS/TechSpec/LandCover_TechSpec_NL20240401.pdf",
attribution="Paradigm Brussels - UrbIS Land Cover",
license_note="UrbIS Land Cover is available through the official download and WFS service; retain source attribution.",
limitation_message="Includes only UrbIS block types FO (forest/woodland) and GB (parks); street trees and smaller green elements are not inferred.",
source="UrbIS WFS",
observed_at=None,
valid_from=None,
valid_to=None,
primary_metric={
"metric_key": "forest_park_area",
"method": "intersection_area",
"label": "Bos- en parkoppervlakte",
"unit": "ha",
"geometry_dimension": 2,
"is_estimate": False,
},
selection_metrics=(
{
"metric_key": "forest_park_count",
"method": "feature_count",
"label": "Bos- en parkzones",
"unit": "objecten",
"geometry_dimension": 2,
},
),
coverage_zones=("brussels",),
endpoint_kind="urbis_wfs",
response_crs="EPSG:31370",
identity_field="INSPIRE_ID",
requires_coverage_area=True,
property_filter={"TYPE": ("FO", "GB")},
),
OfficialVectorProduct(
key="urbis_water_surfaces",
display_name="UrbIS permanent water surfaces",
theme="water",
provider="Paradigm Brussels",
source_name="urbis",
reference_layer_name="water",
service_type="WFS 2.0",
collection="urbisvector:Blocks",
source_crs="EPSG:31370",
source_version="UrbIS Land Cover 1.0; live WFS checked 2026-07-22",
observation_label="Current UrbIS land-cover WFS",
authority_level="authoritative",
catalog_url="https://urbisdownload.datastore.brussels/UrbIS/TechSpec/LandCover_TechSpec_NL20240401.pdf",
attribution="Paradigm Brussels - UrbIS Land Cover",
license_note="UrbIS Land Cover is available through the official download and WFS service; retain source attribution.",
limitation_message="Includes only UrbIS block type WB: canals, lakes and watercourses with predominantly permanent water.",
source="UrbIS WFS",
observed_at=None,
valid_from=None,
valid_to=None,
primary_metric={
"metric_key": "water_surface_area",
"method": "intersection_area",
"label": "Permanent wateroppervlak",
"unit": "ha",
"geometry_dimension": 2,
"is_estimate": False,
},
selection_metrics=(
{
"metric_key": "water_surface_count",
"method": "feature_count",
"label": "Waterzones",
"unit": "objecten",
"geometry_dimension": 2,
},
),
coverage_zones=("brussels",),
endpoint_kind="urbis_wfs",
response_crs="EPSG:31370",
identity_field="INSPIRE_ID",
requires_coverage_area=True,
property_filter={"TYPE": ("WB",)},
),
)
return {product.key: product for product in products}
@@ -1081,6 +1270,12 @@ class OfficialVectorAcquisitionService:
scope_metric: Any,
coverage_scope: str,
) -> dict[str, Any] | None:
raw = dict(feature.get("properties") or {})
if product.property_filter and any(
str(raw.get(property_name) or "") not in allowed_values
for property_name, allowed_values in product.property_filter.items()
):
return None
dimension = 2 if any("Polygon" in item for item in product.geometry_types) else 1
try:
source_geometry = shape(feature.get("geometry"))
@@ -1122,7 +1317,6 @@ class OfficialVectorAcquisitionService:
)
if clipped_wgs84 is None:
return None
raw = dict(feature.get("properties") or {})
identity = (
raw.get(product.identity_field or "")
or feature.get("id")