Rendre des images dans OpenLayers?

11

Mon organisation dispose d'une application Web pour afficher les données climatiques mondiales et régionales et nous envisageons de les améliorer. Notre idée principale est de créer une application basée sur OpenLayers pour afficher les rasters climatiques sur des couches de base comme OSM ou Google Maps. La carte peut également inclure d'autres couches vectorielles spécifiques à l'application et une barre de couleur ou d'autres caractéristiques de légende décrivant les données. Autant que je sache, tout cela semble faisable avec OpenLayers.

Cependant, une des exigences du projet est de pouvoir exporter ( idéalement à partir de l'application Web) des cartes de qualité de publication (plus ou moins). Un cas d'utilisation typique serait quelque chose comme ceci:

  1. Un utilisateur, utilisant la couche de base comme guide, accède à sa zone d'intérêt
  2. L'utilisateur sélectionne un paramètre climatique (par exemple la température moyenne pour les années 2040) ou un ensemble de paramètres
  3. L'utilisateur clique sur le bouton "exporter" puis télécharge une carte de bonne qualité qui comprend tous les éléments décrits dans le premier paragraphe.

Je n'ai rien trouvé dans OpenLayers sur le rendu d'une image. Quelqu'un sait-il si c'est possible? Et sinon, quelles autres approches de rendu pourrions-nous adopter? Je suppose que nous aurions besoin de passer tous les paramètres de la carte (bbox, projection, couches incluses, etc.) à un moteur de rendu externe; Quels sont les moteurs de rendu open source?

Hiebert
la source
J'ai implémenté l'exportation au format png / pdf et l'impression de cartes openlayers ici sur www.mapsdata.co. vous pouvez vous inscrire et vérifier.
Rayiez

Réponses:

12

Les principales façons d'afficher de jolies cartes imprimées à partir de couches ouvertes que je connais sont:

-Geoserver avec Geoext

-Mapfish avec Geoext

Les deux solutions reposent sur une partie java (par exemple http://geoserver.org/display/GEOS/Printing+in+GeoServer ou http://www.mapfish.org/doc/print/ )

-Openlayers autonome (Voir le doc officiel http://trac.openlayers.org/wiki/Printing )

Plus récemment, une technique semble rendre l'image avec PhantomJS (un logiciel simulant un navigateur à partir de la ligne de commande) http://acuriousanimal.com/blog/2012/09/17/creating-static-maps-in-openlayers-using-phantomjs/

Certaines bibliothèques récentes utilisent des capacités de rendu Canvas Canvas du navigateur pour "capturer" l'image comme cet exemple OpenLayers 3 ou celui Leaflet.

ThomasG77
la source
2

Pour obtenir la «qualité de publication» que vous voulez 300 dpi, donc utiliser les cartes que vous passez pour ouvrir des couches pour le rendu d'écran n'est probablement pas un début.

L' onglet d'exportation d'OpenStreetMap utilise OpenLayers pour sélectionner ce que vous souhaitez exporter, mais le restitue ensuite avec un processus de serveur principal distinct (en fait un choix de plusieurs). C'est probablement l'approche que vous devrez adopter. Il est peu probable que vous puissiez utiliser Google Maps pour cela.

rjmunro
la source
Eh bien, "qualité de publication" signifierait plus probablement svg ou un autre format vectoriel. Et quand je le dis en ces termes, cela me fait penser que, oui, nous voudrons probablement utiliser Mapnik ou quelque chose pour rendre un fond de carte à partir du fichier planet.osm. Ensuite, nous pourrions utiliser une bibliothèque d'images pour superposer les autres éléments (raster climatique, éléments de légende, attributs). Vous avez raison de dire que Gmaps est probablement destiné à l'exportateur (pour diverses raisons techniques et non techniques). Quoi qu'il en soit, merci pour toutes les réponses.
Hiebert