Spin0us.net github

OpenStreetMap

Mise à jour sélective sur Nominatim

par spin0us le 6 juin 2013

Pour celles et ceux qui auraient installé leur propre serveur Nominatim, vous n'avez peut-être pas importer la totale. Le fichier planet-latest.osm.bz2 tapant dans les 28G (à l'heure actuelle), l'importation prend des plombes.

Il suffit donc de choisir les pays ou régions que vous souhaitez importer sur geofabrik.de puis d'utiliser ce script de mise à jour filtrant les éléments que vous aurez choisis.

Script de mise à jour journalière

#!/bin/bash

### Country list
COUNTRIES="europe/isle-of-man europe/kosovo"
NOMINATIM="/var/Nominatim"

### Foreach country check if configuration exists (if not create one) and then import the diff
for COUNTRY in $COUNTRIES;
do
    DIR="$NOMINATIM/updates/$COUNTRY"
    FILE="$DIR/configuration.txt"
    if [ ! -f ${FILE} ];
    then
        /bin/mkdir -p ${DIR}
        /usr/bin/osmosis --rrii workingDirectory=${DIR}/.
        /bin/echo baseUrl=http://download.geofabrik.de/${COUNTRY}-updates > ${FILE}
        /bin/echo maxInterval = 0 >> ${FILE}
        cd ${DIR}
        /usr/bin/wget http://download.geofabrik.de/${COUNTRY}-updates/state.txt
    fi
    FILENAME=${COUNTRY//[\/]/_}
    /usr/bin/osmosis --rri workingDirectory=${DIR}/. --wxc ${FILENAME}.osc.gz
done

INDEX=0 # false

### Foreach diff files do the import
cd ${NOMINATIM}/updates
for OSC in *.osc.gz;
do
    ${NOMINATIM}/utils/update.php --import-diff ${NOMINATIM}/updates/${OSC} --no-npi
    INDEX=1
done

### Re-index if needed
if ((${INDEX}));
then
    ${NOMINATIM}/utils/update.php --index
fi

### Remove all diff files
rm -f ${NOMINATIM}/updates/*.osc.gz

Il vous suffit donc de spécifier les éléments que vous avez importés au début dans la variable COUNTRIES (ici europe/isle-of-man europe/kosovo) et le chemin d'accès au répertoire d'installation de Nominatim dans NOMINATIM.

Source: twain47/Nominatim/issues/60