Overpass

De Wiki de Geonov

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

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

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.

1.6.2 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 :

/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/>

1.7 Ressources

https://wiki.openstreetmap.org/wiki/Overpass_API/Installation