-
Notifications
You must be signed in to change notification settings - Fork 30
osm2pgsql
https://osm2pgsql.org/doc/install.html
sudo apt install osm2pgsql
https://osm2pgsql.org/doc/manual-v1.html#preparing-the-database
✅ déjà fait chez moi
sudo -u postgres createuser osmuser
sudo -u postgres createdb --encoding=UTF8 --owner=osmuser osm
sudo -u postgres psql osm --command='CREATE EXTENSION postgis;'
sudo -u postgres psql osm --command='CREATE EXTENSION hstore;'
✅
astuce pour trouver où est la conf :
psql -U postgres -c 'SHOW config_file' ou sudo -u postgres psql -c 'SHOW config_file'
modifier les valeurs comme indiqué ici
puis redémarrage sudo service postgresql restart
récupération de bretagne-latest.osm.pbf chez geofabrik : 300 Mo
lancement de l'import (en mode création = pas d'update possible après)
osm2pgsql -U etienne -d osm -c bretagne-latest.osm.pbf
l'import prend 1'58.
Processed 33164254 nodes in 3s - 11055k/s
Processed 4335895 ways in 26s - 167k/s
Processed 51667 relations in 10s - 5k/s
La base fait 2355 MB (cohérent avec les exemples donnés ici)
les styles sont là : /usr/share/osm2pgsql/default.style mais à copier dans un dossier sur lequel on a les droits
# With --hstore-match-only the behavior for tags is the same, but objects are
# only kept if they have a non-NULL value in one of the columns.
donc il faut faire la liste de tous les tags qu'on veut garder. Un objet qui n'a aucun des tags listés n'est pas conservé
Pour supprimer les objets qui n'ont que le tag buiding tout en gardant tout le reste, il faut :
- lancer la commande avec
--hstore➡️ ça va mettre tous les tags non listés explicitement dans la colonne hstore) - et avec
--hstore-match-only➡️ pour supprimer les éléments qui n'ont aucun tag listé explicitement - et avoir commenté la ligne
#buildingdans le fichier de style ➡️ pour que building ne soit pas listé explicitement
osm2pgsql -U etienne -d osm -c -S cartes-match-only.style --hstore --hstore-match-only bretagne-latest.osm.pbf
En mode match-only
- tous les objets : 2519 MB (avec option --hstore pour les garder tous même si pas de tag dans la liste)
- que les amenity : 58 MB
- que les leisure : 29 MB
- tous les tags listés dans
default.style: 2509 MB - tous les tags listés dans
default.stylesauf building (élimine ceux qui n'ont que buiding et pas les autres tags listés) : 1392 MB (-45%) - tous les tags listés dans
default.stylesauf building et les 3 addr:** : 1263 MB (-50%) - tous les tags listés dans
default.stylesauf building et highway : 1274 MB (-50%) - les tags présents dans
moreCategories.yaml(amenity, diet, theme, shop, leisure, landuse, attraction, emergency, healthcare, tourism, natural, public_transport, bicycle_parking, parking_space, sport, cycling, office, recycling ) : 305 MB (-88%) - les tags de
moreCategories.yaml+ highway : 606 Mb ➡️ les highway pèsent 300 MB soit 12% ❌ - les tags de
moreCategories.yaml+ place, historic, aerialway, aeroway : 332 MB - les tags de
moreCategories.yaml+ place, historic, aerialway, aeroway, man_made, barrier, bicycle : 393 MB - les tags de
moreCategories.yaml+ les même + boundary : 762 MB ➡️ les boundary font 369 MB soit 15% ❌ - les tags de
moreCategories.yaml+ les même + building : 1493 MB ➡️ les building font 1100 MB soit 45% ❌ - les tags de
moreCategories.yaml+ les même + route : 455 MB ➡️ les route font 62 MB soit 2,5% ✅ - les tags de
moreCategories.yaml+ les même + railway : 404 MB ➡️ les railway font 11 MB ✅ - les tags de
moreCategories.yaml+ les même + surface : 508 MB ➡️ les surface font 115 MB soit 4,6% (sans doute commun avec highway) - les tags de
moreCategories.yaml+ les même + power et power_source : MB ➡️ les power font 36 MB ✅ - et si on enlève les natural ? : il reste 286 MB ➡️ les natural font 107 MB soit 4,3% ...
Le fichier .osm.pbf fait 4,7 Go 🥵 mais le traitement prend 5 min.
- les tags présents dans
moreCategories.yaml: 5 Go (cohérent avec cas Bretagne)
- clés: https://taginfo.geofabrik.de/europe:france/keys
- tags : https://taginfo.geofabrik.de/europe:france/tags
Sources d'inspiration pour identifier les tags utiles à garder :
- moreCategories.yaml
- schéma OMT : https://openmaptiles.org/schema/#poi
- clés les plus classiques en Enrope : https://taginfo.geofabrik.de/europe/keys
- liste des map features classiques : https://wiki.openstreetmap.org/wiki/Map_features
Et voici le résultat : (tableau complet ici : https://lite.framacalc.org/wafkmc7t18-ad6k )
- Les trop gros, qu'on doit ne pas inclure si on veut une base légère

- Les déjà inclus (sauf 2 lourds) : la BDD fait
- 95 MB pour la Bretagne (sur 2500 MB si on importe tout)
- 1,5 GB pour la France (extrapolation cohérente)

- Ceux qu'il serait bien d'inclure aussi (présents dans les tuiles, ou grands classiques, ou qu'on veut mettre en avant). En les rajoutant la BDD pèse :
- 245 MB pour la Bretagne
- 3,7 GB pour la France => deviens 4,7 GB en incluant des metadata avec --extra-attributes

- encore d'autres que j'avais listés mais qui alourdissent vraiment fortement la base. Avec ceux là en plus, on passe à :
- 777 MB pour la Bretagne
- 10 GB pour la France (mais la base fait jusqu'à 25 GB pendant le calcul)
- x7 pour l'Europe ? (si la France est représentative de l'Europe)
