Analyzing weather stations coverage using a Voronoi diagram

WITH world_stations AS (
SELECT ST_GEOGPOINT(longitude, latitude) AS geom
FROM `bigquery-public-data.ghcn_d.ghcnd_stations`
),
nys_bounds AS (
SELECT state_geom AS geom
FROM `bigquery-public-data.geo_us_boundaries.states`
WHERE state_fips_code = '36' -- New york
),
stations_nys AS (
SELECT ARRAY (
SELECT world_stations.geom AS geom
FROM nys_bounds
JOIN world_stations ON ST_CONTAINS(nys_bounds.geom , world_stations.geom)
) AS array_stations
),
voronoi_array AS (
SELECT `carto-un`.carto.ST_VORONOIPOLYGONS(stations_nys.array_stations, null) AS nested_voronoi
FROM stations_nys
),
voronoi_polygons AS (
SELECT ST_INTERSECTION(nys_bounds.geom, unnested_voronoi) AS geom
FROM voronoi_array, UNNEST(nested_voronoi) AS unnested_voronoi, nys_bounds
)
SELECT ST_AREA(geom) AS area, geom FROM voronoi_polygons;
Last updated
Was this helpful?


