You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@baremaps.apache.org by ad...@apache.org on 2022/12/08 13:48:20 UTC
[incubator-baremaps] branch main updated: Put back the examples along with a basic README.md (#551)
This is an automated email from the ASF dual-hosted git repository.
adrabble 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 9361d332 Put back the examples along with a basic README.md (#551)
9361d332 is described below
commit 9361d332925324c8f883db962daa0162606c2aa4
Author: Antoine Drabble <an...@gmail.com>
AuthorDate: Thu Dec 8 14:48:15 2022 +0100
Put back the examples along with a basic README.md (#551)
---
examples/_geoadmin/style.json | 31 +
examples/_geoadmin/tileset.json | 29 +
examples/_geoadmin/tileset.yaml | 19 +
examples/contour/README.md | 5 +
examples/contour/indexes.sql | 0
.../contour/liecthenstein-aster-dem-v2-3857.tif | Bin 0 -> 1966773 bytes
examples/contour/liecthenstein-aster-dem-v2.tif | Bin 0 -> 1739201 bytes
examples/contour/style.json | 31 +
examples/contour/tileset.json | 29 +
examples/geocoding/README.md | 5 +
examples/geocoding/workflow.js | 14 +
examples/ip-to-location/README.md | 5 +
examples/ip-to-location/workflow.js | 52 +
examples/naturalearth/README.md | 5 +
examples/naturalearth/indexes.sql | 135 ++
examples/naturalearth/style.json | 33 +
examples/naturalearth/tileset.json | 1360 ++++++++++++++++++++
examples/naturalearth/workflow.json | 32 +
examples/openstreetmap/README.md | 5 +
examples/openstreetmap/indexes.sql | 5 +
.../openstreetmap/liechtenstein-latest.osm.pbf | Bin 0 -> 2710779 bytes
examples/openstreetmap/style.js | 26 +
examples/openstreetmap/style.json | 26 +
examples/openstreetmap/tileset.json | 521 ++++++++
examples/openstreetmap/workflow.json | 42 +
25 files changed, 2410 insertions(+)
diff --git a/examples/_geoadmin/style.json b/examples/_geoadmin/style.json
new file mode 100644
index 00000000..af13470d
--- /dev/null
+++ b/examples/_geoadmin/style.json
@@ -0,0 +1,31 @@
+{
+ "version" : 8,
+ "sources" : {
+ "baremaps" : {
+ "type" : "vector",
+ "url" : "http://localhost:9000/tiles.json"
+ }
+ },
+ "layers" : [ {
+ "id" : "background",
+ "type" : "background",
+ "maxzoom" : 24,
+ "paint" : {
+ "background-color" : "rgba(255, 255, 255, 1)"
+ }
+ }, {
+ "id" : "geoadmin_traffic_noise_day",
+ "type" : "line",
+ "source" : "baremaps",
+ "source-layer" : "geoadmin_traffic_noise_day",
+ "layout" : {
+ "line-cap" : "round",
+ "line-join" : "round"
+ },
+ "paint" : {
+ "line-color" : "rgba(181, 169, 152, 1)"
+ }
+ } ],
+ "center" : [ 9.5554, 47.166 ],
+ "zoom" : 14
+}
\ No newline at end of file
diff --git a/examples/_geoadmin/tileset.json b/examples/_geoadmin/tileset.json
new file mode 100644
index 00000000..167cff11
--- /dev/null
+++ b/examples/_geoadmin/tileset.json
@@ -0,0 +1,29 @@
+{
+ "tilejson": "2.1.0",
+ "center": [
+ 6.5743,
+ 46.5189,
+ 14.0
+ ],
+ "bounds": [
+ 9.471078,
+ 47.04774,
+ 9.636217,
+ 47.27128
+ ],
+ "tiles": [
+ "http://localhost:9000/tiles/{z}/{x}/{y}.mvt"
+ ],
+ "vector_layers": [
+ {
+ "id": "geoadmin_traffic_noise_day",
+ "queries": [
+ {
+ "minzoom": 0,
+ "maxzoom": 20,
+ "sql": "SELECT ogc_fid, ('{level:' || dn::text || '}') as tags, wkb_geometry as geom FROM geoadmin_traffic_noise_day"
+ }
+ ]
+ }
+ ]
+}
diff --git a/examples/_geoadmin/tileset.yaml b/examples/_geoadmin/tileset.yaml
new file mode 100644
index 00000000..b21d19c8
--- /dev/null
+++ b/examples/_geoadmin/tileset.yaml
@@ -0,0 +1,19 @@
+id: 'contour'
+center:
+ lon: 6.5743
+ lat: 46.5189
+ zoom: 14
+bounds:
+ minLon: 5.8358
+ minLat: 45.6591
+ maxLon: 10.9794
+ maxLat: 47.8700
+ minZoom: 10
+ maxZoom: 20
+layers:
+ - id: 'geoadmin_traffic_noise_day'
+ type: 'geometry'
+ queries:
+ - minZoom: 12
+ maxZoom: 20
+ sql: SELECT ogc_fid, ('{level:' || dn::text || '}') as tags, wkb_geometry as geom FROM geoadmin_traffic_noise_day
diff --git a/examples/contour/README.md b/examples/contour/README.md
new file mode 100644
index 00000000..ad4aa084
--- /dev/null
+++ b/examples/contour/README.md
@@ -0,0 +1,5 @@
+# OpenStreetMap example
+
+This folder contains the required files to create and serve vector tiles from contour lines data.
+
+Refer to the [official documentation](https://baremaps.apache.org/examples/import-contour-into-postgis/) for more information.
\ No newline at end of file
diff --git a/examples/contour/indexes.sql b/examples/contour/indexes.sql
new file mode 100644
index 00000000..e69de29b
diff --git a/examples/contour/liecthenstein-aster-dem-v2-3857.tif b/examples/contour/liecthenstein-aster-dem-v2-3857.tif
new file mode 100644
index 00000000..93f78b72
Binary files /dev/null and b/examples/contour/liecthenstein-aster-dem-v2-3857.tif differ
diff --git a/examples/contour/liecthenstein-aster-dem-v2.tif b/examples/contour/liecthenstein-aster-dem-v2.tif
new file mode 100644
index 00000000..e9e705cd
Binary files /dev/null and b/examples/contour/liecthenstein-aster-dem-v2.tif differ
diff --git a/examples/contour/style.json b/examples/contour/style.json
new file mode 100644
index 00000000..16047415
--- /dev/null
+++ b/examples/contour/style.json
@@ -0,0 +1,31 @@
+{
+ "version" : 8,
+ "sources" : {
+ "baremaps" : {
+ "type" : "vector",
+ "url" : "http://localhost:9000/tiles.json"
+ }
+ },
+ "layers" : [ {
+ "id" : "background",
+ "type" : "background",
+ "maxzoom" : 24,
+ "paint" : {
+ "background-color" : "rgba(255, 255, 255, 1)"
+ }
+ }, {
+ "id" : "aster_dem",
+ "type" : "line",
+ "source" : "baremaps",
+ "source-layer" : "aster_dem",
+ "layout" : {
+ "line-cap" : "round",
+ "line-join" : "round"
+ },
+ "paint" : {
+ "line-color" : "rgba(181, 169, 152, 1)"
+ }
+ } ],
+ "center" : [ 9.5554, 47.166 ],
+ "zoom" : 14
+}
\ No newline at end of file
diff --git a/examples/contour/tileset.json b/examples/contour/tileset.json
new file mode 100644
index 00000000..7999eb55
--- /dev/null
+++ b/examples/contour/tileset.json
@@ -0,0 +1,29 @@
+{
+ "tilejson": "2.1.0",
+ "center": [
+ 9.5554,
+ 47.166,
+ 14.0
+ ],
+ "bounds": [
+ 9.471078,
+ 47.04774,
+ 9.636217,
+ 47.27128
+ ],
+ "tiles": [
+ "http://localhost:9000/tiles/{z}/{x}/{y}.mvt"
+ ],
+ "vector_layers": [
+ {
+ "id": "aster_dem",
+ "queries": [
+ {
+ "minzoom": 0,
+ "maxzoom": 20,
+ "sql": "SELECT ogc_fid, jsonb_build_object('elevation', elevation::text), wkb_geometry FROM aster_dem"
+ }
+ ]
+ }
+ ]
+}
diff --git a/examples/geocoding/README.md b/examples/geocoding/README.md
new file mode 100644
index 00000000..5ee027b4
--- /dev/null
+++ b/examples/geocoding/README.md
@@ -0,0 +1,5 @@
+# Geocoding example
+
+This folder contains the required files to create a geocoding web service.
+
+Refer to the [official documentation](https://baremaps.apache.org/examples/geocoding/) for more information.
\ No newline at end of file
diff --git a/examples/geocoding/workflow.js b/examples/geocoding/workflow.js
new file mode 100644
index 00000000..6bd3f837
--- /dev/null
+++ b/examples/geocoding/workflow.js
@@ -0,0 +1,14 @@
+const geonamesUrl = "https://download.geonames.org/export/dump/allCountries.zip";
+
+// Fetch and unzip Geonames
+const FetchAndUnzipGeonames = {id: "fetch-geonames-allcountries", needs: [], tasks: [
+ {type: "DownloadUrl", url: geonamesUrl, path: "downloads/geonames-allcountries.zip", force: true},
+ {type: "UnzipFile", file: "downloads/geonames-allcountries.zip", directory: "archives"}
+]};
+
+// Create the Geocoder index
+const createGeonamesIndex = {id: "geocoder-index", needs: [FetchAndUnzipGeonames.id], tasks: [
+ {type: "CreateGeonamesIndex", geonamesDumpPath: "archives/allCountries.txt", targetGeonamesIndexPath: "geocoder-index"}
+]};
+
+export default {"steps": [FetchAndUnzipGeonames, createGeonamesIndex]};
\ No newline at end of file
diff --git a/examples/ip-to-location/README.md b/examples/ip-to-location/README.md
new file mode 100644
index 00000000..528d1158
--- /dev/null
+++ b/examples/ip-to-location/README.md
@@ -0,0 +1,5 @@
+# IP to location example
+
+This folder contains the required files to create a web service for geo-localisation by IP address.
+
+Refer to the [official documentation](https://baremaps.apache.org/examples/ip-to-location/) for more information.
\ No newline at end of file
diff --git a/examples/ip-to-location/workflow.js b/examples/ip-to-location/workflow.js
new file mode 100644
index 00000000..f6410821
--- /dev/null
+++ b/examples/ip-to-location/workflow.js
@@ -0,0 +1,52 @@
+const nics = [
+ {url: "https://ftp.afrinic.net/pub/dbase/afrinic.db.gz", filename: "afrinic.db"},
+ {url: "https://ftp.apnic.net/apnic/whois/apnic.db.as-block.gz", filename: "apnic.db.as-block.db"},
+ {url: "https://ftp.apnic.net/apnic/whois/apnic.db.as-set.gz", filename: "apnic.db.as-set.db"},
+ {url: "https://ftp.apnic.net/apnic/whois/apnic.db.domain.gz", filename: "apnic.db.domain"},
+ {url: "https://ftp.apnic.net/apnic/whois/apnic.db.filter-set.gz", filename: "apnic.db.filter-set"},
+ {url: "https://ftp.apnic.net/apnic/whois/apnic.db.inet-rtr.gz", filename: "apnic.db.inet-rtr"},
+ {url: "https://ftp.apnic.net/apnic/whois/apnic.db.inet6num.gz", filename: "apnic.db.inet6num"},
+ {url: "https://ftp.apnic.net/apnic/whois/apnic.db.inetnum.gz", filename: "apnic.db.inetnum"},
+ {url: "https://ftp.apnic.net/apnic/whois/apnic.db.irt.gz", filename: "apnic.db.irt"},
+ {url: "https://ftp.apnic.net/apnic/whois/apnic.db.key-cert.gz", filename: "apnic.db.key-cert"},
+ {url: "https://ftp.apnic.net/apnic/whois/apnic.db.limerick.gz", filename: "apnic.db.limerick"},
+ {url: "https://ftp.apnic.net/apnic/whois/apnic.db.mntner.gz", filename: "apnic.db.mntner"},
+ {url: "https://ftp.apnic.net/apnic/whois/apnic.db.organisation.gz", filename: "apnic.db.organisation"},
+ {url: "https://ftp.apnic.net/apnic/whois/apnic.db.peering-set.gz", filename: "apnic.db.peering-set"},
+ {url: "https://ftp.apnic.net/apnic/whois/apnic.db.role.gz", filename: "apnic.db.role"},
+ {url: "https://ftp.apnic.net/apnic/whois/apnic.db.route-set.gz", filename: "apnic.db.route-set"},
+ {url: "https://ftp.apnic.net/apnic/whois/apnic.db.route.gz", filename: "apnic.db.route"},
+ {url: "https://ftp.apnic.net/apnic/whois/apnic.db.route6.gz", filename: "apnic.db.route6"},
+ {url: "https://ftp.apnic.net/apnic/whois/apnic.db.rtr-set.gz", filename: "apnic.db.rtr-set"},
+ {url: "https://ftp.arin.net/pub/rr/arin.db.gz", filename: "arin.db"},
+ {url: "https://ftp.lacnic.net/lacnic/dbase/lacnic.db.gz", filename: "lacnic.db"},
+ {url: "https://ftp.ripe.net/ripe/dbase/ripe.db.gz", filename: "ripe.db"},
+];
+
+const geonamesUrl =
+ "https://download.geonames.org/export/dump/allCountries.zip";
+
+// Iterate over nic urls to create a list of downloads and ungzip
+const fetchAndUnzipNic = nics.map((nic,index) =>
+ ({id: `fetch-nic-${index}`, needs: [], tasks: [
+ {type: "DownloadUrl", url: nic.url, path: `downloads/${nic.filename}.gz`},
+ {type: "UngzipFile", file: `downloads/${nic.filename}.gz`, directory: "archives"}
+ ]}));
+
+// Fetch and unzip Geonames
+const FetchAndUnzipGeonames = {id: "fetch-geonames-allcountries", needs: [], tasks: [
+ {type: "DownloadUrl", url: geonamesUrl, path: "downloads/geonames-allcountries.zip", force: true},
+ {type: "UnzipFile", file: "downloads/geonames-allcountries.zip", directory: "archives"}
+]};
+
+// Create the Geocoder index
+const createGeonamesIndex = {id: "geocoder-index", needs: [FetchAndUnzipGeonames.id], tasks: [
+ {type: "CreateGeonamesIndex", geonamesDumpPath: "archives/allCountries.txt", targetGeonamesIndexPath: "geocoder-index"}
+]};
+
+// Create the iploc database
+const createIplocIndex = {id: "iploc-index", needs: fetchAndUnzipNic.map(e => e.id).concat([createGeonamesIndex.id]), tasks: [
+ {type: "CreateIplocIndex", geonamesIndexPath: "geocoder-index", iplocNicPath: fetchAndUnzipNic.map(nicStep => nicStep.tasks[1].file.replaceAll(".db.gz", ".txt")), targetIplocIndexPath: "iploc.db"}
+]};
+
+export default {"steps": fetchAndUnzipNic.concat([FetchAndUnzipGeonames, createGeonamesIndex, createIplocIndex])};
\ No newline at end of file
diff --git a/examples/naturalearth/README.md b/examples/naturalearth/README.md
new file mode 100644
index 00000000..f189535a
--- /dev/null
+++ b/examples/naturalearth/README.md
@@ -0,0 +1,5 @@
+# Natural Earth example
+
+This folder contains the required files to create and serve vector tiles from Natural Earth data.
+
+Refer to the [official documentation](https://baremaps.apache.org/examples/import-natural-earth-into-postgis/) for more information.
\ No newline at end of file
diff --git a/examples/naturalearth/indexes.sql b/examples/naturalearth/indexes.sql
new file mode 100644
index 00000000..109077c7
--- /dev/null
+++ b/examples/naturalearth/indexes.sql
@@ -0,0 +1,135 @@
+CREATE INDEX IF NOT EXISTS ne_10m_admin_0_antarctic_claim_limit_lines_gix ON ne_10m_admin_0_antarctic_claim_limit_lines USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_10m_admin_0_antarctic_claims_gix ON ne_10m_admin_0_antarctic_claims USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_10m_admin_0_boundary_lines_disputed_areas_gix ON ne_10m_admin_0_boundary_lines_disputed_areas USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_10m_admin_0_boundary_lines_land_gix ON ne_10m_admin_0_boundary_lines_land USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_10m_admin_0_boundary_lines_map_units_gix ON ne_10m_admin_0_boundary_lines_map_units USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_10m_admin_0_boundary_lines_maritime_indicator_gix ON ne_10m_admin_0_boundary_lines_maritime_indicator USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_10m_admin_0_countries_gix ON ne_10m_admin_0_countries USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_10m_admin_0_countries_lakes_gix ON ne_10m_admin_0_countries_lakes USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_10m_admin_0_disputed_areas_gix ON ne_10m_admin_0_disputed_areas USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_10m_admin_0_disputed_areas_scale_rank_minor_islands_gix ON ne_10m_admin_0_disputed_areas_scale_rank_minor_islands USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_10m_admin_0_label_points_gix ON ne_10m_admin_0_label_points USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_10m_admin_0_map_subunits_gix ON ne_10m_admin_0_map_subunits USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_10m_admin_0_map_units_gix ON ne_10m_admin_0_map_units USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_10m_admin_0_pacific_groupings_gix ON ne_10m_admin_0_pacific_groupings USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_10m_admin_0_scale_rank_gix ON ne_10m_admin_0_scale_rank USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_10m_admin_0_scale_rank_minor_islands_gix ON ne_10m_admin_0_scale_rank_minor_islands USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_10m_admin_0_seams_gix ON ne_10m_admin_0_seams USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_10m_admin_0_sovereignty_gix ON ne_10m_admin_0_sovereignty USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_10m_admin_1_label_points_details_gix ON ne_10m_admin_1_label_points_details USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_10m_admin_1_label_points_gix ON ne_10m_admin_1_label_points USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_10m_admin_1_seams_gix ON ne_10m_admin_1_seams USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_10m_admin_1_states_provinces_gix ON ne_10m_admin_1_states_provinces USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_10m_admin_1_states_provinces_lakes_gix ON ne_10m_admin_1_states_provinces_lakes USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_10m_admin_1_states_provinces_lines_gix ON ne_10m_admin_1_states_provinces_lines USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_10m_admin_1_states_provinces_scale_rank_gix ON ne_10m_admin_1_states_provinces_scale_rank USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_10m_admin_1_states_provinces_scale_rank_minor_islands_gix ON ne_10m_admin_1_states_provinces_scale_rank_minor_islands USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_10m_airports_gix ON ne_10m_airports USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_10m_antarctic_ice_shelves_lines_gix ON ne_10m_antarctic_ice_shelves_lines USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_10m_antarctic_ice_shelves_polys_gix ON ne_10m_antarctic_ice_shelves_polys USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_10m_coastline_gix ON ne_10m_coastline USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_10m_geographic_lines_gix ON ne_10m_geographic_lines USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_10m_geography_marine_polys_gix ON ne_10m_geography_marine_polys USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_10m_geography_regions_elevation_points_gix ON ne_10m_geography_regions_elevation_points USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_10m_geography_regions_points_gix ON ne_10m_geography_regions_points USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_10m_geography_regions_polys_gix ON ne_10m_geography_regions_polys USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_10m_glaciated_areas_gix ON ne_10m_glaciated_areas USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_10m_lakes_europe_gix ON ne_10m_lakes_europe USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_10m_lakes_gix ON ne_10m_lakes USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_10m_lakes_historic_gix ON ne_10m_lakes_historic USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_10m_lakes_north_america_gix ON ne_10m_lakes_north_america USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_10m_lakes_pluvial_gix ON ne_10m_lakes_pluvial USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_10m_land_gix ON ne_10m_land USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_10m_land_ocean_label_points_gix ON ne_10m_land_ocean_label_points USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_10m_land_ocean_seams_gix ON ne_10m_land_ocean_seams USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_10m_land_scale_rank_gix ON ne_10m_land_scale_rank USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_10m_minor_islands_coastline_gix ON ne_10m_minor_islands_coastline USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_10m_minor_islands_gix ON ne_10m_minor_islands USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_10m_minor_islands_label_points_gix ON ne_10m_minor_islands_label_points USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_10m_ocean_gix ON ne_10m_ocean USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_10m_ocean_scale_rank_gix ON ne_10m_ocean_scale_rank USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_10m_parks_and_protected_lands_area_gix ON ne_10m_parks_and_protected_lands_area USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_10m_parks_and_protected_lands_line_gix ON ne_10m_parks_and_protected_lands_line USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_10m_parks_and_protected_lands_point_gix ON ne_10m_parks_and_protected_lands_point USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_10m_parks_and_protected_lands_scale_rank_gix ON ne_10m_parks_and_protected_lands_scale_rank USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_10m_playas_gix ON ne_10m_playas USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_10m_populated_places_gix ON ne_10m_populated_places USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_10m_populated_places_simple_gix ON ne_10m_populated_places_simple USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_10m_ports_gix ON ne_10m_ports USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_10m_railroads_gix ON ne_10m_railroads USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_10m_railroads_north_america_gix ON ne_10m_railroads_north_america USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_10m_reefs_gix ON ne_10m_reefs USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_10m_rivers_europe_gix ON ne_10m_rivers_europe USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_10m_rivers_lake_centerlines_gix ON ne_10m_rivers_lake_centerlines USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_10m_rivers_lake_centerlines_scale_rank_gix ON ne_10m_rivers_lake_centerlines_scale_rank USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_10m_rivers_north_america_gix ON ne_10m_rivers_north_america USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_10m_roads_gix ON ne_10m_roads USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_10m_roads_north_america_gix ON ne_10m_roads_north_america USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_10m_time_zones_gix ON ne_10m_time_zones USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_10m_urban_areas_gix ON ne_10m_urban_areas USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_10m_urban_areas_landscan_gix ON ne_10m_urban_areas_landscan USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_110m_admin_0_boundary_lines_land_gix ON ne_110m_admin_0_boundary_lines_land USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_110m_admin_0_countries_gix ON ne_110m_admin_0_countries USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_110m_admin_0_countries_lakes_gix ON ne_110m_admin_0_countries_lakes USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_110m_admin_0_map_units_gix ON ne_110m_admin_0_map_units USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_110m_admin_0_pacific_groupings_gix ON ne_110m_admin_0_pacific_groupings USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_110m_admin_0_scale_rank_gix ON ne_110m_admin_0_scale_rank USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_110m_admin_0_sovereignty_gix ON ne_110m_admin_0_sovereignty USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_110m_admin_0_tiny_countries_gix ON ne_110m_admin_0_tiny_countries USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_110m_admin_1_states_provinces_gix ON ne_110m_admin_1_states_provinces USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_110m_admin_1_states_provinces_lakes_gix ON ne_110m_admin_1_states_provinces_lakes USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_110m_admin_1_states_provinces_lines_gix ON ne_110m_admin_1_states_provinces_lines USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_110m_admin_1_states_provinces_scale_rank_gix ON ne_110m_admin_1_states_provinces_scale_rank USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_110m_coastline_gix ON ne_110m_coastline USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_110m_geographic_lines_gix ON ne_110m_geographic_lines USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_110m_geography_marine_polys_gix ON ne_110m_geography_marine_polys USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_110m_geography_regions_elevation_points_gix ON ne_110m_geography_regions_elevation_points USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_110m_geography_regions_points_gix ON ne_110m_geography_regions_points USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_110m_geography_regions_polys_gix ON ne_110m_geography_regions_polys USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_110m_glaciated_areas_gix ON ne_110m_glaciated_areas USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_110m_lakes_gix ON ne_110m_lakes USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_110m_land_gix ON ne_110m_land USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_110m_ocean_gix ON ne_110m_ocean USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_110m_populated_places_gix ON ne_110m_populated_places USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_110m_populated_places_simple_gix ON ne_110m_populated_places_simple USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_110m_rivers_lake_centerlines_gix ON ne_110m_rivers_lake_centerlines USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_50m_admin_0_boundary_lines_disputed_areas_gix ON ne_50m_admin_0_boundary_lines_disputed_areas USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_50m_admin_0_boundary_lines_land_gix ON ne_50m_admin_0_boundary_lines_land USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_50m_admin_0_boundary_lines_maritime_indicator_gix ON ne_50m_admin_0_boundary_lines_maritime_indicator USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_50m_admin_0_boundary_map_units_gix ON ne_50m_admin_0_boundary_map_units USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_50m_admin_0_breakaway_disputed_areas_gix ON ne_50m_admin_0_breakaway_disputed_areas USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_50m_admin_0_breakaway_disputed_areas_scale_rank_gix ON ne_50m_admin_0_breakaway_disputed_areas_scale_rank USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_50m_admin_0_countries_gix ON ne_50m_admin_0_countries USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_50m_admin_0_countries_lakes_gix ON ne_50m_admin_0_countries_lakes USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_50m_admin_0_map_subunits_gix ON ne_50m_admin_0_map_subunits USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_50m_admin_0_map_units_gix ON ne_50m_admin_0_map_units USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_50m_admin_0_pacific_groupings_gix ON ne_50m_admin_0_pacific_groupings USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_50m_admin_0_scale_rank_gix ON ne_50m_admin_0_scale_rank USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_50m_admin_0_sovereignty_gix ON ne_50m_admin_0_sovereignty USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_50m_admin_0_tiny_countries_gix ON ne_50m_admin_0_tiny_countries USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_50m_admin_0_tiny_countries_scale_rank_gix ON ne_50m_admin_0_tiny_countries_scale_rank USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_50m_admin_1_states_provinces_gix ON ne_50m_admin_1_states_provinces USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_50m_admin_1_states_provinces_lakes_gix ON ne_50m_admin_1_states_provinces_lakes USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_50m_admin_1_states_provinces_lines_gix ON ne_50m_admin_1_states_provinces_lines USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_50m_admin_1_states_provinces_scale_rank_gix ON ne_50m_admin_1_states_provinces_scale_rank USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_50m_airports_gix ON ne_50m_airports USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_50m_antarctic_ice_shelves_lines_gix ON ne_50m_antarctic_ice_shelves_lines USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_50m_antarctic_ice_shelves_polys_gix ON ne_50m_antarctic_ice_shelves_polys USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_50m_coastline_gix ON ne_50m_coastline USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_50m_geographic_lines_gix ON ne_50m_geographic_lines USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_50m_geography_marine_polys_gix ON ne_50m_geography_marine_polys USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_50m_geography_regions_elevation_points_gix ON ne_50m_geography_regions_elevation_points USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_50m_geography_regions_points_gix ON ne_50m_geography_regions_points USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_50m_geography_regions_polys_gix ON ne_50m_geography_regions_polys USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_50m_glaciated_areas_gix ON ne_50m_glaciated_areas USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_50m_lakes_gix ON ne_50m_lakes USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_50m_lakes_historic_gix ON ne_50m_lakes_historic USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_50m_land_gix ON ne_50m_land USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_50m_ocean_gix ON ne_50m_ocean USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_50m_playas_gix ON ne_50m_playas USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_50m_populated_places_gix ON ne_50m_populated_places USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_50m_populated_places_simple_gix ON ne_50m_populated_places_simple USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_50m_ports_gix ON ne_50m_ports USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_50m_rivers_lake_centerlines_gix ON ne_50m_rivers_lake_centerlines USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_50m_rivers_lake_centerlines_scale_rank_gix ON ne_50m_rivers_lake_centerlines_scale_rank USING SPGIST(geom);
+CREATE INDEX IF NOT EXISTS ne_50m_urban_areas_gix ON ne_50m_urban_areas USING SPGIST(geom);
diff --git a/examples/naturalearth/style.json b/examples/naturalearth/style.json
new file mode 100644
index 00000000..2fa41fd3
--- /dev/null
+++ b/examples/naturalearth/style.json
@@ -0,0 +1,33 @@
+{
+ "version" : 8,
+ "sources" : {
+ "baremaps" : {
+ "type" : "vector",
+ "url" : "http://localhost:9000/tiles.json"
+ }
+ },
+ "layers" : [ {
+ "id" : "ne_50m_admin_0_countries",
+ "type" : "fill",
+ "source" : "baremaps",
+ "source-layer" : "ne_50m_admin_0_countries",
+ "layout" : {
+ "visibility" : "visible"
+ },
+ "paint" : {
+ "fill-color" : "rgba(125, 105, 105, 1)",
+ "fill-outline-color" : "rgba(0, 0, 0, 1)"
+ }
+ }, {
+ "id" : "ne_10m_admin_0_countries",
+ "type" : "fill",
+ "source" : "baremaps",
+ "source-layer" : "ne_10m_admin_0_countries",
+ "paint" : {
+ "fill-color" : "rgba(125, 105, 105, 1)",
+ "fill-outline-color" : "rgba(0, 0, 0, 1)"
+ }
+ } ],
+ "center" : [ 0, 0 ],
+ "zoom" : 4
+}
\ No newline at end of file
diff --git a/examples/naturalearth/tileset.json b/examples/naturalearth/tileset.json
new file mode 100644
index 00000000..76164595
--- /dev/null
+++ b/examples/naturalearth/tileset.json
@@ -0,0 +1,1360 @@
+{
+ "tilejson": "2.2.0",
+ "minzoom": 0,
+ "maxzoom": 12,
+ "tiles": [
+ "http://localhost:9000/tiles/{z}/{x}/{y}.mvt"
+ ],
+ "vector_layers": [
+ {
+ "id": "ne_110m_admin_0_boundary_lines_land",
+ "queries": [
+ {
+ "minzoom": 0,
+ "maxzoom": 2,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_110m_admin_0_boundary_lines_land AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_110m_admin_0_countries",
+ "queries": [
+ {
+ "minzoom": 0,
+ "maxzoom": 2,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_110m_admin_0_countries AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_110m_admin_0_countries_lakes",
+ "queries": [
+ {
+ "minzoom": 0,
+ "maxzoom": 2,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_110m_admin_0_countries_lakes AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_110m_admin_0_map_units",
+ "queries": [
+ {
+ "minzoom": 0,
+ "maxzoom": 2,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_110m_admin_0_map_units AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_110m_admin_0_pacific_groupings",
+ "queries": [
+ {
+ "minzoom": 0,
+ "maxzoom": 2,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_110m_admin_0_pacific_groupings AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_110m_admin_0_scale_rank",
+ "queries": [
+ {
+ "minzoom": 0,
+ "maxzoom": 2,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_110m_admin_0_scale_rank AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_110m_admin_0_sovereignty",
+ "queries": [
+ {
+ "minzoom": 0,
+ "maxzoom": 2,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_110m_admin_0_sovereignty AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_110m_admin_0_tiny_countries",
+ "queries": [
+ {
+ "minzoom": 0,
+ "maxzoom": 2,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_110m_admin_0_tiny_countries AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_110m_admin_1_states_provinces",
+ "queries": [
+ {
+ "minzoom": 0,
+ "maxzoom": 2,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_110m_admin_1_states_provinces AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_110m_admin_1_states_provinces_lakes",
+ "queries": [
+ {
+ "minzoom": 0,
+ "maxzoom": 2,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_110m_admin_1_states_provinces_lakes AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_110m_admin_1_states_provinces_lines",
+ "queries": [
+ {
+ "minzoom": 0,
+ "maxzoom": 2,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_110m_admin_1_states_provinces_lines AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_110m_admin_1_states_provinces_scale_rank",
+ "queries": [
+ {
+ "minzoom": 0,
+ "maxzoom": 2,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_110m_admin_1_states_provinces_scale_rank AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_110m_coastline",
+ "queries": [
+ {
+ "minzoom": 0,
+ "maxzoom": 2,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_110m_coastline AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_110m_geographic_lines",
+ "queries": [
+ {
+ "minzoom": 0,
+ "maxzoom": 2,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_110m_geographic_lines AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_110m_geography_marine_polys",
+ "queries": [
+ {
+ "minzoom": 0,
+ "maxzoom": 2,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_110m_geography_marine_polys AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_110m_geography_regions_elevation_points",
+ "queries": [
+ {
+ "minzoom": 0,
+ "maxzoom": 2,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_110m_geography_regions_elevation_points AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_110m_geography_regions_points",
+ "queries": [
+ {
+ "minzoom": 0,
+ "maxzoom": 2,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_110m_geography_regions_points AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_110m_geography_regions_polys",
+ "queries": [
+ {
+ "minzoom": 0,
+ "maxzoom": 2,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_110m_geography_regions_polys AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_110m_glaciated_areas",
+ "queries": [
+ {
+ "minzoom": 0,
+ "maxzoom": 2,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_110m_glaciated_areas AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_110m_lakes",
+ "queries": [
+ {
+ "minzoom": 0,
+ "maxzoom": 2,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_110m_lakes AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_110m_land",
+ "queries": [
+ {
+ "minzoom": 0,
+ "maxzoom": 2,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_110m_land AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_110m_ocean",
+ "queries": [
+ {
+ "minzoom": 0,
+ "maxzoom": 2,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_110m_ocean AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_110m_populated_places",
+ "queries": [
+ {
+ "minzoom": 0,
+ "maxzoom": 2,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_110m_populated_places AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_110m_populated_places_simple",
+ "queries": [
+ {
+ "minzoom": 0,
+ "maxzoom": 2,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_110m_populated_places_simple AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_110m_rivers_lake_centerlines",
+ "queries": [
+ {
+ "minzoom": 0,
+ "maxzoom": 2,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_110m_rivers_lake_centerlines AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_50m_admin_0_boundary_lines_disputed_areas",
+ "queries": [
+ {
+ "minzoom": 2,
+ "maxzoom": 5,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_50m_admin_0_boundary_lines_disputed_areas AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_50m_admin_0_boundary_lines_land",
+ "queries": [
+ {
+ "minzoom": 2,
+ "maxzoom": 5,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_50m_admin_0_boundary_lines_land AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_50m_admin_0_boundary_lines_maritime_indicator",
+ "queries": [
+ {
+ "minzoom": 2,
+ "maxzoom": 5,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_50m_admin_0_boundary_lines_maritime_indicator AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_50m_admin_0_boundary_map_units",
+ "queries": [
+ {
+ "minzoom": 2,
+ "maxzoom": 5,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_50m_admin_0_boundary_map_units AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_50m_admin_0_breakaway_disputed_areas",
+ "queries": [
+ {
+ "minzoom": 2,
+ "maxzoom": 5,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_50m_admin_0_breakaway_disputed_areas AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_50m_admin_0_breakaway_disputed_areas_scale_rank",
+ "queries": [
+ {
+ "minzoom": 2,
+ "maxzoom": 5,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_50m_admin_0_breakaway_disputed_areas_scale_rank AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_50m_admin_0_countries",
+ "queries": [
+ {
+ "minzoom": 2,
+ "maxzoom": 5,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_50m_admin_0_countries AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_50m_admin_0_countries_lakes",
+ "queries": [
+ {
+ "minzoom": 2,
+ "maxzoom": 5,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_50m_admin_0_countries_lakes AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_50m_admin_0_map_subunits",
+ "queries": [
+ {
+ "minzoom": 2,
+ "maxzoom": 5,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_50m_admin_0_map_subunits AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_50m_admin_0_map_units",
+ "queries": [
+ {
+ "minzoom": 2,
+ "maxzoom": 5,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_50m_admin_0_map_units AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_50m_admin_0_pacific_groupings",
+ "queries": [
+ {
+ "minzoom": 2,
+ "maxzoom": 5,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_50m_admin_0_pacific_groupings AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_50m_admin_0_scale_rank",
+ "queries": [
+ {
+ "minzoom": 2,
+ "maxzoom": 5,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_50m_admin_0_scale_rank AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_50m_admin_0_sovereignty",
+ "queries": [
+ {
+ "minzoom": 2,
+ "maxzoom": 5,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_50m_admin_0_sovereignty AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_50m_admin_0_tiny_countries",
+ "queries": [
+ {
+ "minzoom": 2,
+ "maxzoom": 5,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_50m_admin_0_tiny_countries AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_50m_admin_0_tiny_countries_scale_rank",
+ "queries": [
+ {
+ "minzoom": 2,
+ "maxzoom": 5,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_50m_admin_0_tiny_countries_scale_rank AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_50m_admin_1_states_provinces",
+ "queries": [
+ {
+ "minzoom": 2,
+ "maxzoom": 5,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_50m_admin_1_states_provinces AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_50m_admin_1_states_provinces_lakes",
+ "queries": [
+ {
+ "minzoom": 2,
+ "maxzoom": 5,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_50m_admin_1_states_provinces_lakes AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_50m_admin_1_states_provinces_lines",
+ "queries": [
+ {
+ "minzoom": 2,
+ "maxzoom": 5,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_50m_admin_1_states_provinces_lines AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_50m_admin_1_states_provinces_scale_rank",
+ "queries": [
+ {
+ "minzoom": 2,
+ "maxzoom": 5,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_50m_admin_1_states_provinces_scale_rank AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_50m_airports",
+ "queries": [
+ {
+ "minzoom": 2,
+ "maxzoom": 5,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_50m_airports AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_50m_antarctic_ice_shelves_lines",
+ "queries": [
+ {
+ "minzoom": 2,
+ "maxzoom": 5,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_50m_antarctic_ice_shelves_lines AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_50m_antarctic_ice_shelves_polys",
+ "queries": [
+ {
+ "minzoom": 2,
+ "maxzoom": 5,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_50m_antarctic_ice_shelves_polys AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_50m_coastline",
+ "queries": [
+ {
+ "minzoom": 2,
+ "maxzoom": 5,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_50m_coastline AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_50m_geographic_lines",
+ "queries": [
+ {
+ "minzoom": 2,
+ "maxzoom": 5,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_50m_geographic_lines AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_50m_geography_marine_polys",
+ "queries": [
+ {
+ "minzoom": 2,
+ "maxzoom": 5,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_50m_geography_marine_polys AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_50m_geography_regions_elevation_points",
+ "queries": [
+ {
+ "minzoom": 2,
+ "maxzoom": 5,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_50m_geography_regions_elevation_points AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_50m_geography_regions_points",
+ "queries": [
+ {
+ "minzoom": 2,
+ "maxzoom": 5,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_50m_geography_regions_points AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_50m_geography_regions_polys",
+ "queries": [
+ {
+ "minzoom": 2,
+ "maxzoom": 5,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_50m_geography_regions_polys AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_50m_glaciated_areas",
+ "queries": [
+ {
+ "minzoom": 2,
+ "maxzoom": 5,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_50m_glaciated_areas AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_50m_lakes",
+ "queries": [
+ {
+ "minzoom": 2,
+ "maxzoom": 5,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_50m_lakes AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_50m_lakes_historic",
+ "queries": [
+ {
+ "minzoom": 2,
+ "maxzoom": 5,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_50m_lakes_historic AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_50m_land",
+ "queries": [
+ {
+ "minzoom": 2,
+ "maxzoom": 5,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_50m_land AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_50m_ocean",
+ "queries": [
+ {
+ "minzoom": 2,
+ "maxzoom": 5,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_50m_ocean AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_50m_playas",
+ "queries": [
+ {
+ "minzoom": 2,
+ "maxzoom": 5,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_50m_playas AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_50m_populated_places",
+ "queries": [
+ {
+ "minzoom": 2,
+ "maxzoom": 5,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_50m_populated_places AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_50m_populated_places_simple",
+ "queries": [
+ {
+ "minzoom": 2,
+ "maxzoom": 5,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_50m_populated_places_simple AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_50m_ports",
+ "queries": [
+ {
+ "minzoom": 2,
+ "maxzoom": 5,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_50m_ports AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_50m_rivers_lake_centerlines",
+ "queries": [
+ {
+ "minzoom": 2,
+ "maxzoom": 5,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_50m_rivers_lake_centerlines AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_50m_rivers_lake_centerlines_scale_rank",
+ "queries": [
+ {
+ "minzoom": 2,
+ "maxzoom": 5,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_50m_rivers_lake_centerlines_scale_rank AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_50m_urban_areas",
+ "queries": [
+ {
+ "minzoom": 2,
+ "maxzoom": 5,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_50m_urban_areas AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_10m_admin_0_antarctic_claim_limit_lines",
+ "queries": [
+ {
+ "minzoom": 5,
+ "maxzoom": 12,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_10m_admin_0_antarctic_claim_limit_lines AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_10m_admin_0_antarctic_claims",
+ "queries": [
+ {
+ "minzoom": 5,
+ "maxzoom": 12,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_10m_admin_0_antarctic_claims AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_10m_admin_0_boundary_lines_disputed_areas",
+ "queries": [
+ {
+ "minzoom": 5,
+ "maxzoom": 12,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_10m_admin_0_boundary_lines_disputed_areas AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_10m_admin_0_boundary_lines_land",
+ "queries": [
+ {
+ "minzoom": 5,
+ "maxzoom": 12,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_10m_admin_0_boundary_lines_land AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_10m_admin_0_boundary_lines_map_units",
+ "queries": [
+ {
+ "minzoom": 5,
+ "maxzoom": 12,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_10m_admin_0_boundary_lines_map_units AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_10m_admin_0_boundary_lines_maritime_indicator",
+ "queries": [
+ {
+ "minzoom": 5,
+ "maxzoom": 12,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_10m_admin_0_boundary_lines_maritime_indicator AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_10m_admin_0_countries",
+ "queries": [
+ {
+ "minzoom": 5,
+ "maxzoom": 12,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_10m_admin_0_countries AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_10m_admin_0_countries_lakes",
+ "queries": [
+ {
+ "minzoom": 5,
+ "maxzoom": 12,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_10m_admin_0_countries_lakes AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_10m_admin_0_disputed_areas",
+ "queries": [
+ {
+ "minzoom": 5,
+ "maxzoom": 12,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_10m_admin_0_disputed_areas AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_10m_admin_0_disputed_areas_scale_rank_minor_islands",
+ "queries": [
+ {
+ "minzoom": 5,
+ "maxzoom": 12,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_10m_admin_0_disputed_areas_scale_rank_minor_islands AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_10m_admin_0_label_points",
+ "queries": [
+ {
+ "minzoom": 5,
+ "maxzoom": 12,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_10m_admin_0_label_points AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_10m_admin_0_map_subunits",
+ "queries": [
+ {
+ "minzoom": 5,
+ "maxzoom": 12,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_10m_admin_0_map_subunits AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_10m_admin_0_map_units",
+ "queries": [
+ {
+ "minzoom": 5,
+ "maxzoom": 12,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_10m_admin_0_map_units AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_10m_admin_0_pacific_groupings",
+ "queries": [
+ {
+ "minzoom": 5,
+ "maxzoom": 12,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_10m_admin_0_pacific_groupings AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_10m_admin_0_scale_rank",
+ "queries": [
+ {
+ "minzoom": 5,
+ "maxzoom": 12,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_10m_admin_0_scale_rank AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_10m_admin_0_scale_rank_minor_islands",
+ "queries": [
+ {
+ "minzoom": 5,
+ "maxzoom": 12,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_10m_admin_0_scale_rank_minor_islands AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_10m_admin_0_seams",
+ "queries": [
+ {
+ "minzoom": 5,
+ "maxzoom": 12,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_10m_admin_0_seams AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_10m_admin_0_sovereignty",
+ "queries": [
+ {
+ "minzoom": 5,
+ "maxzoom": 12,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_10m_admin_0_sovereignty AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_10m_admin_1_label_points",
+ "queries": [
+ {
+ "minzoom": 5,
+ "maxzoom": 12,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_10m_admin_1_label_points AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_10m_admin_1_label_points_details",
+ "queries": [
+ {
+ "minzoom": 5,
+ "maxzoom": 12,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_10m_admin_1_label_points_details AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_10m_admin_1_seams",
+ "queries": [
+ {
+ "minzoom": 5,
+ "maxzoom": 12,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_10m_admin_1_seams AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_10m_admin_1_states_provinces",
+ "queries": [
+ {
+ "minzoom": 5,
+ "maxzoom": 12,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_10m_admin_1_states_provinces AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_10m_admin_1_states_provinces_lakes",
+ "queries": [
+ {
+ "minzoom": 5,
+ "maxzoom": 12,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_10m_admin_1_states_provinces_lakes AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_10m_admin_1_states_provinces_lines",
+ "queries": [
+ {
+ "minzoom": 5,
+ "maxzoom": 12,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_10m_admin_1_states_provinces_lines AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_10m_admin_1_states_provinces_scale_rank",
+ "queries": [
+ {
+ "minzoom": 5,
+ "maxzoom": 12,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_10m_admin_1_states_provinces_scale_rank AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_10m_admin_1_states_provinces_scale_rank_minor_islands",
+ "queries": [
+ {
+ "minzoom": 5,
+ "maxzoom": 12,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_10m_admin_1_states_provinces_scale_rank_minor_islands AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_10m_airports",
+ "queries": [
+ {
+ "minzoom": 5,
+ "maxzoom": 12,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_10m_airports AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_10m_antarctic_ice_shelves_lines",
+ "queries": [
+ {
+ "minzoom": 5,
+ "maxzoom": 12,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_10m_antarctic_ice_shelves_lines AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_10m_antarctic_ice_shelves_polys",
+ "queries": [
+ {
+ "minzoom": 5,
+ "maxzoom": 12,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_10m_antarctic_ice_shelves_polys AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_10m_coastline",
+ "queries": [
+ {
+ "minzoom": 5,
+ "maxzoom": 12,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_10m_coastline AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_10m_geographic_lines",
+ "queries": [
+ {
+ "minzoom": 5,
+ "maxzoom": 12,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_10m_geographic_lines AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_10m_geography_marine_polys",
+ "queries": [
+ {
+ "minzoom": 5,
+ "maxzoom": 12,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_10m_geography_marine_polys AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_10m_geography_regions_elevation_points",
+ "queries": [
+ {
+ "minzoom": 5,
+ "maxzoom": 12,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_10m_geography_regions_elevation_points AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_10m_geography_regions_points",
+ "queries": [
+ {
+ "minzoom": 5,
+ "maxzoom": 12,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_10m_geography_regions_points AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_10m_geography_regions_polys",
+ "queries": [
+ {
+ "minzoom": 5,
+ "maxzoom": 12,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_10m_geography_regions_polys AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_10m_glaciated_areas",
+ "queries": [
+ {
+ "minzoom": 5,
+ "maxzoom": 12,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_10m_glaciated_areas AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_10m_lakes",
+ "queries": [
+ {
+ "minzoom": 5,
+ "maxzoom": 12,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_10m_lakes AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_10m_lakes_europe",
+ "queries": [
+ {
+ "minzoom": 5,
+ "maxzoom": 12,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_10m_lakes_europe AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_10m_lakes_historic",
+ "queries": [
+ {
+ "minzoom": 5,
+ "maxzoom": 12,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_10m_lakes_historic AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_10m_lakes_north_america",
+ "queries": [
+ {
+ "minzoom": 5,
+ "maxzoom": 12,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_10m_lakes_north_america AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_10m_lakes_pluvial",
+ "queries": [
+ {
+ "minzoom": 5,
+ "maxzoom": 12,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_10m_lakes_pluvial AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_10m_land",
+ "queries": [
+ {
+ "minzoom": 5,
+ "maxzoom": 12,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_10m_land AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_10m_land_ocean_label_points",
+ "queries": [
+ {
+ "minzoom": 5,
+ "maxzoom": 12,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_10m_land_ocean_label_points AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_10m_land_ocean_seams",
+ "queries": [
+ {
+ "minzoom": 5,
+ "maxzoom": 12,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_10m_land_ocean_seams AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_10m_land_scale_rank",
+ "queries": [
+ {
+ "minzoom": 5,
+ "maxzoom": 12,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_10m_land_scale_rank AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_10m_minor_islands",
+ "queries": [
+ {
+ "minzoom": 5,
+ "maxzoom": 12,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_10m_minor_islands AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_10m_minor_islands_coastline",
+ "queries": [
+ {
+ "minzoom": 5,
+ "maxzoom": 12,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_10m_minor_islands_coastline AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_10m_minor_islands_label_points",
+ "queries": [
+ {
+ "minzoom": 5,
+ "maxzoom": 12,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_10m_minor_islands_label_points AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_10m_ocean",
+ "queries": [
+ {
+ "minzoom": 5,
+ "maxzoom": 12,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_10m_ocean AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_10m_ocean_scale_rank",
+ "queries": [
+ {
+ "minzoom": 5,
+ "maxzoom": 12,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_10m_ocean_scale_rank AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_10m_parks_and_protected_lands_area",
+ "queries": [
+ {
+ "minzoom": 5,
+ "maxzoom": 12,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_10m_parks_and_protected_lands_area AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_10m_parks_and_protected_lands_line",
+ "queries": [
+ {
+ "minzoom": 5,
+ "maxzoom": 12,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_10m_parks_and_protected_lands_line AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_10m_parks_and_protected_lands_point",
+ "queries": [
+ {
+ "minzoom": 5,
+ "maxzoom": 12,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_10m_parks_and_protected_lands_point AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_10m_parks_and_protected_lands_scale_rank",
+ "queries": [
+ {
+ "minzoom": 5,
+ "maxzoom": 12,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_10m_parks_and_protected_lands_scale_rank AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_10m_playas",
+ "queries": [
+ {
+ "minzoom": 5,
+ "maxzoom": 12,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_10m_playas AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_10m_populated_places",
+ "queries": [
+ {
+ "minzoom": 5,
+ "maxzoom": 12,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_10m_populated_places AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_10m_populated_places_simple",
+ "queries": [
+ {
+ "minzoom": 5,
+ "maxzoom": 12,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_10m_populated_places_simple AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_10m_ports",
+ "queries": [
+ {
+ "minzoom": 5,
+ "maxzoom": 12,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_10m_ports AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_10m_railroads",
+ "queries": [
+ {
+ "minzoom": 5,
+ "maxzoom": 12,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_10m_railroads AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_10m_railroads_north_america",
+ "queries": [
+ {
+ "minzoom": 5,
+ "maxzoom": 12,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_10m_railroads_north_america AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_10m_reefs",
+ "queries": [
+ {
+ "minzoom": 5,
+ "maxzoom": 12,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_10m_reefs AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_10m_rivers_europe",
+ "queries": [
+ {
+ "minzoom": 5,
+ "maxzoom": 12,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_10m_rivers_europe AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_10m_rivers_lake_centerlines",
+ "queries": [
+ {
+ "minzoom": 5,
+ "maxzoom": 12,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_10m_rivers_lake_centerlines AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_10m_rivers_lake_centerlines_scale_rank",
+ "queries": [
+ {
+ "minzoom": 5,
+ "maxzoom": 12,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_10m_rivers_lake_centerlines_scale_rank AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_10m_rivers_north_america",
+ "queries": [
+ {
+ "minzoom": 5,
+ "maxzoom": 12,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_10m_rivers_north_america AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_10m_roads",
+ "queries": [
+ {
+ "minzoom": 5,
+ "maxzoom": 12,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_10m_roads AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_10m_roads_north_america",
+ "queries": [
+ {
+ "minzoom": 5,
+ "maxzoom": 12,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_10m_roads_north_america AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_10m_time_zones",
+ "queries": [
+ {
+ "minzoom": 5,
+ "maxzoom": 12,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_10m_time_zones AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_10m_urban_areas",
+ "queries": [
+ {
+ "minzoom": 5,
+ "maxzoom": 12,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_10m_urban_areas AS t"
+ }
+ ]
+ },
+ {
+ "id": "ne_10m_urban_areas_landscan",
+ "queries": [
+ {
+ "minzoom": 5,
+ "maxzoom": 12,
+ "sql": "SELECT fid as id, '{}'::jsonb as tags, geom FROM ne_10m_urban_areas_landscan AS t"
+ }
+ ]
+ }
+ ]
+}
diff --git a/examples/naturalearth/workflow.json b/examples/naturalearth/workflow.json
new file mode 100644
index 00000000..bd9d6444
--- /dev/null
+++ b/examples/naturalearth/workflow.json
@@ -0,0 +1,32 @@
+{
+ "steps": [
+ {
+ "id": "natural_earth_vector",
+ "needs": [],
+ "tasks": [
+ {
+ "type": "DownloadUrl",
+ "url": "https://naciscdn.org/naturalearth/packages/natural_earth_vector.gpkg.zip",
+ "path": "natural_earth_vector.gpkg.zip"
+ },
+ {
+ "type": "UnzipFile",
+ "file": "natural_earth_vector.gpkg.zip",
+ "directory": "natural_earth_vector"
+ },
+ {
+ "type": "ImportGeoPackage",
+ "file": "natural_earth_vector/packages/natural_earth_vector.gpkg",
+ "database": "jdbc:postgresql://localhost:5432/baremaps?&user=baremaps&password=baremaps",
+ "sourceSRID": 4326,
+ "targetSRID": 3857
+ },
+ {
+ "type": "ExecuteSql",
+ "file": "indexes.sql",
+ "database": "jdbc:postgresql://localhost:5432/baremaps?&user=baremaps&password=baremaps"
+ }
+ ]
+ }
+ ]
+}
diff --git a/examples/openstreetmap/README.md b/examples/openstreetmap/README.md
new file mode 100644
index 00000000..7e7d6ddb
--- /dev/null
+++ b/examples/openstreetmap/README.md
@@ -0,0 +1,5 @@
+# OpenStreetMap example
+
+This folder contains the required files to create and serve vector tiles from OpenStreetMap data.
+
+Refer to the [official documentation](https://baremaps.apache.org/examples/import-osm-into-postgis/) for more information.
\ No newline at end of file
diff --git a/examples/openstreetmap/indexes.sql b/examples/openstreetmap/indexes.sql
new file mode 100644
index 00000000..6990e7b6
--- /dev/null
+++ b/examples/openstreetmap/indexes.sql
@@ -0,0 +1,5 @@
+CREATE INDEX CONCURRENTLY IF NOT EXISTS osm_ways_gin ON osm_ways USING gin (nodes);
+CREATE INDEX CONCURRENTLY IF NOT EXISTS osm_relations_gin ON osm_relations USING gin (member_refs);
+CREATE INDEX CONCURRENTLY IF NOT EXISTS osm_nodes_gix ON osm_nodes USING GIST (geom);
+CREATE INDEX CONCURRENTLY IF NOT EXISTS osm_ways_gix ON osm_ways USING GIST (geom);
+CREATE INDEX CONCURRENTLY IF NOT EXISTS osm_relations_gix ON osm_relations USING GIST (geom);
\ No newline at end of file
diff --git a/examples/openstreetmap/liechtenstein-latest.osm.pbf b/examples/openstreetmap/liechtenstein-latest.osm.pbf
new file mode 100644
index 00000000..591fd91d
Binary files /dev/null and b/examples/openstreetmap/liechtenstein-latest.osm.pbf differ
diff --git a/examples/openstreetmap/style.js b/examples/openstreetmap/style.js
new file mode 100644
index 00000000..127ae1a1
--- /dev/null
+++ b/examples/openstreetmap/style.js
@@ -0,0 +1,26 @@
+export default {
+ "version" : 8,
+ "sources" : {
+ "baremaps" : {
+ "type" : "vector",
+ "url" : "http://localhost:9000/tiles.json"
+ }
+ },
+ "layers" : [ {
+ "id" : "building",
+ "type" : "fill",
+ "source" : "baremaps",
+ "source-layer" : "building",
+ "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/openstreetmap/style.json b/examples/openstreetmap/style.json
new file mode 100644
index 00000000..f64b679f
--- /dev/null
+++ b/examples/openstreetmap/style.json
@@ -0,0 +1,26 @@
+{
+ "version" : 8,
+ "sources" : {
+ "baremaps" : {
+ "type" : "vector",
+ "url" : "http://localhost:9000/tiles.json"
+ }
+ },
+ "layers" : [ {
+ "id" : "building",
+ "type" : "fill",
+ "source" : "baremaps",
+ "source-layer" : "building",
+ "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/openstreetmap/tileset.json b/examples/openstreetmap/tileset.json
new file mode 100644
index 00000000..b714ed8a
--- /dev/null
+++ b/examples/openstreetmap/tileset.json
@@ -0,0 +1,521 @@
+{
+ "tilejson": "2.2.0",
+ "center": [
+ 9.5554,
+ 47.166,
+ 14.0
+ ],
+ "bounds": [
+ 9.471078,
+ 47.04774,
+ 9.636217,
+ 47.27128
+ ],
+ "minzoom": 12.0,
+ "maxzoom": 14.0,
+ "tiles": [
+ "http://localhost:9000/tiles/{z}/{x}/{y}.mvt"
+ ],
+ "vector_layers": [
+ {
+ "id": "aeroway",
+ "queries": [
+ {
+ "minzoom": 12,
+ "maxzoom": 20,
+ "sql": "SELECT id, tags, geom FROM osm_nodes WHERE tags ? 'aeroway'"
+ },
+ {
+ "minzoom": 12,
+ "maxzoom": 20,
+ "sql": "SELECT id, tags, geom FROM osm_ways WHERE tags ? 'aeroway'"
+ },
+ {
+ "minzoom": 12,
+ "maxzoom": 20,
+ "sql": "SELECT id, tags, geom FROM osm_relations WHERE tags ? 'aeroway' AND tags ->> 'type' = 'multipolygon'"
+ }
+ ]
+ },
+ {
+ "id": "waterway",
+ "queries": [
+ {
+ "minzoom": 12,
+ "maxzoom": 20,
+ "sql": "SELECT id, tags, geom FROM osm_nodes WHERE tags ? 'waterway'"
+ },
+ {
+ "minzoom": 12,
+ "maxzoom": 20,
+ "sql": "SELECT id, tags, geom FROM osm_ways WHERE tags ? 'waterway'"
+ },
+ {
+ "minzoom": 12,
+ "maxzoom": 20,
+ "sql": "SELECT id, tags, geom FROM osm_relations WHERE tags ? 'waterway' AND tags ->> 'type' = 'multipolygon'"
+ }
+ ]
+ },
+ {
+ "id": "landuse",
+ "queries": [
+ {
+ "minzoom": 12,
+ "maxzoom": 20,
+ "sql": "SELECT id, tags, geom FROM osm_nodes WHERE tags ? 'landuse'"
+ },
+ {
+ "minzoom": 12,
+ "maxzoom": 20,
+ "sql": "SELECT id, tags, geom FROM osm_ways WHERE tags ? 'landuse'"
+ },
+ {
+ "minzoom": 12,
+ "maxzoom": 20,
+ "sql": "SELECT id, tags, geom FROM osm_relations WHERE tags ? 'landuse' AND tags ->> 'type' = 'multipolygon'"
+ }
+ ]
+ },
+ {
+ "id": "railway",
+ "queries": [
+ {
+ "minzoom": 12,
+ "maxzoom": 20,
+ "sql": "SELECT id, tags, geom FROM osm_nodes WHERE tags ? 'railway'"
+ },
+ {
+ "minzoom": 12,
+ "maxzoom": 20,
+ "sql": "SELECT id, tags, geom FROM osm_ways WHERE tags ? 'railway'"
+ },
+ {
+ "minzoom": 12,
+ "maxzoom": 20,
+ "sql": "SELECT id, tags, geom FROM osm_relations WHERE tags ? 'railway' AND tags ->> 'type' = 'multipolygon'"
+ }
+ ]
+ },
+ {
+ "id": "highway",
+ "queries": [
+ {
+ "minzoom": 12,
+ "maxzoom": 20,
+ "sql": "SELECT id, tags, geom FROM osm_nodes WHERE tags ? 'highway'"
+ },
+ {
+ "minzoom": 12,
+ "maxzoom": 20,
+ "sql": "SELECT id, tags, geom FROM osm_ways WHERE tags ? 'highway'"
+ },
+ {
+ "minzoom": 12,
+ "maxzoom": 20,
+ "sql": "SELECT id, tags, geom FROM osm_relations WHERE tags ? 'highway' AND tags ->> 'type' = 'multipolygon'"
+ }
+ ]
+ },
+ {
+ "id": "public_transport",
+ "queries": [
+ {
+ "minzoom": 12,
+ "maxzoom": 20,
+ "sql": "SELECT id, tags, geom FROM osm_nodes WHERE tags ? 'public_transport'"
+ },
+ {
+ "minzoom": 12,
+ "maxzoom": 20,
+ "sql": "SELECT id, tags, geom FROM osm_ways WHERE tags ? 'public_transport'"
+ },
+ {
+ "minzoom": 12,
+ "maxzoom": 20,
+ "sql": "SELECT id, tags, geom FROM osm_relations WHERE tags ? 'public_transport' AND tags ->> 'type' = 'multipolygon'"
+ }
+ ]
+ },
+ {
+ "id": "aerialway",
+ "queries": [
+ {
+ "minzoom": 12,
+ "maxzoom": 20,
+ "sql": "SELECT id, tags, geom FROM osm_nodes WHERE tags ? 'aerialway'"
+ },
+ {
+ "minzoom": 12,
+ "maxzoom": 20,
+ "sql": "SELECT id, tags, geom FROM osm_ways WHERE tags ? 'aerialway'"
+ },
+ {
+ "minzoom": 12,
+ "maxzoom": 20,
+ "sql": "SELECT id, tags, geom FROM osm_relations WHERE tags ? 'aerialway' AND tags ->> 'type' = 'multipolygon'"
+ }
+ ]
+ },
+ {
+ "id": "geological",
+ "queries": [
+ {
+ "minzoom": 12,
+ "maxzoom": 20,
+ "sql": "SELECT id, tags, geom FROM osm_nodes WHERE tags ? 'geological'"
+ },
+ {
+ "minzoom": 12,
+ "maxzoom": 20,
+ "sql": "SELECT id, tags, geom FROM osm_ways WHERE tags ? 'geological'"
+ },
+ {
+ "minzoom": 12,
+ "maxzoom": 20,
+ "sql": "SELECT id, tags, geom FROM osm_relations WHERE tags ? 'geological' AND tags ->> 'type' = 'multipolygon'"
+ }
+ ]
+ },
+ {
+ "id": "building",
+ "queries": [
+ {
+ "minzoom": 12,
+ "maxzoom": 20,
+ "sql": "SELECT id, tags, geom FROM osm_nodes WHERE tags ? 'building'"
+ },
+ {
+ "minzoom": 12,
+ "maxzoom": 20,
+ "sql": "SELECT id, tags, geom FROM osm_ways WHERE tags ? 'building'"
+ },
+ {
+ "minzoom": 12,
+ "maxzoom": 20,
+ "sql": "SELECT id, tags, geom FROM osm_relations WHERE tags ? 'building' AND tags ->> 'type' = 'multipolygon'"
+ }
+ ]
+ },
+ {
+ "id": "amenity",
+ "queries": [
+ {
+ "minzoom": 12,
+ "maxzoom": 20,
+ "sql": "SELECT id, tags, geom FROM osm_nodes WHERE tags ? 'amenity'"
+ },
+ {
+ "minzoom": 12,
+ "maxzoom": 20,
+ "sql": "SELECT id, tags, geom FROM osm_ways WHERE tags ? 'amenity'"
+ },
+ {
+ "minzoom": 12,
+ "maxzoom": 20,
+ "sql": "SELECT id, tags, geom FROM osm_relations WHERE tags ? 'amenity' AND tags ->> 'type' = 'multipolygon'"
+ }
+ ]
+ },
+ {
+ "id": "craft",
+ "queries": [
+ {
+ "minzoom": 12,
+ "maxzoom": 20,
+ "sql": "SELECT id, tags, geom FROM osm_nodes WHERE tags ? 'craft'"
+ },
+ {
+ "minzoom": 12,
+ "maxzoom": 20,
+ "sql": "SELECT id, tags, geom FROM osm_ways WHERE tags ? 'craft'"
+ },
+ {
+ "minzoom": 12,
+ "maxzoom": 20,
+ "sql": "SELECT id, tags, geom FROM osm_relations WHERE tags ? 'craft' AND tags ->> 'type' = 'multipolygon'"
+ }
+ ]
+ },
+ {
+ "id": "emergency",
+ "queries": [
+ {
+ "minzoom": 12,
+ "maxzoom": 20,
+ "sql": "SELECT id, tags, geom FROM osm_nodes WHERE tags ? 'emergency'"
+ },
+ {
+ "minzoom": 12,
+ "maxzoom": 20,
+ "sql": "SELECT id, tags, geom FROM osm_ways WHERE tags ? 'emergency'"
+ },
+ {
+ "minzoom": 12,
+ "maxzoom": 20,
+ "sql": "SELECT id, tags, geom FROM osm_relations WHERE tags ? 'emergency' AND tags ->> 'type' = 'multipolygon'"
+ }
+ ]
+ },
+ {
+ "id": "historic",
+ "queries": [
+ {
+ "minzoom": 12,
+ "maxzoom": 20,
+ "sql": "SELECT id, tags, geom FROM osm_nodes WHERE tags ? 'historic'"
+ },
+ {
+ "minzoom": 12,
+ "maxzoom": 20,
+ "sql": "SELECT id, tags, geom FROM osm_ways WHERE tags ? 'historic'"
+ },
+ {
+ "minzoom": 12,
+ "maxzoom": 20,
+ "sql": "SELECT id, tags, geom FROM osm_relations WHERE tags ? 'historic' AND tags ->> 'type' = 'multipolygon'"
+ }
+ ]
+ },
+ {
+ "id": "leisure",
+ "queries": [
+ {
+ "minzoom": 12,
+ "maxzoom": 20,
+ "sql": "SELECT id, tags, geom FROM osm_nodes WHERE tags ? 'leisure'"
+ },
+ {
+ "minzoom": 12,
+ "maxzoom": 20,
+ "sql": "SELECT id, tags, geom FROM osm_ways WHERE tags ? 'leisure'"
+ },
+ {
+ "minzoom": 12,
+ "maxzoom": 20,
+ "sql": "SELECT id, tags, geom FROM osm_relations WHERE tags ? 'leisure' AND tags ->> 'type' = 'multipolygon'"
+ }
+ ]
+ },
+ {
+ "id": "man_made",
+ "queries": [
+ {
+ "minzoom": 12,
+ "maxzoom": 20,
+ "sql": "SELECT id, tags, geom FROM osm_nodes WHERE tags ? 'man_made'"
+ },
+ {
+ "minzoom": 12,
+ "maxzoom": 20,
+ "sql": "SELECT id, tags, geom FROM osm_ways WHERE tags ? 'man_made'"
+ },
+ {
+ "minzoom": 12,
+ "maxzoom": 20,
+ "sql": "SELECT id, tags, geom FROM osm_relations WHERE tags ? 'man_made' AND tags ->> 'type' = 'multipolygon'"
+ }
+ ]
+ },
+ {
+ "id": "military",
+ "queries": [
+ {
+ "minzoom": 12,
+ "maxzoom": 20,
+ "sql": "SELECT id, tags, geom FROM osm_nodes WHERE tags ? 'military'"
+ },
+ {
+ "minzoom": 12,
+ "maxzoom": 20,
+ "sql": "SELECT id, tags, geom FROM osm_ways WHERE tags ? 'military'"
+ },
+ {
+ "minzoom": 12,
+ "maxzoom": 20,
+ "sql": "SELECT id, tags, geom FROM osm_relations WHERE tags ? 'military' AND tags ->> 'type' = 'multipolygon'"
+ }
+ ]
+ },
+ {
+ "id": "natural",
+ "queries": [
+ {
+ "minzoom": 12,
+ "maxzoom": 20,
+ "sql": "SELECT id, tags, geom FROM osm_nodes WHERE tags ? 'natural'"
+ },
+ {
+ "minzoom": 12,
+ "maxzoom": 20,
+ "sql": "SELECT id, tags, geom FROM osm_ways WHERE tags ? 'natural'"
+ },
+ {
+ "minzoom": 12,
+ "maxzoom": 20,
+ "sql": "SELECT id, tags, geom FROM osm_relations WHERE tags ? 'natural' AND tags ->> 'type' = 'multipolygon'"
+ }
+ ]
+ },
+ {
+ "id": "office",
+ "queries": [
+ {
+ "minzoom": 12,
+ "maxzoom": 20,
+ "sql": "SELECT id, tags, geom FROM osm_nodes WHERE tags ? 'office'"
+ },
+ {
+ "minzoom": 12,
+ "maxzoom": 20,
+ "sql": "SELECT id, tags, geom FROM osm_ways WHERE tags ? 'office'"
+ },
+ {
+ "minzoom": 12,
+ "maxzoom": 20,
+ "sql": "SELECT id, tags, geom FROM osm_relations WHERE tags ? 'office' AND tags ->> 'type' = 'multipolygon'"
+ }
+ ]
+ },
+ {
+ "id": "place",
+ "queries": [
+ {
+ "minzoom": 12,
+ "maxzoom": 20,
+ "sql": "SELECT id, tags, geom FROM osm_nodes WHERE tags ? 'place'"
+ },
+ {
+ "minzoom": 12,
+ "maxzoom": 20,
+ "sql": "SELECT id, tags, geom FROM osm_ways WHERE tags ? 'place'"
+ },
+ {
+ "minzoom": 12,
+ "maxzoom": 20,
+ "sql": "SELECT id, tags, geom FROM osm_relations WHERE tags ? 'place' AND tags ->> 'type' = 'multipolygon'"
+ }
+ ]
+ },
+ {
+ "id": "power",
+ "queries": [
+ {
+ "minzoom": 12,
+ "maxzoom": 20,
+ "sql": "SELECT id, tags, geom FROM osm_nodes WHERE tags ? 'power'"
+ },
+ {
+ "minzoom": 12,
+ "maxzoom": 20,
+ "sql": "SELECT id, tags, geom FROM osm_ways WHERE tags ? 'power'"
+ },
+ {
+ "minzoom": 12,
+ "maxzoom": 20,
+ "sql": "SELECT id, tags, geom FROM osm_relations WHERE tags ? 'power' AND tags ->> 'type' = 'multipolygon'"
+ }
+ ]
+ },
+ {
+ "id": "route",
+ "queries": [
+ {
+ "minzoom": 12,
+ "maxzoom": 20,
+ "sql": "SELECT id, tags, geom FROM osm_nodes WHERE tags ? 'route'"
+ },
+ {
+ "minzoom": 12,
+ "maxzoom": 20,
+ "sql": "SELECT id, tags, geom FROM osm_ways WHERE tags ? 'route'"
+ },
+ {
+ "minzoom": 12,
+ "maxzoom": 20,
+ "sql": "SELECT id, tags, geom FROM osm_relations WHERE tags ? 'route' AND tags ->> 'type' = 'multipolygon'"
+ }
+ ]
+ },
+ {
+ "id": "shop",
+ "queries": [
+ {
+ "minzoom": 12,
+ "maxzoom": 20,
+ "sql": "SELECT id, tags, geom FROM osm_nodes WHERE tags ? 'shop'"
+ },
+ {
+ "minzoom": 12,
+ "maxzoom": 20,
+ "sql": "SELECT id, tags, geom FROM osm_ways WHERE tags ? 'shop'"
+ },
+ {
+ "minzoom": 12,
+ "maxzoom": 20,
+ "sql": "SELECT id, tags, geom FROM osm_relations WHERE tags ? 'shop' AND tags ->> 'type' = 'multipolygon'"
+ }
+ ]
+ },
+ {
+ "id": "sport",
+ "queries": [
+ {
+ "minzoom": 12,
+ "maxzoom": 20,
+ "sql": "SELECT id, tags, geom FROM osm_nodes WHERE tags ? 'sport'"
+ },
+ {
+ "minzoom": 12,
+ "maxzoom": 20,
+ "sql": "SELECT id, tags, geom FROM osm_ways WHERE tags ? 'sport'"
+ },
+ {
+ "minzoom": 12,
+ "maxzoom": 20,
+ "sql": "SELECT id, tags, geom FROM osm_relations WHERE tags ? 'sport' AND tags ->> 'type' = 'multipolygon'"
+ }
+ ]
+ },
+ {
+ "id": "telecom",
+ "queries": [
+ {
+ "minzoom": 12,
+ "maxzoom": 20,
+ "sql": "SELECT id, tags, geom FROM osm_nodes WHERE tags ? 'telecom'"
+ },
+ {
+ "minzoom": 12,
+ "maxzoom": 20,
+ "sql": "SELECT id, tags, geom FROM osm_ways WHERE tags ? 'telecom'"
+ },
+ {
+ "minzoom": 12,
+ "maxzoom": 20,
+ "sql": "SELECT id, tags, geom FROM osm_relations WHERE tags ? 'telecom' AND tags ->> 'type' = 'multipolygon'"
+ }
+ ]
+ },
+ {
+ "id": "tourism",
+ "queries": [
+ {
+ "minzoom": 12,
+ "maxzoom": 20,
+ "sql": "SELECT id, tags, geom FROM osm_nodes WHERE tags ? 'tourism'"
+ },
+ {
+ "minzoom": 12,
+ "maxzoom": 20,
+ "sql": "SELECT id, tags, geom FROM osm_ways WHERE tags ? 'tourism'"
+ },
+ {
+ "minzoom": 12,
+ "maxzoom": 20,
+ "sql": "SELECT id, tags, geom FROM osm_relations WHERE tags ? 'tourism' AND tags ->> 'type' = 'multipolygon'"
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/examples/openstreetmap/workflow.json b/examples/openstreetmap/workflow.json
new file mode 100644
index 00000000..9ebd677a
--- /dev/null
+++ b/examples/openstreetmap/workflow.json
@@ -0,0 +1,42 @@
+{
+ "steps": [
+ {
+ "id": "download",
+ "needs": [],
+ "tasks": [
+ {
+ "type": "DownloadUrl",
+ "url": "https://download.geofabrik.de/europe/liechtenstein-latest.osm.pbf",
+ "path": "liechtenstein-latest.osm.pbf"
+ }
+ ]
+ },
+ {
+ "id": "import",
+ "needs": [
+ "download"
+ ],
+ "tasks": [
+ {
+ "type": "ImportOpenStreetMap",
+ "file": "liechtenstein-latest.osm.pbf",
+ "database": "jdbc:postgresql://localhost:5432/baremaps?&user=baremaps&password=baremaps",
+ "databaseSrid": 3857
+ }
+ ]
+ },
+ {
+ "id": "index",
+ "needs": [
+ "import"
+ ],
+ "tasks": [
+ {
+ "type": "ExecuteSql",
+ "file": "indexes.sql",
+ "database": "jdbc:postgresql://localhost:5432/baremaps?&user=baremaps&password=baremaps"
+ }
+ ]
+ }
+ ]
+}