Selon les tags présents sur cette page, les informations qu'elle contient n'ont pas été vérifiées pour les dernières versions LTS depuis Ubuntu 14.04 LTS.
Cette page est en cours de rédaction.
Apportez votre aide…

Ceci est une ancienne révision du document !



Nominatim

Nominatim (du Latin, 'par le nom') est un outil permettant de chercher des données géographiques par leur nom et leur adresse et de générer des adresses potentielles à partir de coordonnées géographiques (reverse geocoding). L'outil peut être utilisé en ligne sur cette page : http://nominatim.openstreetmap.org.

Nominatim est aussi utilisé par l'outil Search de la page d'accueil d'OpenStreetMap et améliore la qualité de la recherche proposée sur les sites MapQuest Open Initiative, PickPoint et OpenCage Geocoder.

La présente page décrit le processus d'installation de Nominatim sur un ordinateur personnel utilisé en qualité de serveur.

Nominatim permet de transformer une adresse en latitude et longitude et vice-versa.

Pourquoi installer Nominatim

Pour un usage occasionnel, installer Nominatim sur son ordinateur n'a aucun intérêt. En revanche, pour des usages fréquents et répétés l'installation de Nominatim permet :

  • de soulager les serveurs libres et gratuits d'OpenStreetMap
  • de ne pas être dépendant d'internet
  • de disposer de ses propres bases de données

Installer les dépendances

sudo apt-get install libgeos-dev libpq-dev libtool automake libproj-dev libboost-dev libboost-system-dev libboost-filesystem-dev libboost-thread-dev gcc proj-bin libgeos-c1 osmosis libgeos++-dev php5 php-pear php5-pgsql php5-json php-db postgresql postgis postgresql-contrib postgresql-9.3-postgis-2.1 postgresql-server-dev-9.3 libprotobuf-c0-dev protobuf-c-compiler

Il faut aussi installer les paquets suivants si vous ne les avez pas déjà installés :

sudo apt-get install build-essential libxml2-dev libbz2-dev git cmake pkg-config

Pour l'installation depuis les sources git

sudo apt-get install git autoconf-archive

Installer depuis les sources

Installation à partir de la version stable 2.4.0 (à la date du 4 juin 2015).

Téléchargement du fichier d'installation compressé

wget http://www.nominatim.org/release/Nominatim-2.4.0.tar.bz2

Décompactage du fichier d'installation

tar xvf Nominatim-2.4.0.tar.bz2

Compilation

