Les paramètres généraux de configuration du service sont à renseigner dans le fichier `config.json`. Les variables à renseigner sont les suivantes :
*`WORK_DIR` : dossier de travail, dans lequel les fichiers temporaires sont stockés (exemple: `/tmp/osm4odf`)
*`PBF_URL` : URL de téléchargement de l'extrait OpenStreetMap au format PBF (exemple: `http://download.geofabrik.de/europe/france-latest.osm.pbf`)
*`PBF_URL` : URL de téléchargement de l'extrait OpenStreetMap au format PBF (exemple: `http://download.openstreetmap.fr/extracts/europe/france-latest.osm.pbf`)
*`PG_HOST` : nom d'hôte pour accéder à la base de données PostgreSQL (exemple: `localhost`)
*`PG_USER` : nom d'utilisateur pour accéder à la base de données PostgreSQL (exemple: `postgres`)
*`PG_USER` : numéro de port pour accéder à la base de données PostgreSQL (exemple: `5432`)
for col in`cat ./import.style | grep-v'^#' | grep-v'^$' | sed-r's/ +/#/g' | cut-d'#'-f 2`;do
echo"======= Post-processing ======="
for col in${used_tags};do
echo"Create index for $col"
psql -h"${PG_HOST}"-U"${PG_USER}"-p"${PG_PORT}"-d"${PG_DB_TMP}"-c"CREATE INDEX planet_osm_point_${col//:/_}_idx ON planet_osm_point(\"$col\"); CREATE INDEX planet_osm_line_${col//:/_}_idx ON planet_osm_line(\"$col\"); CREATE INDEX planet_osm_polygon_${col//:/_}_idx ON planet_osm_polygon(\"$col\");"
done
# Add boundaries for API requests
psql -h"${PG_HOST}"-U"${PG_USER}"-p"${PG_PORT}"-d"${PG_DB_TMP}"-c"CREATE TABLE boundary AS SELECT osm_id, COALESCE(tags->'ref:INSEE', tags->'ref:NUTS', tags->'ref') AS ref, CASE WHEN boundary = 'administrative' THEN 'admin_'||admin_level ELSE boundary END AS type, name, ST_SimplifyPreserveTopology(way, 10) AS way, ST_Centroid(way) AS center FROM planet_osm_polygon WHERE boundary IN ('administrative', 'local_authority', 'political') AND (admin_level IS NULL OR (admin_level::int >= 6 AND admin_level::int <= 8)); CREATE INDEX boundary_osm_id_idx ON boundary(osm_id); CREATE INDEX boundary_way_idx ON boundary USING GIST(way); CREATE INDEX boundary_center_idx ON boundary USING GIST(center);"
psql -h"${PG_HOST}"-U"${PG_USER}"-p"${PG_PORT}"-d"${PG_DB_TMP}"-c"CREATE TABLE boundary AS SELECT osm_id, COALESCE(tags->'ref:INSEE', tags->'ref:NUTS', tags->'ref') AS ref, CASE WHEN boundary = 'administrative' THEN 'admin_'||admin_level ELSE boundary END AS type, tags->'name' AS name, ST_SimplifyPreserveTopology(way, 10) AS way, ST_Centroid(way) AS center FROM planet_osm_polygon WHERE boundary IN ('administrative', 'local_authority', 'political') AND (admin_level IS NULL OR (admin_level::int >= 6 AND admin_level::int <= 8)); CREATE INDEX boundary_osm_id_idx ON boundary(osm_id); CREATE INDEX boundary_way_idx ON boundary USING GIST(way); CREATE INDEX boundary_center_idx ON boundary USING GIST(center);"
psql -h"${PG_HOST}"-U"${PG_USER}"-p"${PG_PORT}"-c"DROP DATABASE IF EXISTS ${PG_DB_OLD}"
psql -h"${PG_HOST}"-U"${PG_USER}"-p"${PG_PORT}"-c"SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE pid <> pg_backend_pid() AND datname='${PG_DB_CLEAN}'"
psql -h"${PG_HOST}"-U"${PG_USER}"-p"${PG_PORT}"-d"${PG_DB_TMP}"-c"ALTER DATABASE ${PG_DB_CLEAN} RENAME TO ${PG_DB_OLD}"
psql -h"${PG_HOST}"-U"${PG_USER}"-p"${PG_PORT}"-d"${PG_DB_OLD}"-c"ALTER DATABASE ${PG_DB_TMP} RENAME TO ${PG_DB_CLEAN}"
psql -h"${PG_HOST}"-U"${PG_USER}"-p"${PG_PORT}"-c"DROP DATABASE IF EXISTS ${PG_DB_OLD}"