From 9b2b67b07668c726235f395e137b58accef0c809 Mon Sep 17 00:00:00 2001 From: Alexander Overvoorde Date: Fri, 14 Jun 2019 23:23:42 +0200 Subject: [PATCH] Add recommended indexes for Carto style (thanks @souladm) --- Dockerfile | 1 + indexes.sql | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ run.sh | 4 ++++ 3 files changed, 53 insertions(+) create mode 100644 indexes.sql diff --git a/Dockerfile b/Dockerfile index eb7f98e..7e9c5f4 100644 --- a/Dockerfile +++ b/Dockerfile @@ -140,6 +140,7 @@ RUN chown -R postgres:postgres /var/lib/postgresql \ # Start running COPY run.sh / +COPY indexes.sql / ENTRYPOINT ["/run.sh"] CMD [] diff --git a/indexes.sql b/indexes.sql new file mode 100644 index 0000000..3f68e6a --- /dev/null +++ b/indexes.sql @@ -0,0 +1,48 @@ +-- Extracted from https://github.com/gravitystorm/openstreetmap-carto +-- Comes with a CC0 license + +-- These are optional but suggested indexes for rendering OpenStreetMap Carto +-- with a full planet database. +-- This file is generated with scripts/indexes.py + +CREATE INDEX planet_osm_roads_admin + ON planet_osm_roads USING GIST (way) + WHERE boundary = 'administrative'; +CREATE INDEX planet_osm_roads_roads_ref + ON planet_osm_roads USING GIST (way) + WHERE highway IS NOT NULL AND ref IS NOT NULL; +CREATE INDEX planet_osm_roads_admin_low + ON planet_osm_roads USING GIST (way) + WHERE boundary = 'administrative' AND admin_level IN ('0', '1', '2', '3', '4'); +CREATE INDEX planet_osm_line_ferry + ON planet_osm_line USING GIST (way) + WHERE route = 'ferry'; +CREATE INDEX planet_osm_line_river + ON planet_osm_line USING GIST (way) + WHERE waterway = 'river'; +CREATE INDEX planet_osm_line_name + ON planet_osm_line USING GIST (way) + WHERE name IS NOT NULL; +CREATE INDEX planet_osm_polygon_water + ON planet_osm_polygon USING GIST (way) + WHERE waterway IN ('dock', 'riverbank', 'canal') + OR landuse IN ('reservoir', 'basin') + OR "natural" IN ('water', 'glacier'); +CREATE INDEX planet_osm_polygon_nobuilding + ON planet_osm_polygon USING GIST (way) + WHERE building IS NULL; +CREATE INDEX planet_osm_polygon_name + ON planet_osm_polygon USING GIST (way) + WHERE name IS NOT NULL; +CREATE INDEX planet_osm_polygon_way_area_z10 + ON planet_osm_polygon USING GIST (way) + WHERE way_area > 23300; +CREATE INDEX planet_osm_polygon_military + ON planet_osm_polygon USING GIST (way) + WHERE (landuse = 'military' OR military = 'danger_area') AND building IS NULL; +CREATE INDEX planet_osm_polygon_way_area_z6 + ON planet_osm_polygon USING GIST (way) + WHERE way_area > 5980000; +CREATE INDEX planet_osm_point_place + ON planet_osm_point USING GIST (way) + WHERE place IS NOT NULL AND name IS NOT NULL; diff --git a/run.sh b/run.sh index d7c0d01..a4bc1f5 100755 --- a/run.sh +++ b/run.sh @@ -38,6 +38,10 @@ if [ "$1" = "import" ]; then # Import data sudo -u renderer osm2pgsql -d gis --create --slim -G --hstore --tag-transform-script /home/renderer/src/openstreetmap-carto/openstreetmap-carto.lua -C 2048 --number-processes ${THREADS:-4} -S /home/renderer/src/openstreetmap-carto/openstreetmap-carto.style /data.osm.pbf + + # Create indexes + sudo -u postgres psql -d gis -f indexes.sql + service postgresql stop exit 0