Rendering delle immagini in OpenLayers?


11

La mia organizzazione ha un'applicazione Web per la visualizzazione dei dati climatici globali e regionali e stiamo valutando di migliorarli. La nostra idea principale è quella di creare un'applicazione basata su OpenLayers per visualizzare i raster climatici su livelli base come OSM o Google Maps. La mappa può includere anche altri livelli vettoriali specifici dell'applicazione e una barra dei colori o altre caratteristiche della legenda che descrivono i dati. Per quanto ne so, tutto sembra fattibile con OpenLayers.

Un requisito per il progetto, tuttavia, è essere in grado di esportare ( idealmente dall'app Web) mappe di qualità della pubblicazione (più o meno). Un caso d'uso tipico sarebbe qualcosa del genere:

  1. Un utente, utilizzando il livello base come guida, passa alla propria area di interesse
  2. L'utente seleziona un parametro climatico (ad es. Temperatura media per i 2040) o un set di parametri
  3. L'utente preme il pulsante "esporta" e quindi scarica una mappa di buona qualità che include tutti gli elementi descritti nel primo paragrafo.

Non sono stato in grado di trovare nulla in OpenLayers sul rendering in un'immagine. Qualcuno sa se questo è possibile? E se non quali altri approcci per il rendering potremmo adottare? Suppongo che dovremmo passare tutti i parametri della mappa (bbox, proiezione, livelli inclusi, ecc.) A un motore di rendering esterno; quali motori di rendering open source ci sono?


Ho implementato l'esportazione come png / pdf e la stampa di mappe openlayer qui su www.mapsdata.co. puoi registrarti e controllare.
Rayiez

Risposte:


12

I modi principali per visualizzare graziose mappe di stampa da openlayer che conosco sono:

-Geoserver con Geoext

-Mapfish con Geoext

Entrambe le soluzioni si basano su una parte Java (ad esempio http://geoserver.org/display/GEOS/Printing+in+GeoServer o http://www.mapfish.org/doc/print/ )

-Openlayers standalone (Vedi il documento ufficiale http://trac.openlayers.org/wiki/Printing )

Più recentemente, una tecnica sembra rendere l'immagine con PhantomJS (un software che simula il browser dalla riga di comando) http://acuriousanimal.com/blog/2012/09/17/creating-static-maps-in-openlayers-using-phantomjs/

Alcune librerie recenti utilizzano le capacità di rendering del browser Canvas per "catturare" immagini come questo esempio di OpenLayers 3 o questo depliant



2

Per ottenere la "qualità della pubblicazione", si vogliono 300 dpi, quindi usare le mappe che si passano per aprire i livelli per il rendering dello schermo è probabilmente un modo per non iniziare.

La scheda di esportazione di OpenStreetMap utilizza OpenLayers per selezionare ciò che si desidera esportare, ma quindi lo esegue il rendering con un processo server back-end separato (in realtà una scelta di diversi). Questo è probabilmente l'approccio che dovrai adottare. È improbabile che tu possa utilizzare Google Maps per questo.


Bene, "qualità della pubblicazione" significherebbe molto probabilmente svg o qualche altro formato vettoriale. E quando lo metto in questi termini, mi viene da pensare che, sì, probabilmente vorremmo usare Mapnik o qualcosa del genere per eseguire il rendering di una mappa di base dal file planet.osm. Quindi potremmo usare una libreria di immagini per sovrapporre gli altri elementi (clima raster, elementi legenda, attributi). Hai ragione sul fatto che Gmaps è probabilmente fuori per l'esportatore (per una serie di motivi tecnici e non tecnici). Comunque, grazie per tutte le risposte.
Hiebert,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.