Un projet un peu spécial

Bonjour,

j’ai un projet assez spécial et j’aimerai avoir quelques précisions sur sa fesabilité.

Je joue actuellement à un jeu, The Elder Scrolls Online (TESO pour les intimes), un MMO sorti récemment avec une carte du monde gigantesque. Afin de pouvoir préparer des raids, des attaques sur des forts ennemis, indiquer des points stratégiques, etc… J’ai eu l’idée de monter une plateforme capable d’afficher des fonds de carte et d’adapter son utilisation au jeu auquel je joue.

A l’heure actuelle, j’ai pu monter sur un serveur l’outil OSM capable d’afficher les fonds de plan depuis le site OpenStreetMap ou ceux stockés en local sur le serveur (je n’ai encore importé aucune donnée sur le serveur).

Mon souci pour l’instant : générer les fonds de plan à partir de la maps du jeu.

Est ce fesable ? Connaissez vous la marche à suivre ?

Merci d’avance :slight_smile:

Exe

Bonjour,

Pour faire cela il faudrait que tu crees une base OSM en local chez toi et que tu utilises un editeur OSM ( JOSM par exemple ) pour rentrer les donnees de ton monde dans la base.
Ensuite il faudrait faire tourner un moteur de rendu ( comme Mapnik ou tilemill ) pour generer les cartes a partir des donnees que tu as rentre.

Par contre attention a ne pas envoyer tes donnees dans la vraie base OSM :smiley:

Un pointeur sur les outils de rendu : http://wiki.openstreetmap.org/wiki/FR:Rendering
Pour monter son propre serveur de base OSM je sais pas trop

Merci de cette réponse. :slight_smile:

C’est exactement ce que je souhaite faire. J’ai réalisé toute l’installation (PostgreSQL / PostGIS / osm2psql / MapNik / mod_tile), la seule chose que je n’ai pas faite : importer les données depuis OSM. Par conséquent, je n’ai actuellement que la possibilité d’afficher la map OSM officielle depuis mon serveur mais je n’ai aucun fond de carte : http://teso-sig.exe-serveur.com/osm/slippymap.html

JOSM permet il de créer des cartes à partir de rien ? Peut on y importer un ou des fichiers images (jpeg / png / bmp) pour créer notre carte ?

J’imagine qu’une fois la carte “perso” créée, il est possible de l’exporter au format OSM que j’importerais ensuite sur mon serveur pour obtenir le rendu. Est ce exact ?

Comment puis je empêcher l’envoi des données vers la vraie base OSM ?

Autre question : puis je ensuite mettre en place sur mon serveur un utilitaire type ID Editor ? :slight_smile:

JOSM permet il de créer des cartes à partir de rien ?

JOSM permet de recuperer les donnees presentes dans la base, les editer et renvoyer le tout dans la base, donc si ta base est vide oui tu vas creer tes cartes a partir de rien :wink:
Les images on s en sert generalement comme calque de fond dans JOSM et on cree les donnees en decalquant par dessus. Par contre les images sont georeferencees pour que JOSM les positionne au bon endroit par rapport aux donnees.
Tu peux regarder comme exemple le code du plugin cadastre avec le cas des planches cadastrales non vectorisees contenant des donnees de georeferencement : http://wiki.openstreetmap.org/wiki/FR:JOSM/Fr:Plugin/Cadastre-fr

J’imagine qu’une fois la carte “perso” créée, il est possible de l’exporter au format OSM que j’importerais ensuite sur mon serveur pour obtenir le rendu. Est ce exact ?

En fait JOSM sauve directement les donnees en format OSM

Comment puis je empêcher l’envoi des données vers la vraie base OSM ?

Dans preferences onglet connection il faut que tu renseignes l URL de l API de ton serveur local. Cela permettra a JOSM de recuperer les donnees de ta base locale et d y envoyer les editions effectuees

Autre question : puis je ensuite mettre en place sur mon serveur un utilitaire type ID Editor ? > :slight_smile:

C est surement possible mais je pense que pour ca il faut mettre les mains dans le cambouis pour installer ID sur ton site et le faire pointer sur ta base locale.
Tu trouveras surement plus d infos sur le site du projet
https://github.com/openstreetmap/iD/

Impeccable, merci encore pour toutes ces réponses :slight_smile:

Dans preferences onglet connection il faut que tu renseignes l URL de l API de ton serveur local. Cela permettra a JOSM de recuperer les donnees de ta base locale et d y envoyer les editions effectuees

L’API est récupérable quelque part ? ou alors est elle comprise lors de l’installation que j’ai réalisée sur mon serveur ?

Je vais regarder JOSM dès que je rentre tout à l’heure !

J’ai aussi trouvé TillMill sur Internet, vous connaissez ? https://www.mapbox.com/tilemill/

Bonjour
Quelque éléments de réponse :

Les éditeurs OSM (comme iD ou JOSM) manipulent des données OSM ( point, chemins et relation). Et gèrent les mises à jour vers une base OSM unique sur un serveur qui cause “API OSM”. Les données y sont stockées dans une base au format “API”

Postgis est une base de donnée pour des SIG (système d’information géographique) et ne manipule pas directement des données au format OSM, mais des formats standardisés pour les SIG (point, ligne, polygone , polyligne). C’est osm2pgsql qui passe du format OSM à un format SIG optimisé pour le rendu.

