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 2023/04/23 21:07:33 UTC
[incubator-baremaps] branch main updated: Improve the osm simplifications (#625)
This is an automated email from the ASF dual-hosted git repository.
bchapuis pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-baremaps.git
The following commit(s) were added to refs/heads/main by this push:
new c6110125 Improve the osm simplifications (#625)
c6110125 is described below
commit c61101253fa98b7653b63483a28a15bd2b2e4279
Author: Bertil Chapuis <bc...@gmail.com>
AuthorDate: Sun Apr 23 23:07:29 2023 +0200
Improve the osm simplifications (#625)
* Improve the osm simplifications
* Fix issues in the workflow
* Fix waterway simplifications
---
.run/basemap-workflow.run.xml | 22 ++
.run/transformation-workflow.run.xml | 22 ++
.../function/RelationGeometryBuilder.java | 2 +-
.../openstreetmap/function/WayGeometryBuilder.java | 2 +-
.../baremaps/storage/postgres/PostgresStore.java | 6 +-
.../apache/baremaps/workflow/WorkflowExecutor.java | 9 +-
basemap/layers/aerialway/tileset.js | 2 +-
basemap/layers/aeroway/tileset.js | 4 +-
basemap/layers/amenity/tileset.js | 2 +-
basemap/layers/attraction/tileset.js | 2 +-
basemap/layers/barrier/tileset.js | 2 +-
.../boundary}/globaladm0_clean.sql | 0
.../boundary}/globaladm0_index.sql | 0
.../boundary}/globaladm0_simplify.sql | 0
.../boundary}/globaladm1_clean.sql | 0
.../boundary}/globaladm1_index.sql | 0
.../boundary}/globaladm1_simplify.sql | 0
basemap/layers/boundary/tileset.js | 6 +-
basemap/layers/building/tileset.js | 4 +-
.../highway/clean.sql} | 2 +-
.../highway/index.sql} | 0
basemap/layers/highway/prepare.sql | 55 ++++
.../highway/simplify.sql} | 37 ++-
basemap/layers/highway/tileset.js | 28 +-
basemap/layers/landuse/clean.sql | 52 ++++
.../landuse/index.sql} | 0
basemap/layers/landuse/prepare.sql | 139 +++++++++
basemap/layers/landuse/simplify.sql | 129 +++++++++
basemap/layers/landuse/tileset.js | 14 +-
basemap/layers/leisure/tileset.js | 4 +-
.../linestring/clean.sql} | 2 +-
.../linestring/index.sql} | 4 +-
.../linestring/prepare.sql} | 11 +-
basemap/layers/man_made/tileset.js | 2 +-
basemap/layers/member/prepare.sql | 11 +
basemap/layers/natural/clean.sql | 53 ++++
.../natural/index.sql} | 0
basemap/layers/natural/prepare.sql | 156 +++++++++++
.../natural/simplify.sql} | 36 +--
basemap/layers/natural/tileset.js | 10 +-
.../ocean/clean.sql} | 5 +-
.../ocean/index.sql} | 5 +-
.../ocean/prepare.sql} | 12 +-
basemap/layers/ocean/tileset.js | 4 +-
basemap/layers/point/clean.sql | 34 +++
basemap/layers/point/index.sql | 22 ++
basemap/layers/point/simplify.sql | 110 ++++++++
basemap/layers/point/tileset.js | 2 +-
.../polygon/clean.sql} | 2 +-
.../polygon/index.sql} | 2 +-
.../polygon/prepare.sql} | 8 +-
basemap/layers/power/tileset.js | 4 +-
.../railway/clean.sql} | 2 +-
.../railway/index.sql} | 0
.../railway/prepare.sql} | 3 -
.../railway/simplify.sql} | 0
basemap/layers/railway/tileset.js | 6 +-
.../osm_water_index.sql => layers/route/clean.sql} | 2 +-
basemap/layers/route/index.sql | 21 ++
.../route/prepare.sql} | 24 +-
.../route/simplify.sql} | 80 +++---
basemap/layers/route/tileset.js | 8 +-
.../waterway/clean.sql} | 2 +-
basemap/layers/waterway/index.sql | 21 ++
basemap/layers/waterway/prepare.sql | 56 ++++
.../waterway/simplify.sql} | 80 +++---
basemap/layers/waterway/tileset.js | 6 +-
basemap/queries/globaladm2_clean.sql | 31 ---
basemap/queries/globaladm2_index.sql | 23 --
basemap/queries/globaladm2_simplify.sql | 71 -----
basemap/queries/osm_boundary.sql | 103 -------
basemap/queries/osm_boundary_index.sql | 21 --
basemap/queries/osm_boundary_prepare.sql | 22 --
basemap/queries/osm_highway_prepare.sql | 33 ---
basemap/queries/osm_landuse_prepare.sql | 165 -----------
basemap/queries/osm_landuse_simplify.sql | 92 ------
basemap/queries/osm_natural_prepare.sql | 310 ---------------------
.../{osm_nodes_prepare.sql => osm_nodes.sql} | 3 +-
basemap/queries/osm_nodes_clean.sql | 33 ---
basemap/queries/osm_nodes_index.sql | 22 --
basemap/queries/osm_nodes_simplify.sql | 68 -----
...osm_relations_prepare.sql => osm_relations.sql} | 4 +-
basemap/queries/osm_relations_clean.sql | 33 ---
basemap/queries/osm_relations_index.sql | 21 --
basemap/queries/osm_relations_simplify.sql | 152 ----------
.../{osm_relations_prepare.sql => osm_ways.sql} | 4 +-
basemap/queries/osm_ways_clean.sql | 35 ---
basemap/queries/osm_ways_index.sql | 23 --
basemap/queries/osm_ways_simplify.sql | 152 ----------
basemap/tileset.js | 4 +-
basemap/workflow.js | 274 +++++++++++-------
examples/transformation/simplifications.sql | 38 +++
examples/transformation/style.json | 26 ++
examples/transformation/tileset.json | 30 ++
94 files changed, 1392 insertions(+), 1752 deletions(-)
diff --git a/.run/basemap-workflow.run.xml b/.run/basemap-workflow.run.xml
new file mode 100644
index 00000000..e1303fa5
--- /dev/null
+++ b/.run/basemap-workflow.run.xml
@@ -0,0 +1,22 @@
+<component name="ProjectRunConfigurationManager">
+ <configuration default="false" name="basemap-workflow" type="Application" factoryName="Application">
+ <option name="MAIN_CLASS_NAME" value="org.apache.baremaps.cli.Baremaps" />
+ <module name="baremaps-cli" />
+ <option name="PROGRAM_PARAMETERS" value="workflow execute --file workflow.js" />
+ <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/basemap" />
+ <extension name="coverage">
+ <pattern>
+ <option name="PATTERN" value="org.apache.baremaps.server.ogcapi.*" />
+ <option name="ENABLED" value="true" />
+ </pattern>
+ </extension>
+ <extension name="software.aws.toolkits.jetbrains.core.execution.JavaAwsConnectionExtension">
+ <option name="credential" />
+ <option name="region" />
+ <option name="useCurrentConnection" value="false" />
+ </extension>
+ <method v="2">
+ <option name="Make" enabled="true" />
+ </method>
+ </configuration>
+</component>
\ No newline at end of file
diff --git a/.run/transformation-workflow.run.xml b/.run/transformation-workflow.run.xml
new file mode 100644
index 00000000..46f9b4ac
--- /dev/null
+++ b/.run/transformation-workflow.run.xml
@@ -0,0 +1,22 @@
+<component name="ProjectRunConfigurationManager">
+ <configuration default="false" name="transformation-workflow" type="Application" factoryName="Application">
+ <option name="MAIN_CLASS_NAME" value="org.apache.baremaps.cli.Baremaps" />
+ <module name="baremaps-cli" />
+ <option name="PROGRAM_PARAMETERS" value="workflow execute --file workflow.json" />
+ <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/examples/transformation" />
+ <extension name="coverage">
+ <pattern>
+ <option name="PATTERN" value="org.apache.baremaps.server.ogcapi.*" />
+ <option name="ENABLED" value="true" />
+ </pattern>
+ </extension>
+ <extension name="software.aws.toolkits.jetbrains.core.execution.JavaAwsConnectionExtension">
+ <option name="credential" />
+ <option name="region" />
+ <option name="useCurrentConnection" value="false" />
+ </extension>
+ <method v="2">
+ <option name="Make" enabled="true" />
+ </method>
+ </configuration>
+</component>
\ No newline at end of file
diff --git a/baremaps-core/src/main/java/org/apache/baremaps/openstreetmap/function/RelationGeometryBuilder.java b/baremaps-core/src/main/java/org/apache/baremaps/openstreetmap/function/RelationGeometryBuilder.java
index 35370f09..67cb4037 100644
--- a/baremaps-core/src/main/java/org/apache/baremaps/openstreetmap/function/RelationGeometryBuilder.java
+++ b/baremaps-core/src/main/java/org/apache/baremaps/openstreetmap/function/RelationGeometryBuilder.java
@@ -95,7 +95,7 @@ public class RelationGeometryBuilder implements Consumer<Relation> {
logger.debug("Relation #{} processed in {} ms", relation.id(), duration);
}
} catch (Exception e) {
- logger.warn("Unable to build the geometry for relation #" + relation.id(), e);
+ logger.debug("Unable to build the geometry for relation #" + relation.id(), e);
relation.setGeometry(GEOMETRY_FACTORY_WGS84.createEmpty(0));
}
}
diff --git a/baremaps-core/src/main/java/org/apache/baremaps/openstreetmap/function/WayGeometryBuilder.java b/baremaps-core/src/main/java/org/apache/baremaps/openstreetmap/function/WayGeometryBuilder.java
index 9a57fcbf..4e3a4b69 100644
--- a/baremaps-core/src/main/java/org/apache/baremaps/openstreetmap/function/WayGeometryBuilder.java
+++ b/baremaps-core/src/main/java/org/apache/baremaps/openstreetmap/function/WayGeometryBuilder.java
@@ -61,7 +61,7 @@ public class WayGeometryBuilder implements Consumer<Way> {
}
}
} catch (Exception e) {
- logger.warn("Unable to build the geometry for way #" + way.id(), e);
+ logger.debug("Unable to build the geometry for way #" + way.id(), e);
way.setGeometry(GEOMETRY_FACTORY_WGS84.createEmpty(0));
}
}
diff --git a/baremaps-core/src/main/java/org/apache/baremaps/storage/postgres/PostgresStore.java b/baremaps-core/src/main/java/org/apache/baremaps/storage/postgres/PostgresStore.java
index a07e60f9..f932f5ad 100644
--- a/baremaps-core/src/main/java/org/apache/baremaps/storage/postgres/PostgresStore.java
+++ b/baremaps-core/src/main/java/org/apache/baremaps/storage/postgres/PostgresStore.java
@@ -140,14 +140,14 @@ public class PostgresStore implements Store {
// Drop the table if it exists
var dropQuery = dropTable(schema.name());
- logger.info(dropQuery);
+ logger.debug(dropQuery);
try (var dropStatement = connection.prepareStatement(dropQuery)) {
dropStatement.execute();
}
// Create the table
var createQuery = createTable(schema);
- logger.info(createQuery);
+ logger.debug(createQuery);
try (var createStatement = connection.prepareStatement(createQuery)) {
createStatement.execute();
}
@@ -155,7 +155,7 @@ public class PostgresStore implements Store {
// Copy the data
PGConnection pgConnection = connection.unwrap(PGConnection.class);
var copyQuery = copy(schema);
- logger.info(copyQuery);
+ logger.debug(copyQuery);
try (var writer = new CopyWriter(new PGCopyOutputStream(pgConnection, copyQuery))) {
writer.writeHeader();
var rowIterator = table.iterator();
diff --git a/baremaps-core/src/main/java/org/apache/baremaps/workflow/WorkflowExecutor.java b/baremaps-core/src/main/java/org/apache/baremaps/workflow/WorkflowExecutor.java
index 59441c33..2b3d3d05 100644
--- a/baremaps-core/src/main/java/org/apache/baremaps/workflow/WorkflowExecutor.java
+++ b/baremaps-core/src/main/java/org/apache/baremaps/workflow/WorkflowExecutor.java
@@ -138,9 +138,16 @@ public class WorkflowExecutor implements AutoCloseable {
// Time the execution of the tasks
var measures = new ArrayList<TaskMeasure>();
+ // Get the step from the workflow and skip it if it does not exist.
+ // This allows to comment out steps in the workflow without breaking the execution.
+ var step = steps.get(stepId);
+ if (step == null) {
+ logger.warn("Step {} does not exist and will be skipped", stepId);
+ return future;
+ }
+
// Chain the tasks of the step to the future so that they are executed
// sequentially when the previous future step completes.
- var step = steps.get(stepId);
var tasks = step.getTasks();
for (var task : tasks) {
future = future.thenRunAsync(() -> {
diff --git a/basemap/layers/aerialway/tileset.js b/basemap/layers/aerialway/tileset.js
index 663cc305..86ef9e30 100644
--- a/basemap/layers/aerialway/tileset.js
+++ b/basemap/layers/aerialway/tileset.js
@@ -16,7 +16,7 @@ export default {
minzoom: 13,
maxzoom: 20,
sql:
- "SELECT id, tags, geom FROM osm_ways_z$zoom WHERE tags ? 'aerialway'",
+ "SELECT id, tags, geom FROM osm_ways WHERE tags ? 'aerialway'",
},
],
}
diff --git a/basemap/layers/aeroway/tileset.js b/basemap/layers/aeroway/tileset.js
index 1d92475d..d63d2555 100644
--- a/basemap/layers/aeroway/tileset.js
+++ b/basemap/layers/aeroway/tileset.js
@@ -13,10 +13,10 @@ export default {
id: 'aeroway',
queries: [
{
- minzoom: 12,
+ minzoom: 13,
maxzoom: 20,
sql:
- "SELECT id, tags, geom FROM osm_ways_z$zoom WHERE tags ? 'aeroway'",
+ "SELECT id, tags, geom FROM osm_ways WHERE tags ? 'aeroway'",
},
],
}
diff --git a/basemap/layers/amenity/tileset.js b/basemap/layers/amenity/tileset.js
index 03271bd1..7afc744e 100644
--- a/basemap/layers/amenity/tileset.js
+++ b/basemap/layers/amenity/tileset.js
@@ -15,7 +15,7 @@ export default {
{
minzoom: 13,
maxzoom: 20,
- sql: "SELECT id, tags, geom FROM osm_ways_z$zoom WHERE tags ? 'amenity'",
+ sql: "SELECT id, tags, geom FROM osm_ways WHERE tags ? 'amenity'",
},
],
}
diff --git a/basemap/layers/attraction/tileset.js b/basemap/layers/attraction/tileset.js
index 0a109e03..ce9d3db0 100644
--- a/basemap/layers/attraction/tileset.js
+++ b/basemap/layers/attraction/tileset.js
@@ -15,7 +15,7 @@ export default {
{
minzoom: 13,
maxzoom: 20,
- sql: "SELECT id, tags, geom FROM osm_ways_z$zoom WHERE tags ? 'attraction'",
+ sql: "SELECT id, tags, geom FROM osm_ways WHERE tags ? 'attraction'",
},
],
}
diff --git a/basemap/layers/barrier/tileset.js b/basemap/layers/barrier/tileset.js
index 14862282..0bba4d85 100644
--- a/basemap/layers/barrier/tileset.js
+++ b/basemap/layers/barrier/tileset.js
@@ -16,7 +16,7 @@ export default {
minzoom: 14,
maxzoom: 20,
sql:
- "SELECT id, tags, geom FROM osm_ways_z$zoom WHERE tags ? 'barrier'",
+ "SELECT id, tags, geom FROM osm_ways WHERE tags ? 'barrier'",
},
],
}
diff --git a/basemap/queries/globaladm0_clean.sql b/basemap/layers/boundary/globaladm0_clean.sql
similarity index 100%
rename from basemap/queries/globaladm0_clean.sql
rename to basemap/layers/boundary/globaladm0_clean.sql
diff --git a/basemap/queries/globaladm0_index.sql b/basemap/layers/boundary/globaladm0_index.sql
similarity index 100%
rename from basemap/queries/globaladm0_index.sql
rename to basemap/layers/boundary/globaladm0_index.sql
diff --git a/basemap/queries/globaladm0_simplify.sql b/basemap/layers/boundary/globaladm0_simplify.sql
similarity index 100%
rename from basemap/queries/globaladm0_simplify.sql
rename to basemap/layers/boundary/globaladm0_simplify.sql
diff --git a/basemap/queries/globaladm1_clean.sql b/basemap/layers/boundary/globaladm1_clean.sql
similarity index 100%
rename from basemap/queries/globaladm1_clean.sql
rename to basemap/layers/boundary/globaladm1_clean.sql
diff --git a/basemap/queries/globaladm1_index.sql b/basemap/layers/boundary/globaladm1_index.sql
similarity index 100%
rename from basemap/queries/globaladm1_index.sql
rename to basemap/layers/boundary/globaladm1_index.sql
diff --git a/basemap/queries/globaladm1_simplify.sql b/basemap/layers/boundary/globaladm1_simplify.sql
similarity index 100%
rename from basemap/queries/globaladm1_simplify.sql
rename to basemap/layers/boundary/globaladm1_simplify.sql
diff --git a/basemap/layers/boundary/tileset.js b/basemap/layers/boundary/tileset.js
index 8bcfc19c..09111907 100644
--- a/basemap/layers/boundary/tileset.js
+++ b/basemap/layers/boundary/tileset.js
@@ -16,19 +16,19 @@ export default {
minzoom: 1,
maxzoom: 6,
sql:
- "SELECT fid as id, jsonb_build_object('boundary', 'administrative', 'admin_level', '0') as tags, st_setsrid(geom, 3857) FROM globaladm0_z$zoom",
+ "SELECT fid as id, jsonb_build_object('boundary', 'administrative', 'admin_level', '0') as tags, geom FROM globaladm0_z$zoom",
},
{
minzoom: 6,
maxzoom: 14,
sql:
- "SELECT fid as id, jsonb_build_object('boundary', 'administrative', 'admin_level', '1') as tags, st_setsrid(geom, 3857) FROM globaladm1_z$zoom",
+ "SELECT fid as id, jsonb_build_object('boundary', 'administrative', 'admin_level', '1') as tags, geom FROM globaladm1_z$zoom",
},
{
minzoom: 14,
maxzoom: 20,
sql:
- "SELECT id, tags, geom FROM osm_ways_z$zoom WHERE tags ? 'boundary'",
+ "SELECT id, tags, geom FROM osm_ways WHERE tags ? 'boundary'",
},
],
}
diff --git a/basemap/layers/building/tileset.js b/basemap/layers/building/tileset.js
index b58672b1..60f42607 100644
--- a/basemap/layers/building/tileset.js
+++ b/basemap/layers/building/tileset.js
@@ -16,13 +16,13 @@ export default {
minzoom: 13,
maxzoom: 20,
sql:
- "SELECT id, tags, geom FROM osm_ways_z$zoom WHERE tags ? 'building'",
+ "SELECT id, tags, geom FROM osm_ways WHERE tags ? 'building'",
},
{
minzoom: 13,
maxzoom: 20,
sql:
- "SELECT id, tags, geom FROM osm_relations_z$zoom WHERE tags ? 'building'",
+ "SELECT id, tags, geom FROM osm_relations WHERE tags ? 'building'",
},
],
}
diff --git a/basemap/queries/osm_water_index.sql b/basemap/layers/highway/clean.sql
similarity index 85%
copy from basemap/queries/osm_water_index.sql
copy to basemap/layers/highway/clean.sql
index 8e6c537d..fccb606a 100644
--- a/basemap/queries/osm_water_index.sql
+++ b/basemap/layers/highway/clean.sql
@@ -7,4 +7,4 @@
-- 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 INDEX water_polygons_geometry_index ON water_polygons_shp USING SPGIST(geometry);
+DROP MATERIALIZED VIEW IF EXISTS osm_highway CASCADE;
diff --git a/basemap/queries/osm_highway_index.sql b/basemap/layers/highway/index.sql
similarity index 100%
rename from basemap/queries/osm_highway_index.sql
rename to basemap/layers/highway/index.sql
diff --git a/basemap/layers/highway/prepare.sql b/basemap/layers/highway/prepare.sql
new file mode 100644
index 00000000..8ec65b5f
--- /dev/null
+++ b/basemap/layers/highway/prepare.sql
@@ -0,0 +1,55 @@
+-- Licensed 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.
+DROP MATERIALIZED VIEW IF EXISTS osm_highway CASCADE;
+
+CREATE MATERIALIZED VIEW osm_highway AS
+WITH
+ -- Filter the linestrings
+ filtered AS (
+ SELECT
+ tags -> 'highway' AS highway,
+ 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')
+ ),
+ -- Cluster the linestrings by highway type
+ clustered AS (
+ SELECT
+ highway AS highway,
+ 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,
+ ST_LineMerge(ST_Collect(geom)) AS geom
+ FROM
+ clustered
+ GROUP BY
+ highway, cluster
+ ),
+ -- Explode the merged linestrings into individual linestrings
+ exploded AS (
+ SELECT
+ highway AS highway,
+ (ST_Dump(geom)).geom AS geom
+ FROM
+ merged
+ )
+SELECT
+ row_number() OVER () AS id,
+ jsonb_build_object('highway', highway) 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/basemap/queries/osm_highway_simplify.sql b/basemap/layers/highway/simplify.sql
similarity index 73%
rename from basemap/queries/osm_highway_simplify.sql
rename to basemap/layers/highway/simplify.sql
index cc01b46f..be92cef7 100644
--- a/basemap/queries/osm_highway_simplify.sql
+++ b/basemap/layers/highway/simplify.sql
@@ -7,6 +7,7 @@
-- 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 VIEW osm_highway_z20 AS
SELECT id, tags, geom FROM osm_highway;
@@ -34,59 +35,71 @@ SELECT id, tags, geom FROM osm_highway;
CREATE MATERIALIZED VIEW osm_highway_z12 AS
SELECT id, tags, geom
FROM (SELECT id, tags, st_simplifypreservetopology(geom, 78270 / power(2, 12)) AS geom FROM osm_highway) AS osm_highway
-WHERE geom IS NOT NULL AND (st_area(st_envelope(geom)) > power((78270 / power(2, 12)), 2));
+WHERE geom IS NOT NULL AND (st_area(st_envelope(geom)) > power((78270 / power(2, 12)), 2))
+ AND tags ->> 'highway' IN ( 'motorway', 'motorway_link', 'trunk', 'trunk_link', 'primary', 'primary_link', 'secondary', 'secondary_link', 'tertiary', 'tertiary_link', 'unclassified', 'residential');
CREATE MATERIALIZED VIEW osm_highway_z11 AS
SELECT id, tags, geom
FROM (SELECT id, tags, st_simplifypreservetopology(geom, 78270 / power(2, 11)) AS geom FROM osm_highway) AS osm_highway
-WHERE geom IS NOT NULL AND (st_area(st_envelope(geom)) > power((78270 / power(2, 11)), 2));
+WHERE geom IS NOT NULL AND (st_area(st_envelope(geom)) > power((78270 / power(2, 11)), 2))
+ AND tags ->> 'highway' IN ( 'motorway', 'motorway_link', 'trunk', 'trunk_link', 'primary', 'primary_link', 'secondary', 'secondary_link', 'tertiary', 'tertiary_link', 'unclassified', 'residential');
CREATE MATERIALIZED VIEW osm_highway_z10 AS
SELECT id, tags, geom
FROM (SELECT id, tags, st_simplifypreservetopology(geom, 78270 / power(2, 10)) AS geom FROM osm_highway) AS osm_highway
-WHERE geom IS NOT NULL AND (st_area(st_envelope(geom)) > power((78270 / power(2, 10)), 2));
+WHERE geom IS NOT NULL AND (st_area(st_envelope(geom)) > power((78270 / power(2, 10)), 2))
+ AND tags ->> 'highway' IN ( 'motorway', 'motorway_link', 'trunk', 'trunk_link', 'primary', 'primary_link', 'secondary', 'secondary_link', 'tertiary', 'tertiary_link');
CREATE MATERIALIZED VIEW osm_highway_z9 AS
SELECT id, tags, geom
FROM (SELECT id, tags, st_simplifypreservetopology(geom, 78270 / power(2, 9)) AS geom FROM osm_highway) AS osm_highway
-WHERE geom IS NOT NULL AND (st_area(st_envelope(geom)) > power((78270 / power(2, 9)), 2));
+WHERE geom IS NOT NULL AND (st_area(st_envelope(geom)) > power((78270 / power(2, 9)), 2))
+ AND tags ->> 'highway' IN ( 'motorway', 'motorway_link', 'trunk', 'trunk_link', 'primary', 'primary_link', 'secondary', 'secondary_link');
CREATE MATERIALIZED VIEW osm_highway_z8 AS
SELECT id, tags, geom
FROM (SELECT id, tags, st_simplifypreservetopology(geom, 78270 / power(2, 8)) AS geom FROM osm_highway) AS osm_highway
-WHERE geom IS NOT NULL AND (st_area(st_envelope(geom)) > power((78270 / power(2, 8)), 2));
+WHERE geom IS NOT NULL AND (st_area(st_envelope(geom)) > power((78270 / power(2, 8)), 2))
+ AND tags ->> 'highway' IN ( 'motorway', 'trunk', 'primary');
CREATE MATERIALIZED VIEW osm_highway_z7 AS
SELECT id, tags, geom
FROM (SELECT id, tags, st_simplifypreservetopology(geom, 78270 / power(2, 7)) AS geom FROM osm_highway) AS osm_highway
-WHERE geom IS NOT NULL AND (st_area(st_envelope(geom)) > power((78270 / power(2, 7)), 2));
+WHERE geom IS NOT NULL AND (st_area(st_envelope(geom)) > power((78270 / power(2, 7)), 2))
+ AND tags ->> 'highway' IN ( 'motorway', 'trunk', 'primary');
CREATE MATERIALIZED VIEW osm_highway_z6 AS
SELECT id, tags, geom
FROM (SELECT id, tags, st_simplifypreservetopology(geom, 78270 / power(2, 6)) AS geom FROM osm_highway) AS osm_highway
-WHERE geom IS NOT NULL AND (st_area(st_envelope(geom)) > power((78270 / power(2, 6)), 2));
+WHERE geom IS NOT NULL AND (st_area(st_envelope(geom)) > power((78270 / power(2, 6)), 2))
+ AND tags ->> 'highway' IN ( 'motorway', 'trunk', 'primary');
CREATE MATERIALIZED VIEW osm_highway_z5 AS
SELECT id, tags, geom
FROM (SELECT id, tags, st_simplifypreservetopology(geom, 78270 / power(2, 5)) AS geom FROM osm_highway) AS osm_highway
-WHERE geom IS NOT NULL AND (st_area(st_envelope(geom)) > power((78270 / power(2, 5)), 2));
+WHERE geom IS NOT NULL AND (st_area(st_envelope(geom)) > power((78270 / power(2, 5)), 2))
+ AND tags ->> 'highway' IN ( 'motorway');
CREATE MATERIALIZED VIEW osm_highway_z4 AS
SELECT id, tags, geom
FROM (SELECT id, tags, st_simplifypreservetopology(geom, 78270 / power(2, 4)) AS geom FROM osm_highway) AS osm_highway
-WHERE geom IS NOT NULL AND (st_area(st_envelope(geom)) > power((78270 / power(2, 4)), 2));
+WHERE geom IS NOT NULL AND (st_area(st_envelope(geom)) > power((78270 / power(2, 4)), 2))
+ AND tags ->> 'highway' IN ( 'motorway');
CREATE MATERIALIZED VIEW osm_highway_z3 AS
SELECT id, tags, geom
FROM (SELECT id, tags, st_simplifypreservetopology(geom, 78270 / power(2, 3)) AS geom FROM osm_highway) AS osm_highway
-WHERE geom IS NOT NULL AND (st_area(st_envelope(geom)) > power((78270 / power(2, 3)), 2));
+WHERE geom IS NOT NULL AND (st_area(st_envelope(geom)) > power((78270 / power(2, 3)), 2))
+ AND tags ->> 'highway' IN ( 'motorway');
CREATE MATERIALIZED VIEW osm_highway_z2 AS
SELECT id, tags, geom
FROM (SELECT id, tags, st_simplifypreservetopology(geom, 78270 / power(2, 2)) AS geom FROM osm_highway) AS osm_highway
-WHERE geom IS NOT NULL AND (st_area(st_envelope(geom)) > power((78270 / power(2, 2)), 2));
+WHERE geom IS NOT NULL AND (st_area(st_envelope(geom)) > power((78270 / power(2, 2)), 2))
+ AND tags ->> 'highway' IN ( 'motorway');
CREATE MATERIALIZED VIEW osm_highway_z1 AS
SELECT id, tags, geom
FROM (SELECT id, tags, st_simplifypreservetopology(geom, 78270 / power(2, 1)) AS geom FROM osm_highway) AS osm_highway
-WHERE geom IS NOT NULL AND (st_area(st_envelope(geom)) > power((78270 / power(2, 1)), 2));
+WHERE geom IS NOT NULL AND (st_area(st_envelope(geom)) > power((78270 / power(2, 1)), 2))
+ AND tags ->> 'highway' IN ( 'motorway');
diff --git a/basemap/layers/highway/tileset.js b/basemap/layers/highway/tileset.js
index 5982a28e..aca47d06 100644
--- a/basemap/layers/highway/tileset.js
+++ b/basemap/layers/highway/tileset.js
@@ -14,39 +14,15 @@ export default {
queries: [
{
minzoom: 4,
- maxzoom: 6,
- sql:
- "SELECT id, tags, geom FROM osm_highway_z$zoom WHERE tags ->> 'highway' IN ( 'motorway')",
- },
- {
- minzoom: 6,
- maxzoom: 9,
- sql:
- "SELECT id, tags, geom FROM osm_highway_z$zoom WHERE tags ->> 'highway' IN ( 'motorway', 'trunk', 'primary')",
- },
- {
- minzoom: 9,
- maxzoom: 10,
- sql:
- "SELECT id, tags, geom FROM osm_highway_z$zoom WHERE tags ->> 'highway' IN ( 'motorway', 'motorway_link', 'trunk', 'trunk_link', 'primary', 'primary_link', 'secondary', 'secondary_link')",
- },
- {
- minzoom: 10,
- maxzoom: 11,
- sql:
- "SELECT id, tags, geom FROM osm_highway_z$zoom WHERE tags ->> 'highway' IN ( 'motorway', 'motorway_link', 'trunk', 'trunk_link', 'primary', 'primary_link', 'secondary', 'secondary_link', 'tertiary', 'tertiary_link')",
- },
- {
- minzoom: 11,
maxzoom: 14,
sql:
- "SELECT id, tags, geom FROM osm_highway_z$zoom WHERE tags ->> 'highway' IN ( 'motorway', 'motorway_link', 'trunk', 'trunk_link', 'primary', 'primary_link', 'secondary', 'secondary_link', 'tertiary', 'tertiary_link', 'unclassified', 'residential')",
+ "SELECT id, tags, geom FROM osm_highway_z$zoom",
},
{
minzoom: 14,
maxzoom: 20,
sql:
- "SELECT id, tags, geom FROM osm_ways_z$zoom WHERE tags ? 'highway'",
+ "SELECT id, tags, geom FROM osm_ways WHERE tags ? 'highway'",
},
],
}
diff --git a/basemap/layers/landuse/clean.sql b/basemap/layers/landuse/clean.sql
new file mode 100644
index 00000000..22c4e035
--- /dev/null
+++ b/basemap/layers/landuse/clean.sql
@@ -0,0 +1,52 @@
+-- Licensed 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.
+DROP MATERIALIZED VIEW IF EXISTS osm_landuse_filtered CASCADE;
+DROP MATERIALIZED VIEW IF EXISTS osm_landuse_clustered CASCADE;
+DROP MATERIALIZED VIEW IF EXISTS osm_landuse_grouped CASCADE;
+DROP MATERIALIZED VIEW IF EXISTS osm_landuse_buffered CASCADE;
+DROP MATERIALIZED VIEW IF EXISTS osm_landuse_exploded CASCADE;
+DROP MATERIALIZED VIEW IF EXISTS osm_landuse CASCADE;
+
+DROP MATERIALIZED VIEW IF EXISTS osm_landuse_medium_filtered CASCADE;
+DROP MATERIALIZED VIEW IF EXISTS osm_landuse_medium_clustered CASCADE;
+DROP MATERIALIZED VIEW IF EXISTS osm_landuse_medium_grouped CASCADE;
+DROP MATERIALIZED VIEW IF EXISTS osm_landuse_medium_buffered CASCADE;
+DROP MATERIALIZED VIEW IF EXISTS osm_landuse_medium_exploded CASCADE;
+DROP MATERIALIZED VIEW IF EXISTS osm_landuse_medium CASCADE;
+
+DROP MATERIALIZED VIEW IF EXISTS osm_landuse_small_filtered CASCADE;
+DROP MATERIALIZED VIEW IF EXISTS osm_landuse_small_clustered CASCADE;
+DROP MATERIALIZED VIEW IF EXISTS osm_landuse_small_grouped CASCADE;
+DROP MATERIALIZED VIEW IF EXISTS osm_landuse_small_buffered CASCADE;
+DROP MATERIALIZED VIEW IF EXISTS osm_landuse_small_exploded CASCADE;
+DROP MATERIALIZED VIEW IF EXISTS osm_landuse_small CASCADE;
+
+DROP VIEW IF EXISTS osm_landuse_z20 CASCADE;
+DROP VIEW IF EXISTS osm_landuse_z19 CASCADE;
+DROP VIEW IF EXISTS osm_landuse_z18 CASCADE;
+DROP VIEW IF EXISTS osm_landuse_z17 CASCADE;
+DROP VIEW IF EXISTS osm_landuse_z16 CASCADE;
+DROP VIEW IF EXISTS osm_landuse_z15 CASCADE;
+DROP VIEW IF EXISTS osm_landuse_z14 CASCADE;
+DROP VIEW IF EXISTS osm_landuse_z13 CASCADE;
+
+DROP MATERIALIZED VIEW IF EXISTS osm_landuse_z12 CASCADE;
+DROP MATERIALIZED VIEW IF EXISTS osm_landuse_z11 CASCADE;
+DROP MATERIALIZED VIEW IF EXISTS osm_landuse_z10 CASCADE;
+DROP MATERIALIZED VIEW IF EXISTS osm_landuse_z9 CASCADE;
+DROP MATERIALIZED VIEW IF EXISTS osm_landuse_z8 CASCADE;
+DROP MATERIALIZED VIEW IF EXISTS osm_landuse_z7 CASCADE;
+DROP MATERIALIZED VIEW IF EXISTS osm_landuse_z6 CASCADE;
+DROP MATERIALIZED VIEW IF EXISTS osm_landuse_z5 CASCADE;
+DROP MATERIALIZED VIEW IF EXISTS osm_landuse_z4 CASCADE;
+DROP MATERIALIZED VIEW IF EXISTS osm_landuse_z3 CASCADE;
+DROP MATERIALIZED VIEW IF EXISTS osm_landuse_z2 CASCADE;
+DROP MATERIALIZED VIEW IF EXISTS osm_landuse_z1 CASCADE;
+
diff --git a/basemap/queries/osm_landuse_index.sql b/basemap/layers/landuse/index.sql
similarity index 100%
rename from basemap/queries/osm_landuse_index.sql
rename to basemap/layers/landuse/index.sql
diff --git a/basemap/layers/landuse/prepare.sql b/basemap/layers/landuse/prepare.sql
new file mode 100644
index 00000000..563d1d4f
--- /dev/null
+++ b/basemap/layers/landuse/prepare.sql
@@ -0,0 +1,139 @@
+-- Licensed 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_landuse_filtered AS
+SELECT
+ tags -> 'landuse' AS landuse,
+ st_simplifypreservetopology(geom, 78270 / power(2, 12)) AS geom
+FROM osm_polygon
+WHERE geom IS NOT NULL
+ AND st_area(geom) > 78270 / power(2, 12) * 100
+ AND tags ->> 'landuse' IN ('residential', 'farmland', 'forest', 'meadow', 'orchard', 'vineyard', 'salt_pond', 'water');
+CREATE INDEX IF NOT EXISTS osm_landuse_filtered_geom_idx ON osm_landuse_filtered USING GIST (geom);
+CREATE INDEX IF NOT EXISTS osm_landuse_filtered_tags_idx ON osm_landuse_filtered (landuse);
+
+CREATE MATERIALIZED VIEW osm_landuse_clustered AS
+SELECT
+ landuse,
+ geom,
+ st_clusterdbscan(geom, 0, 0) OVER(PARTITION BY landuse) AS cluster
+FROM osm_landuse_filtered
+WHERE geom IS NOT NULL;
+CREATE INDEX IF NOT EXISTS osm_landuse_clustered_geom_idx ON osm_landuse_clustered USING GIST (geom);
+CREATE INDEX IF NOT EXISTS osm_landuse_clustered_tags_idx ON osm_landuse_clustered (landuse);
+
+CREATE MATERIALIZED VIEW osm_landuse_grouped AS
+SELECT
+ landuse,
+ st_collect(geom) AS geom
+FROM osm_landuse_clustered
+GROUP BY landuse, cluster;
+
+CREATE MATERIALIZED VIEW osm_landuse_buffered AS
+SELECT
+ landuse,
+ st_buffer(geom, 0, 'join=mitre') AS geom
+FROM osm_landuse_grouped;
+
+CREATE MATERIALIZED VIEW osm_landuse_exploded AS
+SELECT
+ landuse,
+ (st_dump(geom)).geom AS geom
+FROM osm_landuse_buffered;
+
+CREATE MATERIALIZED VIEW osm_landuse AS
+SELECT
+ row_number() OVER () AS id,
+ jsonb_build_object('landuse', landuse) AS tags,
+ geom
+FROM osm_landuse_exploded;
+
+CREATE MATERIALIZED VIEW osm_landuse_medium_filtered AS
+SELECT
+ id,
+ tags -> 'landuse' as landuse,
+ st_buffer(st_simplifypreservetopology(geom, 78270 / power(2, 8)), 78270 / power(2, 8), 'join=mitre') AS geom
+FROM osm_landuse
+WHERE st_area(st_envelope(geom)) > 25 * power(78270 / power(2, 8), 2);
+
+CREATE MATERIALIZED VIEW osm_landuse_medium_clustered AS
+SELECT
+ landuse,
+ geom,
+ st_clusterdbscan(geom, 0, 0) OVER(PARTITION BY landuse) AS cluster
+FROM osm_landuse_medium_filtered;
+
+CREATE MATERIALIZED VIEW osm_landuse_medium_grouped AS
+SELECT
+ landuse,
+ cluster,
+ st_collect(geom) AS geom
+FROM osm_landuse_medium_clustered
+GROUP BY landuse, cluster;
+
+CREATE MATERIALIZED VIEW osm_landuse_medium_buffered AS
+SELECT
+ landuse,
+ st_buffer(geom, -78270 / power(2, 8), 'join=mitre') AS geom
+FROM osm_landuse_medium_grouped;
+
+CREATE MATERIALIZED VIEW osm_landuse_medium_exploded AS
+SELECT
+ landuse,
+ (st_dump(geom)).geom AS geom
+FROM osm_landuse_medium_buffered;
+
+CREATE MATERIALIZED VIEW osm_landuse_medium AS
+SELECT
+ row_number() OVER () AS id,
+ jsonb_build_object('landuse', landuse) AS tags,
+ geom AS geom
+FROM osm_landuse_medium_buffered;
+
+CREATE MATERIALIZED VIEW osm_landuse_small_filtered AS
+SELECT
+ id,
+ tags -> 'landuse' as landuse,
+ st_buffer(st_simplifypreservetopology(geom, 78270 / power(2, 4)), 78270 / power(2, 4), 'join=mitre') AS geom
+FROM osm_landuse
+WHERE st_area(st_envelope(geom)) > 25 * power(78270 / power(2, 4), 2);
+
+CREATE MATERIALIZED VIEW osm_landuse_small_clustered AS
+SELECT
+ landuse,
+ geom,
+ st_clusterdbscan(geom, 0, 0) OVER(PARTITION BY landuse) AS cluster
+FROM osm_landuse_small_filtered;
+
+CREATE MATERIALIZED VIEW osm_landuse_small_grouped AS
+SELECT
+ landuse,
+ cluster,
+ st_collect(geom) AS geom
+FROM osm_landuse_small_clustered
+GROUP BY landuse, cluster;
+
+CREATE MATERIALIZED VIEW osm_landuse_small_buffered AS
+SELECT
+ landuse,
+ st_buffer(geom, -78270 / power(2, 4), 'join=mitre') AS geom
+FROM osm_landuse_small_grouped;
+
+CREATE MATERIALIZED VIEW osm_landuse_small_exploded AS
+SELECT
+ landuse,
+ (st_dump(geom)).geom AS geom
+FROM osm_landuse_small_buffered;
+
+CREATE MATERIALIZED VIEW osm_landuse_small AS
+SELECT
+ row_number() OVER () AS id,
+ jsonb_build_object('landuse', landuse) AS tags,
+ geom AS geom
+FROM osm_landuse_small_buffered;
diff --git a/basemap/layers/landuse/simplify.sql b/basemap/layers/landuse/simplify.sql
new file mode 100644
index 00000000..bf911761
--- /dev/null
+++ b/basemap/layers/landuse/simplify.sql
@@ -0,0 +1,129 @@
+-- Licensed 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 VIEW osm_landuse_z20 AS
+SELECT id, tags, geom FROM osm_landuse;
+
+CREATE VIEW osm_landuse_z19 AS
+SELECT id, tags, geom FROM osm_landuse;
+
+CREATE VIEW osm_landuse_z18 AS
+SELECT id, tags, geom FROM osm_landuse;
+
+CREATE VIEW osm_landuse_z17 AS
+SELECT id, tags, geom FROM osm_landuse;
+
+CREATE VIEW osm_landuse_z16 AS
+SELECT id, tags, geom FROM osm_landuse;
+
+CREATE VIEW osm_landuse_z15 AS
+SELECT id, tags, geom FROM osm_landuse;
+
+CREATE VIEW osm_landuse_z14 AS
+SELECT id, tags, geom FROM osm_landuse;
+
+CREATE VIEW osm_landuse_z13 AS
+SELECT id, tags, geom FROM osm_landuse;
+
+CREATE MATERIALIZED VIEW osm_landuse_z12 AS
+SELECT
+ id,
+ tags,
+ st_simplifypreservetopology(geom, 78270 / power(2, 12)) AS geom
+FROM osm_landuse
+WHERE st_area(st_envelope(geom)) > 25 * power(78270 / power(2, 12), 2);
+
+CREATE MATERIALIZED VIEW osm_landuse_z11 AS
+SELECT
+ id,
+ tags,
+ st_simplifypreservetopology(geom, 78270 / power(2, 11)) AS geom
+FROM osm_landuse
+WHERE st_area(st_envelope(geom)) > 25 * power(78270 / power(2, 11), 2);
+
+CREATE MATERIALIZED VIEW osm_landuse_z10 AS
+SELECT
+ id,
+ tags,
+ st_simplifypreservetopology(geom, 78270 / power(2, 10)) AS geom
+FROM osm_landuse
+WHERE st_area(st_envelope(geom)) > 25 * power(78270 / power(2, 10), 2);
+
+CREATE MATERIALIZED VIEW osm_landuse_z9 AS
+SELECT
+ id,
+ tags,
+ st_simplifypreservetopology(geom, 78270 / power(2, 9)) AS geom
+FROM osm_landuse
+WHERE st_area(st_envelope(geom)) > 25 * power(78270 / power(2, 9), 2);
+
+CREATE MATERIALIZED VIEW osm_landuse_z8 AS
+SELECT
+ id,
+ tags,
+ st_simplifypreservetopology(geom, 78270 / power(2, 8)) AS geom
+FROM osm_landuse_medium
+WHERE st_area(st_envelope(geom)) > 25 * power(78270 / power(2, 8), 2);
+
+CREATE MATERIALIZED VIEW osm_landuse_z7 AS
+SELECT
+ id,
+ tags,
+ st_simplifypreservetopology(geom, 78270 / power(2, 7)) AS geom
+FROM osm_landuse_medium
+WHERE st_area(st_envelope(geom)) > 25 * power(78270 / power(2, 7), 2);
+
+CREATE MATERIALIZED VIEW osm_landuse_z6 AS
+SELECT
+ id,
+ tags,
+ st_simplifypreservetopology(geom, 78270 / power(2, 6)) AS geom
+FROM osm_landuse_medium
+WHERE st_area(st_envelope(geom)) > 25 * power(78270 / power(2, 6), 2);
+
+CREATE MATERIALIZED VIEW osm_landuse_z5 AS
+SELECT
+ id,
+ tags,
+ st_simplifypreservetopology(geom, 78270 / power(2, 5)) AS geom
+FROM osm_landuse_medium
+WHERE st_area(st_envelope(geom)) > 25 * power(78270 / power(2, 5), 2);
+
+CREATE MATERIALIZED VIEW osm_landuse_z4 AS
+SELECT
+ id,
+ tags,
+ st_simplifypreservetopology(geom, 78270 / power(2, 4)) AS geom
+FROM osm_landuse_small
+WHERE st_area(st_envelope(geom)) > 25 * power(78270 / power(2, 4), 2);
+
+CREATE MATERIALIZED VIEW osm_landuse_z3 AS
+SELECT
+ id,
+ tags,
+ st_simplifypreservetopology(geom, 78270 / power(2, 3)) AS geom
+FROM osm_landuse_small
+WHERE st_area(st_envelope(geom)) > 25 * power(78270 / power(2, 3), 2);
+
+CREATE MATERIALIZED VIEW osm_landuse_z2 AS
+SELECT
+ id,
+ tags,
+ st_simplifypreservetopology(geom, 78270 / power(2, 3)) AS geom
+FROM osm_landuse_small
+WHERE st_area(st_envelope(geom)) > 25 * power(78270 / power(2, 2), 2);
+
+CREATE MATERIALIZED VIEW osm_landuse_z1 AS
+SELECT
+ id,
+ tags,
+ st_simplifypreservetopology(geom, 78270 / power(2, 3)) AS geom
+FROM osm_landuse_small
+WHERE st_area(st_envelope(geom)) > 25 * power(78270 / power(2, 1), 2);
diff --git a/basemap/layers/landuse/tileset.js b/basemap/layers/landuse/tileset.js
index a3130f97..fe5d088c 100644
--- a/basemap/layers/landuse/tileset.js
+++ b/basemap/layers/landuse/tileset.js
@@ -14,25 +14,25 @@ export default {
queries: [
{
minzoom: 3,
- maxzoom: 6,
+ maxzoom: 8,
sql:
"SELECT id, tags, geom FROM osm_landuse_z$zoom WHERE tags ->> 'landuse' IN ('farmland', 'forest', 'meadow')",
},
{
- minzoom: 6,
- maxzoom: 12,
+ minzoom: 8,
+ maxzoom: 13,
sql:
"SELECT id, tags, geom FROM osm_landuse_z$zoom WHERE tags ->> 'landuse' IN ('farmland', 'forest', 'meadow', 'residential', 'vineyard')",
},
{
- minzoom: 12,
+ minzoom: 13,
maxzoom: 20,
- sql: "SELECT id, tags, geom FROM osm_ways_z$zoom WHERE tags ? 'landuse'"
+ sql: "SELECT id, tags, geom FROM osm_ways WHERE tags ? 'landuse'"
},
{
- minzoom: 12,
+ minzoom: 13,
maxzoom: 20,
- sql: "SELECT id, tags, geom FROM osm_relations_z$zoom WHERE tags ? 'landuse'"
+ sql: "SELECT id, tags, geom FROM osm_relations WHERE tags ? 'landuse'"
}
],
}
diff --git a/basemap/layers/leisure/tileset.js b/basemap/layers/leisure/tileset.js
index 771d1fe9..e5a443b6 100644
--- a/basemap/layers/leisure/tileset.js
+++ b/basemap/layers/leisure/tileset.js
@@ -16,13 +16,13 @@ export default {
minzoom: 13,
maxzoom: 20,
sql:
- "SELECT id, tags, geom FROM osm_ways_z$zoom WHERE tags ? 'leisure'",
+ "SELECT id, tags, geom FROM osm_ways WHERE tags ? 'leisure'",
},
{
minzoom: 13,
maxzoom: 20,
sql:
- "SELECT id, tags, geom FROM osm_relations_z$zoom WHERE tags ? 'leisure'",
+ "SELECT id, tags, geom FROM osm_relations WHERE tags ? 'leisure'",
},
],
}
diff --git a/basemap/queries/osm_simplified_water_index.sql b/basemap/layers/linestring/clean.sql
similarity index 82%
rename from basemap/queries/osm_simplified_water_index.sql
rename to basemap/layers/linestring/clean.sql
index bbf7aa0e..bf2cc6e1 100644
--- a/basemap/queries/osm_simplified_water_index.sql
+++ b/basemap/layers/linestring/clean.sql
@@ -7,4 +7,4 @@
-- 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 INDEX simplified_water_polygons_geometry_index ON simplified_water_polygons_shp USING SPGIST(geometry);
+DROP MATERIALIZED VIEW IF EXISTS osm_linestring CASCADE;
diff --git a/basemap/queries/osm_relations_prepare.sql b/basemap/layers/linestring/index.sql
similarity index 75%
copy from basemap/queries/osm_relations_prepare.sql
copy to basemap/layers/linestring/index.sql
index 25225087..1b8515f5 100644
--- a/basemap/queries/osm_relations_prepare.sql
+++ b/basemap/layers/linestring/index.sql
@@ -7,5 +7,5 @@
-- 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 INDEX osm_relations_tags_index ON osm_relations USING gin (tags);
-CREATE INDEX osm_relations_geom_index ON osm_relations USING spgist (geom);
+CREATE INDEX IF NOT EXISTS osm_linestring_tags_index ON osm_linestring USING gin (tags);
+CREATE INDEX IF NOT EXISTS osm_linestring_geom_index ON osm_linestring USING gist (geom);
\ No newline at end of file
diff --git a/basemap/queries/osm_linestring.sql b/basemap/layers/linestring/prepare.sql
similarity index 66%
copy from basemap/queries/osm_linestring.sql
copy to basemap/layers/linestring/prepare.sql
index 230797ab..24683658 100644
--- a/basemap/queries/osm_linestring.sql
+++ b/basemap/layers/linestring/prepare.sql
@@ -7,12 +7,15 @@
-- 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.
-DROP VIEW IF EXISTS osm_linestring CASCADE;
+DROP TABLE IF EXISTS osm_linestring CASCADE;
-CREATE VIEW osm_linestring AS
+CREATE MATERIALIZED VIEW osm_linestring AS
SELECT id, tags, geom
FROM osm_ways
-LEFT JOIN osm_ways_member ON id = way_id
+LEFT JOIN osm_member ON id = member_ref
WHERE ST_GeometryType(osm_ways.geom) = 'ST_LineString'
AND tags != '{}'
- AND way_id IS NULL;
+ AND member_ref IS NULL;
+
+CREATE INDEX IF NOT EXISTS osm_linestring_tags_index ON osm_linestring USING gin (tags);
+CREATE INDEX IF NOT EXISTS osm_linestring_geom_index ON osm_linestring USING gist (geom);
diff --git a/basemap/layers/man_made/tileset.js b/basemap/layers/man_made/tileset.js
index e2539de0..4a9a12b0 100644
--- a/basemap/layers/man_made/tileset.js
+++ b/basemap/layers/man_made/tileset.js
@@ -15,7 +15,7 @@ export default {
{
"minzoom": 14,
"maxzoom": 20,
- "sql": "SELECT id, tags, geom FROM osm_ways_z$zoom WHERE tags ? 'man_made'"
+ "sql": "SELECT id, tags, geom FROM osm_ways WHERE tags ? 'man_made'"
}
]
}
diff --git a/basemap/layers/member/prepare.sql b/basemap/layers/member/prepare.sql
new file mode 100644
index 00000000..7d54f9af
--- /dev/null
+++ b/basemap/layers/member/prepare.sql
@@ -0,0 +1,11 @@
+DROP MATERIALIZED VIEW IF EXISTS osm_member CASCADE;
+
+CREATE MATERIALIZED VIEW osm_member AS
+SELECT DISTINCT member_ref as member_ref
+FROM osm_relations, unnest(member_types, member_refs) AS way(member_type, member_ref)
+WHERE geom IS NOT NULL
+ AND member_type = 1
+ AND tags ->> 'type' = 'multipolygon'
+ AND NOT tags ->> 'natural' = 'coastline';
+
+CREATE INDEX osm_member_index ON osm_member(member_ref);
\ No newline at end of file
diff --git a/basemap/layers/natural/clean.sql b/basemap/layers/natural/clean.sql
new file mode 100644
index 00000000..52e8ae76
--- /dev/null
+++ b/basemap/layers/natural/clean.sql
@@ -0,0 +1,53 @@
+-- Licensed 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.
+
+DROP MATERIALIZED VIEW IF EXISTS osm_natural_filtered CASCADE;
+DROP MATERIALIZED VIEW IF EXISTS osm_natural_clustered CASCADE;
+DROP MATERIALIZED VIEW IF EXISTS osm_natural_grouped CASCADE;
+DROP MATERIALIZED VIEW IF EXISTS osm_natural_buffered CASCADE;
+DROP MATERIALIZED VIEW IF EXISTS osm_natural_exploded CASCADE;
+DROP MATERIALIZED VIEW IF EXISTS osm_natural CASCADE;
+
+DROP MATERIALIZED VIEW IF EXISTS osm_natural_medium_filtered CASCADE;
+DROP MATERIALIZED VIEW IF EXISTS osm_natural_medium_clustered CASCADE;
+DROP MATERIALIZED VIEW IF EXISTS osm_natural_medium_grouped CASCADE;
+DROP MATERIALIZED VIEW IF EXISTS osm_natural_medium_buffered CASCADE;
+DROP MATERIALIZED VIEW IF EXISTS osm_natural_medium_exploded CASCADE;
+DROP MATERIALIZED VIEW IF EXISTS osm_natural_medium CASCADE;
+
+DROP MATERIALIZED VIEW IF EXISTS osm_natural_small_filtered CASCADE;
+DROP MATERIALIZED VIEW IF EXISTS osm_natural_small_clustered CASCADE;
+DROP MATERIALIZED VIEW IF EXISTS osm_natural_small_grouped CASCADE;
+DROP MATERIALIZED VIEW IF EXISTS osm_natural_small_buffered CASCADE;
+DROP MATERIALIZED VIEW IF EXISTS osm_natural_small_exploded CASCADE;
+DROP MATERIALIZED VIEW IF EXISTS osm_natural_small CASCADE;
+
+DROP VIEW IF EXISTS osm_natural_z20 CASCADE;
+DROP VIEW IF EXISTS osm_natural_z19 CASCADE;
+DROP VIEW IF EXISTS osm_natural_z18 CASCADE;
+DROP VIEW IF EXISTS osm_natural_z17 CASCADE;
+DROP VIEW IF EXISTS osm_natural_z16 CASCADE;
+DROP VIEW IF EXISTS osm_natural_z15 CASCADE;
+DROP VIEW IF EXISTS osm_natural_z14 CASCADE;
+DROP VIEW IF EXISTS osm_natural_z13 CASCADE;
+
+DROP MATERIALIZED VIEW IF EXISTS osm_natural_z12 CASCADE;
+DROP MATERIALIZED VIEW IF EXISTS osm_natural_z11 CASCADE;
+DROP MATERIALIZED VIEW IF EXISTS osm_natural_z10 CASCADE;
+DROP MATERIALIZED VIEW IF EXISTS osm_natural_z9 CASCADE;
+DROP MATERIALIZED VIEW IF EXISTS osm_natural_z8 CASCADE;
+DROP MATERIALIZED VIEW IF EXISTS osm_natural_z7 CASCADE;
+DROP MATERIALIZED VIEW IF EXISTS osm_natural_z6 CASCADE;
+DROP MATERIALIZED VIEW IF EXISTS osm_natural_z5 CASCADE;
+DROP MATERIALIZED VIEW IF EXISTS osm_natural_z4 CASCADE;
+DROP MATERIALIZED VIEW IF EXISTS osm_natural_z3 CASCADE;
+DROP MATERIALIZED VIEW IF EXISTS osm_natural_z2 CASCADE;
+DROP MATERIALIZED VIEW IF EXISTS osm_natural_z1 CASCADE;
+
diff --git a/basemap/queries/osm_natural_index.sql b/basemap/layers/natural/index.sql
similarity index 100%
rename from basemap/queries/osm_natural_index.sql
rename to basemap/layers/natural/index.sql
diff --git a/basemap/layers/natural/prepare.sql b/basemap/layers/natural/prepare.sql
new file mode 100644
index 00000000..911c6af6
--- /dev/null
+++ b/basemap/layers/natural/prepare.sql
@@ -0,0 +1,156 @@
+-- Licensed 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.
+
+-- ('grassland', 'heath', 'scrub', 'wood', 'bay', 'beach', 'glacier', 'mud', 'shingle', 'shoal', 'strait', 'water', 'wetland', 'bare_rock', 'sand', 'scree');
+
+CREATE MATERIALIZED VIEW osm_natural_filtered AS
+SELECT
+ tags -> 'natural' AS natural_value,
+ st_simplifypreservetopology(geom, 78270 / power(2, 12)) AS geom
+FROM osm_polygon
+WHERE geom IS NOT NULL
+ AND st_area(geom) > 78270 / power(2, 12) * 100
+ AND tags ->> 'natural' IN ('grassland', 'heath', 'scrub', 'wood', 'bay', 'beach', 'glacier', 'mud', 'shingle', 'shoal', 'strait', 'water', 'wetland', 'bare_rock', 'sand', 'scree');
+CREATE INDEX IF NOT EXISTS osm_natural_filtered_geom_idx ON osm_natural_filtered USING GIST (geom);
+CREATE INDEX IF NOT EXISTS osm_natural_filtered_tags_idx ON osm_natural_filtered (natural_value);
+
+CREATE MATERIALIZED VIEW osm_natural_clustered AS
+SELECT
+ natural_value,
+ geom,
+ st_clusterdbscan(geom, 0, 0) OVER(PARTITION BY natural_value) AS cluster
+FROM osm_natural_filtered
+WHERE geom IS NOT NULL;
+CREATE INDEX IF NOT EXISTS osm_natural_clustered_geom_idx ON osm_natural_clustered USING GIST (geom);
+CREATE INDEX IF NOT EXISTS osm_natural_clustered_tags_idx ON osm_natural_clustered (natural_value);
+
+CREATE MATERIALIZED VIEW osm_natural_grouped AS
+SELECT
+ natural_value,
+ st_collect(geom) AS geom
+FROM osm_natural_clustered
+GROUP BY natural_value, cluster;
+
+CREATE MATERIALIZED VIEW osm_natural_buffered AS
+SELECT
+ natural_value,
+ st_buffer(geom, 0, 'join=mitre') AS geom
+FROM osm_natural_grouped;
+
+CREATE MATERIALIZED VIEW osm_natural_exploded AS
+SELECT
+ natural_value,
+ (st_dump(geom)).geom AS geom
+FROM osm_natural_buffered;
+
+CREATE MATERIALIZED VIEW osm_natural AS
+SELECT
+ row_number() OVER () AS id,
+ jsonb_build_object('natural', natural_value) AS tags,
+ geom
+FROM osm_natural_exploded;
+CREATE INDEX IF NOT EXISTS osm_natural_geom_idx ON osm_natural_filtered USING GIST (geom);
+CREATE INDEX IF NOT EXISTS osm_natural_tags_idx ON osm_natural_filtered USING GIN (natural_value);
+
+CREATE MATERIALIZED VIEW osm_natural_medium_filtered AS
+SELECT
+ id,
+ tags -> 'natural' as natural_value,
+ st_buffer(st_simplifypreservetopology(geom, 78270 / power(2, 8)), 78270 / power(2, 8), 'join=mitre') AS geom
+FROM osm_natural
+WHERE st_area(st_envelope(geom)) > 25 * power(78270 / power(2, 8), 2);
+CREATE INDEX IF NOT EXISTS osm_natural_medium_filtered_geom_idx ON osm_natural_medium_filtered USING GIST (geom);
+CREATE INDEX IF NOT EXISTS osm_natural_medium_filtered_tags_idx ON osm_natural_medium_filtered (natural_value);
+
+CREATE MATERIALIZED VIEW osm_natural_medium_clustered AS
+SELECT
+ natural_value,
+ geom,
+ st_clusterdbscan(geom, 0, 0) OVER(PARTITION BY natural_value) AS cluster
+FROM osm_natural_medium_filtered;
+CREATE INDEX IF NOT EXISTS osm_natural_medium_clustered_geom_idx ON osm_natural_medium_clustered USING GIST (geom);
+CREATE INDEX IF NOT EXISTS osm_natural_medium_clustered_tags_idx ON osm_natural_medium_clustered (natural_value);
+
+CREATE MATERIALIZED VIEW osm_natural_medium_grouped AS
+SELECT
+ natural_value,
+ cluster,
+ st_collect(geom) AS geom
+FROM osm_natural_medium_clustered
+GROUP BY natural_value, cluster;
+
+CREATE MATERIALIZED VIEW osm_natural_medium_buffered AS
+SELECT
+ natural_value,
+ st_buffer(geom, -78270 / power(2, 8), 'join=mitre') AS geom
+FROM osm_natural_medium_grouped;
+
+CREATE MATERIALIZED VIEW osm_natural_medium_exploded AS
+SELECT
+ natural_value,
+ (st_dump(geom)).geom AS geom
+FROM osm_natural_medium_buffered;
+
+CREATE MATERIALIZED VIEW osm_natural_medium AS
+SELECT
+ row_number() OVER () AS id,
+ jsonb_build_object('natural', natural_value) AS tags,
+ geom AS geom
+FROM osm_natural_medium_buffered;
+CREATE INDEX IF NOT EXISTS osm_natural_medium_geom_idx ON osm_natural_medium USING GIST (geom);
+CREATE INDEX IF NOT EXISTS osm_natural_medium_tags_idx ON osm_natural_medium USING GIN (tags);
+
+CREATE MATERIALIZED VIEW osm_natural_small_filtered AS
+SELECT
+ id,
+ tags -> 'natural' as natural_value,
+ st_buffer(st_simplifypreservetopology(geom, 78270 / power(2, 4)), 78270 / power(2, 4), 'join=mitre') AS geom
+FROM osm_natural
+WHERE st_area(st_envelope(geom)) > 25 * power(78270 / power(2, 4), 2);
+CREATE INDEX IF NOT EXISTS osm_natural_small_filtered_geom_idx ON osm_natural_small_filtered USING GIST (geom);
+CREATE INDEX IF NOT EXISTS osm_natural_small_filtered_tags_idx ON osm_natural_small_filtered (natural_value);
+
+CREATE MATERIALIZED VIEW osm_natural_small_clustered AS
+SELECT
+ natural_value,
+ geom,
+ st_clusterdbscan(geom, 0, 0) OVER(PARTITION BY natural_value) AS cluster
+FROM osm_natural_small_filtered;
+CREATE INDEX IF NOT EXISTS osm_natural_small_clustered_geom_idx ON osm_natural_small_clustered USING GIST (geom);
+CREATE INDEX IF NOT EXISTS osm_natural_small_clustered_tags_idx ON osm_natural_small_clustered (natural_value);
+
+CREATE MATERIALIZED VIEW osm_natural_small_grouped AS
+SELECT
+ natural_value,
+ cluster,
+ st_collect(geom) AS geom
+FROM osm_natural_small_clustered
+GROUP BY natural_value, cluster;
+
+CREATE MATERIALIZED VIEW osm_natural_small_buffered AS
+SELECT
+ natural_value,
+ st_buffer(geom, -78270 / power(2, 4), 'join=mitre') AS geom
+FROM osm_natural_small_grouped;
+
+CREATE MATERIALIZED VIEW osm_natural_small_exploded AS
+SELECT
+ natural_value,
+ (st_dump(geom)).geom AS geom
+FROM osm_natural_small_buffered;
+
+CREATE MATERIALIZED VIEW osm_natural_small AS
+SELECT
+ row_number() OVER () AS id,
+ jsonb_build_object('natural', natural_value) AS tags,
+ geom AS geom
+FROM osm_natural_small_buffered;
+CREATE INDEX IF NOT EXISTS osm_natural_small_geom_idx ON osm_natural_small USING GIST (geom);
+CREATE INDEX IF NOT EXISTS osm_natural_small_tags_idx ON osm_natural_small USING GIN (tags);
diff --git a/basemap/queries/osm_natural_simplify.sql b/basemap/layers/natural/simplify.sql
similarity index 77%
rename from basemap/queries/osm_natural_simplify.sql
rename to basemap/layers/natural/simplify.sql
index b9f31b27..b66fc3fb 100644
--- a/basemap/queries/osm_natural_simplify.sql
+++ b/basemap/layers/natural/simplify.sql
@@ -31,74 +31,62 @@ SELECT id, tags, geom FROM osm_natural;
CREATE VIEW osm_natural_z13 AS
SELECT id, tags, geom FROM osm_natural;
-DROP MATERIALIZED VIEW IF EXISTS osm_natural_z12 CASCADE;
CREATE MATERIALIZED VIEW osm_natural_z12 AS
SELECT id, tags, st_simplifypreservetopology(geom, 78270 / power(2, 12)) AS geom
-FROM osm_natural_grouped
+FROM osm_natural
WHERE st_area(st_envelope(geom)) > 10 * power(78270 / power(2, 12), 2);
-DROP MATERIALIZED VIEW IF EXISTS osm_natural_z11 CASCADE;
CREATE MATERIALIZED VIEW osm_natural_z11 AS
SELECT id, tags, st_simplifypreservetopology(geom, 78270 / power(2, 11)) AS geom
-FROM osm_natural_grouped
+FROM osm_natural
WHERE st_area(st_envelope(geom)) > 10 * power(78270 / power(2, 11), 2);
-DROP MATERIALIZED VIEW IF EXISTS osm_natural_z10 CASCADE;
CREATE MATERIALIZED VIEW osm_natural_z10 AS
SELECT id, tags, st_simplifypreservetopology(geom, 78270 / power(2, 10)) AS geom
-FROM osm_natural_grouped
+FROM osm_natural
WHERE st_area(st_envelope(geom)) > 10 * power(78270 / power(2, 10), 2);
-DROP MATERIALIZED VIEW IF EXISTS osm_natural_z9 CASCADE;
CREATE MATERIALIZED VIEW osm_natural_z9 AS
SELECT id, tags, st_simplifypreservetopology(geom, 78270 / power(2, 9)) AS geom
-FROM osm_natural_grouped
+FROM osm_natural
WHERE st_area(st_envelope(geom)) > 10 * power(78270 / power(2, 9), 2);
-DROP MATERIALIZED VIEW IF EXISTS osm_natural_z8 CASCADE;
CREATE MATERIALIZED VIEW osm_natural_z8 AS
SELECT id, tags, st_simplifypreservetopology(geom, 78270 / power(2, 8)) AS geom
-FROM osm_natural_grouped
+FROM osm_natural_medium
WHERE st_area(st_envelope(geom)) > 10 * power(78270 / power(2, 8), 2);
-DROP MATERIALIZED VIEW IF EXISTS osm_natural_z7 CASCADE;
CREATE MATERIALIZED VIEW osm_natural_z7 AS
SELECT id, tags, st_simplifypreservetopology(geom, 78270 / power(2, 7)) AS geom
-FROM osm_natural_grouped
+FROM osm_natural_medium
WHERE st_area(st_envelope(geom)) > 10 * power(78270 / power(2, 7), 2);
-DROP MATERIALIZED VIEW IF EXISTS osm_natural_z6 CASCADE;
CREATE MATERIALIZED VIEW osm_natural_z6 AS
SELECT id, tags, st_simplifypreservetopology(geom, 78270 / power(2, 6)) AS geom
-FROM osm_natural_grouped
+FROM osm_natural_medium
WHERE st_area(st_envelope(geom)) > 10 * power(78270 / power(2, 6), 2);
-DROP MATERIALIZED VIEW IF EXISTS osm_natural_z5 CASCADE;
CREATE MATERIALIZED VIEW osm_natural_z5 AS
SELECT id, tags, st_simplifypreservetopology(geom, 78270 / power(2, 5)) AS geom
-FROM osm_natural_grouped
+FROM osm_natural_medium
WHERE st_area(st_envelope(geom)) > 10 * power(78270 / power(2, 5), 2);
-DROP MATERIALIZED VIEW IF EXISTS osm_natural_z4 CASCADE;
CREATE MATERIALIZED VIEW osm_natural_z4 AS
SELECT id, tags, st_simplifypreservetopology(geom, 78270 / power(2, 4)) AS geom
-FROM osm_natural_grouped
+FROM osm_natural_small
WHERE st_area(st_envelope(geom)) > 10 * power(78270 / power(2, 4), 2);
-DROP MATERIALIZED VIEW IF EXISTS osm_natural_z3 CASCADE;
CREATE MATERIALIZED VIEW osm_natural_z3 AS
SELECT id, tags, st_simplifypreservetopology(geom, 78270 / power(2, 3)) AS geom
-FROM osm_natural_grouped
+FROM osm_natural_small
WHERE st_area(st_envelope(geom)) > 10 * power(78270 / power(2, 3), 2);
-DROP MATERIALIZED VIEW IF EXISTS osm_natural_z2 CASCADE;
CREATE MATERIALIZED VIEW osm_natural_z2 AS
SELECT id, tags, st_simplifypreservetopology(geom, 78270 / power(2, 2)) AS geom
-FROM osm_natural_grouped
+FROM osm_natural_small
WHERE st_area(st_envelope(geom)) > 10 * power(78270 / power(2, 2), 2);
-DROP MATERIALIZED VIEW IF EXISTS osm_natural_z1 CASCADE;
CREATE MATERIALIZED VIEW osm_natural_z1 AS
SELECT id, tags, st_simplifypreservetopology(geom, 78270 / power(2, 1)) AS geom
-FROM osm_natural_grouped
+FROM osm_natural_small
WHERE st_area(st_envelope(geom)) > 10 * power(78270 / power(2, 1), 2);
diff --git a/basemap/layers/natural/tileset.js b/basemap/layers/natural/tileset.js
index 691b3458..86126464 100644
--- a/basemap/layers/natural/tileset.js
+++ b/basemap/layers/natural/tileset.js
@@ -19,18 +19,18 @@ export default {
},
{
"minzoom": 6,
- "maxzoom": 12,
+ "maxzoom": 13,
"sql": "SELECT id, tags, geom FROM osm_natural_z$zoom WHERE tags ->> 'natural' IN ('wood', 'scrub', 'heath', 'grassland', 'bare_rock', 'scree', 'shingle', 'sand', 'mud', 'water', 'wetland', 'glacier', 'beach')"
},
{
- "minzoom": 12,
+ "minzoom": 13,
"maxzoom": 20,
- "sql": "SELECT id, tags, geom FROM osm_ways_z$zoom WHERE tags ? 'natural' AND tags ->> 'natural' NOT IN ('coastline')"
+ "sql": "SELECT id, tags, geom FROM osm_ways WHERE tags ? 'natural' AND tags ->> 'natural' NOT IN ('coastline')"
},
{
- "minzoom": 12,
+ "minzoom": 13,
"maxzoom": 20,
- "sql": "SELECT id, tags, geom FROM osm_relations_z$zoom WHERE tags ? 'natural' AND tags ->> 'natural' NOT IN ('coastline')"
+ "sql": "SELECT id, tags, geom FROM osm_relations WHERE tags ? 'natural' AND tags ->> 'natural' NOT IN ('coastline')"
}
]
}
diff --git a/basemap/queries/osm_relations_prepare.sql b/basemap/layers/ocean/clean.sql
similarity index 78%
copy from basemap/queries/osm_relations_prepare.sql
copy to basemap/layers/ocean/clean.sql
index 25225087..c4c3fe43 100644
--- a/basemap/queries/osm_relations_prepare.sql
+++ b/basemap/layers/ocean/clean.sql
@@ -7,5 +7,6 @@
-- 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 INDEX osm_relations_tags_index ON osm_relations USING gin (tags);
-CREATE INDEX osm_relations_geom_index ON osm_relations USING spgist (geom);
+DROP MATERIALIZED VIEW IF EXISTS osm_ocean CASCADE;
+
+DROP MATERIALIZED VIEW IF EXISTS osm_ocean_simplified CASCADE;
diff --git a/basemap/queries/osm_relations_prepare.sql b/basemap/layers/ocean/index.sql
similarity index 74%
copy from basemap/queries/osm_relations_prepare.sql
copy to basemap/layers/ocean/index.sql
index 25225087..6a7b0b24 100644
--- a/basemap/queries/osm_relations_prepare.sql
+++ b/basemap/layers/ocean/index.sql
@@ -7,5 +7,6 @@
-- 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 INDEX osm_relations_tags_index ON osm_relations USING gin (tags);
-CREATE INDEX osm_relations_geom_index ON osm_relations USING spgist (geom);
+CREATE INDEX IF NOT EXISTS osm_ocean_geometry_index ON osm_ocean USING gist(geom);
+
+CREATE INDEX IF NOT EXISTS osm_ocean_simplified_geometry_index ON osm_ocean_simplified USING gist(geom);
diff --git a/basemap/queries/osm_linestring.sql b/basemap/layers/ocean/prepare.sql
similarity index 60%
rename from basemap/queries/osm_linestring.sql
rename to basemap/layers/ocean/prepare.sql
index 230797ab..4e984254 100644
--- a/basemap/queries/osm_linestring.sql
+++ b/basemap/layers/ocean/prepare.sql
@@ -7,12 +7,8 @@
-- 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.
-DROP VIEW IF EXISTS osm_linestring CASCADE;
+CREATE MATERIALIZED VIEW osm_ocean AS
+SELECT row_number() OVER () as id, '{"ocean":"water"}'::jsonb as tags, st_setsrid(geometry, 3857) AS geom FROM water_polygons_shp;
-CREATE VIEW osm_linestring AS
-SELECT id, tags, geom
-FROM osm_ways
-LEFT JOIN osm_ways_member ON id = way_id
-WHERE ST_GeometryType(osm_ways.geom) = 'ST_LineString'
- AND tags != '{}'
- AND way_id IS NULL;
+CREATE MATERIALIZED VIEW osm_ocean_simplified AS
+SELECT row_number() OVER () as id, '{"ocean":"water"}'::jsonb as tags, st_setsrid(geometry, 3857) AS geom FROM simplified_water_polygons_shp;
diff --git a/basemap/layers/ocean/tileset.js b/basemap/layers/ocean/tileset.js
index 72491420..9f470e41 100644
--- a/basemap/layers/ocean/tileset.js
+++ b/basemap/layers/ocean/tileset.js
@@ -15,12 +15,12 @@ export default {
{
"minzoom": 0,
"maxzoom": 10,
- "sql": "SELECT row_number() OVER () as id, '{\"ocean\":\"water\"}'::jsonb, st_setsrid(geometry, 3857) FROM simplified_water_polygons_shp"
+ "sql": "SELECT id, tags, geom FROM osm_ocean_simplified"
},
{
"minzoom": 10,
"maxzoom": 20,
- "sql": "SELECT row_number() OVER () as id, '{\"ocean\":\"water\"}'::jsonb, st_setsrid(geometry, 3857) FROM water_polygons_shp"
+ "sql": "SELECT id, tags, geom FROM osm_ocean"
}
]
}
diff --git a/basemap/layers/point/clean.sql b/basemap/layers/point/clean.sql
new file mode 100644
index 00000000..872f5e9c
--- /dev/null
+++ b/basemap/layers/point/clean.sql
@@ -0,0 +1,34 @@
+-- Licensed 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.
+
+DROP INDEX IF EXISTS osm_point_tags_index;
+DROP INDEX IF EXISTS osm_point_geom_index;
+
+DROP VIEW IF EXISTS osm_point_z20 CASCADE;
+DROP VIEW IF EXISTS osm_point_z19 CASCADE;
+DROP VIEW IF EXISTS osm_point_z18 CASCADE;
+DROP VIEW IF EXISTS osm_point_z17 CASCADE;
+DROP VIEW IF EXISTS osm_point_z16 CASCADE;
+DROP VIEW IF EXISTS osm_point_z15 CASCADE;
+DROP VIEW IF EXISTS osm_point_z14 CASCADE;
+
+DROP MATERIALIZED VIEW IF EXISTS osm_point_z13 CASCADE;
+DROP MATERIALIZED VIEW IF EXISTS osm_point_z12 CASCADE;
+DROP MATERIALIZED VIEW IF EXISTS osm_point_z11 CASCADE;
+DROP MATERIALIZED VIEW IF EXISTS osm_point_z10 CASCADE;
+DROP MATERIALIZED VIEW IF EXISTS osm_point_z9 CASCADE;
+DROP MATERIALIZED VIEW IF EXISTS osm_point_z8 CASCADE;
+DROP MATERIALIZED VIEW IF EXISTS osm_point_z7 CASCADE;
+DROP MATERIALIZED VIEW IF EXISTS osm_point_z6 CASCADE;
+DROP MATERIALIZED VIEW IF EXISTS osm_point_z5 CASCADE;
+DROP MATERIALIZED VIEW IF EXISTS osm_point_z4 CASCADE;
+DROP MATERIALIZED VIEW IF EXISTS osm_point_z3 CASCADE;
+DROP MATERIALIZED VIEW IF EXISTS osm_point_z2 CASCADE;
+DROP MATERIALIZED VIEW IF EXISTS osm_point_z1 CASCADE;
\ No newline at end of file
diff --git a/basemap/layers/point/index.sql b/basemap/layers/point/index.sql
new file mode 100644
index 00000000..0a0918da
--- /dev/null
+++ b/basemap/layers/point/index.sql
@@ -0,0 +1,22 @@
+-- Licensed 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 INDEX IF NOT EXISTS osm_point_geom_z13_index ON osm_point_z13 USING gist (geom);
+CREATE INDEX IF NOT EXISTS osm_point_geom_z12_index ON osm_point_z12 USING gist (geom);
+CREATE INDEX IF NOT EXISTS osm_point_geom_z11_index ON osm_point_z11 USING gist (geom);
+CREATE INDEX IF NOT EXISTS osm_point_geom_z10_index ON osm_point_z10 USING gist (geom);
+CREATE INDEX IF NOT EXISTS osm_point_geom_z9_index ON osm_point_z9 USING gist (geom);
+CREATE INDEX IF NOT EXISTS osm_point_geom_z8_index ON osm_point_z8 USING gist (geom);
+CREATE INDEX IF NOT EXISTS osm_point_geom_z7_index ON osm_point_z7 USING gist (geom);
+CREATE INDEX IF NOT EXISTS osm_point_geom_z6_index ON osm_point_z6 USING gist (geom);
+CREATE INDEX IF NOT EXISTS osm_point_geom_z5_index ON osm_point_z5 USING gist (geom);
+CREATE INDEX IF NOT EXISTS osm_point_geom_z4_index ON osm_point_z4 USING gist (geom);
+CREATE INDEX IF NOT EXISTS osm_point_geom_z3_index ON osm_point_z3 USING gist (geom);
+CREATE INDEX IF NOT EXISTS osm_point_geom_z2_index ON osm_point_z2 USING gist (geom);
+CREATE INDEX IF NOT EXISTS osm_point_geom_z1_index ON osm_point_z1 USING gist (geom);
\ No newline at end of file
diff --git a/basemap/layers/point/simplify.sql b/basemap/layers/point/simplify.sql
new file mode 100644
index 00000000..fadd0983
--- /dev/null
+++ b/basemap/layers/point/simplify.sql
@@ -0,0 +1,110 @@
+-- Licensed 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 VIEW osm_point_z20 AS
+SELECT id, tags, geom
+FROM osm_nodes
+WHERE tags != '{}';
+
+CREATE VIEW osm_point_z19 AS
+SELECT id, tags, geom
+FROM osm_nodes
+WHERE tags != '{}';
+
+CREATE VIEW osm_point_z18 AS
+SELECT id, tags, geom
+FROM osm_nodes
+WHERE tags != '{}';
+
+CREATE VIEW osm_point_z17 AS
+SELECT id, tags, geom
+FROM osm_nodes
+WHERE tags != '{}';
+
+CREATE VIEW osm_point_z16 AS
+SELECT id, tags, geom
+FROM osm_nodes
+WHERE tags != '{}';
+
+CREATE VIEW osm_point_z15 AS
+SELECT id, tags, geom
+FROM osm_nodes
+WHERE tags != '{}';
+
+CREATE VIEW osm_point_z14 AS
+SELECT id, tags, geom
+FROM osm_nodes
+WHERE tags != '{}';
+
+CREATE MATERIALIZED VIEW osm_point_z13 AS
+SELECT id, tags, geom
+FROM osm_nodes
+WHERE tags != '{}'
+AND (tags ->> 'place' IN ('region', 'province', 'district', 'county', 'municipality', 'city', 'town', 'village', 'quarter', 'hamlet')) OR (tags ->> 'natural' IN ('peak', 'volcano')) OR (tags ->> 'highway' IN ('motorway_junction')) OR (tags ->> 'tourism' IN ('wilderness_hut')) OR (tags ->> 'waterway' IN ('waterfall')) OR (tags ->> 'natural' IN ('spring')) OR (tags ->> 'railway' IN ('level_crossing'));
+
+CREATE MATERIALIZED VIEW osm_point_z12 AS
+SELECT id, tags, geom
+FROM osm_nodes
+WHERE tags != '{}' AND (tags ->> 'place' IN ('region', 'province', 'district', 'county', 'municipality', 'city', 'town', 'village')) OR (tags ->> 'natural' IN ('peak', 'volcano')) OR (tags ->> 'highway' IN ('motorway_junction')) OR (tags ->> 'tourism' IN ('wilderness_hut')) OR (tags ->> 'waterway' IN ('waterfall'));
+
+CREATE MATERIALIZED VIEW osm_point_z11 AS
+SELECT id, tags, geom
+FROM osm_nodes
+WHERE tags != '{}' AND (tags ->> 'place' IN ('country', 'state', 'region', 'province', 'district', 'county', 'municipality', 'city', 'town', 'village')) OR (tags ->> 'natural' IN ('peak', 'volcano')) OR (tags ->> 'highway' IN ('motorway_junction'));
+
+CREATE MATERIALIZED VIEW osm_point_z10 AS
+SELECT id, tags, geom
+FROM osm_nodes
+WHERE tags != '{}' AND (tags ->> 'place' IN ('country', 'state', 'region', 'province', 'district', 'county', 'municipality', 'city', 'town')) OR (tags ->> 'natural' IN ('peak', 'volcano')) OR (tags ->> 'highway' IN ('motorway_junction'));
+
+CREATE MATERIALIZED VIEW osm_point_z9 AS
+SELECT id, tags, geom
+FROM osm_nodes
+WHERE tags != '{}' AND tags ->> 'place' IN ('country', 'state', 'region', 'province', 'district', 'county', 'municipality', 'city', 'town');
+
+CREATE MATERIALIZED VIEW osm_point_z8 AS
+SELECT id, tags, geom
+FROM osm_nodes
+WHERE tags != '{}' AND tags ->> 'place' IN ('country', 'state', 'region', 'province', 'district', 'county', 'municipality', 'city', 'town');
+
+CREATE MATERIALIZED VIEW osm_point_z7 AS
+SELECT id, tags, geom
+FROM osm_nodes
+WHERE tags != '{}' AND tags ->> 'place' IN ('country', 'city', 'sea', 'state', 'county');
+
+CREATE MATERIALIZED VIEW osm_point_z6 AS
+SELECT id, tags, geom
+FROM osm_nodes
+WHERE tags != '{}' AND tags ->> 'place' IN ('country', 'city', 'sea', 'state', 'county');
+
+CREATE MATERIALIZED VIEW osm_point_z5 AS
+SELECT id, tags, geom
+FROM osm_nodes
+WHERE tags != '{}' AND tags ->> 'place' IN ('country', 'city', 'sea', 'state', 'county');
+
+CREATE MATERIALIZED VIEW osm_point_z4 AS
+SELECT id, tags, geom
+FROM osm_nodes
+WHERE tags != '{}' AND tags ->> 'place' IN ('country', 'city', 'sea');
+
+CREATE MATERIALIZED VIEW osm_point_z3 AS
+SELECT id, tags, geom
+FROM osm_nodes
+WHERE tags != '{}' AND tags ->> 'place' IN ('country', 'city', 'sea');
+
+CREATE MATERIALIZED VIEW osm_point_z2 AS
+SELECT id, tags, geom
+FROM osm_nodes
+WHERE tags != '{}' AND tags ->> 'place' IN ('country');
+
+CREATE MATERIALIZED VIEW osm_point_z1 AS
+SELECT id, tags, geom
+FROM osm_nodes
+WHERE tags != '{}' AND tags ->> 'place' IN ('country');
\ No newline at end of file
diff --git a/basemap/layers/point/tileset.js b/basemap/layers/point/tileset.js
index 33b8c878..4c41735d 100644
--- a/basemap/layers/point/tileset.js
+++ b/basemap/layers/point/tileset.js
@@ -15,7 +15,7 @@ export default {
{
"minzoom": 1,
"maxzoom": 20,
- "sql": "SELECT id, tags, geom FROM osm_nodes_z$zoom WHERE tags != '{}'"
+ "sql": "SELECT id, tags, geom FROM osm_point_z$zoom WHERE tags != '{}'"
}
]
}
diff --git a/basemap/queries/osm_water_index.sql b/basemap/layers/polygon/clean.sql
similarity index 85%
copy from basemap/queries/osm_water_index.sql
copy to basemap/layers/polygon/clean.sql
index 8e6c537d..645f44f8 100644
--- a/basemap/queries/osm_water_index.sql
+++ b/basemap/layers/polygon/clean.sql
@@ -7,4 +7,4 @@
-- 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 INDEX water_polygons_geometry_index ON water_polygons_shp USING SPGIST(geometry);
+DROP MATERIALIZED VIEW IF EXISTS osm_polygon CASCADE;
diff --git a/basemap/queries/osm_polygon_index.sql b/basemap/layers/polygon/index.sql
similarity index 99%
rename from basemap/queries/osm_polygon_index.sql
rename to basemap/layers/polygon/index.sql
index 701aff42..1abd04f3 100644
--- a/basemap/queries/osm_polygon_index.sql
+++ b/basemap/layers/polygon/index.sql
@@ -8,4 +8,4 @@
-- or implied. See the License for the specific language governing permissions and limitations under
-- the License.
CREATE INDEX osm_polygon_geom_idx ON osm_polygon USING GIST (geom);
-CREATE INDEX osm_polygon_tags_idx ON osm_polygon USING GIN (tags);
+CREATE INDEX osm_polygon_tags_idx ON osm_polygon USING GIN (tags);
\ No newline at end of file
diff --git a/basemap/queries/osm_polygon_prepare.sql b/basemap/layers/polygon/prepare.sql
similarity index 86%
rename from basemap/queries/osm_polygon_prepare.sql
rename to basemap/layers/polygon/prepare.sql
index 906fa562..76c79886 100644
--- a/basemap/queries/osm_polygon_prepare.sql
+++ b/basemap/layers/polygon/prepare.sql
@@ -7,14 +7,12 @@
-- 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.
-DROP MATERIALIZED VIEW IF EXISTS osm_polygon CASCADE;
-
CREATE MATERIALIZED VIEW osm_polygon AS
SELECT id, tags, geom
-FROM osm_ways LEFT JOIN osm_ways_member ON id = way_id
+FROM osm_ways LEFT JOIN osm_member ON id = member_ref
WHERE ST_GeometryType(osm_ways.geom) = 'ST_Polygon'
AND tags != '{}'
- AND way_id IS NULL
+ AND member_ref IS NULL
UNION
SELECT id, tags, geom
FROM osm_relations
@@ -24,4 +22,4 @@ UNION
SELECT id, tags, (st_dump(geom)).geom as geom
FROM osm_relations
WHERE ST_GeometryType(osm_relations.geom) = 'ST_MultiPolygon'
- AND tags != '{}';
+ AND tags != '{}';
\ No newline at end of file
diff --git a/basemap/layers/power/tileset.js b/basemap/layers/power/tileset.js
index b5b7932b..d0e442a9 100644
--- a/basemap/layers/power/tileset.js
+++ b/basemap/layers/power/tileset.js
@@ -13,9 +13,9 @@ export default {
"id": "power",
"queries": [
{
- "minzoom": 12,
+ "minzoom": 13,
"maxzoom": 20,
- "sql": "SELECT id, tags, geom FROM osm_ways_z$zoom WHERE tags ->> 'power' IN ('cable', 'line', 'minor_line', 'plant', 'substation')"
+ "sql": "SELECT id, tags, geom FROM osm_ways WHERE tags ->> 'power' IN ('cable', 'line', 'minor_line', 'plant', 'substation')"
}
]
}
diff --git a/basemap/queries/osm_water_index.sql b/basemap/layers/railway/clean.sql
similarity index 85%
copy from basemap/queries/osm_water_index.sql
copy to basemap/layers/railway/clean.sql
index 8e6c537d..565177af 100644
--- a/basemap/queries/osm_water_index.sql
+++ b/basemap/layers/railway/clean.sql
@@ -7,4 +7,4 @@
-- 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 INDEX water_polygons_geometry_index ON water_polygons_shp USING SPGIST(geometry);
+DROP MATERIALIZED VIEW IF EXISTS osm_railway CASCADE;
diff --git a/basemap/queries/osm_railway_index.sql b/basemap/layers/railway/index.sql
similarity index 100%
rename from basemap/queries/osm_railway_index.sql
rename to basemap/layers/railway/index.sql
diff --git a/basemap/queries/osm_railway_prepare.sql b/basemap/layers/railway/prepare.sql
similarity index 91%
rename from basemap/queries/osm_railway_prepare.sql
rename to basemap/layers/railway/prepare.sql
index b17a25dc..67837912 100644
--- a/basemap/queries/osm_railway_prepare.sql
+++ b/basemap/layers/railway/prepare.sql
@@ -8,7 +8,6 @@
-- or implied. See the License for the specific language governing permissions and limitations under
-- the License.
DROP MATERIALIZED VIEW IF EXISTS osm_railway CASCADE;
-
CREATE MATERIALIZED VIEW osm_railway AS
SELECT id, tags, geom
FROM (
@@ -21,5 +20,3 @@ FROM (
AND NOT tags ? 'service'
GROUP BY tags -> 'railway'
) AS merge;
-
-CREATE INDEX IF NOT EXISTS osm_railway_geom_index ON osm_railway USING SPGIST (geom);
diff --git a/basemap/queries/osm_railway_simplify.sql b/basemap/layers/railway/simplify.sql
similarity index 100%
rename from basemap/queries/osm_railway_simplify.sql
rename to basemap/layers/railway/simplify.sql
diff --git a/basemap/layers/railway/tileset.js b/basemap/layers/railway/tileset.js
index 0f2f2422..3eb49008 100644
--- a/basemap/layers/railway/tileset.js
+++ b/basemap/layers/railway/tileset.js
@@ -14,13 +14,13 @@ export default {
"queries": [
{
"minzoom": 9,
- "maxzoom": 12,
+ "maxzoom": 13,
"sql": "SELECT id, tags, geom FROM osm_railway_z$zoom"
},
{
- "minzoom": 12,
+ "minzoom": 13,
"maxzoom": 20,
- "sql": "SELECT id, tags, geom FROM osm_ways_z$zoom WHERE tags ? 'railway'"
+ "sql": "SELECT id, tags, geom FROM osm_ways WHERE tags ? 'railway'"
}
]
}
diff --git a/basemap/queries/osm_water_index.sql b/basemap/layers/route/clean.sql
similarity index 85%
copy from basemap/queries/osm_water_index.sql
copy to basemap/layers/route/clean.sql
index 8e6c537d..760797b3 100644
--- a/basemap/queries/osm_water_index.sql
+++ b/basemap/layers/route/clean.sql
@@ -7,4 +7,4 @@
-- 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 INDEX water_polygons_geometry_index ON water_polygons_shp USING SPGIST(geometry);
+DROP MATERIALIZED VIEW IF EXISTS osm_route CASCADE;
diff --git a/basemap/layers/route/index.sql b/basemap/layers/route/index.sql
new file mode 100644
index 00000000..d8c321b5
--- /dev/null
+++ b/basemap/layers/route/index.sql
@@ -0,0 +1,21 @@
+-- Licensed 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 INDEX IF NOT EXISTS osm_route_geom_z12_index ON osm_route_z12 USING SPGIST (geom);
+CREATE INDEX IF NOT EXISTS osm_route_geom_z11_index ON osm_route_z11 USING SPGIST (geom);
+CREATE INDEX IF NOT EXISTS osm_route_geom_z10_index ON osm_route_z10 USING SPGIST (geom);
+CREATE INDEX IF NOT EXISTS osm_route_geom_z9_index ON osm_route_z9 USING SPGIST (geom);
+CREATE INDEX IF NOT EXISTS osm_route_geom_z8_index ON osm_route_z8 USING SPGIST (geom);
+CREATE INDEX IF NOT EXISTS osm_route_geom_z7_index ON osm_route_z7 USING SPGIST (geom);
+CREATE INDEX IF NOT EXISTS osm_route_geom_z6_index ON osm_route_z6 USING SPGIST (geom);
+CREATE INDEX IF NOT EXISTS osm_route_geom_z5_index ON osm_route_z5 USING SPGIST (geom);
+CREATE INDEX IF NOT EXISTS osm_route_geom_z4_index ON osm_route_z4 USING SPGIST (geom);
+CREATE INDEX IF NOT EXISTS osm_route_geom_z3_index ON osm_route_z3 USING SPGIST (geom);
+CREATE INDEX IF NOT EXISTS osm_route_geom_z2_index ON osm_route_z2 USING SPGIST (geom);
+CREATE INDEX IF NOT EXISTS osm_route_geom_z1_index ON osm_route_z1 USING SPGIST (geom);
diff --git a/basemap/queries/osm_ways_prepare.sql b/basemap/layers/route/prepare.sql
similarity index 50%
rename from basemap/queries/osm_ways_prepare.sql
rename to basemap/layers/route/prepare.sql
index 21f3408b..d0831abe 100644
--- a/basemap/queries/osm_ways_prepare.sql
+++ b/basemap/layers/route/prepare.sql
@@ -7,13 +7,19 @@
-- 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 INDEX osm_ways_geom_index ON osm_ways USING spgist (geom);
-CREATE INDEX osm_ways_tags_index ON osm_ways USING gin (tags);
+DROP MATERIALIZED VIEW IF EXISTS osm_route CASCADE;
-CREATE MATERIALIZED VIEW osm_ways_member AS
-SELECT DISTINCT member_ref as way_id
-FROM osm_relations, unnest(member_types, member_refs) AS way(member_type, member_ref)
-WHERE geom IS NOT NULL
- AND member_type = 1
- AND tags ->> 'type' = 'multipolygon'
- AND NOT tags ->> 'natural' = 'coastline';
+CREATE MATERIALIZED VIEW osm_route AS
+SELECT id, tags, geom
+FROM (
+ SELECT
+ min(id) as id,
+ jsonb_build_object('route', tags -> 'route') as tags,
+ (st_dump(st_linemerge(st_collect(geom)))).geom as geom
+ FROM osm_ways
+ WHERE tags ->> 'route' IN ('light_rail', 'monorail', 'rail', 'subway', 'tram')
+ AND NOT tags ? 'service'
+ GROUP BY tags -> 'route'
+) AS merge;
+
+CREATE INDEX IF NOT EXISTS osm_route_geom_index ON osm_route USING SPGIST (geom);
diff --git a/basemap/queries/osm_boundary_simplify.sql b/basemap/layers/route/simplify.sql
similarity index 59%
copy from basemap/queries/osm_boundary_simplify.sql
copy to basemap/layers/route/simplify.sql
index 8f114193..130fff57 100644
--- a/basemap/queries/osm_boundary_simplify.sql
+++ b/basemap/layers/route/simplify.sql
@@ -7,86 +7,86 @@
-- 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 VIEW osm_boundary_z20 AS
-SELECT id, tags, geom FROM osm_boundary;
+CREATE VIEW osm_route_z20 AS
+SELECT id, tags, geom FROM osm_route;
-CREATE VIEW osm_boundary_z19 AS
-SELECT id, tags, geom FROM osm_boundary;
+CREATE VIEW osm_route_z19 AS
+SELECT id, tags, geom FROM osm_route;
-CREATE VIEW osm_boundary_z18 AS
-SELECT id, tags, geom FROM osm_boundary;
+CREATE VIEW osm_route_z18 AS
+SELECT id, tags, geom FROM osm_route;
-CREATE VIEW osm_boundary_z17 AS
-SELECT id, tags, geom FROM osm_boundary;
+CREATE VIEW osm_route_z17 AS
+SELECT id, tags, geom FROM osm_route;
-CREATE VIEW osm_boundary_z16 AS
-SELECT id, tags, geom FROM osm_boundary;
+CREATE VIEW osm_route_z16 AS
+SELECT id, tags, geom FROM osm_route;
-CREATE VIEW osm_boundary_z15 AS
-SELECT id, tags, geom FROM osm_boundary;
+CREATE VIEW osm_route_z15 AS
+SELECT id, tags, geom FROM osm_route;
-CREATE VIEW osm_boundary_z14 AS
-SELECT id, tags, geom FROM osm_boundary;
+CREATE VIEW osm_route_z14 AS
+SELECT id, tags, geom FROM osm_route;
-CREATE VIEW osm_boundary_z13 AS
-SELECT id, tags, geom FROM osm_boundary;
+CREATE VIEW osm_route_z13 AS
+SELECT id, tags, geom FROM osm_route;
-CREATE MATERIALIZED VIEW osm_boundary_z12 AS
+CREATE MATERIALIZED VIEW osm_route_z12 AS
SELECT id, tags, geom
-FROM (SELECT id, tags, st_simplifypreservetopology(geom, 78270 / power(2, 12)) AS geom FROM osm_boundary) AS osm_boundary
+FROM (SELECT id, tags, st_simplifypreservetopology(geom, 78270 / power(2, 12)) AS geom FROM osm_route) AS osm_route
WHERE geom IS NOT NULL AND (st_area(st_envelope(geom)) > power((78270 / power(2, 12)), 2));
-CREATE MATERIALIZED VIEW osm_boundary_z11 AS
+CREATE MATERIALIZED VIEW osm_route_z11 AS
SELECT id, tags, geom
-FROM (SELECT id, tags, st_simplifypreservetopology(geom, 78270 / power(2, 11)) AS geom FROM osm_boundary) AS osm_boundary
+FROM (SELECT id, tags, st_simplifypreservetopology(geom, 78270 / power(2, 11)) AS geom FROM osm_route) AS osm_route
WHERE geom IS NOT NULL AND (st_area(st_envelope(geom)) > power((78270 / power(2, 11)), 2));
-CREATE MATERIALIZED VIEW osm_boundary_z10 AS
+CREATE MATERIALIZED VIEW osm_route_z10 AS
SELECT id, tags, geom
-FROM (SELECT id, tags, st_simplifypreservetopology(geom, 78270 / power(2, 10)) AS geom FROM osm_boundary) AS osm_boundary
+FROM (SELECT id, tags, st_simplifypreservetopology(geom, 78270 / power(2, 10)) AS geom FROM osm_route) AS osm_route
WHERE geom IS NOT NULL AND (st_area(st_envelope(geom)) > power((78270 / power(2, 10)), 2));
-CREATE MATERIALIZED VIEW osm_boundary_z9 AS
+CREATE MATERIALIZED VIEW osm_route_z9 AS
SELECT id, tags, geom
-FROM (SELECT id, tags, st_simplifypreservetopology(geom, 78270 / power(2, 9)) AS geom FROM osm_boundary) AS osm_boundary
+FROM (SELECT id, tags, st_simplifypreservetopology(geom, 78270 / power(2, 9)) AS geom FROM osm_route) AS osm_route
WHERE geom IS NOT NULL AND (st_area(st_envelope(geom)) > power((78270 / power(2, 9)), 2));
-CREATE MATERIALIZED VIEW osm_boundary_z8 AS
+CREATE MATERIALIZED VIEW osm_route_z8 AS
SELECT id, tags, geom
-FROM (SELECT id, tags, st_simplifypreservetopology(geom, 78270 / power(2, 8)) AS geom FROM osm_boundary) AS osm_boundary
+FROM (SELECT id, tags, st_simplifypreservetopology(geom, 78270 / power(2, 8)) AS geom FROM osm_route) AS osm_route
WHERE geom IS NOT NULL AND (st_area(st_envelope(geom)) > power((78270 / power(2, 8)), 2));
-CREATE MATERIALIZED VIEW osm_boundary_z7 AS
+CREATE MATERIALIZED VIEW osm_route_z7 AS
SELECT id, tags, geom
-FROM (SELECT id, tags, st_simplifypreservetopology(geom, 78270 / power(2, 7)) AS geom FROM osm_boundary) AS osm_boundary
+FROM (SELECT id, tags, st_simplifypreservetopology(geom, 78270 / power(2, 7)) AS geom FROM osm_route) AS osm_route
WHERE geom IS NOT NULL AND (st_area(st_envelope(geom)) > power((78270 / power(2, 7)), 2));
-CREATE MATERIALIZED VIEW osm_boundary_z6 AS
+CREATE MATERIALIZED VIEW osm_route_z6 AS
SELECT id, tags, geom
-FROM (SELECT id, tags, st_simplifypreservetopology(geom, 78270 / power(2, 6)) AS geom FROM osm_boundary) AS osm_boundary
+FROM (SELECT id, tags, st_simplifypreservetopology(geom, 78270 / power(2, 6)) AS geom FROM osm_route) AS osm_route
WHERE geom IS NOT NULL AND (st_area(st_envelope(geom)) > power((78270 / power(2, 6)), 2));
-CREATE MATERIALIZED VIEW osm_boundary_z5 AS
+CREATE MATERIALIZED VIEW osm_route_z5 AS
SELECT id, tags, geom
-FROM (SELECT id, tags, st_simplifypreservetopology(geom, 78270 / power(2, 5)) AS geom FROM osm_boundary) AS osm_boundary
+FROM (SELECT id, tags, st_simplifypreservetopology(geom, 78270 / power(2, 5)) AS geom FROM osm_route) AS osm_route
WHERE geom IS NOT NULL AND (st_area(st_envelope(geom)) > power((78270 / power(2, 5)), 2));
-CREATE MATERIALIZED VIEW osm_boundary_z4 AS
+CREATE MATERIALIZED VIEW osm_route_z4 AS
SELECT id, tags, geom
-FROM (SELECT id, tags, st_simplifypreservetopology(geom, 78270 / power(2, 4)) AS geom FROM osm_boundary) AS osm_boundary
+FROM (SELECT id, tags, st_simplifypreservetopology(geom, 78270 / power(2, 4)) AS geom FROM osm_route) AS osm_route
WHERE geom IS NOT NULL AND (st_area(st_envelope(geom)) > power((78270 / power(2, 4)), 2));
-CREATE MATERIALIZED VIEW osm_boundary_z3 AS
+CREATE MATERIALIZED VIEW osm_route_z3 AS
SELECT id, tags, geom
-FROM (SELECT id, tags, st_simplifypreservetopology(geom, 78270 / power(2, 3)) AS geom FROM osm_boundary) AS osm_boundary
+FROM (SELECT id, tags, st_simplifypreservetopology(geom, 78270 / power(2, 3)) AS geom FROM osm_route) AS osm_route
WHERE geom IS NOT NULL AND (st_area(st_envelope(geom)) > power((78270 / power(2, 3)), 2));
-CREATE MATERIALIZED VIEW osm_boundary_z2 AS
+CREATE MATERIALIZED VIEW osm_route_z2 AS
SELECT id, tags, geom
-FROM (SELECT id, tags, st_simplifypreservetopology(geom, 78270 / power(2, 2)) AS geom FROM osm_boundary) AS osm_boundary
+FROM (SELECT id, tags, st_simplifypreservetopology(geom, 78270 / power(2, 2)) AS geom FROM osm_route) AS osm_route
WHERE geom IS NOT NULL AND (st_area(st_envelope(geom)) > power((78270 / power(2, 2)), 2));
-CREATE MATERIALIZED VIEW osm_boundary_z1 AS
+CREATE MATERIALIZED VIEW osm_route_z1 AS
SELECT id, tags, geom
-FROM (SELECT id, tags, st_simplifypreservetopology(geom, 78270 / power(2, 1)) AS geom FROM osm_boundary) AS osm_boundary
+FROM (SELECT id, tags, st_simplifypreservetopology(geom, 78270 / power(2, 1)) AS geom FROM osm_route) AS osm_route
WHERE geom IS NOT NULL AND (st_area(st_envelope(geom)) > power((78270 / power(2, 1)), 2));
diff --git a/basemap/layers/route/tileset.js b/basemap/layers/route/tileset.js
index d165ed81..83891d33 100644
--- a/basemap/layers/route/tileset.js
+++ b/basemap/layers/route/tileset.js
@@ -14,13 +14,13 @@ export default {
"queries": [
{
"minzoom": 9,
- "maxzoom": 12,
- "sql": "SELECT id, tags, geom FROM osm_ways_z$zoom WHERE tags ? 'route'"
+ "maxzoom": 13,
+ "sql": "SELECT id, tags, geom FROM osm_route_z$zoom WHERE tags ? 'route'"
},
{
- "minzoom": 12,
+ "minzoom": 13,
"maxzoom": 20,
- "sql": "SELECT id, tags, geom FROM osm_ways_z$zoom WHERE tags ? 'route'"
+ "sql": "SELECT id, tags, geom FROM osm_ways WHERE tags ? 'route'"
}
]
}
diff --git a/basemap/queries/osm_water_index.sql b/basemap/layers/waterway/clean.sql
similarity index 85%
rename from basemap/queries/osm_water_index.sql
rename to basemap/layers/waterway/clean.sql
index 8e6c537d..8bd0bab0 100644
--- a/basemap/queries/osm_water_index.sql
+++ b/basemap/layers/waterway/clean.sql
@@ -7,4 +7,4 @@
-- 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 INDEX water_polygons_geometry_index ON water_polygons_shp USING SPGIST(geometry);
+DROP MATERIALIZED VIEW IF EXISTS osm_waterway CASCADE;
diff --git a/basemap/layers/waterway/index.sql b/basemap/layers/waterway/index.sql
new file mode 100644
index 00000000..e3493d14
--- /dev/null
+++ b/basemap/layers/waterway/index.sql
@@ -0,0 +1,21 @@
+-- Licensed 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 INDEX IF NOT EXISTS osm_waterway_geom_z12_index ON osm_waterway_z12 USING SPGIST (geom);
+CREATE INDEX IF NOT EXISTS osm_waterway_geom_z11_index ON osm_waterway_z11 USING SPGIST (geom);
+CREATE INDEX IF NOT EXISTS osm_waterway_geom_z10_index ON osm_waterway_z10 USING SPGIST (geom);
+CREATE INDEX IF NOT EXISTS osm_waterway_geom_z9_index ON osm_waterway_z9 USING SPGIST (geom);
+CREATE INDEX IF NOT EXISTS osm_waterway_geom_z8_index ON osm_waterway_z8 USING SPGIST (geom);
+CREATE INDEX IF NOT EXISTS osm_waterway_geom_z7_index ON osm_waterway_z7 USING SPGIST (geom);
+CREATE INDEX IF NOT EXISTS osm_waterway_geom_z6_index ON osm_waterway_z6 USING SPGIST (geom);
+CREATE INDEX IF NOT EXISTS osm_waterway_geom_z5_index ON osm_waterway_z5 USING SPGIST (geom);
+CREATE INDEX IF NOT EXISTS osm_waterway_geom_z4_index ON osm_waterway_z4 USING SPGIST (geom);
+CREATE INDEX IF NOT EXISTS osm_waterway_geom_z3_index ON osm_waterway_z3 USING SPGIST (geom);
+CREATE INDEX IF NOT EXISTS osm_waterway_geom_z2_index ON osm_waterway_z2 USING SPGIST (geom);
+CREATE INDEX IF NOT EXISTS osm_waterway_geom_z1_index ON osm_waterway_z1 USING SPGIST (geom);
diff --git a/basemap/layers/waterway/prepare.sql b/basemap/layers/waterway/prepare.sql
new file mode 100644
index 00000000..e3701b86
--- /dev/null
+++ b/basemap/layers/waterway/prepare.sql
@@ -0,0 +1,56 @@
+-- Licensed 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.
+DROP MATERIALIZED VIEW IF EXISTS osm_waterway CASCADE;
+
+CREATE MATERIALIZED VIEW osm_waterway AS
+WITH
+ -- Filter the linestrings
+ filtered AS (
+ SELECT
+ tags -> 'waterway' AS waterway,
+ geom AS geom
+ FROM osm_linestring
+ WHERE tags ->> 'waterway' IN ('river', 'stream', 'canal', 'drain', 'ditch')
+ ),
+ -- Cluster the linestrings
+ clustered AS (
+ SELECT
+ waterway AS waterway,
+ geom as geom,
+ ST_ClusterDBSCAN(geom, 0, 1) OVER (PARTITION BY waterway) AS cluster
+ FROM
+ filtered
+ ),
+ -- Merge the linestrings into a single geometry per cluster
+ merged AS (
+ SELECT
+ waterway AS waterway,
+ ST_LineMerge(ST_Collect(geom)) AS geom
+ FROM
+ clustered
+ GROUP BY
+ waterway, cluster
+ ),
+ -- Explode the merged linestrings into individual linestrings
+ exploded AS (
+ SELECT
+ waterway AS waterway,
+ (ST_Dump(geom)).geom AS geom
+ FROM
+ merged
+ )
+SELECT
+ row_number() OVER () AS id,
+ jsonb_build_object('waterway', waterway) AS tags,
+ geom AS geom
+FROM exploded;
+
+CREATE INDEX IF NOT EXISTS osm_waterway_tags_index ON osm_waterway USING gin (tags);
+CREATE INDEX IF NOT EXISTS osm_waterway_geom_index ON osm_waterway USING gist (geom);
diff --git a/basemap/queries/osm_boundary_simplify.sql b/basemap/layers/waterway/simplify.sql
similarity index 59%
rename from basemap/queries/osm_boundary_simplify.sql
rename to basemap/layers/waterway/simplify.sql
index 8f114193..3e97f260 100644
--- a/basemap/queries/osm_boundary_simplify.sql
+++ b/basemap/layers/waterway/simplify.sql
@@ -7,86 +7,86 @@
-- 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 VIEW osm_boundary_z20 AS
-SELECT id, tags, geom FROM osm_boundary;
+CREATE VIEW osm_waterway_z20 AS
+SELECT id, tags, geom FROM osm_waterway;
-CREATE VIEW osm_boundary_z19 AS
-SELECT id, tags, geom FROM osm_boundary;
+CREATE VIEW osm_waterway_z19 AS
+SELECT id, tags, geom FROM osm_waterway;
-CREATE VIEW osm_boundary_z18 AS
-SELECT id, tags, geom FROM osm_boundary;
+CREATE VIEW osm_waterway_z18 AS
+SELECT id, tags, geom FROM osm_waterway;
-CREATE VIEW osm_boundary_z17 AS
-SELECT id, tags, geom FROM osm_boundary;
+CREATE VIEW osm_waterway_z17 AS
+SELECT id, tags, geom FROM osm_waterway;
-CREATE VIEW osm_boundary_z16 AS
-SELECT id, tags, geom FROM osm_boundary;
+CREATE VIEW osm_waterway_z16 AS
+SELECT id, tags, geom FROM osm_waterway;
-CREATE VIEW osm_boundary_z15 AS
-SELECT id, tags, geom FROM osm_boundary;
+CREATE VIEW osm_waterway_z15 AS
+SELECT id, tags, geom FROM osm_waterway;
-CREATE VIEW osm_boundary_z14 AS
-SELECT id, tags, geom FROM osm_boundary;
+CREATE VIEW osm_waterway_z14 AS
+SELECT id, tags, geom FROM osm_waterway;
-CREATE VIEW osm_boundary_z13 AS
-SELECT id, tags, geom FROM osm_boundary;
+CREATE VIEW osm_waterway_z13 AS
+SELECT id, tags, geom FROM osm_waterway;
-CREATE MATERIALIZED VIEW osm_boundary_z12 AS
+CREATE MATERIALIZED VIEW osm_waterway_z12 AS
SELECT id, tags, geom
-FROM (SELECT id, tags, st_simplifypreservetopology(geom, 78270 / power(2, 12)) AS geom FROM osm_boundary) AS osm_boundary
+FROM (SELECT id, tags, st_simplifypreservetopology(geom, 78270 / power(2, 12)) AS geom FROM osm_waterway) AS osm_waterway
WHERE geom IS NOT NULL AND (st_area(st_envelope(geom)) > power((78270 / power(2, 12)), 2));
-CREATE MATERIALIZED VIEW osm_boundary_z11 AS
+CREATE MATERIALIZED VIEW osm_waterway_z11 AS
SELECT id, tags, geom
-FROM (SELECT id, tags, st_simplifypreservetopology(geom, 78270 / power(2, 11)) AS geom FROM osm_boundary) AS osm_boundary
+FROM (SELECT id, tags, st_simplifypreservetopology(geom, 78270 / power(2, 11)) AS geom FROM osm_waterway) AS osm_waterway
WHERE geom IS NOT NULL AND (st_area(st_envelope(geom)) > power((78270 / power(2, 11)), 2));
-CREATE MATERIALIZED VIEW osm_boundary_z10 AS
+CREATE MATERIALIZED VIEW osm_waterway_z10 AS
SELECT id, tags, geom
-FROM (SELECT id, tags, st_simplifypreservetopology(geom, 78270 / power(2, 10)) AS geom FROM osm_boundary) AS osm_boundary
+FROM (SELECT id, tags, st_simplifypreservetopology(geom, 78270 / power(2, 10)) AS geom FROM osm_waterway) AS osm_waterway
WHERE geom IS NOT NULL AND (st_area(st_envelope(geom)) > power((78270 / power(2, 10)), 2));
-CREATE MATERIALIZED VIEW osm_boundary_z9 AS
+CREATE MATERIALIZED VIEW osm_waterway_z9 AS
SELECT id, tags, geom
-FROM (SELECT id, tags, st_simplifypreservetopology(geom, 78270 / power(2, 9)) AS geom FROM osm_boundary) AS osm_boundary
+FROM (SELECT id, tags, st_simplifypreservetopology(geom, 78270 / power(2, 9)) AS geom FROM osm_waterway) AS osm_waterway
WHERE geom IS NOT NULL AND (st_area(st_envelope(geom)) > power((78270 / power(2, 9)), 2));
-CREATE MATERIALIZED VIEW osm_boundary_z8 AS
+CREATE MATERIALIZED VIEW osm_waterway_z8 AS
SELECT id, tags, geom
-FROM (SELECT id, tags, st_simplifypreservetopology(geom, 78270 / power(2, 8)) AS geom FROM osm_boundary) AS osm_boundary
+FROM (SELECT id, tags, st_simplifypreservetopology(geom, 78270 / power(2, 8)) AS geom FROM osm_waterway) AS osm_waterway
WHERE geom IS NOT NULL AND (st_area(st_envelope(geom)) > power((78270 / power(2, 8)), 2));
-CREATE MATERIALIZED VIEW osm_boundary_z7 AS
+CREATE MATERIALIZED VIEW osm_waterway_z7 AS
SELECT id, tags, geom
-FROM (SELECT id, tags, st_simplifypreservetopology(geom, 78270 / power(2, 7)) AS geom FROM osm_boundary) AS osm_boundary
+FROM (SELECT id, tags, st_simplifypreservetopology(geom, 78270 / power(2, 7)) AS geom FROM osm_waterway) AS osm_waterway
WHERE geom IS NOT NULL AND (st_area(st_envelope(geom)) > power((78270 / power(2, 7)), 2));
-CREATE MATERIALIZED VIEW osm_boundary_z6 AS
+CREATE MATERIALIZED VIEW osm_waterway_z6 AS
SELECT id, tags, geom
-FROM (SELECT id, tags, st_simplifypreservetopology(geom, 78270 / power(2, 6)) AS geom FROM osm_boundary) AS osm_boundary
+FROM (SELECT id, tags, st_simplifypreservetopology(geom, 78270 / power(2, 6)) AS geom FROM osm_waterway) AS osm_waterway
WHERE geom IS NOT NULL AND (st_area(st_envelope(geom)) > power((78270 / power(2, 6)), 2));
-CREATE MATERIALIZED VIEW osm_boundary_z5 AS
+CREATE MATERIALIZED VIEW osm_waterway_z5 AS
SELECT id, tags, geom
-FROM (SELECT id, tags, st_simplifypreservetopology(geom, 78270 / power(2, 5)) AS geom FROM osm_boundary) AS osm_boundary
+FROM (SELECT id, tags, st_simplifypreservetopology(geom, 78270 / power(2, 5)) AS geom FROM osm_waterway) AS osm_waterway
WHERE geom IS NOT NULL AND (st_area(st_envelope(geom)) > power((78270 / power(2, 5)), 2));
-CREATE MATERIALIZED VIEW osm_boundary_z4 AS
+CREATE MATERIALIZED VIEW osm_waterway_z4 AS
SELECT id, tags, geom
-FROM (SELECT id, tags, st_simplifypreservetopology(geom, 78270 / power(2, 4)) AS geom FROM osm_boundary) AS osm_boundary
+FROM (SELECT id, tags, st_simplifypreservetopology(geom, 78270 / power(2, 4)) AS geom FROM osm_waterway) AS osm_waterway
WHERE geom IS NOT NULL AND (st_area(st_envelope(geom)) > power((78270 / power(2, 4)), 2));
-CREATE MATERIALIZED VIEW osm_boundary_z3 AS
+CREATE MATERIALIZED VIEW osm_waterway_z3 AS
SELECT id, tags, geom
-FROM (SELECT id, tags, st_simplifypreservetopology(geom, 78270 / power(2, 3)) AS geom FROM osm_boundary) AS osm_boundary
+FROM (SELECT id, tags, st_simplifypreservetopology(geom, 78270 / power(2, 3)) AS geom FROM osm_waterway) AS osm_waterway
WHERE geom IS NOT NULL AND (st_area(st_envelope(geom)) > power((78270 / power(2, 3)), 2));
-CREATE MATERIALIZED VIEW osm_boundary_z2 AS
+CREATE MATERIALIZED VIEW osm_waterway_z2 AS
SELECT id, tags, geom
-FROM (SELECT id, tags, st_simplifypreservetopology(geom, 78270 / power(2, 2)) AS geom FROM osm_boundary) AS osm_boundary
+FROM (SELECT id, tags, st_simplifypreservetopology(geom, 78270 / power(2, 2)) AS geom FROM osm_waterway) AS osm_waterway
WHERE geom IS NOT NULL AND (st_area(st_envelope(geom)) > power((78270 / power(2, 2)), 2));
-CREATE MATERIALIZED VIEW osm_boundary_z1 AS
+CREATE MATERIALIZED VIEW osm_waterway_z1 AS
SELECT id, tags, geom
-FROM (SELECT id, tags, st_simplifypreservetopology(geom, 78270 / power(2, 1)) AS geom FROM osm_boundary) AS osm_boundary
+FROM (SELECT id, tags, st_simplifypreservetopology(geom, 78270 / power(2, 1)) AS geom FROM osm_waterway) AS osm_waterway
WHERE geom IS NOT NULL AND (st_area(st_envelope(geom)) > power((78270 / power(2, 1)), 2));
diff --git a/basemap/layers/waterway/tileset.js b/basemap/layers/waterway/tileset.js
index 23cda847..177c4a37 100644
--- a/basemap/layers/waterway/tileset.js
+++ b/basemap/layers/waterway/tileset.js
@@ -15,17 +15,17 @@ export default {
{
"minzoom": 6,
"maxzoom": 10,
- "sql": "SELECT id, tags, geom FROM osm_ways_z$zoom WHERE tags ->> 'waterway' IN ('river')"
+ "sql": "SELECT id, tags, geom FROM osm_waterway_z$zoom WHERE tags ->> 'waterway' IN ('river')"
},
{
"minzoom": 10,
"maxzoom": 12,
- "sql": "SELECT id, tags, geom FROM osm_ways_z$zoom WHERE tags ->> 'waterway' IN ('river', 'stream')"
+ "sql": "SELECT id, tags, geom FROM osm_waterway_z$zoom WHERE tags ->> 'waterway' IN ('river', 'stream')"
},
{
"minzoom": 12,
"maxzoom": 20,
- "sql": "SELECT id, tags, geom FROM osm_ways_z$zoom WHERE tags ? 'waterway'"
+ "sql": "SELECT id, tags, geom FROM osm_ways WHERE tags ? 'waterway'"
}
]
}
diff --git a/basemap/queries/globaladm2_clean.sql b/basemap/queries/globaladm2_clean.sql
deleted file mode 100644
index ddde6a0a..00000000
--- a/basemap/queries/globaladm2_clean.sql
+++ /dev/null
@@ -1,31 +0,0 @@
--- Licensed 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.
-DROP VIEW IF EXISTS globaladm2_z20 CASCADE;
-DROP VIEW IF EXISTS globaladm2_z19 CASCADE;
-DROP VIEW IF EXISTS globaladm2_z18 CASCADE;
-DROP VIEW IF EXISTS globaladm2_z17 CASCADE;
-DROP VIEW IF EXISTS globaladm2_z16 CASCADE;
-DROP VIEW IF EXISTS globaladm2_z15 CASCADE;
-DROP VIEW IF EXISTS globaladm2_z14 CASCADE;
-DROP VIEW IF EXISTS globaladm2_z13 CASCADE;
-
-DROP MATERIALIZED VIEW IF EXISTS globaladm2_z12 CASCADE;
-DROP MATERIALIZED VIEW IF EXISTS globaladm2_z11 CASCADE;
-DROP MATERIALIZED VIEW IF EXISTS globaladm2_z10 CASCADE;
-DROP MATERIALIZED VIEW IF EXISTS globaladm2_z9 CASCADE;
-DROP MATERIALIZED VIEW IF EXISTS globaladm2_z8 CASCADE;
-DROP MATERIALIZED VIEW IF EXISTS globaladm2_z7 CASCADE;
-DROP MATERIALIZED VIEW IF EXISTS globaladm2_z6 CASCADE;
-DROP MATERIALIZED VIEW IF EXISTS globaladm2_z5 CASCADE;
-DROP MATERIALIZED VIEW IF EXISTS globaladm2_z4 CASCADE;
-DROP MATERIALIZED VIEW IF EXISTS globaladm2_z3 CASCADE;
-DROP MATERIALIZED VIEW IF EXISTS globaladm2_z2 CASCADE;
-DROP MATERIALIZED VIEW IF EXISTS globaladm2_z1 CASCADE;
-DROP MATERIALIZED VIEW IF EXISTS globaladm2_z0 CASCADE;
diff --git a/basemap/queries/globaladm2_index.sql b/basemap/queries/globaladm2_index.sql
deleted file mode 100644
index 5b0f1561..00000000
--- a/basemap/queries/globaladm2_index.sql
+++ /dev/null
@@ -1,23 +0,0 @@
--- Licensed 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 INDEX IF NOT EXISTS globaladm2_index ON "globalADM2" USING SPGIST(geom);
-CREATE INDEX IF NOT EXISTS globaladm2_z12_index ON globaladm2_z12 USING SPGIST (geom);
-CREATE INDEX IF NOT EXISTS globaladm2_z11_index ON globaladm2_z11 USING SPGIST (geom);
-CREATE INDEX IF NOT EXISTS globaladm2_z10_index ON globaladm2_z10 USING SPGIST (geom);
-CREATE INDEX IF NOT EXISTS globaladm2_z9_index ON globaladm2_z9 USING SPGIST (geom);
-CREATE INDEX IF NOT EXISTS globaladm2_z8_index ON globaladm2_z8 USING SPGIST (geom);
-CREATE INDEX IF NOT EXISTS globaladm2_z7_index ON globaladm2_z7 USING SPGIST (geom);
-CREATE INDEX IF NOT EXISTS globaladm2_z6_index ON globaladm2_z6 USING SPGIST (geom);
-CREATE INDEX IF NOT EXISTS globaladm2_z5_index ON globaladm2_z5 USING SPGIST (geom);
-CREATE INDEX IF NOT EXISTS globaladm2_z4_index ON globaladm2_z4 USING SPGIST (geom);
-CREATE INDEX IF NOT EXISTS globaladm2_z3_index ON globaladm2_z3 USING SPGIST (geom);
-CREATE INDEX IF NOT EXISTS globaladm2_z2_index ON globaladm2_z2 USING SPGIST (geom);
-CREATE INDEX IF NOT EXISTS globaladm2_z1_index ON globaladm2_z1 USING SPGIST (geom);
-CREATE INDEX IF NOT EXISTS globaladm2_z0_index ON globaladm2_z0 USING SPGIST (geom);
diff --git a/basemap/queries/globaladm2_simplify.sql b/basemap/queries/globaladm2_simplify.sql
deleted file mode 100644
index ba763cc4..00000000
--- a/basemap/queries/globaladm2_simplify.sql
+++ /dev/null
@@ -1,71 +0,0 @@
--- Licensed 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 VIEW globaladm2_z20 AS
-SELECT fid, "shapeGroup" as shapegroup, "shapeType" as shapetype, geom FROM "globalADM2";
-
-CREATE VIEW globaladm2_z19 AS
-SELECT fid, "shapeGroup" as shapegroup, "shapeType" as shapetype, geom FROM "globalADM2";
-
-CREATE VIEW globaladm2_z18 AS
-SELECT fid, "shapeGroup" as shapegroup, "shapeType" as shapetype, geom FROM "globalADM2";
-
-CREATE VIEW globaladm2_z17 AS
-SELECT fid, "shapeGroup" as shapegroup, "shapeType" as shapetype, geom FROM "globalADM2";
-
-CREATE VIEW globaladm2_z16 AS
-SELECT fid, "shapeGroup" as shapegroup, "shapeType" as shapetype, geom FROM "globalADM2";
-
-CREATE VIEW globaladm2_z15 AS
-SELECT fid, "shapeGroup" as shapegroup, "shapeType" as shapetype, geom FROM "globalADM2";
-
-CREATE VIEW globaladm2_z14 AS
-SELECT fid, "shapeGroup" as shapegroup, "shapeType" as shapetype, geom FROM "globalADM2";
-
-CREATE VIEW globaladm2_z13 AS
-SELECT fid, "shapeGroup" as shapegroup, "shapeType" as shapetype, geom FROM "globalADM2";
-
-CREATE MATERIALIZED VIEW globaladm2_z12 AS
-SELECT fid, "shapeGroup" as shapegroup, "shapeType" as shapetype, st_simplifypreservetopology(geom, 78270 / power(2, 12)) AS geom FROM "globalADM2";
-
-CREATE MATERIALIZED VIEW globaladm2_z11 AS
-SELECT fid, "shapeGroup" as shapegroup, "shapeType" as shapetype, st_simplifypreservetopology(geom, 78270 / power(2, 11)) AS geom FROM "globalADM2";
-
-CREATE MATERIALIZED VIEW globaladm2_z10 AS
-SELECT fid, "shapeGroup" as shapegroup, "shapeType" as shapetype, st_simplifypreservetopology(geom, 78270 / power(2, 10)) AS geom FROM "globalADM2";
-
-CREATE MATERIALIZED VIEW globaladm2_z9 AS
-SELECT fid, "shapeGroup" as shapegroup, "shapeType" as shapetype, st_simplifypreservetopology(geom, 78270 / power(2, 9)) AS geom FROM "globalADM2";
-
-CREATE MATERIALIZED VIEW globaladm2_z8 AS
-SELECT fid, "shapeGroup" as shapegroup, "shapeType" as shapetype, st_simplifypreservetopology(geom, 78270 / power(2, 8)) AS geom FROM "globalADM2";
-
-CREATE MATERIALIZED VIEW globaladm2_z7 AS
-SELECT fid, "shapeGroup" as shapegroup, "shapeType" as shapetype, st_simplifypreservetopology(geom, 78270 / power(2, 7)) AS geom FROM "globalADM2";
-
-CREATE MATERIALIZED VIEW globaladm2_z6 AS
-SELECT fid, "shapeGroup" as shapegroup, "shapeType" as shapetype, st_simplifypreservetopology(geom, 78270 / power(2, 6)) AS geom FROM "globalADM2";
-
-CREATE MATERIALIZED VIEW globaladm2_z5 AS
-SELECT fid, "shapeGroup" as shapegroup, "shapeType" as shapetype, st_simplifypreservetopology(geom, 78270 / power(2, 5)) AS geom FROM "globalADM2";
-
-CREATE MATERIALIZED VIEW globaladm2_z4 AS
-SELECT fid, "shapeGroup" as shapegroup, "shapeType" as shapetype, st_simplifypreservetopology(geom, 78270 / power(2, 4)) AS geom FROM "globalADM2";
-
-CREATE MATERIALIZED VIEW globaladm2_z3 AS
-SELECT fid, "shapeGroup" as shapegroup, "shapeType" as shapetype, st_simplifypreservetopology(geom, 78270 / power(2, 3)) AS geom FROM "globalADM2";
-
-CREATE MATERIALIZED VIEW globaladm2_z2 AS
-SELECT fid, "shapeGroup" as shapegroup, "shapeType" as shapetype, st_simplifypreservetopology(geom, 78270 / power(2, 2)) AS geom FROM "globalADM2";
-
-CREATE MATERIALIZED VIEW globaladm2_z1 AS
-SELECT fid, "shapeGroup" as shapegroup, "shapeType" as shapetype, st_simplifypreservetopology(geom, 78270 / power(2, 1)) AS geom FROM "globalADM2";
-
-CREATE MATERIALIZED VIEW globaladm2_z0 AS
-SELECT fid, "shapeGroup" as shapegroup, "shapeType" as shapetype, st_simplifypreservetopology(geom, 78270 / power(2, 0)) AS geom FROM "globalADM2";
diff --git a/basemap/queries/osm_boundary.sql b/basemap/queries/osm_boundary.sql
deleted file mode 100644
index 5dfe7d62..00000000
--- a/basemap/queries/osm_boundary.sql
+++ /dev/null
@@ -1,103 +0,0 @@
--- Licensed 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.
-DROP MATERIALIZED VIEW IF EXISTS osm_boundary CASCADE;
-
-CREATE MATERIALIZED VIEW osm_boundary AS
-SELECT ROW_NUMBER() OVER () as id, tags, geom
-FROM (
- SELECT jsonb_build_object('boundary', 'administrative', 'admin_level', tags -> 'admin_level', 'name', tags -> 'name') as tags, (st_dump(st_linemerge(st_collect(geom)))).geom as geom
- FROM osm_linestring
- WHERE tags ->> 'boundary' IN ('administrative')
- AND tags ->> 'admin_level' IN ('1', '2', '3', '4')
- GROUP BY tags -> 'admin_level', tags -> 'name'
-) AS merge;
-
-CREATE MATERIALIZED VIEW osm_boundary_z1 AS
-SELECT id, tags, geom
-FROM (SELECT id, tags, st_simplifypreservetopology(geom, 78270 / power(2, 1)) AS geom FROM osm_boundary) AS osm_boundary
-WHERE geom IS NOT NULL AND (st_area(st_envelope(geom)) > power((78270 / power(2, 1)), 2));
-
-CREATE MATERIALIZED VIEW osm_boundary_z2 AS
-SELECT id, tags, geom
-FROM (SELECT id, tags, st_simplifypreservetopology(geom, 78270 / power(2, 2)) AS geom FROM osm_boundary) AS osm_boundary
-WHERE geom IS NOT NULL AND (st_area(st_envelope(geom)) > power((78270 / power(2, 2)), 2));
-
-CREATE MATERIALIZED VIEW osm_boundary_z3 AS
-SELECT id, tags, geom
-FROM (SELECT id, tags, st_simplifypreservetopology(geom, 78270 / power(2, 3)) AS geom FROM osm_boundary) AS osm_boundary
-WHERE geom IS NOT NULL AND (st_area(st_envelope(geom)) > power((78270 / power(2, 3)), 2));
-
-CREATE MATERIALIZED VIEW osm_boundary_z4 AS
-SELECT id, tags, geom
-FROM (SELECT id, tags, st_simplifypreservetopology(geom, 78270 / power(2, 4)) AS geom FROM osm_boundary) AS osm_boundary
-WHERE geom IS NOT NULL AND (st_area(st_envelope(geom)) > power((78270 / power(2, 4)), 2));
-
-CREATE MATERIALIZED VIEW osm_boundary_z5 AS
-SELECT id, tags, geom
-FROM (SELECT id, tags, st_simplifypreservetopology(geom, 78270 / power(2, 5)) AS geom FROM osm_boundary) AS osm_boundary
-WHERE geom IS NOT NULL AND (st_area(st_envelope(geom)) > power((78270 / power(2, 5)), 2));
-
-CREATE MATERIALIZED VIEW osm_boundary_z6 AS
-SELECT id, tags, geom
-FROM (SELECT id, tags, st_simplifypreservetopology(geom, 78270 / power(2, 6)) AS geom FROM osm_boundary) AS osm_boundary
-WHERE geom IS NOT NULL AND (st_area(st_envelope(geom)) > power((78270 / power(2, 6)), 2));
-
-CREATE MATERIALIZED VIEW osm_boundary_z7 AS
-SELECT id, tags, geom
-FROM (SELECT id, tags, st_simplifypreservetopology(geom, 78270 / power(2, 7)) AS geom FROM osm_boundary) AS osm_boundary
-WHERE geom IS NOT NULL AND (st_area(st_envelope(geom)) > power((78270 / power(2, 7)), 2));
-
-CREATE MATERIALIZED VIEW osm_boundary_z8 AS
-SELECT id, tags, geom
-FROM (SELECT id, tags, st_simplifypreservetopology(geom, 78270 / power(2, 8)) AS geom FROM osm_boundary) AS osm_boundary
-WHERE geom IS NOT NULL AND (st_area(st_envelope(geom)) > power((78270 / power(2, 8)), 2));
-
-CREATE MATERIALIZED VIEW osm_boundary_z9 AS
-SELECT id, tags, geom
-FROM (SELECT id, tags, st_simplifypreservetopology(geom, 78270 / power(2, 9)) AS geom FROM osm_boundary) AS osm_boundary
-WHERE geom IS NOT NULL AND (st_area(st_envelope(geom)) > power((78270 / power(2, 9)), 2));
-
-CREATE MATERIALIZED VIEW osm_boundary_z10 AS
-SELECT id, tags, geom
-FROM (SELECT id, tags, st_simplifypreservetopology(geom, 78270 / power(2, 10)) AS geom FROM osm_boundary) AS osm_boundary
-WHERE geom IS NOT NULL AND (st_area(st_envelope(geom)) > power((78270 / power(2, 10)), 2));
-
-CREATE MATERIALIZED VIEW osm_boundary_z11 AS
-SELECT id, tags, geom
-FROM (SELECT id, tags, st_simplifypreservetopology(geom, 78270 / power(2, 11)) AS geom FROM osm_boundary) AS osm_boundary
-WHERE geom IS NOT NULL AND (st_area(st_envelope(geom)) > power((78270 / power(2, 11)), 2));
-
-CREATE MATERIALIZED VIEW osm_boundary_z12 AS
-SELECT id, tags, geom
-FROM (SELECT id, tags, st_simplifypreservetopology(geom, 78270 / power(2, 12)) AS geom FROM osm_boundary) AS osm_boundary
-WHERE geom IS NOT NULL AND (st_area(st_envelope(geom)) > power((78270 / power(2, 12)), 2));
-
-CREATE VIEW osm_boundary_z13 AS SELECT id, tags, geom FROM osm_boundary;
-CREATE VIEW osm_boundary_z14 AS SELECT id, tags, geom FROM osm_boundary;
-CREATE VIEW osm_boundary_z15 AS SELECT id, tags, geom FROM osm_boundary;
-CREATE VIEW osm_boundary_z16 AS SELECT id, tags, geom FROM osm_boundary;
-CREATE VIEW osm_boundary_z17 AS SELECT id, tags, geom FROM osm_boundary;
-CREATE VIEW osm_boundary_z18 AS SELECT id, tags, geom FROM osm_boundary;
-CREATE VIEW osm_boundary_z19 AS SELECT id, tags, geom FROM osm_boundary;
-CREATE VIEW osm_boundary_z20 AS SELECT id, tags, geom FROM osm_boundary;
-
-CREATE INDEX IF NOT EXISTS osm_boundary_point_geom_index ON osm_boundary USING SPGIST (geom);
-CREATE INDEX IF NOT EXISTS osm_boundary_point_geom_z1_index ON osm_boundary_z1 USING SPGIST (geom);
-CREATE INDEX IF NOT EXISTS osm_boundary_point_geom_z2_index ON osm_boundary_z2 USING SPGIST (geom);
-CREATE INDEX IF NOT EXISTS osm_boundary_point_geom_z3_index ON osm_boundary_z3 USING SPGIST (geom);
-CREATE INDEX IF NOT EXISTS osm_boundary_point_geom_z4_index ON osm_boundary_z4 USING SPGIST (geom);
-CREATE INDEX IF NOT EXISTS osm_boundary_point_geom_z5_index ON osm_boundary_z5 USING SPGIST (geom);
-CREATE INDEX IF NOT EXISTS osm_boundary_point_geom_z6_index ON osm_boundary_z6 USING SPGIST (geom);
-CREATE INDEX IF NOT EXISTS osm_boundary_point_geom_z7_index ON osm_boundary_z7 USING SPGIST (geom);
-CREATE INDEX IF NOT EXISTS osm_boundary_point_geom_z8_index ON osm_boundary_z8 USING SPGIST (geom);
-CREATE INDEX IF NOT EXISTS osm_boundary_point_geom_z9_index ON osm_boundary_z9 USING SPGIST (geom);
-CREATE INDEX IF NOT EXISTS osm_boundary_point_geom_z10_index ON osm_boundary_z10 USING SPGIST (geom);
-CREATE INDEX IF NOT EXISTS osm_boundary_point_geom_z11_index ON osm_boundary_z11 USING SPGIST (geom);
-CREATE INDEX IF NOT EXISTS osm_boundary_point_geom_z12_index ON osm_boundary_z12 USING SPGIST (geom);
diff --git a/basemap/queries/osm_boundary_index.sql b/basemap/queries/osm_boundary_index.sql
deleted file mode 100644
index e4d4b229..00000000
--- a/basemap/queries/osm_boundary_index.sql
+++ /dev/null
@@ -1,21 +0,0 @@
--- Licensed 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 INDEX IF NOT EXISTS osm_boundary_geom_z1_index ON osm_boundary_z1 USING SPGIST (geom);
-CREATE INDEX IF NOT EXISTS osm_boundary_geom_z2_index ON osm_boundary_z2 USING SPGIST (geom);
-CREATE INDEX IF NOT EXISTS osm_boundary_geom_z3_index ON osm_boundary_z3 USING SPGIST (geom);
-CREATE INDEX IF NOT EXISTS osm_boundary_geom_z4_index ON osm_boundary_z4 USING SPGIST (geom);
-CREATE INDEX IF NOT EXISTS osm_boundary_geom_z5_index ON osm_boundary_z5 USING SPGIST (geom);
-CREATE INDEX IF NOT EXISTS osm_boundary_geom_z6_index ON osm_boundary_z6 USING SPGIST (geom);
-CREATE INDEX IF NOT EXISTS osm_boundary_geom_z7_index ON osm_boundary_z7 USING SPGIST (geom);
-CREATE INDEX IF NOT EXISTS osm_boundary_geom_z8_index ON osm_boundary_z8 USING SPGIST (geom);
-CREATE INDEX IF NOT EXISTS osm_boundary_geom_z9_index ON osm_boundary_z9 USING SPGIST (geom);
-CREATE INDEX IF NOT EXISTS osm_boundary_geom_z10_index ON osm_boundary_z10 USING SPGIST (geom);
-CREATE INDEX IF NOT EXISTS osm_boundary_geom_z11_index ON osm_boundary_z11 USING SPGIST (geom);
-CREATE INDEX IF NOT EXISTS osm_boundary_geom_z12_index ON osm_boundary_z12 USING SPGIST (geom);
diff --git a/basemap/queries/osm_boundary_prepare.sql b/basemap/queries/osm_boundary_prepare.sql
deleted file mode 100644
index 37ab074d..00000000
--- a/basemap/queries/osm_boundary_prepare.sql
+++ /dev/null
@@ -1,22 +0,0 @@
--- Licensed 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.
-DROP MATERIALIZED VIEW IF EXISTS osm_boundary CASCADE;
-
-CREATE MATERIALIZED VIEW osm_boundary AS
-SELECT ROW_NUMBER() OVER () as id, tags, geom
-FROM (
- SELECT jsonb_build_object('boundary', 'administrative', 'admin_level', tags -> 'admin_level', 'name', tags -> 'name') as tags, (st_dump(st_linemerge(st_collect(geom)))).geom as geom
- FROM osm_linestring
- WHERE tags ->> 'boundary' IN ('administrative')
- AND tags ->> 'admin_level' IN ('1', '2', '3', '4')
- GROUP BY tags -> 'admin_level', tags -> 'name'
-) AS merge;
-
-CREATE INDEX IF NOT EXISTS osm_boundary_geom_index ON osm_boundary USING SPGIST (geom);
diff --git a/basemap/queries/osm_highway_prepare.sql b/basemap/queries/osm_highway_prepare.sql
deleted file mode 100644
index 508ea5dc..00000000
--- a/basemap/queries/osm_highway_prepare.sql
+++ /dev/null
@@ -1,33 +0,0 @@
--- Licensed 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.
-DROP MATERIALIZED VIEW IF EXISTS osm_highway CASCADE;
-
-CREATE MATERIALIZED VIEW osm_highway AS
-SELECT id, tags, geom
-FROM (
- SELECT
- min(id) as id,
- jsonb_build_object('highway', tags -> 'highway', 'ref', tags -> 'ref') as tags,
- (st_dump(st_linemerge(st_collect(geom)))).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')
- AND tags ? 'ref'
- GROUP BY tags -> 'highway', tags -> 'ref'
- UNION ALL
- SELECT
- id,
- jsonb_build_object('highway', tags -> 'highway') as tags,
- 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')
- AND NOT (tags ? 'ref')
-) AS merge;
-
-CREATE INDEX IF NOT EXISTS osm_highway_geom_index ON osm_highway USING SPGIST (geom);
diff --git a/basemap/queries/osm_landuse_prepare.sql b/basemap/queries/osm_landuse_prepare.sql
deleted file mode 100644
index 74f6fb7e..00000000
--- a/basemap/queries/osm_landuse_prepare.sql
+++ /dev/null
@@ -1,165 +0,0 @@
--- Licensed 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.
-DROP VIEW IF EXISTS osm_landuse CASCADE;
-DROP VIEW IF EXISTS osm_landuse_residential;
-DROP VIEW IF EXISTS osm_landuse_farmland;
-DROP VIEW IF EXISTS osm_landuse_forest;
-DROP VIEW IF EXISTS osm_landuse_meadow;
-DROP VIEW IF EXISTS osm_landuse_orchard;
-DROP VIEW IF EXISTS osm_landuse_vineyard;
-DROP VIEW IF EXISTS osm_landuse_salt_pond;
-DROP VIEW IF EXISTS osm_landuse_water;
-
-CREATE VIEW osm_landuse AS
-SELECT
- id as id,
- jsonb_build_object('landuse', tags -> 'landuse') as tags,
- st_buildarea(st_exteriorring(geom)) as geom
-FROM osm_polygon
-WHERE geom IS NOT NULL AND tags ? 'landuse';
-
-CREATE VIEW osm_landuse_residential AS
-SELECT
- min(id) as id,
- jsonb_build_object('landuse', 'residential') as tags,
- (st_dump(st_union(st_makevalid(geom)))).geom AS geom
-FROM (
- SELECT
- id as id,
- geom as geom,
- st_clusterdbscan(geom, 0, 1) OVER() AS cluster
- FROM osm_landuse
- WHERE tags ->> 'landuse' = 'residential'
- ) osm_landuse
-GROUP BY cluster;
-
-CREATE VIEW osm_landuse_farmland AS
-SELECT
- min(id) as id,
- jsonb_build_object('landuse', 'farmland') as tags,
- (st_dump(st_union(st_makevalid(geom)))).geom AS geom
-FROM (
- SELECT
- id as id,
- geom as geom,
- st_clusterdbscan(geom, 0, 1) OVER() AS cluster
- FROM osm_landuse
- WHERE tags ->> 'landuse' = 'farmland'
- ) osm_landuse
-GROUP BY cluster;
-
-CREATE VIEW osm_landuse_forest AS
-SELECT
- min(id) as id,
- jsonb_build_object('landuse', 'forest') as tags,
- (st_dump(st_union(st_makevalid(geom)))).geom AS geom
-FROM (
- SELECT
- id as id,
- geom as geom,
- st_clusterdbscan(geom, 0, 1) OVER() AS cluster
- FROM osm_landuse
- WHERE tags ->> 'landuse' = 'forest'
- ) osm_landuse
-GROUP BY cluster;
-
-CREATE VIEW osm_landuse_meadow AS
-SELECT
- min(id) as id,
- jsonb_build_object('landuse', 'meadow') as tags,
- (st_dump(st_union(st_makevalid(geom)))).geom AS geom
-FROM (
- SELECT
- id as id,
- geom as geom,
- st_clusterdbscan(geom, 0, 1) OVER() AS cluster
- FROM osm_landuse
- WHERE tags ->> 'landuse' = 'meadow'
- ) osm_landuse
-GROUP BY cluster;
-
-CREATE VIEW osm_landuse_orchard AS
-SELECT
- min(id) as id,
- jsonb_build_object('landuse', 'orchard') as tags,
- (st_dump(st_union(st_makevalid(geom)))).geom AS geom
-FROM (
- SELECT
- id as id,
- geom as geom,
- st_clusterdbscan(geom, 0, 1) OVER() AS cluster
- FROM osm_landuse
- WHERE tags ->> 'landuse' = 'orchard'
- ) osm_landuse
-GROUP BY cluster;
-
-CREATE VIEW osm_landuse_vineyard AS
-SELECT
- min(id) as id,
- jsonb_build_object('landuse', 'vineyard') as tags,
- (st_dump(st_union(st_makevalid(geom)))).geom AS geom
-FROM (
- SELECT
- id as id,
- geom as geom,
- st_clusterdbscan(geom, 0, 1) OVER() AS cluster
- FROM osm_landuse
- WHERE tags ->> 'landuse' = 'vineyard'
- ) osm_landuse
-GROUP BY cluster;
-
-CREATE VIEW osm_landuse_salt_pond AS
-SELECT
- min(id) as id,
- jsonb_build_object('landuse', 'salt_pond') as tags,
- (st_dump(st_union(st_makevalid(geom)))).geom AS geom
-FROM (
- SELECT
- id as id,
- geom as geom,
- st_clusterdbscan(geom, 0, 1) OVER() AS cluster
- FROM osm_landuse
- WHERE tags ->> 'landuse' = 'salt_pond'
- ) osm_landuse
-GROUP BY cluster;
-
-CREATE VIEW osm_landuse_water AS
-SELECT
- min(id) as id,
- jsonb_build_object('landuse', 'water') as tags,
- (st_dump(st_union(st_makevalid(geom)))).geom AS geom
-FROM (
- SELECT
- id as id,
- geom as geom,
- st_clusterdbscan(geom, 0, 1) OVER() AS cluster
- FROM osm_landuse
- WHERE tags ->> 'landuse' = 'water'
- ) osm_landuse
-GROUP BY cluster;
-
-CREATE MATERIALIZED VIEW osm_landuse_grouped AS
-SELECT id, tags, geom FROM osm_landuse_residential
-UNION ALL
-SELECT id, tags, geom FROM osm_landuse_farmland
-UNION ALL
-SELECT id, tags, geom FROM osm_landuse_forest
-UNION ALL
-SELECT id, tags, geom FROM osm_landuse_meadow
-UNION ALL
-SELECT id, tags, geom FROM osm_landuse_orchard
-UNION ALL
-SELECT id, tags, geom FROM osm_landuse_vineyard
-UNION ALL
-SELECT id, tags, geom FROM osm_landuse_salt_pond
-UNION ALL
-SELECT id, tags, geom FROM osm_landuse_water;
-
-CREATE INDEX osm_landuse_grouped_geom_idx ON osm_landuse_grouped USING GIST (geom);
diff --git a/basemap/queries/osm_landuse_simplify.sql b/basemap/queries/osm_landuse_simplify.sql
deleted file mode 100644
index 620c0dfa..00000000
--- a/basemap/queries/osm_landuse_simplify.sql
+++ /dev/null
@@ -1,92 +0,0 @@
--- Licensed 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 VIEW osm_landuse_z20 AS
-SELECT id, tags, geom FROM osm_landuse;
-
-CREATE VIEW osm_landuse_z19 AS
-SELECT id, tags, geom FROM osm_landuse;
-
-CREATE VIEW osm_landuse_z18 AS
-SELECT id, tags, geom FROM osm_landuse;
-
-CREATE VIEW osm_landuse_z17 AS
-SELECT id, tags, geom FROM osm_landuse;
-
-CREATE VIEW osm_landuse_z16 AS
-SELECT id, tags, geom FROM osm_landuse;
-
-CREATE VIEW osm_landuse_z15 AS
-SELECT id, tags, geom FROM osm_landuse;
-
-CREATE VIEW osm_landuse_z14 AS
-SELECT id, tags, geom FROM osm_landuse;
-
-CREATE VIEW osm_landuse_z13 AS
-SELECT id, tags, geom FROM osm_landuse;
-
-CREATE MATERIALIZED VIEW osm_landuse_z12 AS
-SELECT id, tags, st_simplifypreservetopology(geom, 78270 / power(2, 12)) AS geom
-FROM osm_landuse_grouped
-WHERE st_area(st_envelope(geom)) > 10 * power(78270 / power(2, 12), 2);
-
-CREATE MATERIALIZED VIEW osm_landuse_z11 AS
-SELECT id, tags, st_simplifypreservetopology(geom, 78270 / power(2, 11)) AS geom
-FROM osm_landuse_grouped
-WHERE st_area(st_envelope(geom)) > 10 * power(78270 / power(2, 11), 2);
-
-CREATE MATERIALIZED VIEW osm_landuse_z10 AS
-SELECT id, tags, st_simplifypreservetopology(geom, 78270 / power(2, 10)) AS geom
-FROM osm_landuse_grouped
-WHERE st_area(st_envelope(geom)) > 10 * power(78270 / power(2, 10), 2);
-
-CREATE MATERIALIZED VIEW osm_landuse_z9 AS
-SELECT id, tags, st_simplifypreservetopology(geom, 78270 / power(2, 9)) AS geom
-FROM osm_landuse_grouped
-WHERE st_area(st_envelope(geom)) > 10 * power(78270 / power(2, 9), 2);
-
-CREATE MATERIALIZED VIEW osm_landuse_z8 AS
-SELECT id, tags, st_simplifypreservetopology(geom, 78270 / power(2, 8)) AS geom
-FROM osm_landuse_grouped
-WHERE st_area(st_envelope(geom)) > 10 * power(78270 / power(2, 8), 2);
-
-CREATE MATERIALIZED VIEW osm_landuse_z7 AS
-SELECT id, tags, st_simplifypreservetopology(geom, 78270 / power(2, 7)) AS geom
-FROM osm_landuse_grouped
-WHERE st_area(st_envelope(geom)) > 10 * power(78270 / power(2, 7), 2);
-
-CREATE MATERIALIZED VIEW osm_landuse_z6 AS
-SELECT id, tags, st_simplifypreservetopology(geom, 78270 / power(2, 6)) AS geom
-FROM osm_landuse_grouped
-WHERE st_area(st_envelope(geom)) > 10 * power(78270 / power(2, 6), 2);
-
-CREATE MATERIALIZED VIEW osm_landuse_z5 AS
-SELECT id, tags, st_simplifypreservetopology(geom, 78270 / power(2, 5)) AS geom
-FROM osm_landuse_grouped
-WHERE st_area(st_envelope(geom)) > 10 * power(78270 / power(2, 5), 2);
-
-CREATE MATERIALIZED VIEW osm_landuse_z4 AS
-SELECT id, tags, st_simplifypreservetopology(geom, 78270 / power(2, 4)) AS geom
-FROM osm_landuse_grouped
-WHERE st_area(st_envelope(geom)) > 10 * power(78270 / power(2, 4), 2);
-
-CREATE MATERIALIZED VIEW osm_landuse_z3 AS
-SELECT id, tags, st_simplifypreservetopology(geom, 78270 / power(2, 3)) AS geom
-FROM osm_landuse_grouped
-WHERE st_area(st_envelope(geom)) > 10 * power(78270 / power(2, 3), 2);
-
-CREATE MATERIALIZED VIEW osm_landuse_z2 AS
-SELECT id, tags, st_simplifypreservetopology(geom, 78270 / power(2, 2)) AS geom
-FROM osm_landuse_grouped
-WHERE st_area(st_envelope(geom)) > 10 * power(78270 / power(2, 2), 2);
-
-CREATE MATERIALIZED VIEW osm_landuse_z1 AS
-SELECT id, tags, st_simplifypreservetopology(geom, 78270 / power(2, 1)) AS geom
-FROM osm_landuse_grouped
-WHERE st_area(st_envelope(geom)) > 10 * power(78270 / power(2, 1), 2);
diff --git a/basemap/queries/osm_natural_prepare.sql b/basemap/queries/osm_natural_prepare.sql
deleted file mode 100644
index 498dab76..00000000
--- a/basemap/queries/osm_natural_prepare.sql
+++ /dev/null
@@ -1,310 +0,0 @@
--- Licensed 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.
--- ('grassland', 'heath', 'scrub', 'wood', 'bay', 'beach', 'glacier', 'mud', 'shingle', 'shoal', 'strait', 'water', 'wetland', 'bare_rock', 'sand', 'scree');
-DROP VIEW IF EXISTS osm_natural CASCADE;
-
-DROP VIEW IF EXISTS osm_natural_mud;
-DROP VIEW IF EXISTS osm_natural_grassland;
-DROP VIEW IF EXISTS osm_natural_heath;
-DROP VIEW IF EXISTS osm_natural_scrub;
-DROP VIEW IF EXISTS osm_natural_wood;
-DROP VIEW IF EXISTS osm_natural_bay;
-DROP VIEW IF EXISTS osm_natural_beach;
-DROP VIEW IF EXISTS osm_natural_glacier;
-DROP VIEW IF EXISTS osm_natural_mud;
-DROP VIEW IF EXISTS osm_natural_shingle;
-DROP VIEW IF EXISTS osm_natural_shoal;
-DROP VIEW IF EXISTS osm_natural_strait;
-DROP VIEW IF EXISTS osm_natural_water;
-DROP VIEW IF EXISTS osm_natural_wetland;
-DROP VIEW IF EXISTS osm_natural_bare_rock;
-DROP VIEW IF EXISTS osm_natural_sand;
-DROP VIEW IF EXISTS osm_natural_scree;
-
-CREATE VIEW osm_natural AS
-SELECT
- id as id,
- jsonb_build_object('natural', tags -> 'natural') as tags,
- st_buildarea(st_exteriorring(geom)) as geom
-FROM osm_polygon
-WHERE geom IS NOT NULL AND tags ? 'natural';
-
-CREATE VIEW osm_natural_grassland AS
-SELECT
- min(id) as id,
- jsonb_build_object('natural', 'grassland') as tags,
- (st_dump(st_union(st_makevalid(geom)))).geom AS geom
-FROM (
- SELECT
- id as id,
- geom as geom,
- st_clusterdbscan(geom, 0, 1) OVER() AS cluster
- FROM osm_natural
- WHERE tags ->> 'natural' = 'grassland'
- ) osm_natural
-GROUP BY cluster;
-
-CREATE VIEW osm_natural_heath AS
-SELECT
- min(id) as id,
- jsonb_build_object('natural', 'heath') as tags,
- (st_dump(st_union(st_makevalid(geom)))).geom AS geom
-FROM (
- SELECT
- id as id,
- geom as geom,
- st_clusterdbscan(geom, 0, 1) OVER() AS cluster
- FROM osm_natural
- WHERE tags ->> 'natural' = 'heath'
- ) osm_natural
-GROUP BY cluster;
-
-CREATE VIEW osm_natural_scrub AS
-SELECT
- min(id) as id,
- jsonb_build_object('natural', 'scrub') as tags,
- (st_dump(st_union(st_makevalid(geom)))).geom AS geom
-FROM (
- SELECT
- id as id,
- geom as geom,
- st_clusterdbscan(geom, 0, 1) OVER() AS cluster
- FROM osm_natural
- WHERE tags ->> 'natural' = 'scrub'
- ) osm_natural
-GROUP BY cluster;
-
-CREATE VIEW osm_natural_wood AS
-SELECT
- min(id) as id,
- jsonb_build_object('natural', 'wood') as tags,
- (st_dump(st_union(st_makevalid(geom)))).geom AS geom
-FROM (
- SELECT
- id as id,
- geom as geom,
- st_clusterdbscan(geom, 0, 1) OVER() AS cluster
- FROM osm_natural
- WHERE tags ->> 'natural' = 'wood'
- ) osm_natural
-GROUP BY cluster;
-
-CREATE VIEW osm_natural_bay AS
-SELECT
- min(id) as id,
- jsonb_build_object('natural', 'bay') as tags,
- (st_dump(st_union(st_makevalid(geom)))).geom AS geom
-FROM (
- SELECT
- id as id,
- geom as geom,
- st_clusterdbscan(geom, 0, 1) OVER() AS cluster
- FROM osm_natural
- WHERE tags ->> 'natural' = 'bay'
- ) osm_natural
-GROUP BY cluster;
-
-CREATE VIEW osm_natural_beach AS
-SELECT
- min(id) as id,
- jsonb_build_object('natural', 'beach') as tags,
- (st_dump(st_union(st_makevalid(geom)))).geom AS geom
-FROM (
- SELECT
- id as id,
- geom as geom,
- st_clusterdbscan(geom, 0, 1) OVER() AS cluster
- FROM osm_natural
- WHERE tags ->> 'natural' = 'beach'
- ) osm_natural
-GROUP BY cluster;
-
-CREATE VIEW osm_natural_glacier AS
-SELECT
- min(id) as id,
- jsonb_build_object('natural', 'glacier') as tags,
- (st_dump(st_union(st_makevalid(geom)))).geom AS geom
-FROM (
- SELECT
- id as id,
- geom as geom,
- st_clusterdbscan(geom, 0, 1) OVER() AS cluster
- FROM osm_natural
- WHERE tags ->> 'natural' = 'glacier'
- ) osm_natural
-GROUP BY cluster;
-
-CREATE VIEW osm_natural_mud AS
-SELECT
- min(id) as id,
- jsonb_build_object('natural', 'mud') as tags,
- (st_dump(st_union(st_makevalid(geom)))).geom AS geom
-FROM (
- SELECT
- id as id,
- geom as geom,
- st_clusterdbscan(geom, 0, 1) OVER() AS cluster
- FROM osm_natural
- WHERE tags ->> 'natural' = 'mud'
- ) osm_natural
-GROUP BY cluster;
-
-CREATE VIEW osm_natural_shingle AS
-SELECT
- min(id) as id,
- jsonb_build_object('natural', 'shingle') as tags,
- (st_dump(st_union(st_makevalid(geom)))).geom AS geom
-FROM (
- SELECT
- id as id,
- geom as geom,
- st_clusterdbscan(geom, 0, 1) OVER() AS cluster
- FROM osm_natural
- WHERE tags ->> 'natural' = 'shingle'
- ) osm_natural
-GROUP BY cluster;
-
-CREATE VIEW osm_natural_shoal AS
-SELECT
- min(id) as id,
- jsonb_build_object('natural', 'shoal') as tags,
- (st_dump(st_union(st_makevalid(geom)))).geom AS geom
-FROM (
- SELECT
- id as id,
- geom as geom,
- st_clusterdbscan(geom, 0, 1) OVER() AS cluster
- FROM osm_natural
- WHERE tags ->> 'natural' = 'shoal'
- ) osm_natural
-GROUP BY cluster;
-
-CREATE VIEW osm_natural_strait AS
-SELECT
- min(id) as id,
- jsonb_build_object('natural', 'strait') as tags,
- (st_dump(st_union(st_makevalid(geom)))).geom AS geom
-FROM (
- SELECT
- id as id,
- geom as geom,
- st_clusterdbscan(geom, 0, 1) OVER() AS cluster
- FROM osm_natural
- WHERE tags ->> 'natural' = 'strait'
- ) osm_natural
-GROUP BY cluster;
-
-CREATE VIEW osm_natural_water AS
-SELECT
- min(id) as id,
- jsonb_build_object('natural', 'water') as tags,
- (st_dump(st_union(st_makevalid(geom)))).geom AS geom
-FROM (
- SELECT
- id as id,
- geom as geom,
- st_clusterdbscan(geom, 0, 1) OVER() AS cluster
- FROM osm_natural
- WHERE tags ->> 'natural' = 'water'
- ) osm_natural
-GROUP BY cluster;
-
-CREATE VIEW osm_natural_wetland AS
-SELECT
- min(id) as id,
- jsonb_build_object('natural', 'wetland') as tags,
- (st_dump(st_union(st_makevalid(geom)))).geom AS geom
-FROM (
- SELECT
- id as id,
- geom as geom,
- st_clusterdbscan(geom, 0, 1) OVER() AS cluster
- FROM osm_natural
- WHERE tags ->> 'natural' = 'wetland'
- ) osm_natural
-GROUP BY cluster;
-
-CREATE VIEW osm_natural_bare_rock AS
-SELECT
- min(id) as id,
- jsonb_build_object('natural', 'bare_rock') as tags,
- (st_dump(st_union(st_makevalid(geom)))).geom AS geom
-FROM (
- SELECT
- id as id,
- geom as geom,
- st_clusterdbscan(geom, 0, 1) OVER() AS cluster
- FROM osm_natural
- WHERE tags ->> 'natural' = 'bare_rock'
- ) osm_natural
-GROUP BY cluster;
-
-CREATE VIEW osm_natural_sand AS
-SELECT
- min(id) as id,
- jsonb_build_object('natural', 'sand') as tags,
- (st_dump(st_union(st_makevalid(geom)))).geom AS geom
-FROM (
- SELECT
- id as id,
- geom as geom,
- st_clusterdbscan(geom, 0, 1) OVER() AS cluster
- FROM osm_natural
- WHERE tags ->> 'natural' = 'sand'
- ) osm_natural
-GROUP BY cluster;
-
-CREATE VIEW osm_natural_scree AS
-SELECT
- min(id) as id,
- jsonb_build_object('natural', 'scree') as tags,
- (st_dump(st_union(st_makevalid(geom)))).geom AS geom
-FROM (
- SELECT
- id as id,
- geom as geom,
- st_clusterdbscan(geom, 0, 1) OVER() AS cluster
- FROM osm_natural
- WHERE tags ->> 'natural' = 'scree'
- ) osm_natural
-GROUP BY cluster;
-
-CREATE MATERIALIZED VIEW osm_natural_grouped AS
-SELECT id, tags, geom FROM osm_natural_grassland
-UNION ALL
-SELECT id, tags, geom FROM osm_natural_heath
-UNION ALL
-SELECT id, tags, geom FROM osm_natural_scrub
-UNION ALL
-SELECT id, tags, geom FROM osm_natural_wood
-UNION ALL
-SELECT id, tags, geom FROM osm_natural_bay
-UNION ALL
-SELECT id, tags, geom FROM osm_natural_beach
-UNION ALL
-SELECT id, tags, geom FROM osm_natural_glacier
-UNION ALL
-SELECT id, tags, geom FROM osm_natural_mud
-UNION ALL
-SELECT id, tags, geom FROM osm_natural_shingle
-UNION ALL
-SELECT id, tags, geom FROM osm_natural_shoal
-UNION ALL
-SELECT id, tags, geom FROM osm_natural_strait
-UNION ALL
-SELECT id, tags, geom FROM osm_natural_water
-UNION ALL
-SELECT id, tags, geom FROM osm_natural_wetland
-UNION ALL
-SELECT id, tags, geom FROM osm_natural_bare_rock
-UNION ALL
-SELECT id, tags, geom FROM osm_natural_sand
-UNION ALL
-SELECT id, tags, geom FROM osm_natural_scree;
diff --git a/basemap/queries/osm_nodes_prepare.sql b/basemap/queries/osm_nodes.sql
similarity index 97%
rename from basemap/queries/osm_nodes_prepare.sql
rename to basemap/queries/osm_nodes.sql
index f37b51dd..f3797c08 100644
--- a/basemap/queries/osm_nodes_prepare.sql
+++ b/basemap/queries/osm_nodes.sql
@@ -7,5 +7,6 @@
-- 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 INDEX IF NOT EXISTS osm_nodes_tags_index ON osm_nodes USING gin (tags);
-CREATE INDEX IF NOT EXISTS osm_nodes_geom_index ON osm_nodes USING spgist (geom);
+CREATE INDEX IF NOT EXISTS osm_nodes_geom_index ON osm_nodes USING gist (geom);
diff --git a/basemap/queries/osm_nodes_clean.sql b/basemap/queries/osm_nodes_clean.sql
deleted file mode 100644
index 626b87a3..00000000
--- a/basemap/queries/osm_nodes_clean.sql
+++ /dev/null
@@ -1,33 +0,0 @@
--- Licensed 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.
-DROP INDEX IF EXISTS osm_nodes_tags_index;
-DROP INDEX IF EXISTS osm_nodes_geom_index;
-
-DROP VIEW IF EXISTS osm_nodes_z20 CASCADE;
-DROP VIEW IF EXISTS osm_nodes_z19 CASCADE;
-DROP VIEW IF EXISTS osm_nodes_z18 CASCADE;
-DROP VIEW IF EXISTS osm_nodes_z17 CASCADE;
-DROP VIEW IF EXISTS osm_nodes_z16 CASCADE;
-DROP VIEW IF EXISTS osm_nodes_z15 CASCADE;
-DROP VIEW IF EXISTS osm_nodes_z14 CASCADE;
-
-DROP MATERIALIZED VIEW IF EXISTS osm_nodes_z13 CASCADE;
-DROP MATERIALIZED VIEW IF EXISTS osm_nodes_z12 CASCADE;
-DROP MATERIALIZED VIEW IF EXISTS osm_nodes_z11 CASCADE;
-DROP MATERIALIZED VIEW IF EXISTS osm_nodes_z10 CASCADE;
-DROP MATERIALIZED VIEW IF EXISTS osm_nodes_z9 CASCADE;
-DROP MATERIALIZED VIEW IF EXISTS osm_nodes_z8 CASCADE;
-DROP MATERIALIZED VIEW IF EXISTS osm_nodes_z7 CASCADE;
-DROP MATERIALIZED VIEW IF EXISTS osm_nodes_z6 CASCADE;
-DROP MATERIALIZED VIEW IF EXISTS osm_nodes_z5 CASCADE;
-DROP MATERIALIZED VIEW IF EXISTS osm_nodes_z4 CASCADE;
-DROP MATERIALIZED VIEW IF EXISTS osm_nodes_z3 CASCADE;
-DROP MATERIALIZED VIEW IF EXISTS osm_nodes_z2 CASCADE;
-DROP MATERIALIZED VIEW IF EXISTS osm_nodes_z1 CASCADE;
diff --git a/basemap/queries/osm_nodes_index.sql b/basemap/queries/osm_nodes_index.sql
deleted file mode 100644
index 930979bd..00000000
--- a/basemap/queries/osm_nodes_index.sql
+++ /dev/null
@@ -1,22 +0,0 @@
--- Licensed 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 INDEX IF NOT EXISTS osm_nodes_geom_z13_index ON osm_nodes_z13 USING gist (geom);
-CREATE INDEX IF NOT EXISTS osm_nodes_geom_z12_index ON osm_nodes_z12 USING gist (geom);
-CREATE INDEX IF NOT EXISTS osm_nodes_geom_z11_index ON osm_nodes_z11 USING gist (geom);
-CREATE INDEX IF NOT EXISTS osm_nodes_geom_z10_index ON osm_nodes_z10 USING gist (geom);
-CREATE INDEX IF NOT EXISTS osm_nodes_geom_z9_index ON osm_nodes_z9 USING gist (geom);
-CREATE INDEX IF NOT EXISTS osm_nodes_geom_z8_index ON osm_nodes_z8 USING gist (geom);
-CREATE INDEX IF NOT EXISTS osm_nodes_geom_z7_index ON osm_nodes_z7 USING gist (geom);
-CREATE INDEX IF NOT EXISTS osm_nodes_geom_z6_index ON osm_nodes_z6 USING gist (geom);
-CREATE INDEX IF NOT EXISTS osm_nodes_geom_z5_index ON osm_nodes_z5 USING gist (geom);
-CREATE INDEX IF NOT EXISTS osm_nodes_geom_z4_index ON osm_nodes_z4 USING gist (geom);
-CREATE INDEX IF NOT EXISTS osm_nodes_geom_z3_index ON osm_nodes_z3 USING gist (geom);
-CREATE INDEX IF NOT EXISTS osm_nodes_geom_z2_index ON osm_nodes_z2 USING gist (geom);
-CREATE INDEX IF NOT EXISTS osm_nodes_geom_z1_index ON osm_nodes_z1 USING gist (geom);
diff --git a/basemap/queries/osm_nodes_simplify.sql b/basemap/queries/osm_nodes_simplify.sql
deleted file mode 100644
index 5784ae8e..00000000
--- a/basemap/queries/osm_nodes_simplify.sql
+++ /dev/null
@@ -1,68 +0,0 @@
--- Licensed 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 VIEW osm_nodes_z20 AS
-SELECT id, tags, geom FROM osm_nodes WHERE tags != '{}';
-
-CREATE VIEW osm_nodes_z19 AS
-SELECT id, tags, geom FROM osm_nodes WHERE tags != '{}';
-
-CREATE VIEW osm_nodes_z18 AS
-SELECT id, tags, geom FROM osm_nodes WHERE tags != '{}';
-
-CREATE VIEW osm_nodes_z17 AS
-SELECT id, tags, geom FROM osm_nodes WHERE tags != '{}';
-
-CREATE VIEW osm_nodes_z16 AS
-SELECT id, tags, geom FROM osm_nodes WHERE tags != '{}';
-
-CREATE VIEW osm_nodes_z15 AS
-SELECT id, tags, geom FROM osm_nodes WHERE tags != '{}';
-
-CREATE VIEW osm_nodes_z14 AS
-SELECT id, tags, geom FROM osm_nodes WHERE tags != '{}';
-
-CREATE MATERIALIZED VIEW osm_nodes_z13 AS
-SELECT id, tags, geom FROM osm_nodes WHERE tags != '{}' AND (tags ->> 'place' IN ('region', 'province', 'district', 'county', 'municipality', 'city', 'town', 'village', 'quarter', 'hamlet')) OR (tags ->> 'natural' IN ('peak', 'volcano')) OR (tags ->> 'highway' IN ('motorway_junction')) OR (tags ->> 'tourism' IN ('wilderness_hut')) OR (tags ->> 'waterway' IN ('waterfall')) OR (tags ->> 'natural' IN ('spring')) OR (tags ->> 'railway' IN ('level_crossing'));
-
-CREATE MATERIALIZED VIEW osm_nodes_z12 AS
-SELECT id, tags, geom FROM osm_nodes WHERE tags != '{}' AND (tags ->> 'place' IN ('region', 'province', 'district', 'county', 'municipality', 'city', 'town', 'village')) OR (tags ->> 'natural' IN ('peak', 'volcano')) OR (tags ->> 'highway' IN ('motorway_junction')) OR (tags ->> 'tourism' IN ('wilderness_hut')) OR (tags ->> 'waterway' IN ('waterfall'));
-
-CREATE MATERIALIZED VIEW osm_nodes_z11 AS
-SELECT id, tags, geom FROM osm_nodes WHERE tags != '{}' AND (tags ->> 'place' IN ('country', 'state', 'region', 'province', 'district', 'county', 'municipality', 'city', 'town', 'village')) OR (tags ->> 'natural' IN ('peak', 'volcano')) OR (tags ->> 'highway' IN ('motorway_junction'));
-
-CREATE MATERIALIZED VIEW osm_nodes_z10 AS
-SELECT id, tags, geom FROM osm_nodes WHERE tags != '{}' AND (tags ->> 'place' IN ('country', 'state', 'region', 'province', 'district', 'county', 'municipality', 'city', 'town')) OR (tags ->> 'natural' IN ('peak', 'volcano')) OR (tags ->> 'highway' IN ('motorway_junction'));
-
-CREATE MATERIALIZED VIEW osm_nodes_z9 AS
-SELECT id, tags, geom FROM osm_nodes WHERE tags != '{}' AND tags ->> 'place' IN ('country', 'state', 'region', 'province', 'district', 'county', 'municipality', 'city', 'town');
-
-CREATE MATERIALIZED VIEW osm_nodes_z8 AS
-SELECT id, tags, geom FROM osm_nodes WHERE tags != '{}' AND tags ->> 'place' IN ('country', 'state', 'region', 'province', 'district', 'county', 'municipality', 'city', 'town');
-
-CREATE MATERIALIZED VIEW osm_nodes_z7 AS
-SELECT id, tags, geom FROM osm_nodes WHERE tags != '{}' AND tags ->> 'place' IN ('country', 'city', 'sea', 'state', 'county');
-
-CREATE MATERIALIZED VIEW osm_nodes_z6 AS
-SELECT id, tags, geom FROM osm_nodes WHERE tags != '{}' AND tags ->> 'place' IN ('country', 'city', 'sea', 'state', 'county');
-
-CREATE MATERIALIZED VIEW osm_nodes_z5 AS
-SELECT id, tags, geom FROM osm_nodes WHERE tags != '{}' AND tags ->> 'place' IN ('country', 'city', 'sea', 'state', 'county');
-
-CREATE MATERIALIZED VIEW osm_nodes_z4 AS
-SELECT id, tags, geom FROM osm_nodes WHERE tags != '{}' AND tags ->> 'place' IN ('country', 'city', 'sea');
-
-CREATE MATERIALIZED VIEW osm_nodes_z3 AS
-SELECT id, tags, geom FROM osm_nodes WHERE tags != '{}' AND tags ->> 'place' IN ('country', 'city', 'sea');
-
-CREATE MATERIALIZED VIEW osm_nodes_z2 AS
-SELECT id, tags, geom FROM osm_nodes WHERE tags != '{}' AND tags ->> 'place' IN ('country');
-
-CREATE MATERIALIZED VIEW osm_nodes_z1 AS
-SELECT id, tags, geom FROM osm_nodes WHERE tags != '{}' AND tags ->> 'place' IN ('country');
diff --git a/basemap/queries/osm_relations_prepare.sql b/basemap/queries/osm_relations.sql
similarity index 75%
copy from basemap/queries/osm_relations_prepare.sql
copy to basemap/queries/osm_relations.sql
index 25225087..fa0bfd7f 100644
--- a/basemap/queries/osm_relations_prepare.sql
+++ b/basemap/queries/osm_relations.sql
@@ -7,5 +7,5 @@
-- 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 INDEX osm_relations_tags_index ON osm_relations USING gin (tags);
-CREATE INDEX osm_relations_geom_index ON osm_relations USING spgist (geom);
+CREATE INDEX IF NOT EXISTS osm_relations_tags_index ON osm_relations USING gin (tags);
+CREATE INDEX IF NOT EXISTS osm_relations_geom_index ON osm_relations USING gist (geom);
diff --git a/basemap/queries/osm_relations_clean.sql b/basemap/queries/osm_relations_clean.sql
deleted file mode 100644
index 5fc040bb..00000000
--- a/basemap/queries/osm_relations_clean.sql
+++ /dev/null
@@ -1,33 +0,0 @@
--- Licensed 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.
-DROP INDEX IF EXISTS osm_relations_tags_index;
-DROP INDEX IF EXISTS osm_relations_geom_index;
-
-DROP VIEW IF EXISTS osm_relations_z20 CASCADE;
-DROP VIEW IF EXISTS osm_relations_z19 CASCADE;
-DROP VIEW IF EXISTS osm_relations_z18 CASCADE;
-DROP VIEW IF EXISTS osm_relations_z17 CASCADE;
-DROP VIEW IF EXISTS osm_relations_z16 CASCADE;
-DROP VIEW IF EXISTS osm_relations_z15 CASCADE;
-DROP VIEW IF EXISTS osm_relations_z14 CASCADE;
-DROP VIEW IF EXISTS osm_relations_z13 CASCADE;
-
-DROP MATERIALIZED VIEW IF EXISTS osm_relations_z12 CASCADE;
-DROP MATERIALIZED VIEW IF EXISTS osm_relations_z11 CASCADE;
-DROP MATERIALIZED VIEW IF EXISTS osm_relations_z10 CASCADE;
-DROP MATERIALIZED VIEW IF EXISTS osm_relations_z9 CASCADE;
-DROP MATERIALIZED VIEW IF EXISTS osm_relations_z8 CASCADE;
-DROP MATERIALIZED VIEW IF EXISTS osm_relations_z7 CASCADE;
-DROP MATERIALIZED VIEW IF EXISTS osm_relations_z6 CASCADE;
-DROP MATERIALIZED VIEW IF EXISTS osm_relations_z5 CASCADE;
-DROP MATERIALIZED VIEW IF EXISTS osm_relations_z4 CASCADE;
-DROP MATERIALIZED VIEW IF EXISTS osm_relations_z3 CASCADE;
-DROP MATERIALIZED VIEW IF EXISTS osm_relations_z2 CASCADE;
-DROP MATERIALIZED VIEW IF EXISTS osm_relations_z1 CASCADE;
diff --git a/basemap/queries/osm_relations_index.sql b/basemap/queries/osm_relations_index.sql
deleted file mode 100644
index 39fd8521..00000000
--- a/basemap/queries/osm_relations_index.sql
+++ /dev/null
@@ -1,21 +0,0 @@
--- Licensed 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 INDEX IF NOT EXISTS osm_relations_geom_z12_index ON osm_relations_z12 USING SPGIST (geom);
-CREATE INDEX IF NOT EXISTS osm_relations_geom_z11_index ON osm_relations_z11 USING SPGIST (geom);
-CREATE INDEX IF NOT EXISTS osm_relations_geom_z10_index ON osm_relations_z10 USING SPGIST (geom);
-CREATE INDEX IF NOT EXISTS osm_relations_geom_z9_index ON osm_relations_z9 USING SPGIST (geom);
-CREATE INDEX IF NOT EXISTS osm_relations_geom_z8_index ON osm_relations_z8 USING SPGIST (geom);
-CREATE INDEX IF NOT EXISTS osm_relations_geom_z7_index ON osm_relations_z7 USING SPGIST (geom);
-CREATE INDEX IF NOT EXISTS osm_relations_geom_z6_index ON osm_relations_z6 USING SPGIST (geom);
-CREATE INDEX IF NOT EXISTS osm_relations_geom_z5_index ON osm_relations_z5 USING SPGIST (geom);
-CREATE INDEX IF NOT EXISTS osm_relations_geom_z4_index ON osm_relations_z4 USING SPGIST (geom);
-CREATE INDEX IF NOT EXISTS osm_relations_geom_z3_index ON osm_relations_z3 USING SPGIST (geom);
-CREATE INDEX IF NOT EXISTS osm_relations_geom_z2_index ON osm_relations_z2 USING SPGIST (geom);
-CREATE INDEX IF NOT EXISTS osm_relations_geom_z1_index ON osm_relations_z1 USING SPGIST (geom);
diff --git a/basemap/queries/osm_relations_simplify.sql b/basemap/queries/osm_relations_simplify.sql
deleted file mode 100644
index 2f2507a6..00000000
--- a/basemap/queries/osm_relations_simplify.sql
+++ /dev/null
@@ -1,152 +0,0 @@
--- Licensed 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 VIEW osm_relations_z20 AS
-SELECT id, tags, geom FROM osm_relations;
-
-CREATE VIEW osm_relations_z19 AS
-SELECT id, tags, geom FROM osm_relations;
-
-CREATE VIEW osm_relations_z18 AS
-SELECT id, tags, geom FROM osm_relations;
-
-CREATE VIEW osm_relations_z17 AS
-SELECT id, tags, geom FROM osm_relations;
-
-CREATE VIEW osm_relations_z16 AS
-SELECT id, tags, geom FROM osm_relations;
-
-CREATE VIEW osm_relations_z15 AS
-SELECT id, tags, geom FROM osm_relations;
-
-CREATE VIEW osm_relations_z14 AS
-SELECT id, tags, geom FROM osm_relations;
-
-CREATE VIEW osm_relations_z13 AS
-SELECT id, tags, geom FROM osm_relations;
-
-CREATE MATERIALIZED VIEW osm_relations_z12 AS
-SELECT id, tags, geom
-FROM (
- SELECT id, tags, st_simplifypreservetopology(geom, 78270 / power(2, 12)) AS geom
- FROM osm_relations
- WHERE tags ?| ARRAY ['landuse', 'natural', 'power', 'railway', 'route', 'waterway']
- ) AS osm_relations
-WHERE geom IS NOT NULL
- AND (st_area(st_envelope(geom)) > power((78270 / power(2, 12)), 2));
-
-CREATE MATERIALIZED VIEW osm_relations_z11 AS
-SELECT id, tags, geom
-FROM (
- SELECT id, tags, st_simplifypreservetopology(geom, 78270 / power(2, 11)) AS geom
- FROM osm_relations
- WHERE tags ?| ARRAY ['landuse', 'natural', 'waterway']
- ) AS osm_relations
-WHERE geom IS NOT NULL
- AND (st_area(st_envelope(geom)) > power((78270 / power(2, 11)), 2));
-
-CREATE MATERIALIZED VIEW osm_relations_z10 AS
-SELECT id, tags, geom
-FROM (
- SELECT id, tags, st_simplifypreservetopology(geom, 78270 / power(2, 10)) AS geom
- FROM osm_relations
- WHERE tags ?| ARRAY ['landuse', 'natural', 'waterway']
- ) AS osm_relations
-WHERE geom IS NOT NULL
- AND (st_area(st_envelope(geom)) > power((78270 / power(2, 10)), 2));
-
-CREATE MATERIALIZED VIEW osm_relations_z9 AS
-SELECT id, tags, geom
-FROM (
- SELECT id, tags, st_simplifypreservetopology(geom, 78270 / power(2, 9)) AS geom
- FROM osm_relations
- WHERE tags ?| ARRAY ['landuse', 'natural', 'waterway']
- ) AS osm_relations
-WHERE geom IS NOT NULL
- AND (st_area(st_envelope(geom)) > power((78270 / power(2, 9)), 2));
-
-CREATE MATERIALIZED VIEW osm_relations_z8 AS
-SELECT id, tags, geom
-FROM (
- SELECT id, tags, st_simplifypreservetopology(geom, 78270 / power(2, 8)) AS geom
- FROM osm_relations
- WHERE tags ?| ARRAY ['landuse', 'natural', 'waterway']
- ) AS osm_relations
-WHERE geom IS NOT NULL
- AND (st_area(st_envelope(geom)) > power((78270 / power(2, 8)), 2));
-
-CREATE MATERIALIZED VIEW osm_relations_z7 AS
-SELECT id, tags, geom
-FROM (
- SELECT id, tags, st_simplifypreservetopology(geom, 78270 / power(2, 7)) AS geom
- FROM osm_relations
- WHERE tags ?| ARRAY ['landuse', 'natural', 'waterway']
- ) AS osm_relations
-WHERE geom IS NOT NULL
- AND (st_area(st_envelope(geom)) > power((78270 / power(2, 7)), 2));
-
-CREATE MATERIALIZED VIEW osm_relations_z6 AS
-SELECT id, tags, geom
-FROM (
- SELECT id, tags, st_simplifypreservetopology(geom, 78270 / power(2, 6)) AS geom
- FROM osm_relations
- WHERE tags ?| ARRAY ['landuse', 'natural', 'waterway']
- ) AS osm_relations
-WHERE geom IS NOT NULL
- AND (st_area(st_envelope(geom)) > power((78270 / power(2, 6)), 2));
-
-CREATE MATERIALIZED VIEW osm_relations_z5 AS
-SELECT id, tags, geom
-FROM (
- SELECT id, tags, st_simplifypreservetopology(geom, 78270 / power(2, 5)) AS geom
- FROM osm_relations
- WHERE tags ?| ARRAY ['landuse', 'natural']
- ) AS osm_relations
-WHERE geom IS NOT NULL
- AND (st_area(st_envelope(geom)) > power((78270 / power(2, 5)), 2));
-
-CREATE MATERIALIZED VIEW osm_relations_z4 AS
-SELECT id, tags, geom
-FROM (
- SELECT id, tags, st_simplifypreservetopology(geom, 78270 / power(2, 4)) AS geom
- FROM osm_relations
- WHERE tags ?| ARRAY ['landuse', 'natural']
- ) AS osm_relations
-WHERE geom IS NOT NULL
- AND (st_area(st_envelope(geom)) > power((78270 / power(2, 4)), 2));
-
-CREATE MATERIALIZED VIEW osm_relations_z3 AS
-SELECT id, tags, geom
-FROM (
- SELECT id, tags, st_simplifypreservetopology(geom, 78270 / power(2, 3)) AS geom
- FROM osm_relations
- WHERE tags ?| ARRAY ['landuse', 'natural']
- ) AS osm_relations
-WHERE geom IS NOT NULL
- AND (st_area(st_envelope(geom)) > power((78270 / power(2, 3)), 2));
-
-CREATE MATERIALIZED VIEW osm_relations_z2 AS
-SELECT id, tags, geom
-FROM (
- SELECT id, tags, st_simplifypreservetopology(geom, 78270 / power(2, 2)) AS geom
- FROM osm_relations
- WHERE tags ?| ARRAY ['landuse', 'natural']
- ) AS osm_relations
-WHERE geom IS NOT NULL
- AND (st_area(st_envelope(geom)) > power((78270 / power(2, 2)), 2));
-
-CREATE MATERIALIZED VIEW osm_relations_z1 AS
-SELECT id, tags, geom
-FROM (
- SELECT id, tags, st_simplifypreservetopology(geom, 78270 / power(2, 1)) AS geom
- FROM osm_relations
- WHERE tags ?| ARRAY ['landuse', 'natural']
- ) AS osm_relations
-WHERE geom IS NOT NULL
- AND (st_area(st_envelope(geom)) > power((78270 / power(2, 1)), 2));
diff --git a/basemap/queries/osm_relations_prepare.sql b/basemap/queries/osm_ways.sql
similarity index 77%
rename from basemap/queries/osm_relations_prepare.sql
rename to basemap/queries/osm_ways.sql
index 25225087..b2628daa 100644
--- a/basemap/queries/osm_relations_prepare.sql
+++ b/basemap/queries/osm_ways.sql
@@ -7,5 +7,5 @@
-- 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 INDEX osm_relations_tags_index ON osm_relations USING gin (tags);
-CREATE INDEX osm_relations_geom_index ON osm_relations USING spgist (geom);
+CREATE INDEX IF NOT EXISTS osm_ways_geom_index ON osm_ways USING gist (geom);
+CREATE INDEX IF NOT EXISTS osm_ways_tags_index ON osm_ways USING gin (tags);
\ No newline at end of file
diff --git a/basemap/queries/osm_ways_clean.sql b/basemap/queries/osm_ways_clean.sql
deleted file mode 100644
index 3114e365..00000000
--- a/basemap/queries/osm_ways_clean.sql
+++ /dev/null
@@ -1,35 +0,0 @@
--- Licensed 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.
-DROP INDEX IF EXISTS osm_ways_tags_index;
-DROP INDEX IF EXISTS osm_ways_geom_index;
-
-DROP VIEW IF EXISTS osm_ways_z20 CASCADE;
-DROP VIEW IF EXISTS osm_ways_z19 CASCADE;
-DROP VIEW IF EXISTS osm_ways_z18 CASCADE;
-DROP VIEW IF EXISTS osm_ways_z17 CASCADE;
-DROP VIEW IF EXISTS osm_ways_z16 CASCADE;
-DROP VIEW IF EXISTS osm_ways_z15 CASCADE;
-DROP VIEW IF EXISTS osm_ways_z14 CASCADE;
-DROP VIEW IF EXISTS osm_ways_z13 CASCADE;
-
-DROP MATERIALIZED VIEW IF EXISTS osm_ways_z12 CASCADE;
-DROP MATERIALIZED VIEW IF EXISTS osm_ways_z11 CASCADE;
-DROP MATERIALIZED VIEW IF EXISTS osm_ways_z10 CASCADE;
-DROP MATERIALIZED VIEW IF EXISTS osm_ways_z9 CASCADE;
-DROP MATERIALIZED VIEW IF EXISTS osm_ways_z8 CASCADE;
-DROP MATERIALIZED VIEW IF EXISTS osm_ways_z7 CASCADE;
-DROP MATERIALIZED VIEW IF EXISTS osm_ways_z6 CASCADE;
-DROP MATERIALIZED VIEW IF EXISTS osm_ways_z5 CASCADE;
-DROP MATERIALIZED VIEW IF EXISTS osm_ways_z4 CASCADE;
-DROP MATERIALIZED VIEW IF EXISTS osm_ways_z3 CASCADE;
-DROP MATERIALIZED VIEW IF EXISTS osm_ways_z2 CASCADE;
-DROP MATERIALIZED VIEW IF EXISTS osm_ways_z1 CASCADE;
-
-DROP MATERIALIZED VIEW IF EXISTS osm_ways_member CASCADE;
diff --git a/basemap/queries/osm_ways_index.sql b/basemap/queries/osm_ways_index.sql
deleted file mode 100644
index 96904811..00000000
--- a/basemap/queries/osm_ways_index.sql
+++ /dev/null
@@ -1,23 +0,0 @@
--- Licensed 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 INDEX IF NOT EXISTS osm_ways_z12_index ON osm_ways_z12 USING SPGIST (geom);
-CREATE INDEX IF NOT EXISTS osm_ways_z11_index ON osm_ways_z11 USING SPGIST (geom);
-CREATE INDEX IF NOT EXISTS osm_ways_z10_index ON osm_ways_z10 USING SPGIST (geom);
-CREATE INDEX IF NOT EXISTS osm_ways_z9_index ON osm_ways_z9 USING SPGIST (geom);
-CREATE INDEX IF NOT EXISTS osm_ways_z8_index ON osm_ways_z8 USING SPGIST (geom);
-CREATE INDEX IF NOT EXISTS osm_ways_z7_index ON osm_ways_z7 USING SPGIST (geom);
-CREATE INDEX IF NOT EXISTS osm_ways_z6_index ON osm_ways_z6 USING SPGIST (geom);
-CREATE INDEX IF NOT EXISTS osm_ways_z5_index ON osm_ways_z5 USING SPGIST (geom);
-CREATE INDEX IF NOT EXISTS osm_ways_z4_index ON osm_ways_z4 USING SPGIST (geom);
-CREATE INDEX IF NOT EXISTS osm_ways_z3_index ON osm_ways_z3 USING SPGIST (geom);
-CREATE INDEX IF NOT EXISTS osm_ways_z2_index ON osm_ways_z2 USING SPGIST (geom);
-CREATE INDEX IF NOT EXISTS osm_ways_z1_index ON osm_ways_z1 USING SPGIST (geom);
-
-CREATE INDEX osm_ways_member_index ON osm_ways_member(way_id);
diff --git a/basemap/queries/osm_ways_simplify.sql b/basemap/queries/osm_ways_simplify.sql
deleted file mode 100644
index e8c98548..00000000
--- a/basemap/queries/osm_ways_simplify.sql
+++ /dev/null
@@ -1,152 +0,0 @@
--- Licensed 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 VIEW osm_ways_z20
-AS SELECT id, tags, geom FROM osm_ways;
-
-CREATE VIEW osm_ways_z19 AS
-SELECT id, tags, geom FROM osm_ways;
-
-CREATE VIEW osm_ways_z18 AS
-SELECT id, tags, geom FROM osm_ways;
-
-CREATE VIEW osm_ways_z17 AS
-SELECT id, tags, geom FROM osm_ways;
-
-CREATE VIEW osm_ways_z16 AS
-SELECT id, tags, geom FROM osm_ways;
-
-CREATE VIEW osm_ways_z15 AS
-SELECT id, tags, geom FROM osm_ways;
-
-CREATE VIEW osm_ways_z14 AS
-SELECT id, tags, geom FROM osm_ways;
-
-CREATE VIEW osm_ways_z13 AS
-SELECT id, tags, geom FROM osm_ways;
-
-CREATE MATERIALIZED VIEW osm_ways_z12 AS
-SELECT id, tags, geom
-FROM (
- SELECT id, tags, st_simplifypreservetopology(geom, 78270 / power(2, 12)) AS geom
- FROM osm_ways
- WHERE tags ?| ARRAY [ 'landuse', 'natural', 'power', 'railway', 'route', 'waterway' ]
- ) AS osm_ways
-WHERE geom IS NOT NULL
- AND (st_area(st_envelope(geom)) > power((78270 / power(2, 12)), 2));
-
-CREATE MATERIALIZED VIEW osm_ways_z11 AS
-SELECT id, tags, geom
-FROM (
- SELECT id, tags, st_simplifypreservetopology(geom, 78270 / power(2, 11)) AS geom
- FROM osm_ways
- WHERE tags ?| ARRAY ['landuse', 'natural', 'waterway' ]
- ) AS osm_ways
-WHERE geom IS NOT NULL
- AND (st_area(st_envelope(geom)) > power((78270 / power(2, 11)), 2));
-
-CREATE MATERIALIZED VIEW osm_ways_z10 AS
-SELECT id, tags, geom
-FROM (
- SELECT id, tags, st_simplifypreservetopology(geom, 78270 / power(2, 10)) AS geom
- FROM osm_ways
- WHERE tags ?| ARRAY ['landuse', 'natural', 'waterway' ]
- ) AS osm_ways
-WHERE geom IS NOT NULL
- AND (st_area(st_envelope(geom)) > power((78270 / power(2, 10)), 2));
-
-CREATE MATERIALIZED VIEW osm_ways_z9 AS
-SELECT id, tags, geom
-FROM (
- SELECT id, tags, st_simplifypreservetopology(geom, 78270 / power(2, 9)) AS geom
- FROM osm_ways
- WHERE tags ?| ARRAY ['landuse', 'natural', 'waterway' ]
- ) AS osm_ways
-WHERE geom IS NOT NULL
- AND (st_area(st_envelope(geom)) > power((78270 / power(2, 9)), 2));
-
-CREATE MATERIALIZED VIEW osm_ways_z8 AS
-SELECT id, tags, geom
-FROM (
- SELECT id, tags, st_simplifypreservetopology(geom, 78270 / power(2, 8)) AS geom
- FROM osm_ways
- WHERE tags ?| ARRAY ['landuse', 'natural', 'waterway' ]
- ) AS osm_ways
-WHERE geom IS NOT NULL
- AND (st_area(st_envelope(geom)) > power((78270 / power(2, 8)), 2));
-
-CREATE MATERIALIZED VIEW osm_ways_z7 AS
-SELECT id, tags, geom
-FROM (
- SELECT id, tags, st_simplifypreservetopology(geom, 78270 / power(2, 7)) AS geom
- FROM osm_ways
- WHERE tags ?| ARRAY ['landuse', 'natural', 'waterway' ]
- ) AS osm_ways
-WHERE geom IS NOT NULL
- AND (st_area(st_envelope(geom)) > power((78270 / power(2, 7)), 2));
-
-CREATE MATERIALIZED VIEW osm_ways_z6 AS
-SELECT id, tags, geom
-FROM (
- SELECT id, tags, st_simplifypreservetopology(geom, 78270 / power(2, 6)) AS geom
- FROM osm_ways
- WHERE tags ?| ARRAY ['landuse', 'natural', 'waterway' ]
- ) AS osm_ways
-WHERE geom IS NOT NULL
- AND (st_area(st_envelope(geom)) > power((78270 / power(2, 6)), 2));
-
-CREATE MATERIALIZED VIEW osm_ways_z5 AS
-SELECT id, tags, geom
-FROM (
- SELECT id, tags, st_simplifypreservetopology(geom, 78270 / power(2, 5)) AS geom
- FROM osm_ways
- WHERE tags ?| ARRAY ['landuse', 'natural']
- ) AS osm_ways
-WHERE geom IS NOT NULL
- AND (st_area(st_envelope(geom)) > power((78270 / power(2, 5)), 2));
-
-CREATE MATERIALIZED VIEW osm_ways_z4 AS
-SELECT id, tags, geom
-FROM (
- SELECT id, tags, st_simplifypreservetopology(geom, 78270 / power(2, 4)) AS geom
- FROM osm_ways
- WHERE tags ?| ARRAY ['landuse', 'natural']
- ) AS osm_ways
-WHERE geom IS NOT NULL
- AND (st_area(st_envelope(geom)) > power((78270 / power(2, 4)), 2));
-
-CREATE MATERIALIZED VIEW osm_ways_z3 AS
-SELECT id, tags, geom
-FROM (
- SELECT id, tags, st_simplifypreservetopology(geom, 78270 / power(2, 3)) AS geom
- FROM osm_ways
- WHERE tags ?| ARRAY ['landuse', 'natural']
- ) AS osm_ways
-WHERE geom IS NOT NULL
- AND (st_area(st_envelope(geom)) > power((78270 / power(2, 3)), 2));
-
-CREATE MATERIALIZED VIEW osm_ways_z2 AS
-SELECT id, tags, geom
-FROM (
- SELECT id, tags, st_simplifypreservetopology(geom, 78270 / power(2, 2)) AS geom
- FROM osm_ways
- WHERE tags ?| ARRAY ['landuse', 'natural']
- ) AS osm_ways
-WHERE geom IS NOT NULL
- AND (st_area(st_envelope(geom)) > power((78270 / power(2, 2)), 2));
-
-CREATE MATERIALIZED VIEW osm_ways_z1 AS
-SELECT id, tags, geom
-FROM (
- SELECT id, tags, st_simplifypreservetopology(geom, 78270 / power(2, 1)) AS geom
- FROM osm_ways
- WHERE tags ?| ARRAY ['landuse', 'natural']
- ) AS osm_ways
-WHERE geom IS NOT NULL
- AND (st_area(st_envelope(geom)) > power((78270 / power(2, 1)), 2));
diff --git a/basemap/tileset.js b/basemap/tileset.js
index 658a4edc..a5d7a1a5 100644
--- a/basemap/tileset.js
+++ b/basemap/tileset.js
@@ -33,7 +33,7 @@ import waterway from "./layers/waterway/tileset.js";
export default {
"tilejson": "2.2.0",
"center": [...config.center, config.zoom],
- "minzoom": 1.0,
+ "minzoom": 0.0,
"maxzoom": 14.0,
"tiles": [
`${config.host}/tiles/{z}/{x}/{y}.mvt`
@@ -45,7 +45,7 @@ export default {
amenity,
attraction,
barrier,
- boundary,
+ // boundary,
building,
highway,
landuse,
diff --git a/basemap/workflow.js b/basemap/workflow.js
index ea7e5f56..5dafaddf 100644
--- a/basemap/workflow.js
+++ b/basemap/workflow.js
@@ -60,19 +60,19 @@ export default {
},
{
"type": "ExecuteSql",
- "file": "queries/globaladm0_clean.sql",
+ "file": "layers/boundary/globaladm0_clean.sql",
"database": config.database,
"parallel": true,
},
{
"type": "ExecuteSql",
- "file": "queries/globaladm0_simplify.sql",
+ "file": "layers/boundary/globaladm0_simplify.sql",
"database": config.database,
"parallel": true,
},
{
"type": "ExecuteSql",
- "file": "queries/globaladm0_index.sql",
+ "file": "layers/boundary/globaladm0_index.sql",
"database": config.database,
"parallel": true,
}
@@ -96,55 +96,19 @@ export default {
},
{
"type": "ExecuteSql",
- "file": "queries/globaladm1_clean.sql",
+ "file": "layers/boundary/globaladm1_clean.sql",
"database": config.database,
"parallel": true,
},
{
"type": "ExecuteSql",
- "file": "queries/globaladm1_simplify.sql",
+ "file": "layers/boundary/globaladm1_simplify.sql",
"database": config.database,
"parallel": true,
},
{
"type": "ExecuteSql",
- "file": "queries/globaladm1_index.sql",
- "database": config.database,
- "parallel": true,
- }
- ]
- },
- {
- "id": "globaladm2",
- "needs": [],
- "tasks": [
- {
- "type": "DownloadUrl",
- "url": "https://github.com/wmgeolab/geoBoundaries/raw/main/releaseData/CGAZ/geoBoundariesCGAZ_ADM2.gpkg",
- "path": "data/geoBoundariesCGAZ_ADM2.gpkg"
- },
- {
- "type": "ImportGeoPackage",
- "file": "data/geoBoundariesCGAZ_ADM2.gpkg",
- "database": config.database,
- "sourceSRID": 4326,
- "targetSRID": 3857
- },
- {
- "type": "ExecuteSql",
- "file": "queries/globaladm2_clean.sql",
- "database": config.database,
- "parallel": true,
- },
- {
- "type": "ExecuteSql",
- "file": "queries/globaladm2_simplify.sql",
- "database": config.database,
- "parallel": true,
- },
- {
- "type": "ExecuteSql",
- "file": "queries/globaladm2_index.sql",
+ "file": "layers/boundary/globaladm1_index.sql",
"database": config.database,
"parallel": true,
}
@@ -171,11 +135,6 @@ export default {
"sourceSRID": 3857,
"targetSRID": 3857
},
- {
- "type": "ExecuteSql",
- "file": "queries/osm_water_index.sql",
- "database": config.database
- }
]
},
{
@@ -199,9 +158,28 @@ export default {
"sourceSRID": 3857,
"targetSRID": 3857
},
+ ]
+ },
+ {
+ "id": "openstreetmap-ocean",
+ "needs": [
+ "water-polygons",
+ "simplified-water-polygons",
+ ],
+ "tasks": [
+ {
+ "type": "ExecuteSql",
+ "file": "layers/ocean/clean.sql",
+ "database": config.database,
+ },
{
"type": "ExecuteSql",
- "file": "queries/osm_simplified_water_index.sql",
+ "file": "layers/ocean/prepare.sql",
+ "database": config.database,
+ },
+ {
+ "type": "ExecuteSql",
+ "file": "layers/ocean/index.sql",
"database": config.database,
},
]
@@ -225,215 +203,303 @@ export default {
},
{
"id": "openstreetmap-nodes",
- "needs": ["openstreetmap-data"],
+ "needs": [
+ "openstreetmap-data"
+ ],
"tasks": [
{
"type": "ExecuteSql",
- "file": "queries/osm_nodes_clean.sql",
- "database": config.database,
- },
- {
- "type": "ExecuteSql",
- "file": "queries/osm_nodes_prepare.sql",
+ "file": "queries/osm_nodes.sql",
"database": config.database,
+ "parallel": true,
},
+ ]
+ },
+ {
+ "id": "openstreetmap-ways",
+ "needs": [
+ "openstreetmap-data"
+ ],
+ "tasks": [
{
"type": "ExecuteSql",
- "file": "queries/osm_nodes_simplify.sql",
+ "file": "queries/osm_ways.sql",
"database": config.database,
+ "parallel": true,
},
+ ]
+ },
+ {
+ "id": "openstreetmap-relations",
+ "needs": [
+ "openstreetmap-data"
+ ],
+ "tasks": [
{
"type": "ExecuteSql",
- "file": "queries/osm_nodes_index.sql",
+ "file": "queries/osm_relations.sql",
"database": config.database,
+ "parallel": true,
},
]
},
{
- "id": "openstreetmap-ways",
- "needs": ["openstreetmap-data"],
+ "id": "openstreetmap-member",
+ "needs": [
+ "openstreetmap-data"
+ ],
"tasks": [
{
"type": "ExecuteSql",
- "file": "queries/osm_ways_clean.sql",
+ "file": "layers/member/prepare.sql",
"database": config.database,
},
+ ]
+ },
+ {
+ "id": "openstreetmap-point",
+ "needs": [
+ "openstreetmap-nodes"
+ ],
+ "tasks": [
{
"type": "ExecuteSql",
- "file": "queries/osm_ways_prepare.sql",
+ "file": "layers/point/clean.sql",
"database": config.database,
},
{
"type": "ExecuteSql",
- "file": "queries/osm_ways_simplify.sql",
+ "file": "layers/point/simplify.sql",
"database": config.database,
+ "parallel": true,
},
{
"type": "ExecuteSql",
- "file": "queries/osm_ways_index.sql",
+ "file": "layers/point/index.sql",
"database": config.database,
+ "parallel": true,
},
]
},
{
- "id": "openstreetmap-relations",
- "needs": ["openstreetmap-data"],
+ "id": "openstreetmap-linestring",
+ "needs": [
+ "openstreetmap-member"
+ ],
"tasks": [
{
"type": "ExecuteSql",
- "file": "queries/osm_relations_clean.sql",
+ "file": "layers/linestring/clean.sql",
"database": config.database,
},
{
"type": "ExecuteSql",
- "file": "queries/osm_relations_prepare.sql",
+ "file": "layers/linestring/prepare.sql",
"database": config.database,
},
{
"type": "ExecuteSql",
- "file": "queries/osm_relations_simplify.sql",
- "database": config.database,
- },
- {
- "type": "ExecuteSql",
- "file": "queries/osm_relations_index.sql",
+ "file": "layers/linestring/index.sql",
"database": config.database,
},
]
},
{
- "id": "openstreetmap-linestring",
- "needs": ["openstreetmap-ways"],
+ "id": "openstreetmap-polygon",
+ "needs": [
+ "openstreetmap-member",
+ ],
"tasks": [
{
"type": "ExecuteSql",
- "file": "queries/osm_linestring.sql",
+ "file": "layers/polygon/clean.sql",
+ "database": config.database,
+ },
+ {
+ "type": "ExecuteSql",
+ "file": "layers/polygon/prepare.sql",
+ "database": config.database,
+ },
+ {
+ "type": "ExecuteSql",
+ "file": "layers/polygon/index.sql",
"database": config.database,
},
]
},
{
- "id": "openstreetmap-polygon",
- "needs": ["openstreetmap-ways", "openstreetmap-relations"],
+ "id": "openstreetmap-highway",
+ "needs": [
+ "openstreetmap-linestring"
+ ],
"tasks": [
{
"type": "ExecuteSql",
- "file": "queries/osm_polygon_prepare.sql",
+ "file": "layers/highway/clean.sql",
"database": config.database,
},
{
"type": "ExecuteSql",
- "file": "queries/osm_polygon_index.sql",
+ "file": "layers/highway/prepare.sql",
"database": config.database,
},
+ {
+ "type": "ExecuteSql",
+ "file": "layers/highway/simplify.sql",
+ "database": config.database,
+ "parallel": true,
+ },
+ {
+ "type": "ExecuteSql",
+ "file": "layers/highway/index.sql",
+ "database": config.database,
+ "parallel": true,
+ },
]
},
{
- "id": "openstreetmap-boundary",
+ "id": "openstreetmap-railway",
"needs": ["openstreetmap-linestring"],
"tasks": [
{
"type": "ExecuteSql",
- "file": "queries/osm_boundary_prepare.sql",
+ "file": "layers/railway/clean.sql",
+ "database": config.database,
+ },
+ {
+ "type": "ExecuteSql",
+ "file": "layers/railway/prepare.sql",
"database": config.database,
},
{
"type": "ExecuteSql",
- "file": "queries/osm_boundary_simplify.sql",
+ "file": "layers/railway/simplify.sql",
"database": config.database,
+ "parallel": true,
},
{
"type": "ExecuteSql",
- "file": "queries/osm_boundary_index.sql",
+ "file": "layers/railway/index.sql",
"database": config.database,
+ "parallel": true,
},
]
},
{
- "id": "openstreetmap-highway",
+ "id": "openstreetmap-route",
"needs": ["openstreetmap-linestring"],
"tasks": [
{
"type": "ExecuteSql",
- "file": "queries/osm_highway_prepare.sql",
+ "file": "layers/route/clean.sql",
"database": config.database,
},
{
"type": "ExecuteSql",
- "file": "queries/osm_highway_simplify.sql",
+ "file": "layers/route/prepare.sql",
"database": config.database,
},
{
"type": "ExecuteSql",
- "file": "queries/osm_highway_index.sql",
+ "file": "layers/route/simplify.sql",
"database": config.database,
+ "parallel": true,
+ },
+ {
+ "type": "ExecuteSql",
+ "file": "layers/route/index.sql",
+ "database": config.database,
+ "parallel": true,
},
]
},
{
- "id": "openstreetmap-railway",
- "needs": ["openstreetmap-linestring"],
+ "id": "openstreetmap-natural",
+ "needs": ["openstreetmap-polygon"],
"tasks": [
{
"type": "ExecuteSql",
- "file": "queries/osm_railway_prepare.sql",
+ "file": "layers/natural/clean.sql",
+ "database": config.database,
+ },
+ {
+ "type": "ExecuteSql",
+ "file": "layers/natural/prepare.sql",
"database": config.database,
},
{
"type": "ExecuteSql",
- "file": "queries/osm_railway_simplify.sql",
+ "file": "layers/natural/simplify.sql",
"database": config.database,
+ "parallel": true,
},
{
"type": "ExecuteSql",
- "file": "queries/osm_railway_index.sql",
+ "file": "layers/natural/index.sql",
"database": config.database,
+ "parallel": true
},
]
},
{
- "id": "openstreetmap-natural",
- "needs": ["openstreetmap-polygon"],
+ "id": "openstreetmap-landuse",
+ "needs": [
+ "openstreetmap-polygon"
+ ],
"tasks": [
{
"type": "ExecuteSql",
- "file": "queries/osm_natural_prepare.sql",
+ "file": "layers/landuse/clean.sql",
"database": config.database,
},
{
"type": "ExecuteSql",
- "file": "queries/osm_natural_simplify.sql",
+ "file": "layers/landuse/prepare.sql",
"database": config.database,
},
{
"type": "ExecuteSql",
- "file": "queries/osm_natural_index.sql",
+ "file": "layers/landuse/simplify.sql",
+ "database": config.database,
+ "parallel": true,
+ },
+ {
+ "type": "ExecuteSql",
+ "file": "layers/landuse/index.sql",
"database": config.database,
"parallel": true
},
]
},
{
- "id": "openstreetmap-landuse",
- "needs": ["openstreetmap-polygon"],
+ "id": "openstreetmap-waterway",
+ "needs": [
+ "openstreetmap-linestring"
+ ],
"tasks": [
{
"type": "ExecuteSql",
- "file": "queries/osm_landuse_prepare.sql",
+ "file": "layers/waterway/clean.sql",
+ "database": config.database,
+ },
+ {
+ "type": "ExecuteSql",
+ "file": "layers/waterway/prepare.sql",
"database": config.database,
},
{
"type": "ExecuteSql",
- "file": "queries/osm_landuse_simplify.sql",
+ "file": "layers/waterway/simplify.sql",
"database": config.database,
+ "parallel": true,
},
{
"type": "ExecuteSql",
- "file": "queries/osm_landuse_index.sql",
+ "file": "layers/waterway/index.sql",
"database": config.database,
"parallel": true
},
]
- }
+ },
]
}
diff --git a/examples/transformation/simplifications.sql b/examples/transformation/simplifications.sql
new file mode 100644
index 00000000..da4d5afc
--- /dev/null
+++ b/examples/transformation/simplifications.sql
@@ -0,0 +1,38 @@
+
+CREATE MATERIALIZED VIEW osm_highway_z10 AS
+SELECT id, tags, geom
+FROM (SELECT id, tags, st_simplifypreservetopology(geom, 78270 / power(2, 10)) AS geom FROM osm_highway) AS osm_highway
+WHERE geom IS NOT NULL AND (st_area(st_envelope(geom)) > power((78270 / power(2, 10)), 2));
+
+CREATE MATERIALIZED VIEW landuse_z10 AS
+ WITH
+ -- Set the size of 1 pixel at z10
+ pixel_size AS (
+ SELECT 78270 / power(2, 10) AS pixel_size
+ ),
+ -- Set the minimum area to 10 pixels at z10
+ min_area AS (
+ SELECT power(pixel_size * 10 AS min_area
+ FROM pixel_size
+ ),
+ -- Filter out polygons smaller than the minimum area
+ landuse_filtered AS (
+ SELECT id, tags, geom
+ FROM osm_landuse
+ WHERE st_area(geom) > min_area
+ ),
+ -- Buffer the landuse polygons
+ landuse_buffered AS (
+ SELECT id, tags, st_buffer(geom, buffer_distance) AS geom
+ FROM landuse_filtered, buffer_distance
+ ),
+ -- Union the buffered polygons
+ landuse_buffered_union AS (
+ SELECT st_union(geom) AS geom
+ FROM landuse_buffered
+ ),
+ -- Simplify the unioned polygon
+ landuse_simplified AS (
+ SELECT st_simplifypreservetopology(geom, 78270 / power(2, 10)) AS geom
+ FROM landuse_buffered_union
+ )
\ No newline at end of file
diff --git a/examples/transformation/style.json b/examples/transformation/style.json
new file mode 100644
index 00000000..094b492e
--- /dev/null
+++ b/examples/transformation/style.json
@@ -0,0 +1,26 @@
+{
+ "version" : 8,
+ "sources" : {
+ "baremaps" : {
+ "type" : "vector",
+ "url" : "http://localhost:9000/tiles.json"
+ }
+ },
+ "layers" : [ {
+ "id" : "landuse",
+ "type" : "fill",
+ "source" : "baremaps",
+ "source-layer" : "landuse",
+ "layout" : {
+ "visibility" : "visible"
+ },
+ "paint" : {
+ "fill-color" : "rgba(255, 0, 0, 1)"
+ }
+ } ],
+ "center" : [ 9.5554, 47.166 ],
+ "metadata" : {
+ "maputnik:renderer" : "mbgljs"
+ },
+ "zoom" : 14
+}
\ No newline at end of file
diff --git a/examples/transformation/tileset.json b/examples/transformation/tileset.json
new file mode 100644
index 00000000..35c8d6a2
--- /dev/null
+++ b/examples/transformation/tileset.json
@@ -0,0 +1,30 @@
+{
+ "tilejson": "2.2.0",
+ "minzoom": 0,
+ "maxzoom": 20,
+ "tiles": [
+ "http://localhost:9000/tiles/{z}/{x}/{y}.mvt"
+ ],
+ "vector_layers": [
+ {
+ "id": "landuse",
+ "queries": [
+ {
+ "minzoom": 0,
+ "maxzoom": 20,
+ "sql": "SELECT 0 as id, null as tags, ST_SetSRID(geometry, 3857) as geom FROM landuse WHERE landuse = 'forest'"
+ }
+ ]
+ },
+ {
+ "id": "landuse_z10",
+ "queries": [
+ {
+ "minzoom": 0,
+ "maxzoom": 20,
+ "sql": "SELECT 0 as id, null as tags, ST_SetSRID(geometry, 3857) as geom FROM landuse_z10 WHERE landuse = 'forest'"
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file