From ae443e29d983b3a16724cdf016a902023b98566b Mon Sep 17 00:00:00 2001 From: "Begerad, Stefan" Date: Mon, 31 Jul 2023 16:05:30 +0200 Subject: [PATCH] feat(db): add sales points to update-db.sh --- db/osm-rvb.style | 4 +++ db/sql/scripts/sales-point.sql | 47 ++++++++++++++++++++++++++++++++++ db/update-db.sh | 2 ++ 3 files changed, 53 insertions(+) create mode 100644 db/sql/scripts/sales-point.sql diff --git a/db/osm-rvb.style b/db/osm-rvb.style index 70a4659..7ee34d3 100644 --- a/db/osm-rvb.style +++ b/db/osm-rvb.style @@ -228,6 +228,10 @@ node,way network text linear node,way park_ride text linear node,way bike_ride text linear +# consider for ticket office and machine comparison +node,way tickets:public_transport text linear +node,way vending text linear + # consider for poi node,way attraction text polygon node,way healthcare text polygon diff --git a/db/sql/scripts/sales-point.sql b/db/sql/scripts/sales-point.sql new file mode 100644 index 0000000..8a45b70 --- /dev/null +++ b/db/sql/scripts/sales-point.sql @@ -0,0 +1,47 @@ +-- colon before variable: for a prepared statement using named placeholders, this will be a parameter name of the form :name +CREATE SCHEMA IF NOT EXISTS :schema; +SET search_path to :schema, public; + +DROP TABLE IF EXISTS :schema.tbl_sale_points; +DROP VIEW IF EXISTS :schema.vw_sale_points; + +CREATE OR REPLACE VIEW :schema.vw_sale_points AS +SELECT entity.osm_id, entity.sale_points, entity.name, entity.st_x, entity.st_y +FROM ( +--planet_osm_point/node +SELECT osmNode.osm_id, osmNode.sale_points, osmNode.name, +st_x(st_transform(osmNode.way, 4326)) AS st_x, +st_y(st_transform(osmNode.way, 4326)) AS st_y +FROM planet_osm_point AS osmNode +WHERE + (osmNode.shop = 'ticket' + AND osmNode.tickets:public_transport != 'no' + AND osmNode.tickets:public_transport IS NOT NULL) + OR + (osmNode.amenity = 'vending_machine' + AND osmNode.vending = 'public_transport_tickets') + AND osmNode.proposed IS NULL +UNION +--planet_osm_polygone/way +SELECT osmWay.osm_id, osmWay.sale_points, osmWay.name, +st_x(st_centroid(st_transform(osmWay.way, 4326))) AS st_x, +st_y(st_centroid(st_transform(osmWay.way, 4326))) AS st_y +FROM planet_osm_polygon AS osmWay +WHERE + (osmWay.shop = 'ticket' + AND osmWay.tickets:public_transport != 'no' + AND osmWay.tickets:public_transport IS NOT NULL) + OR + (osmWay.amenity = 'vending_machine' + AND osmWay.vending = 'public_transport_tickets') + AND osmWay.proposed IS NULL +) AS entity +--consider coordinates inside rvb only +LEFT JOIN vw_counties vwc ON st_contains(vwc.way, st_transform(st_geomfromtext('POINT(' || entity.st_x || ' ' || entity.st_y ||')',4326),3857)) +--consider coordinates inside rvb only +LEFT JOIN vw_municipalities vwm ON st_contains(vwm.way, st_transform(st_geomfromtext('POINT(' || entity.st_x || ' ' || entity.st_y ||')',4326),3857)) +--consider counties of rvb only +WHERE (vwc.name = ANY (ARRAY['Braunschweig','Salzgitter','Wolfsburg','Gifhorn','Landkreis Goslar','Landkreis Helmstedt','Landkreis Peine','Landkreis Wolfenbüttel'])) +ORDER BY vwc.name, vwm.name, entity.name; + +CREATE TABLE IF NOT EXISTS :schema.tbl_sale_points AS SELECT * FROM :schema.vw_sale_points; diff --git a/db/update-db.sh b/db/update-db.sh index 13a34b8..548b953 100644 --- a/db/update-db.sh +++ b/db/update-db.sh @@ -30,5 +30,7 @@ psql -U $DB_USER -f ./sql/scripts/poi.sql -d $DB_NAME -v schema=$DB_SCHEMA # psql -U $DB_USER -f ./sql/scripts/railway.sql -d $DB_NAME -v schema=$DB_SCHEMA # +psql -U $DB_USER -f ./sql/scripts/sales-point.sql -d $DB_NAME -v schema=$DB_SCHEMA +# echo "Done." #done.