Différences entre les versions de « Overpass »

De Wiki de Geonov
Ligne 128 : Ligne 128 :
=== Test ===
=== Test ===


Pour vérifier que l'API trouve bien les données, on exécute "osm3s_query" et on entre une requête. "Ctrl+D" pour sortir :
Une fois le clonage terminé, on vérifie que l'API trouve bien les données en exécutant "osm3s_query" et en
entrant une requête :  


<syntaxhighlight lang="bash" gutter="false" toolbar="false">
<syntaxhighlight lang="bash" gutter="false" toolbar="false">
Ligne 134 : Ligne 135 :
<query type="node"><bbox-query n="51.0" s="50.9" w="6.9" e="7.0"/><has-kv k="amenity" v="pub"/></query><print/>
<query type="node"><bbox-query n="51.0" s="50.9" w="6.9" e="7.0"/><has-kv k="amenity" v="pub"/></query><print/>
</syntaxhighlight>
</syntaxhighlight>
"'''Ctrl+D'''" pour sortir.


== Ressources ==
== Ressources ==

Version du 19 avril 2021 à 13:34

Overpass est une API permettant d'interroger des données OSM.

1 Mise en place d'un serveur Overpass (Debian)

Ce qui suit indique la méthodologie pour mettre en place une API Overpass sur un serveur Debian avec les données OSM mondiales et historiques ("ATTIC") mises à jour une fois par heure.

Les données mondiales sont utilisées car les tests sur un export de données (France) n'ont pas été concluants. Une mise à jour à l'heure a été décidée plutôt qu'à la minute pour soulager le serveur.

1.1 Pré-requis

  • Un serveur avec un disque d'au moins 500 Go, de préférence un SSD, et au moins 8 Go de mémoire RAM.
  • Un nom de domaine pointant vers le serveur.

1.2 Création d'un utilisateur système

sudo adduser overpass --system --shell /bin/bash --group

1.3 Création de répertoires

sudo mkdir -p "/opt/osm-3s/database/"
sudo mkdir "/opt/osm-3s/replicate/"
sudo mkdir "/opt/osm-3s/logs/"
sudo chown overpass:overpass -R /opt/osm-3s

1.4 Installation d'Overpass

1.4.1 Téléchargement

sudo wget https://dev.overpass-api.de/releases/osm-3s_v0.7.56.9.tar.gz -P /usr/local/src/
sudo tar -xvf /usr/local/src/osm-3s_v0.7.56.9.tar.gz -C /usr/local/src/
sudo chown overpass:overpass -R /usr/local/src/osm-3s_v0.7.56.9

1.4.2 Compilation et installation

cd /usr/local/src/osm-3s_v0.7.56.9
sudo -u overpass ./configure CXXFLAGS="-O2" --prefix=/opt/osm-3s/osm-3s_v0.7.56.9
sudo apt-get install -y g++ make expat libexpat1-dev zlib1g-dev
sudo -u overpass make
sudo -u overpass make install

1.5 Installation d'Apache

1.5.1 Installation

sudo apt-get install -y apache2 libapache2-mod-auth-openidc python-certbot-apache
sudo a2enmod cgid
sudo a2enmod ext_filter
sudo a2enmod headers
sudo a2enmod setenvif
sudo a2enmod rewrite

1.5.2 Configuration

Fichier de configuration "/etc/apache2/sites-available/000-default.conf" :

<VirtualHost *:80>
	ServerName nom_de_domaine
	ServerAdmin mail_de_contact
	DocumentRoot /var/www/html
	DirectoryIndex index.html interpreter
	ExtFilterDefine gzip mode=output cmd=/bin/gzip
	ScriptAlias /api /opt/osm-3s/osm-3s_v0.7.56.9/cgi-bin/
	LogLevel error
	ErrorLog ${APACHE_LOG_DIR}/error.log
	CustomLog ${APACHE_LOG_DIR}/access.log combined
	<Directory "/opt/osm-3s/osm-3s_v0.7.56.9/cgi-bin/">
		AllowOverride None
		Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
		Require all granted
	</Directory>
</VirtualHost>

Note : le domaine "nom_de_domaine" lié à l'adresse IP du serveur doit être configuré dans les DNS du domaine.

1.5.3 Service

Activation et redémarrage du service :

sudo systemctl enable apache2
sudo systemctl restart apache2

1.5.4 Pare-feu (Nftables)

inet filter input tcp dport {80,443} ct state new,established accept
inet filter output tcp sport {80,443} ct state established accept

1.5.5 Certificat Let's Encrypt

sudo certbot -d nom_de_domaine --apache -n --agree-tos --email mail_de_contact
sudo certbot enhance -d nom_de_domaine -n --redirect --apache --cert-name nom_de_domaine

Note : le renouvellement automatique est mis en place dans "/etc/cron.d/certbot".

1.6 Données OSM

Avant de pouvoir utiliser l'API, il faut charger les données OSM. La méthode la plus rapide (plusieurs heures tout de même) et la plus complète est de cloner les données à l'instant T.

1.6.1 Clonage des données

su - overpass -c 'nohup /opt/osm-3s/osm-3s_v0.7.56.9/bin/download_clone.sh --db-dir=/opt/osm-3s/database --source=http://dev.overpass-api.de/api_drolbr/ --meta=attic > /opt/osm-3s/logs/download_clone.file &'

Lorsque le clonage est terminé, le répertoire "/opt/osm-3s/database" pèse environ 326 Go.

"nohup" permet d'exécuter la commande en tâche de fond (la session peut être fermée). Le fichier "/opt/osm-3s/logs/download_clone.file" contiendra les messages renvoyés par la commande.

1.6.2 Test

Une fois le clonage terminé, on vérifie que l'API trouve bien les données en exécutant "osm3s_query" et en entrant une requête :

/opt/osm-3s/osm-3s_v0.7.56.9/bin/osm3s_query --db-dir=/opt/osm-3s/database
<query type="node"><bbox-query n="51.0" s="50.9" w="6.9" e="7.0"/><has-kv k="amenity" v="pub"/></query><print/>

"Ctrl+D" pour sortir.

1.7 Ressources