aboutsummaryrefslogtreecommitdiff
path: root/src/db_handler.py
diff options
context:
space:
mode:
authoruser <user@node5.net>2024-04-07 17:25:06 +0200
committeruser <user@node5.net>2024-04-07 17:25:06 +0200
commit21dd4d87554a8222bb84acdc7d22927923c60094 (patch)
tree996323567848453f6ae377aa6c48631796d5a9df /src/db_handler.py
parent0ead8a6c32e55fb2989e932ff0d5a20f88809fd9 (diff)
color polygons
Diffstat (limited to 'src/db_handler.py')
-rw-r--r--src/db_handler.py45
1 files changed, 41 insertions, 4 deletions
diff --git a/src/db_handler.py b/src/db_handler.py
index 3f77366..5798c66 100644
--- a/src/db_handler.py
+++ b/src/db_handler.py
@@ -7,6 +7,32 @@ with open(os.path.join('configs', 'database.yml'), 'r') as file:
db_con_params = yaml.safe_load(file.read())
+def get_all() -> (list[dict]):
+ with psycopg.connect(**db_con_params, row_factory=psycopg.rows.dict_row) as conn:
+ with conn.cursor() as cur:
+ cur.execute("""
+ SELECT
+ shop.osm_id,
+ shop.name,
+ shop.brand,
+ ST_Y(ST_Transform(shop.geom, 4326)) AS lat,
+ ST_X(ST_Transform(shop.geom, 4326)) AS long,
+ ST_AsGeoJSON(ST_Transform(polygon.geom, 4326)) as polygon
+ FROM shop
+ JOIN
+ (
+ SELECT (ST_DUMP(ST_VoronoiPolygons(ST_Collect(geom)))).geom as geom
+ FROM shop
+ WHERE subclass = 'supermarket'
+ ) polygon ON ST_Contains(polygon.geom, shop.geom)
+ WHERE subclass = 'supermarket'
+ ;
+ """)
+
+ all = cur.fetchall()
+ return all
+
+
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:
@@ -24,12 +50,23 @@ def get_supermarkets() -> (list[dict], list[str]):
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:
+ """
+ SELECT ST_AsGeoJSON(ST_Transform(ST_VoronoiPolygons(ST_Collect(geom)), 4326)) as geojson
+ FROM shop
+ WHERE subclass = 'supermarket';
+ """
+ """
+ SELECT *,
+ ST_ClusterDBSCAN(<geom>, 0, 1) OVER() AS _clst
+ FROM <your_table>;
+ """
cur.execute("""
- SELECT ST_AsGeoJSON(ST_Transform(ST_VoronoiPolygons(ST_Collect(geom)), 4326)) as geojson
- FROM shop
- WHERE subclass = 'supermarket';
+ SELECT ARRAY_AGG(name) as names, ST_AsGeoJSON(ST_Transform(ST_VoronoiPolygons(ST_Collect(geom)), 4326)) as geojson
+ FROM shop
+ WHERE subclass = 'supermarket' AND osm_id IN (7688736659, 7682568726, 1085855265, 4517989992)
+ ;
""")
- voronoi_polygons = cur.fetchone()['geojson']
+ voronoi_polygons = cur.fetchone()
return voronoi_polygons