Se rendre dans le répertoire Nominatim créé après la décompression (appelé Nominatim dans l'exemple ci-dessous)

cd Nominatim
./configure
make
sudo checkinstall
Les alertes à propos de l'absence des librairies lua peuvent être ignorées, Nominatim n'utilise pas l'extension lua de osm2PGSql.

Personnalisation de Nomitamim (voir site internet)

La création d'un fichier <local.php> situé dans le répertoire settings permet de personnaliser Nominatim. Les paramètres possibles peuvent être consultés dans le fichier <settings/settings.php>.

Téléchargement de données optionnelles

Pondérations Wikipedia (Wikipedia rankings)

Le fonctionnement de Nominatim peut être amélioré par le recours aux pondératins Wikipédia qui permettent de mesure l'importance des données osm. Nominatim peut fonctionner sans ces données mais la qualité du résuktat s'en trouve dégradée.

Téléchargement des données

 wget --output-document=data/wikipedia_article.sql.bin http://www.nominatim.org/data/wikipedia_article.sql.bin
 wget --output-document=data/wikipedia_redirect.sql.bin http://www.nominatim.org/data/wikipedia_redirect.sql.bin

La taille cumulée de ces deux fichiers atteint 1,5 GO et ajoute 30 GO à la taille finale de Nominatim sur le disque. La durée d'installation de Nominatim s'en trouve accrue d'une heure environ.

Codes postaux britaniques

Le cas échéant, utile pour les recherches concernant le territoire britannique.

wget --output-document=data/gb_postcode_data.sql.gz http://www.nominatim.org/data/gb_postcode_data.sql.gz

Création des comptes postgres

Compte de l'importateur
sudo -u postgres createuser -s <votre nom d'utilisateur>
Il est possible que le compte existe déjà, postgres vous le dira alors
Compte de l'utilisateur

Le nom d'utilisateur correspond au nom du compte qui doit être utilisé pour finaliser l'installation. Vous devez vous assurer (paramétrage généralement par défaut dans la plupart des distributions) que cet utilisateur peut se connecter à la base de donnée sans mot de passe.

Création de l’utilisateur du site web (PostgreSQL)

createuser -SDR www-data

Utilisateur nécessaire pour l'installation. Si vous souhaitez utiliser le site web avec un autre utilisateur, reportez-vous à la documentation (section Set up the website).

En aucun cas l'importation ne doit être réalisée sous le compte root ou www-data
Paramètres PostgreSQL

Par défaut la base de données PostgreSQL s'installe dans le répertoire racine, au risque de ne plus laisser de place au système. Le répertoire de la base de donnée est le suivant sur mon Ubuntu 14.04 : </var/lib/postgresql/9.3/main> [9.3 pour la version actuelle]. Le répertoire par défaut peut être modifié dans le fichier de configuration </etc/postgresql/9.3/main/postgresql.conf>.

Si aprés la modification du répertoire par défaut des données dans postgresql.conf le serveur PostgreSQL refuse de redémarrer, une solution facile à défaut d'être élégante consiste à déplacer le répertoire </var/lib/postgresql/9.3/main> avec tout son contenu, à vérifier le maintien des droits (propriétaire et groupe "postgres") et à instituer un lien symbolique à partir de </var/lib/postgresql/9.3/> vers l'emplacement réel du répertoire main.

Pour redémarrer le serveur PostgreSQL, deux commandes équivalentes

sudo pg_ctlcluster 9.3 main start

ou bien

sudo service postgres 9.3 main start

Permissions de lecture Nominatim

L'ensemble des fichiers et répertoire doit être accessible en lecture pour le serveur PostgreSQL car certaines fonctions Nominatim Postgres sont intégrées au module C nominatim.so.

Ainsi, pour le cas d'un téléchargement et d'une compilation dans le répertoire <src> du répertoire utilisateur, saisir :

chmod +x ~/src
chmod +x ~/src/Nominatim
chmod +x ~/src/Nominatim/module

Importation et indexation des données OSM

L'importation préalable du fichier mondial ("Planet file") ou d'une extraction (par exemple du site Geofabrik) est nécessaire. Utiliser le format PBF.

La durée de téléchargement peut être longue, ouvrir une instance de terminal peut vous permettre de faire autre chose pendant ce temps.

Une fois le téléchargement terminé, saisir la commande suivante :

 ./utils/setup.php --osm-file <your planet file> --all --osm2pgsql-cache 18000 2>&1 | tee setup.log

Le paramètre –osm2pgsql-cache est optionnel mais fortement recommandé en cas d'importation de l'ensemble des données planétaires. Ce paramètre fixe la taille du cache des noeuds lors de l'importation osm2pgsql. 24 GO sont recommandés pour une importation des données mondiales mais vous pouvez choisir de fixer une valeur inférieure. À adapter à la taille de votre RAM pour éviter le swap.

L'importation peut durer une heure environ pour un petit pays, jusqu'à dix jours pour l'ensemble des données mondiales. Le nombre des messages de log est important, il est recommandé de les examiner avec attention. Il est recommandé également de tester l'importation des données d'un petit pays (par exemple le Luxembourg) avant de lancer l’importation des données mondiales. Sur mon PC, le traitement de la seule région île-de-France a pris plusieurs heures.

Ajout des phrases spéciales

Ajout des codes et des noms de pays à l'index de recherche

Saisissez les instructions suivantes dans le terminal :

./utils/specialphrases.php --countries > data/specialphrases_countries.sql
psql -d nominatim -f data/specialphrases_countries.sql
Marqueurs spécifiques

Si vous souhaitez retrouver des marqueurs particuliers ("amenity") comme par exemple des cafés parisiens, vous de devez importer les phrases spéciales de ce wiki de la manière suivante :

./utils/specialphrases.php --wiki-import > data/specialphrases.sql
psql -d nominatim -f data/specialphrases.sql

Ces opération doivent être répétées de temps en temps pour prendre en compte les mises à jours et compléments du wiki. Il est notamment nécessaire d'effectuer la mise à jour après chaque mise à jour de Nomnatim.

langues

Si vous n'avez pas besoin des phrases pour toutes les langues, éditez utils/specialphrases.php et supprimez en début de fichier les langues non utilisées.

initialisation du site web

Les instructions ci-dessous rendront Nominatim disponible à http://localhost/nominatim.

Création du répertoire

Créez le répertoire du site et assurez vous que les droits en écriture sont ouverts pour l'utilsateur d'installation et en lecture par Apache.

sudo mkdir -m 755 <répertoire racine apache>/nominatim
sudo chown <votre nom d'utilisateur> <répertoire racine apache>/nominatim
Le répertoire racine par défaut d'apache est /var/www/html depuis Ubuntu 14.04, auparavant il s'agissait de /var/www
liens symboliques

Rendez disposnible le répertoire du site web avec les liens symboliques nécessaires :

 ./utils/setup.php --create-website <répertoire racine apache>/nominatim
paramètres de CONST_Website_BaseURL

Vérifier que settings/local.php est configuré avec les valeurs correctes pour CONST_Website_BaseURL : il faut créer un fichier local.php dans le répertoire Nominatim-2.4.0/settings contenant les valeurs suivantes :

@define('CONST_Website_BaseURL', '<répertoire racine apache>/nominatim');

par exemple :

@define('CONST_Website_BaseURL', 'http://localhost/nominatim/');
Si malgré cette modification lors de l'affichage du site web dans votre navigateur, une erreur apparaît car le fichier <search.php> est introuvable vous pouvez tenter la méthode "sauvage" : dans le fichier <nominatim/settings/settings.php> commenter (ajouter un # devant) la ligne :
#@define('CONST_Website_BaseURL', 'http://'.php_uname('n').'/');

et la remplacer (donc insérer en dessous) par :

@define('CONST_Website_BaseURL', 'http://localhost/nominatim/');

Ce n'est pas orthodoxe mais ça peut fonctionner en cas de problème d'arborescence.

Configuration pour utilisation avec Apache

Vérifier que le fichier de configuration Apache contient les valeurs suivantes pour les répertoires :

 <Directory "/var/www/nominatim/">
    Options FollowSymLinks MultiViews
    AddType text/html   .php     
 </Directory>

En d'autres termes il faut insérer ces lignes dans le fichier de configuration /etc/apache2/apache2.conf (adapter le nom du répertoire).

</var/www/nominatim/> doit être remplacé par le nom du répertoire défini lors de la mise en place du site web Nominatim (voir ci-dessus).

Relancer Apache après modification de la configuration (sudo service apache2 start | restart)

Vous pouvez désormais utiliser nominatim

Saisir localhost/nominatim dans votre navigateur internet
saisir une adresse...
Configuration pour utilisation avec Nginx

Pas testé. Voir doc

Mise à jours base de données Nominatim avec Osmosis

Plusieurs méthodes existent, la documentation OpenStreetMap conseille Osmosis et renvoie à la lecture de <./utils/update.php –help> pour obtenir la liste des autres méthodes.

Installation de la nouvelle version d'Osmosis

Téléchargement du binaire

La version d'Osmosis disponible dans les paquets de la plupart des distributions est trop ancienne pour repérer correctement les différences pour la mise à jour. Il est donc conseillé de télécharger le binaire de la dernière version stable sur le site Osmosis puis de le décompresser. Copier alors le binaire dans </usr/local/bin> :

mv osmosis /usr/local/bin/osmosis
Définir la version à utiliser

Indiquer alors à Nominatim d'utiliser cette version d'Osmosis en ajoutant cette cible au fichier settings/local.php:

@define('CONST_Osmosis_Binary', '/usr/local/bin/osmosis');
Configuration des mises à jour

Par défaut, Nominatim est configuré pour réaliser des mises à jour des différences globales à la minute (?? global minutely diffs - mon anglais technique est insuffisant pour ue traduction optimale).

Modification des sources de mise à jour

Pour modifier les sources de mise à jour, le paramétrage est à faire dans le fichier <settings/local.php>. Par exemple, pour utiliser les mises à jours quotidiennes en Irlande à partir de Geofabrik, ajouter les lignes suivantes à <settings/local.php> :

@define('CONST_Replication_Url', 'http://download.geofabrik.de/europe/ireland-and-northern-ireland-updates');
@define('CONST_Replication_MaxInterval', '40000');     // Process each update separately, osmosis cannot merge multiple updates
@define('CONST_Replication_Update_Interval', '86400');  // How often upstream publishes diffs
@define('CONST_Replication_Recheck_Interval', '900');   // How long to sleep if no update found yet

Remplacement du paramétrage antérieur

Il est nécessaire de préalablement effacer le fichier <configuration.txt> puis d'executer la commande setup.php :

rm configuration.txt
./utils/setup.php --osmosis-init
Activation des mises à jour hiérarchiques

Lorsqu'un lieu est modifié dans la base de données, l'ensemble des lieux qui contiennent cet endroit doit être également mis à jour. Ces mises à jour hiérarchiques sont désactivées pas défaut car elles ralentissent l'importation initiale. Il convient d'activer ces mises à jour avec la commande suivante :

 ./utils/setup.php --create-functions --enable-diff-updates
Mise à jour de Nominatim

La commande ci-dessous permet de maintenir à jour en permanence la base de donnée :

 ./utils/update.php --import-osmosis-all --no-npi

Mise à jour des données si la base de données porte sur plusieurs pays : le script ci-dessous devrait faire le job (original ici)

#!/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}
    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
Installation des données Tiger housenumber pour les États-Unis d'Amérique

Aux États-Unis d'Amérique, l'instance Nominatim d'OSM utilise la base de données d'adresses TIGER pour compléter les données sur les numéros de rues qui restent encore incomplètes dans OpenStreetMap. L'ajout des données TIGER est possible après avoir installé la librairie GDAL pour Python. Installation de la librairie GDAL pour Python

sudo apt-get install python-gdal

Téléchargement des données TIGER 2014

Les fichiers à télécharger sont les fichiers EDGES (3 234 fichiers compressés, 11GO au total)

 wget -r ftp://ftp2.census.gov/geo/tiger/TIGER2014/EDGES/

Conversion des données en requêtes SQL (sauvegardées dans data/tiger2011) :

./utils/imports.php --parse-tiger-2011 <répetoire des fichiers tiger edge>
Si vous utilisez la dernière version de développement, utiliser –parse-tiger.

Importation des données dans la base de données Nominatim de votre station de travail

 ./utils/setup.php --import-tiger-data

<note attention> L'importation peut prendre beaucoup de temps, notamment si vous importez l'ensemble des données du pays. </code>

En cas de problème

—- Contributeurs principaux : Zococo.

Basé sur Installation Nominatim par OpenStreetMap.

  • nominatim.1436128535.txt.gz
  • Dernière modification: Le 05/07/2015, 22:35
  • par zococo