You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@baremaps.apache.org by bc...@apache.org on 2024/02/07 09:19:33 UTC

(incubator-baremaps) 01/01: Exclude daylight geometries from simplified roadnetwork

This is an automated email from the ASF dual-hosted git repository.

bchapuis pushed a commit to branch license-override
in repository https://gitbox.apache.org/repos/asf/incubator-baremaps.git

commit a67b9dc2ee777e45ee55af764fa64d6a3a89d082
Author: Bertil Chapuis <bc...@gmail.com>
AuthorDate: Wed Feb 7 10:19:24 2024 +0100

    Exclude daylight geometries from simplified roadnetwork
---
 daylight/layers/highway/prepare.sql | 63 +++++++++++++++++++++++++++++++++++++
 daylight/workflow.js                |  2 +-
 2 files changed, 64 insertions(+), 1 deletion(-)

diff --git a/daylight/layers/highway/prepare.sql b/daylight/layers/highway/prepare.sql
new file mode 100644
index 00000000..6873f05e
--- /dev/null
+++ b/daylight/layers/highway/prepare.sql
@@ -0,0 +1,63 @@
+-- Licensed to the Apache Software Foundation (ASF) under one or more
+-- contributor license agreements.  See the NOTICE file distributed with
+-- this work for additional information regarding copyright ownership.
+-- The ASF licenses this file to you under the Apache License, Version 2.0
+-- (the "License"); you may not use this file except in compliance with
+-- the License.  You may obtain a copy of the License at
+--
+-- http://www.apache.org/licenses/LICENSE-2.0
+--
+-- Unless required by applicable law or agreed to in writing, software
+-- distributed under the License is distributed on an "AS IS" BASIS,
+-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+-- See the License for the specific language governing permissions and
+-- limitations under the License.
+CREATE MATERIALIZED VIEW osm_highway AS
+WITH
+    -- Filter the linestrings
+    filtered AS (
+        SELECT
+                tags -> 'highway' AS highway,
+                tags -> 'construction' AS construction,
+                geom AS geom
+        FROM osm_linestring
+        WHERE tags ->> 'highway' IN ('motorway', 'motorway_link', 'trunk', 'trunk_link', 'primary', 'primary_link', 'secondary', 'secondary_link', 'tertiary', 'tertiary_link', 'unclassified', 'residential', 'construction')
+        AND changeset != 1000000000
+    ),
+    -- Cluster the linestrings by highway type
+    clustered AS (
+        SELECT
+                highway AS highway,
+                construction AS construction,
+                geom as geom,
+                ST_ClusterDBSCAN(geom, 0, 1) OVER (PARTITION BY highway) AS cluster
+        FROM
+            filtered
+    ),
+    -- Merge the linestrings into a single geometry per cluster
+    merged AS (
+        SELECT
+            highway AS highway,
+            construction AS construction,
+            ST_LineMerge(ST_Collect(geom)) AS geom
+        FROM
+            clustered
+        GROUP BY
+            highway, construction, cluster
+    ),
+    -- Explode the merged linestrings into individual linestrings
+    exploded AS (
+        SELECT
+            highway AS highway,
+            construction AS construction,
+            (ST_Dump(geom)).geom AS geom
+        FROM
+            merged
+    )
+SELECT
+    row_number() OVER () AS id,
+    jsonb_build_object('highway', highway, 'construction', construction) AS tags,
+    geom AS geom
+FROM exploded;
+
+CREATE INDEX IF NOT EXISTS osm_highway_geom_index ON osm_highway USING SPGIST (geom);
diff --git a/daylight/workflow.js b/daylight/workflow.js
index aef8e1a9..1efc9ac0 100644
--- a/daylight/workflow.js
+++ b/daylight/workflow.js
@@ -263,7 +263,7 @@ export default {
                 },
                 {
                     "type": "ExecuteSql",
-                    "file": "../basemap/layers/highway/prepare.sql",
+                    "file": "./layers/highway/prepare.sql",
                     "database": config.database,
                 },
                 {