Forum OSM France

Rendu de tuiles sur mon serveur, je suis un peu perdu

Salut à tous,
Je viens de monter un serveur OSM en suivant ce tuto. Super, ça marche bien mais j’ai le rendu OSM « classique » et c’est la que ça se complique.
Je souhaiterai sur mon propre serveur avoir un rendu de tuile genre le style light de https://openmaptiles.org/styles/. En tous cas qq chose de très pastel et de léger, avec peu de détails.
De ce que je comprend, je dois modifier mon fichier mapnik.xml et la, je ne trouve que des trucs hyper compliqués.
Les styles présentés sur OpenMapTile semblent renvoyer tous vers MapBox qui est payant au bout d’un moment,
Bref …
Y aurait il qq part une bibliothèque (free) avec plein de projets mapnik.xml (ou cartoCSS) différents pour pleins de rendus différents et dans laquelle je pourrais choisir le style qui se rapproche le plus de mon besoin sans avoir besoin d’apprendre tout le langage.
N’hésitez pas si vous avez d’autres suggestions (sachant que j’ai réellement besoin de mon propre serveur car mon utilisation finale est offline)
Merci d’avance pour votre aide,

Antoine

Ce que tu as installé c’est une stack de rendu image (raster) qui utilise la librairie mapnik (navigateur - apache - mod_tile - renderd - mapnik - postgresql - osm2pgsql - données OSM).

OpenMapTiles c’est une stack de rendu vectoriel… le rendu se fait sur le client, pas sur le serveur. et les feuilles de style raster et vecteur sont totalement différentes.

Donc là il faut générer un fichier XML pour mapnik… un truc assez complexe à créer à partir de zéro, mais on a un moyen bien plus propre pour le générer automatiquement, c’est le cartocss, une sorte de css adapté à la carto.

Ecrire un style en cartocss est bien plus « humain », et des outils permettent de générer automatiquement le XML que mapnik attend.

kosmtik est un des outils libre qui permet de visualiser rapidement les modification qu’on apporte à un style cartocss. C’est ce que j’utilise pour créer et maintenir différents styles de rendu (dont le rendu « FR »).

Tu lances kosmtik et il permet de se connecter en local depuis un navigateur pour avoir une visualisation du résultat (et un peu plus que ça). On édite les fichiers source cartocss avec l’éditeur de texte de son choix et dès qu’une modif est enregistrée, kosmtik regénère le XML mapnik et montre le résultat.
On peut ensuite enregistrer ce XML et le donner à manger à renderd / mod_tile / apache pour servir les tuiles en masse…

Il y a différents style en cartocss qui sont libres et réutilisables. Ceci évite de partir de zéro.

Exemples:

Hello cquest, Hello tous,

Merci pour ton aide. J’ai essayé pas mal de trucs mais je n’arrive pas à grand chose. J’ai installé Kosmtik dans un container docker (les autres méthodes ont foiré avec des bugs de compatibilité de node) mais une fois que ça tourne bien, je ne sais pas quoi faire pour modifier le format de rendu des tuiles. J’ai bien trouvé le format de cartoCSS mais bon je n’arrive pas à l’appliquer car je ne sais pas sur quel fichier agir (à l’intérieur ou à l’extérieur de docker) … … et puis je pensais que Kosmtik était genre wysiwyg et je ne trouve pas beaucoup d’aide à l’utilisation.

Bref, tout ceci m’a l’air plutôt compliqué (ou en tous cas peu documenté et avec peu de Tuto, c’est la vie !) donc peut etre vaut il mieux que je vous explique mon besoin, dès fois que la méthode que j’ai choisi ne soit pas la bonne ou pas la plus simple.
Donc voila, j’ai besoin de générer une map offline qui couvre le monde entier. Niveau de Zoom de 1 à 12 mini (13 ou 14 serait bien).
J’ai besoin que le rendu de cette map soit light (le style piano que tu proposais dans pianoforte serait très bien) car je rajouterai d’autres layers par dessus (que je construirai moi même en temps réel)
L’affichage final se fait dans Qt, grace à un composant QML qui fonctionne très bien avec les tuiles OSM
Pour cela, j’ai donc imaginé 2 solutions :

  • Créer un serveur OSM offline (sur une VM par exemple) et le faire tourner en temps réel. Avantage : ça prend moins de place sur mon disque dur, c’est souple si j’ai besoin de changer de rendu. Inconvénient : c’est plutôt consommateur de ressources quand il s’agit de faire le rendu des tuiles et j’ai donc moins de ressources pour mon appli principale
  • Télécharger l’ensemble des tuiles du monde entier du level 1 à 13 directement dans le bon rendu. Avantage : pas de perfo prises pour le rendu final vu qu’il est déjà fait. Inconvénient : ça va me prendre qq centaines de giga voire un terra de stockage … mais bon, le stockage n’est pas un problème. Note : mon composant QML d’affichage gère très bien quand les tuiles sont déjà présentes sur le disque dur …

