OpenArdenneMap
Une carte pour l'Ardenne
Install / Use
/learn @nobohan/OpenArdenneMapREADME
OpenArdenneMap
Une carte pour l'Ardenne
Wander local, think global

:world_map: Demo tile server :world_map:
:compass: Some maps ready to print :compass:
Some blog posts about the OpenArdenneMap semestrial releases here.
::: ENGLISH BELOW :::
A propos
OpenArdenneMap est un style de carte personnalisé basé sur OpenStreetMap. Il se fonde sur le style OSMBright et s'inspire, entre autres, de OpenTopoMap. Plus d'infos dans cet article ici
Installation
Par image docker
Il y a maintenant une image docker et un fichier docker-compose pour installer la pile logicielle permettant de démarrer le projet. Voir dans le dossier ./docker/
En installant la pile logicielle
Pile logicielle
Il est conseillé d'utiliser un environnement virtuel Python. Les librairies/logiciels suivants sont installés:
- mapnik
- python-mapnik
- osm2pgsql ou imposm
- carto
- postgreSQL + PostGIS 2.5.4+
Notez que certaines nouvelles fonctions de postgis sont utilisées (ST_OrientedEnvelope), donc il vaut mieux installer un postgis de version >2.5.4 pour profiter de toutes les fonctionnalités du style de la carte.
Puis:
- cloner ou télécharger les fichiers OpenArdenneMap
- télécharger les données OSM en fichier .osm (avec JOSM) ou bien en .pbf (par ex. sur download.geofabrik.de)
Mise en place de la base de données postgresql
Lancer le script create-db.sh. Il faut l'éditer auparavant selon le chemin de votre environnement virtuel.
Usage
OpenArdenneMap fonctionne avec les importateurs imposm et osm2pgsql. Les styles et le fichier de projet propres à chaque importateur se trouvent dans leurs dossiers respectifs. À noter que, grâce à sa meilleure façon de gérer les multipolygones, les développement les plus récents se font avec osm2pgsql, le fichier de projet avec imposm n'est plus mis à jour.
OpenArdenneMap a été originellement développé pour le logiciel de cartographie Mapnik. Depuis 2023, il est aussi disponible avec le logiciel QGIS. Avec QGIS, le style est simplement disponible au travers d'un fichier de projet QGIS (qgis/oam.qgs), fonctionnant avec la même base de données que Mapnik.
Pour changer les données OSM (import dans une db)
Avec osm2pgsql, éditer le fichier osm2pgsql/OpenArdenneMap.style.
Avec imposm, éditer le fichier imposm/imposm-mapping.py.
Données externes
Le fichier project.mml contient des références vers des fichiers externes qui ne sont pas rendus disponibles dans ce dépôt: un fichier d'ombrage du relief (hillshade.tif) et un fichier shapefile de courbes de niveaux (contour.shp). Ces données doivent être projetées en EPSG:3857.
Pour la Belgique, on peut télécharger un "hillshade" et des courbes de niveaux respectivement sur http://opendata.champs-libres.be/hillshade_belgium.zip and http://opendata.champs-libres.be/beautiful-contour-belgium.zip. (Cfr cet article de blog pour le contexte: https://www.champs-libres.coop/blog/post/2020-06-24-beautiful-hillshade-belgium/)
Pour d'autres parties du monde, voir par exemple cette recette pour créer des hillshade et des courbes de niveaux.
Échelle
Originellement, le style a été développé pour des impressions papier à haute résolution (300 dpi) à une échelle correspondant au niveau de zoom 16. Actuellement, le style est compatible pour les niveaux de zoom de 10 à 20. En dehors de ces niveaux, utiliser ce style peut donner lieu à des fortes superpositions d'éléments.
Pour changer le style de la carte
Éditer les fichiers mss en utilisant le language cartoCSS et utiliser carto pour générer le fichier mapnik OpenArdenneMap.xml:
carto osm2pgsql/project.mml > osm2pgsql/OpenArdenneMap.xml
Pour générer la carte, faire (avec Python 3):
python makeMap.py
Attention, comme dit plus haut, des données externes sont requises!
Le tout:
carto osm2pgsql/project.mml > osm2pgsql/OpenArdenneMap.xml && python makeMap.py
ou bien (avec imposm):
carto imposm/project.mml > imposm/OpenArdenneMap.xml && python makeMap.py
Mettre à jour la base de données avec osm2pgsql
Voici la commande pour mettre à jour avec osm2pgsql. La table de sélection des tags OSM est dans le fichier OpenArdenneMap.style. Ce fichier est légèrement adapté du fichier style d'osm2pgsql par défaut.
osm2pgsql -c -G --slim -d osmpg_db -S osm2pgsql/OpenArdenneMap.style --extra-attributes osm-files/extract.osm
Mettre à jour la base de données avec imposm
Voici les commandes pour utiliser imposm avec la table de correspondance renseignée dans imposm-mapping.py. Utiliser un shapefile e.g., map_extent.shp pour resteindre l'import à une zone:
imposm --proj=EPSG:3857 --read belgium-latest.osm.bz2 --limit-to map_extent.shp -m imposm-mapping.pyimposm -U osm -d osm -m imposm-mapping.py --write --optimize --deploy-production-tables --limit-to map_extent.shpimposm -d osm --remove-backup-tables
Au lieu de processer un gros fichier tel que belgium-latest.osm.bz2, vous pouvez télécharger directment votre zone d'intérêt avec JOSM. Sauver les données sous un fichier .osm (e.g., extract.osm) et l'utiliser avec imposm. C'est beaucoup plus rapide!
imposm --proj=EPSG:3857 --read osm-files/extract.osm -m imposm-mapping.pyimposm -U osm -d osm -m imposm-mapping.py --write --optimize --deploy-production-tablesimposm -d osm --remove-backup-tables
Le tout:
imposm --proj=EPSG:3857 --read osm-files/extract.osm -m imposm/imposm-mapping.py --overwrite-cache && imposm -U osm -d osm -m imposm/imposm-mapping.py --write --optimize --deploy-production-tables && imposm -d osm --remove-backup-tables
Changements apportés à OSMBright
OSMBright est un style par défaut pour les données d'OSM. Mais il est principalement adapté aux milieux urbains. Ce style a été profondémment modifié. Voici quelques exemples de modifications.
1) Simplification
Pour le moment, ce dépôt n'est pas destiné à générer des tuiles à différents niveaux de zooms, mais plutôt de générer de grandes cartes papier à imprimer, à une haute résolution / grande échelle. Le style d'OSMBright a donc été fortement simplifié:
- Pas de niveaux de zoom
- Pas de couches généralisées pour les petites échelles.
2) Ajouts de nouveaux éléments
2.1) En ajoutant des champs à une table existante
- Ajouter le nom du champ + le type de champ (boolean, numeric, string) à une table existante.
fields = (
...
('surface', String()),
('tracktype', String())
)
- Ensuite, ajouter le nom du champ dans
project.mmldans la couche où ce champ est utilisé.
"table": "( SELECT geometry, type, tunnel, bridge, surface, tracktype, access, ...
- Enfin, définir un style particulier pour la propriété "tracktype" dans le bon fichier mss.
[tracktype='grade1'] { line-width: @rdz16_min / 2; }
2.2) En ajoutant une nouvelle table
- Vous pouvez créer une nouvelle table avec des étiquettes OSM et une sélection de champs dans
imposm-mapping.py. Voir par exemple la table nommée "linearfeatures" avec les étiquettes "man_made=embankment" et "embankment=yes". Noter la virgule à la fin des valeurs des clés, même avant de fermer la parenthèse!
linearfeatures = LineStrings(
name = 'linearfeatures',
mapping = {
'man_made': (
'embankment',
),
'embankment': (
'yes'
),
},
)
- Ensuite, ajouter une couche dans
project.mml:
{
"Datasource": {
"dbname": "osm",
"extent": "-20037508.34,-20037508.34,20037508.34,20037508.34",
"geometry_field": "geometry",
"id": "linear_features",
"key_field": "",
"srs": null,
"table": "( SELECT geometry, type\n FROM osm_linearfeatures\n) AS data",
"type": "postgis"
},
"class": "",
"geometry": "linestring",
"id": "linear_features",
"name": "linear_features",
"srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
"srs-name": "900913",
"status": "on"
},
- Enfin, définir un style dans l'un des fichiers mss.
#linear_features: { ... }
3) Ajout d'une troisième couche à certaines routes
Avec Mapnik, comme dans beaucoup de logiciels cartographiques, on obtient des symbologies complexes pour les routes en superposant plusieurs couches avec différentes épaisseurs. Par exemple, une route rendue avec une bande blanche bordée par 2 lignes noires est obtenue en superposant une deuxième couche avec une fine ligne blanche au-dessus d'une première couche constituée d'une large bande noire.
Pour afficher des symboles encore plus complexes, on peut avoir besoin d'une troisième couche. Dans OpenArdenneMap, les chemins principaux (tracktype=1) sont rendus avec une ligne alternant le rouge et le blanc bordé par 2 lignes noires. Cette couche a des propriétés cartoCSS sous #roads::top.
4) Personnalisation du style cartographique
Bien sûr, outre les additions, le style de la carte a été fortement modifié. Les principales modifications sont:
- Augmentation des tailles de police
- Choix de couleurs
- Création de symboles
- Création de patterns
- Rotation automatique de certains éléments (cfr https://blog.champs-libres.coop/carto/2018/12/18/openardennemap.html)
Courbes de niveaux
NOTE: Les fichiers de courbes de niveaux ne sont pas présents sur ce dépôt pour une question de taille! Néanmoins, voici ci-dessous la recette pour leur génération. Voir aussi cet article de blog avec un lien pour télécharger des courbes de niveaux pour la Belgique.
Related Skills
node-connect
347.6kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
108.4kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
347.6kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
347.6kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
