- Shell 86.5%
- PowerShell 13.5%
Overpass
Tentative d'installation de l'API Overpass sur un PC Windows 11
- Docker
- WSL2
- Hyper-V
Objectifs
Avoir les interrogations pour mes scripts "transport bus" en local.
Architecture de l'API
cf dev.overpass-api L'API se compose de plusieurs composants:
- initialisation de la base de données;
- actualisation de la base de données;
- interrogation de la base de données.
Un serveur web (apache/nginx) avec fonctionnalité cgi permet d'offrir le service en http.
Mes scripts
Écrits en bash, et découpés par grandes fonctionnalités:
- misc.sh: fonctions génériques
- ubuntu24.sh: installation ubuntu
- overpass.sh: orchestre
- overpass_src.sh: à partir des sources
- overpass_docker.sh: avec l'image docker
- overpass_nginx.sh: le serveur web nginx
- overpass_turbo.sh: le service web overpass turbo
Docker
La solution la plus simple à priori ! le site de référence: https://github.com/wiktorn/Overpass-API
Les applicatifs sont dans /app/bin Le fichier /db/changes.log peut expliquer certains comportements !
Docker peut fonctionner dans:
- Docker Desktop
- WSL2
- Hyper-V/VM
Hyper-V/VM
Avec la VM ubuntu 24.04 cf script overpass_docker.sh
image wiktorn/overpass-api
Cette image est fonctionnelle et complète (serveur nginx). Le test avec Monaco est très rapide.
Les metadonnées ne sont pas disponibles: uid, user, changeset ...
Les requêtes area ne fonctionnent pas. Sur la Bretagne, la consomation disque reste raisonnable
docker@overpass:~$ du -h .
4.0K ./db/diffs
12K ./db
12K ./docker_db/db/rules
5.0G ./docker_db/db
4.0K ./docker_db/diffs
5.3G ./docker_db
5.3G .
docker@overpass:~$
Hyper-V/VM
Installation avec l'iso Ubuntu Server https://ubuntu.com/download/server : Ubuntu 24.04.4 LTS
configuration du serveur avec script ubuntu24.sh puis script overpass_src.sh puis script overpass_nginx.sh La consomation disque est plus importante 35Go versus 5Go:
overpass@overpass:~/overpass$ du -h .
12K ./rules
16K ./templates
35G ./db
5.8M ./cgi-bin
6.5G ./data
14M ./bin
41G .
overpass@overpass:~/overpass$
Il est possible d'interroger directement la base:
overpass@overpass:~/overpass$ $EXEC_DIR/osm3s_query --db-dir=db --request="node(1425716368);out meta;"
runtime remark: Timeout is 180 and maxsize is 536870912.
<?xml version="1.0" encoding="UTF-8"?>
<osm version="0.6" generator="Overpass API 0.7.62.11 87bfad18">
<note>The data included in this document is from www.openstreetmap.org. The data is made available under ODbL.</note>
<meta osm_base=""/>
<node id="1425716368" lat="48.1142551" lon="-1.6163230" version="25" timestamp="2025年10月29日T16:02:56Z" changeset="0" uid="0" user="">
<tag k="bench" v="yes"/>
<tag k="bin" v="yes"/>
<tag k="gtfs:stop_id:FR-BRE-Star" v="6-2015"/>
<tag k="gtfs:stop_name:FR-BRE-Star" v="Hublais"/>
<tag k="highway" v="bus_stop"/>
<tag k="lit" v="yes"/>
<tag k="name" v="Hublais"/>
<tag k="public_transport" v="platform"/>
<tag k="shelter" v="yes"/>
<tag k="tactile_paving" v="no"/>
<tag k="wheelchair" v="yes"/>
</node>
</osm>
overpass@overpass:~/overpass$
overpass@overpass:~/overpass$ $EXEC_DIR/osm3s_query --db-dir=db --request="[out:csv(::type, ::count)];node[highway=bus_stop];out count;"
runtime remark: Timeout is 180 and maxsize is 536870912.
@type @count
count 20898
overpass@overpass:~/overpass$
Performances
J'utilise wrk pour ces tests dans le script overpass_perf.sh La config
cat <<'EOF' > perf.lua
wrk.method = "POST"
wrk.body = [[
[out:json];
node["amenity"="restaurant"](48.85,2.34,48.86,2.35);
out;
]]
wrk.headers["Content-Type"] = "application/x-www-form-urlencoded"
EOF
puis le test
wrk -t4 -c100 -d30s http://localhost:12345/api/interpreter -s perf.lua
Sur la Bretagne
Running 30s test @ http://localhost:12345/api/interpreter
4 threads and 100 connections
Thread Stats Avg Stdev Max +/- Stdev
Latency 789.46ms 69.62ms 852.27ms 97.76%
Req/Sec 36.16 23.10 101.00 57.65%
3754 requests in 30.05s, 1.64MB read
Requests/sec: 124.94
Transfer/sec: 55.88KB
Sur la France
Running 30s test @ http://localhost:12345/api/interpreter
4 threads and 100 connections
Thread Stats Avg Stdev Max +/- Stdev
Latency 1.09s 442.79ms 1.67s 50.00%
Req/Sec 2.87 2.01 10.00 71.08%
308 requests in 30.05s, 27.76MB read
Socket errors: connect 0, read 0, write 0, timeout 292
Requests/sec: 10.25
Transfer/sec: 0.92MB
l'espace disque Bretagne 5.5G, France 29G