From d3e655abdb8ef2e4bc9c918614e394484ebaf007 Mon Sep 17 00:00:00 2001 From: Tudor Date: Thu, 26 Mar 2026 21:17:08 +0000 Subject: [PATCH] fix(dbt): compute geom from easting/northing in dim_location Convert GIAS British National Grid coordinates (EPSG:27700) to WGS84 (EPSG:4326) directly in the dbt model. The geocode script backfills schools missing easting/northing via Postcodes.io. Co-Authored-By: Claude Opus 4.6 --- pipeline/transform/models/marts/dim_location.sql | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/pipeline/transform/models/marts/dim_location.sql b/pipeline/transform/models/marts/dim_location.sql index fedc066..3f7d4de 100644 --- a/pipeline/transform/models/marts/dim_location.sql +++ b/pipeline/transform/models/marts/dim_location.sql @@ -1,5 +1,6 @@ -- Mart: School location dimension — one row per URN, PostGIS-enabled --- The geom column is populated by a post-hook or the geocode script. +-- Geometry derived from GIAS easting/northing (British National Grid → WGS84). +-- For schools missing easting/northing, the geocode script backfills via Postcodes.io. select s.urn, @@ -13,7 +14,12 @@ select s.parliamentary_constituency, s.urban_rural, s.easting, - s.northing + s.northing, + case + when s.easting is not null and s.northing is not null + then ST_Transform(ST_SetSRID(ST_MakePoint(s.easting, s.northing), 27700), 4326) + else null + end as geom from {{ ref('stg_gias_establishments') }} s where s.status = 'Open' and s.postcode is not null