Je développe un démonstrateur qui est comme un jeu 2D dans lequel s’affrontent des attaquants (avions de chasse, hélicoptères, drônes armés) et
des défenseurs terrestres armés de missiles.
Pour le rendre plus réaliste, j’aimerais utiliser les fonds de carte d’openstreetmap comme fond d’image du jeu.
Je n’ai pas besoin des résolutions les plus fines mais d’un mappage de la France depuis une échelle assez large, image comprenant toute la France,
jusqu’à une échelle avec des images de 20km par 20km, au-dessous les avions défileraient trop vite sur l’écran.
Par ailleurs, aux plus petites échelles, je n’ai pas besoin de tous les détails.
Puisque mon objectif n’est pas ici de présenter des cartes, il ne faut pas
non plus que trop de détails rendent peu lisibles le démonstrateur.
Est-il possible de récupérer un mappage de la France en png comme cela ?
à différentes échelles ? et éventuellement en enlevant certains détails ?
A partir du moment où tu prends des données brutes et que tu fabriques ton PNG, tu es maître de ce qui est visible ou pas.
La stack classique de génération de fond de carte est peut être un peu trop lourde pour ton besoin, mais elle est documentée ici: Serving Tiles – Switch2OSM
Ce n’est pas la seule option, c’est juste la plus classique.
J’ai téléchargé les données brutes « France » depuis geofabrik et je les ai importées dans une base de donnée.
Avant de générer les tuiles, j’aimerai configurer le process pour qu’il enlève certains détails des cartes : tous les noms de lieux, de route et éventuellement d’autres choses (j’affinerai en fonction du rendu).
Mais je ne sais pas où configurer cela. Savez-vous où je dois intervenir pour
filtrer certains détails ? dans mapnik ?
Donc ça revient à ce que je décrivais sur switch2osm.
C’est au niveau de la feuille de style (le XML pour mapnik) qu’on choisit ce qu’on veut faire apparaître sur la carte.
Ce XML n’est pas évident à écrire, donc on le génère le plus souvent à partir d’un autre format, le cartocss.
Un outil bien adapté pour mettre ça au point c’est kosmtik.
Tu peux partir d’un style existant, et retirer les couches qui font apparaître les noms. C’est sûrement le plus simple.
J’ai installé kosmtik sur debian bulleye, cloné le dépôt openstreetmap-carto,
puis j’ai démarré kosmtik avec le project.mml du dépôt. Le projet pointe bien
sur la bonne base de donnée pgsql
rien ne s’affiche, il y a l’erreur :
Postgis Plugin: ERREUR: la colonne « tags » n’existe pas
LINE 9: …ASE WHEN « natural » IN (‹ mud ›) THEN « natural » ELSE tags->'wet…
Il faut voir comment la base a été importée par osm2pgsql et si « tags » manque, c’est sûrement que les tags supplémentaires n’ont pas été stockés en hstore.
C’est l’option --hstore qui doit manquer à l’import.
C’est un puzzle à plusieurs pièces, elle ne s’emboitent que si tout est d’équerre sur chaque étape.
Effectivement, je fais l’expérience que le chemin vers ses propres tuiles
est un peu pénible : entre les options à ne pas oublier, la mise en place d’une base de données postgre, kosmtik qui ne voulait pas s’installer avec « npm » (j’ai dû cloner le dépôt), … j’ai pas mal galéré.
Mais au moins je peux compter sur vous et ce forum, je vous en remercie.
Une fois au bout, je posterai un plan détaillé de tout ce que j’ai fait
pour générer ses propres tuiles, les wiki sur le sujet sont trop peu précis pour qui part de zéro. C’est bien dommage car c’est très sympa de pouvoir générer sa propre carto.
par contre, kosmtik est très lent, il faut parfois plusieurs minutes pour que les tuiles apparaissent
quand je zoome. Est-ce normal ?
J’ai l’impression que kosmtik passe surtout beaucoup de temps à interroger la base de données.
Pourtant, celle-ci se trouve sur un disque SSD, ça devrait être très rapide.
C’est variable en fonction des niveaux de zoom, de la complexité des requêtes et de celle de la feuille de style.
C’est un outil pour développer les styles, pas pour naviguer et oui, certaines metatuiles (8x8) peuvent prendre plusieurs minutes de calcul. C’est pour cela qu’il y a un cache sur les serveurs, car on ne peut pas tout fournir en temps réel !