feat(projects): automate project infrastructure provisioning
This commit is contained in:
@@ -0,0 +1,30 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from app.native.wndb.core.connection import project_connection
|
||||
|
||||
|
||||
def get_project_map_bbox(project: str) -> tuple[float, float, float, float]:
|
||||
"""Return the combined published node/link bounds in EPSG:3857."""
|
||||
with project_connection(project) as conn, conn.cursor() as cur:
|
||||
cur.execute(
|
||||
"""
|
||||
with project_geometries as (
|
||||
select geom from gis.junctions
|
||||
union all
|
||||
select geom from gis.pipes
|
||||
), bounds as (
|
||||
select ST_Extent(geom) as extent from project_geometries
|
||||
)
|
||||
select ST_XMin(extent) as minx,
|
||||
ST_YMin(extent) as miny,
|
||||
ST_XMax(extent) as maxx,
|
||||
ST_YMax(extent) as maxy
|
||||
from bounds
|
||||
"""
|
||||
)
|
||||
row = cur.fetchone()
|
||||
if row is None or any(
|
||||
row[key] is None for key in ("minx", "miny", "maxx", "maxy")
|
||||
):
|
||||
raise RuntimeError("Imported model has no publishable GIS geometry")
|
||||
return tuple(float(row[key]) for key in ("minx", "miny", "maxx", "maxy"))
|
||||
Reference in New Issue
Block a user