diff options
Diffstat (limited to 'src/db_handler.py')
| -rw-r--r-- | src/db_handler.py | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/src/db_handler.py b/src/db_handler.py new file mode 100644 index 0000000..565819d --- /dev/null +++ b/src/db_handler.py @@ -0,0 +1,35 @@ +import os + +import psycopg +import yaml + +with open(os.path.join('configs', 'database.yml'), 'r') as file: + db_con_params = yaml.safe_load(file.read()) + + +def get_supermarkets() -> (list[dict], list[str]): + with psycopg.connect(**db_con_params, row_factory=psycopg.rows.dict_row) as conn: + with conn.cursor() as cur: + cur.execute(""" + SELECT osm_type, osm_id, name, + ST_Y(ST_Transform(geom, 4326)) AS lat, ST_X(ST_Transform(geom, 4326)) AS long + FROM shop WHERE subclass = 'supermarket' AND name='Løvbjerg'; + """) + + supermarkets = cur.fetchall() + return supermarkets + + +def voronoi_polygons() -> (list[dict], list[str]): + with psycopg.connect(**db_con_params, row_factory=psycopg.rows.dict_row) as conn: + with conn.cursor() as cur: + cur.execute(""" + SELECT ST_AsGeoJSON(ST_Transform(ST_VoronoiPolygons(ST_Collect(geom)), 4326)) as geojson + FROM shop + WHERE subclass = 'supermarket' + AND name = 'Løvbjerg'; + """) + + voronoi_polygons = cur.fetchone()['geojson'] + + return voronoi_polygons |
