Bilder in OpenLayers rendern?

11

Meine Organisation verfügt über eine Webanwendung zur Anzeige globaler und regionaler Klimadaten. Wir erwägen Verbesserungen. Unsere Hauptidee ist es, eine OpenLayers-basierte Anwendung zu erstellen, mit der Klimaraster über Basisebenen wie OSM oder Google Maps angezeigt werden können. Die Karte kann auch einige andere anwendungsspezifische Vektorebenen und einen Farbbalken oder andere Legendenmerkmale enthalten, die die Daten beschreiben. Soweit ich das beurteilen kann, scheint dies alles mit OpenLayers machbar zu sein.

Eine Voraussetzung für das Projekt ist jedoch, dass (im Idealfall aus der Web-App) Karten mit Veröffentlichungsqualität (mehr oder weniger) exportiert werden können . Ein typischer Anwendungsfall wäre etwa so:

  1. Ein Benutzer, der die Basisebene als Leitfaden verwendet, navigiert zu seinem Interessengebiet
  2. Der Benutzer wählt einen Klimaparameter (z. B. die mittlere Temperatur für die 2040er Jahre) oder einen Parametersatz aus
  3. Der Benutzer klickt auf die Schaltfläche "Exportieren" und lädt dann eine Karte von guter Qualität herunter, die alle im ersten Absatz beschriebenen Elemente enthält.

Ich konnte in OpenLayers nichts zum Rendern eines Bildes finden. Weiß jemand, ob dies möglich ist? Und wenn nicht, welche anderen Ansätze für das Rendern könnten wir wählen? Ich würde annehmen, dass wir alle Kartenparameter (bbox, Projektion, eingeschlossene Ebenen usw.) an eine externe Rendering-Engine übergeben müssten. Welche Open Source Rendering Engines gibt es?

Hiebert
quelle
Ich habe den Export als png / pdf und das Drucken von Openlayers-Karten hier bei www.mapsdata.co implementiert. Sie können sich registrieren und überprüfen.
Rayiez

Antworten:

12

Die wichtigsten Möglichkeiten, hübsche Druckkarten von mir bekannten Openlayern anzuzeigen, sind:

-Geoserver mit Geoext

-Mapfish mit Geoext

Beide Lösungen basieren auf einem Java-Teil (z. B. http://geoserver.org/display/GEOS/Printing+in+GeoServer oder http://www.mapfish.org/doc/print/ ).

-Openlayers Standalone (Siehe das offizielle Dokument http://trac.openlayers.org/wiki/Printing )

In neuerer Zeit wird eine Technik mit PhantomJS machen Bild (ein Software - Browser von der Kommandozeile simuliert) http://acuriousanimal.com/blog/2012/09/17/creating-static-maps-in-openlayers-using-phantomjs/

Einige neuere Bibliotheken verwenden Browser-Canvas-Rendering-Funktionen, um Bilder wie dieses OpenLayers 3-Beispiel oder dieses Leaflet- Beispiel zu "fangen"

ThomasG77
quelle
2

Um eine "Veröffentlichungsqualität" zu erzielen, benötigen Sie 300 dpi. Die Verwendung der Karten, die Sie zum Öffnen des Bildschirms an offene Ebenen übergeben, ist wahrscheinlich kein Anfänger.

Auf der Export-Registerkarte von OpenStreetMap wird OpenLayers verwendet, um auszuwählen, was Sie exportieren möchten. Anschließend wird es mit einem separaten Back-End-Serverprozess gerendert (tatsächlich eine Auswahl von mehreren). Dies ist wahrscheinlich der Ansatz, den Sie wählen müssen. Es ist unwahrscheinlich, dass Sie Google Maps dafür verwenden können.

rjmunro
quelle
Nun, "Veröffentlichungsqualität" würde eher SVG oder ein anderes Vektorformat bedeuten. Und wenn ich es so formuliere, denke ich, dass wir wahrscheinlich Mapnik oder etwas anderes verwenden möchten, um eine Grundkarte aus der Datei planet.osm zu rendern. Dann könnten wir eine Bildbibliothek verwenden, um die anderen Elemente (Klimaraster, Legendenelemente, Attribute) zu überlagern. Sie haben Recht, dass Gmaps wahrscheinlich für den Exporteur bestimmt ist (aus verschiedenen technischen und nichttechnischen Gründen). Trotzdem danke für alle Antworten.
Hiebert