C’est donc cette deuxième option que j’avais choisi mais comme je ne comptais pas surcharger les serveurs distants (qui ne m’appartiennent pas en plus) en téléchargeant et en demandant le rendu de ces dizaines de milliers de tuiles, j’avais en tête de monter mon propre serveur (solution 1 donc) et de télécharger toutes les tuiles depuis celui ci (en le faisant tourner plusieurs jours si besoin).

Voila … mais peut etre qu’il y a d’autres solutions plus simple à base de maptile ou autre … la je dois dire que je ne m’attendais pas à trouver si peu d’infos sur le sujet

Si vous avez des idées pour m’aider je suis preneur …

Merci encore pour votre aide,

Bonne soirée,

Antoine

Il faudrait peut être que tu expliques l’ensemble de ce que tu veux faire… le serveur de tuiles est peut être nécessaire ou pas du tout !

Pré-générer des tuiles… peut-être mais sur quelle emprise et pour quels niveaux de zoom ?

Charger les tuiles zoom 1 à 13… les zoom jusqu’à 12 ça pèse environ 20Go, tu peux rajouter environ 12 Go pour le zoom 13, c’est jouable.

Les tuiles piano/forte sont dispo sur tiles.quaidorsay.fr


Pour la partie cartocss, ce n’est pas WYSIWYG, ce sont des sources en texte, qu’on modifie pour obtenir le rendu qu’on désire et komtik redessine une nouvelle version à chaque changement des sources.

Je n’ai jamais utilisé kosmtik via docker, par contre je l’installe avec la dernière LTR de nodejs (v16 via nvm) et je n’ai pas de problème sous Ubuntu LTR (20.04).

Si tu as utilisé GitHub - Joxit/docker-kosmtik: Light docker for ksomtik https://github.com/kosmtik/kosmtik, il faut passer le le chemin d’accès du dossier, là où il y a /path/to/your/project

Salut à tous,

cquest, merci beaucoup pour ton aide, j’ai creusé dans les directions que tu donnes et je suis toujours en galère.

  • Malheureusement, les tiles du quay d’orsay ne sont plus dispo
  • Du coup, j’ai essayé de comprendre le format CartoCss pour refaire mon propre rendu en partant du project.mml de openstreetmap-carto. Et la je galère. J’ai a peu près compris comment fonctionnaient les requêtes mais je ne suis pas assez familier avec le contenu de la base pour vraiment être capable de customiser. Soit ça plante, soit j’ai encore trop de détail, soit il m’en manque une partie … Bref, pas simple.
    Je pensais que ce serait facile à faire, ca fait longtemps que je me suis pas planté comme ça sur une estimation … :slight_smile: C’est la vie

Bref, mon besoin, il est simple : faire un fond de map pour un simulateur de vol (en offline … obligatoirement)
=> afficher une map mondiale avec zoom jusqu’au niveau 13 en offline. Le rendu doit être light de manière à ce qu’il ne fasse pas trop carte routière et qu’il interfère le moins possible avec la couche de data applicatif que je vais rajouter par dessus (carto aéronautique, infos sur les balises aéronautiques, sur les pistes, traffic aérien …)
Et quand je dis rendu light j’entends en gros :
Terre / mer / rivières / lacs, nom des pays et frontières
Villes principales (>10000 hab par exemple) et routes principale (autoroutes, RN et départementales)
Aéroports
Eventuellement les types de terrain (foret …) et les courbes de niveau mais pas d’obligation.

Et le tout avec des couleurs pastelles lights.
Et en utilisant le moins de ressources CPU possible (donc plutôt des tuiles pré-rendues)
Ah oui … biensur, je n’ai pas d’autre budget que mon propre temps :slight_smile:

Voila … si vous avez des idées, des tutos, une adresse de serveur ou je pourrais télécharger le tout en 1 fois … je suis super preneur.

Merci encore pour votre aide,

Bonne journée,

Antoine

Attention, vous faites fausse route concernant OpenMapTiles. Ça n’utilise pas les services de MapBox, mais certains éléments techniques initialement crée par MapBox.

OpenMapTiles permet de produire des tuiles vectorielles par prérendu, donc off-line par définition. Ces tuiles vectorielles sont ensuite à afficher dans un client, ou pour en faire un rendu raster si on y tient. On utilise pour ça TileServer GL.

À noter que je crée une stack pour assembler OpenMapTiles + TileServer GL et des styles et pour faire ça en rependu ou en rendu à la volé. C’est dispo sous docker. GitHub - makina-maps/makina-maps: Full Stack to Build, Serve and Update your own Vector and Raster Tiles from OpenStreetMap Data. Et démo en ligne dev2-makinamaps.makina-corpus.net/ http://tile-vect.openstreetmap.fr