Prérequis sur le serveurs ========================= Postgres, postgis, installation ------------------------------- apt-get install \ postgis \ postgresql-VERSION-postgis-scripts \ osmosis \ postgresql-contrib \ postgresql-plperl Conf de postgres ---------------- Ceci n'est qu'un exemple. `/etc/postgresql/VERSION/main/postgresql.conf` shared_buffers = 2GB temp_buffers = 256MB max_prepared_transactions = 1024 work_mem = 1GB maintenance_work_mem = 1GB max_stack_depth = 8MB Pour l'import initial, on se fout de la coherence en cas de crash. Ou alors on est patient, très patient, très très patient. fsync = off synchronous_commit = off full_page_writes = off Penser à revenir sur une configuration plus safe après l'import. Penser à redémarrer postgresql (service, systemctl…) RV -- apt-get install \ build-essential \ autoconf \ automake \ libpqxx3-dev \ git Puis on a besoin d'un user non privilégié rv, et on fait en sorte de pouvoir s'y connecter en ssh. useradd -m -s /bin/bash rv su rv -c 'mkdir /home/rv/.ssh' su rv -c 'touch /home/rv/.ssh/authorized_keys' cat .ssh/authorized_keys > /home/rv/.ssh/authorized_keys Compilation et installation des sources ======================================= Avec un utilisateur non privilégié nommé rv git clone https://gitlab.crans.org/leger/rv.git cd rv sh autogen.sh ./configure --prefix=$HOME/local make make install Import des données ================== Création de la database ----------------------- # creation database en temps qu'utilisateur postgres createdb -O rv rv psql -d rv -c 'CREATE EXTENSION hstore;' createlang plperl rv psql -d rv \ -f /usr/share/postgresql/VERSION/contrib/postgis-VERSION/postgis.sql psql -d rv \ -f /usr/share/postgresql/VERSION/contrib/postgis-VERSION/spatial_ref_sys.sql Schéma de la base (en tant que rv) psql -d rv \ -f /usr/share/doc/osmosis/examples/pgsnapshot_schema_0.6.sql psql -d rv \ -f /usr/share/doc/osmosis/examples/pgsnapshot_schema_0.6_action.sql Ajouts pour rv psql -d rv -f local/share/rv/sql/00-schema.sql psql -d rv -f local/share/rv/sql/00-schema-rv_heigt.sql cat local/share/rv/sql/10-fonctions-*.sql | psql -d rv psql -d rv -f local/share/rv/sql/20-functions-update-rv.sql psql -d rv -f local/share/rv/sql/30-fonctions-osmosisUpdate.sql Import des données OSM ---------------------- Téléchargement : mkdir data/ mkdir data/import wget -P data/ \ http://download.geofabrik.de/europe/france-latest.osm.pbf alternative: http://download.geofabrik.de/north-america/us/pennsylvania-latest.osm.pbf osmosis \ --read-pbf file=data/france-latest.osm.pbf \ --write-pgsql-dump directory=data/import/ Import initial (en tant que postgres pour avoir le droit de COPY): dir=$(pwd)/data/import ( echo "COPY nodes FROM '$dir/nodes.txt';" echo "COPY relation_members FROM '$dir/relation_members.txt';" echo "COPY relations FROM '$dir/relations.txt';" echo "COPY users FROM '$dir/users.txt';" echo "COPY way_nodes FROM '$dir/way_nodes.txt';" echo "COPY ways FROM '$dir/ways.txt';" ) \ | xargs -d '\n' -i -P 0 psql -d rv -c {} Une petite analyse de ce qu'on a mis : psql -d rv -c "VACUUM ANALYZE;" On se casse : cd .. Import des données SRTM ----------------------- Récuperer la liste des tiles srtm necessaires psql -d rv \ -t -F ' ' -A \ -c 'SELECT DISTINCT floor(ST_X(geom)),floor(ST_Y(geom)) from nodes;' \ > data/list_needed_srtm Telecharger les données srtm mkdir data/srtmzip rv/utils/dlsrtm data/list_needed_srtm data/srtmzip/ Dézippage mkdir data/srtm rv/utils/unzipsrtm data/srtmzip/ data/srtm/ Remplissage paralelle de la database rv/utils/populate_height_table_parallel \ data/list_needed_srtm 12 \ rv/height/rv_populate_height_table dbname=rv data/srtm/ Une petite analyse de ce qu'on a mis : psql -d rv -c "VACUUM ANALYZE;" Remplissage initial des tables perso ------------------------------------ psql -d rv -f rv/sql/90-initial-import.sql Finalisation ------------ psql -d rv -c 'CLUSTER;' psql -d rv -c 'VACUUM ANALYZE;' Ménage ------ Un petit coup de balai rm -r data/