Le détail de l’infra des serveurs OSM est là (API + rendu): http://wiki.openstreetmap.org/wiki/Component_overview
Tu n’a fais que la moitier du boulot: il te manque l’API 0.6

Pour toi : Il me parait inutile de monter les 2 serveurs de données (un pour l’API, l’autre pour le rendu), a moins que tu souhaites absolument utiliser les éditeurs OSM (JOSM et iD) pour de l’édition en ligne. Tu peux ne conserver d’un serveur postgis pour le rendu, et l’édition des données pourrai se faire via QGIS (logiciel SIG libre).

A noter également, encore plus simple que postgis : spatialite est l’extention SIG de la base de donnée sqlite: toute la database est dans un fichier, est c’est reconnu à la fois par QGIS et le moteur de rendu mapnik.


JOSM permet il de créer des cartes à partir de rien ? Peut on y importer un ou des fichiers images (jpeg / png / bmp) pour créer notre carte ?

Oui, JOSM peut parler avec un serveur API vide.
Oui, JOSM peut récupérer des images pour dessiner les objets à cartographier au format OSM, mais les images doivent être géoréférencées.
Enfin si tu ne souhaite pas que l’éditions des données soit ouverte sur internet, tu peut créer les données OSM avec JOSM, et les sauvegarder dans un fichier .osm. Mapnik sait lire des données directement au format .osm


Je ne sais pas si j’ai été bien clair… :slight_smile:
Bruno

Merci Bruno pour ces éléments de réponse.

Je ne sais pas si j’ai été bien clair…

Et bien du coup je ne sais plus trop ce qu’il me reste à mettre en place… :blush: Pourriez vous m’indiquer quelles étapes il me reste à franchir ?

J’aimerai que les autres membres de mon clan puissent apporter des annotations sur la carte, sans pouvoir en modifier le fond.

Tout dépend vraiment de ce que tu veux offrir au final.

Si tu veux un site web avec carte glissante et zoom, etc comme OSM, tu pourrais avoir intérêt à dupliquer le projet. Mais il te faudra une première base de données postgresql avec un front-end pour l’API et une deuxièmre base optimisée pour le rendu. Cette solution est la plus lourde mais elle offre l’avantage de pouvoir assez facilement déployer un éditeur en ligne comme iD. Par contre, tout le monde pourra modifier la carte…

Si tu veux juste visualiser une carte de fond avec possibilité d’ajouter des annotations, tu peux aussi partir dans une solution plus simple. Si tu es le seul à vouloir éditer la carte, tu peux très bien utliser JOSM en partant de zéro et en sauvegardant les données dans un fichier XML. Ce même fichier peut ensuite servir à faire du rendu mapnik/tillmill/etc moyennant éventuellement quelques manips (les id des éléments OSM que tu crées en local avec JOSM sont tous négatifs). JOSM peut même faire le rendu lui-même (mapCSS). Reste ensuite à créer la page web qui publie ta carte et qui nécessitera un peu de code (genre javascript) pour pouvoir ajouter des annotations en ligne.

Rien d’insurmontable mais pas à la portée du premier venu quand même.

Merci pour ces précisions.

En ce qui concerne la solution la plus simple, je suppose qu’il n’y a pas la possibilité de zoomer ?

Je souhaite que les membres de mon clan puissent ajouter des annotations sur la carte sans pouvoir en modifier le fond.

Si tu veux qu’ils puissent zoomer ou déplacer la carte, tu dois publier ce qu’on appelle une “carte glissante” (slippy map en anglais). Tu dois mettre en place un serveur web avec un code javascript qui gère les commandes de la souris et la mise à disposition des “tuiles” (la carte étant découpée en tuiles, des images de taille fixe genre 256x256 pixels). Il y a leaflet qui fait ça très bien et il est très léger. Par contre, si tu veux ajouter des annotations, il faudra voir ça avec une couche de code séparé. Il faut ensuite générer les images de fond mais ici, tu peux le faire de manière statique des images aux différents niveaux de zoom (avec éventuellement une régénération manuelle lorsque tu modifies ta carte). Mapnik offre des scripts pour faire ça. (Tout ça sous linux bien-sûr). leaflet augmente peu à peu ses fonctionnalités avec des plugins (notamment pour ajouter des marqueurs ou même pour faire du dessin) mais sinon il existe le plus ancien, plus lourd mais plus complet “openlayers”.

Concernant les données, tu peux encore le faire façon simple en utilisant JOSM et en conservant le tout dans un fichier xml en local. Tu pourras ensuite verser les données dans tillmill/mapnik pour générer les images comme si elles venaient d’un planet dump d’OSM (à la condition que les id négatifs de JOSM ne posent pas de problèmes. Si c’était le cas, il faudrait lancer un petit script qui convertit les id’s négatifs en id’s positifs).

La création d’une base de données postgres pour le rendu n’est pas forcément indispensable (mapnik fonctionne aussi directement à partir de fichiers xml). Mais ça dépend de la taille de ta carte et de sa complexité. Certaines règles de rendu pourraient avoir besoin de requêtes géospatiales qui ne sont pas possible sans postgres/postgis. Mais si tu veux aller vite et récupérer le maximum de choses qui fonctionnent déjà pour OSM (comme les feuilles de style), le plus simple sera probablement de verser tes données OSM dans une bdd postgres comme la plupart des utilisateurs.

et utiliser une instance locale de umap pour gerer les annotations ?