Renderowanie obrazów w OpenLayers?

11

Moja organizacja ma aplikację internetową do wyświetlania globalnych i regionalnych danych klimatycznych i rozważamy ich ulepszenie. Naszym wiodącym pomysłem jest stworzenie aplikacji opartej na OpenLayers do wyświetlania rastrów klimatycznych na warstwach podstawowych, takich jak OSM lub Google Maps. Mapa może również zawierać inne warstwy wektorowe specyficzne dla aplikacji oraz pasek kolorów lub inne funkcje legendy opisujące dane. O ile wiem, to wszystko wydaje się możliwe w przypadku OpenLayers.

Jednak jednym z wymagań projektu jest możliwość eksportu ( najlepiej z aplikacji internetowej) map jakości publikacji (mniej więcej). Typowy przypadek użycia byłby mniej więcej taki:

  1. Użytkownik, korzystając z warstwy podstawowej jako przewodnika, przechodzi do swojego obszaru zainteresowania
  2. Użytkownik wybiera parametr klimatu (np. Średnią temperaturę dla lat 2040) lub zestaw parametrów
  3. Użytkownik naciska przycisk „eksportuj”, a następnie pobiera mapę dobrej jakości, która zawiera wszystkie elementy opisane w pierwszym akapicie.

Nie udało mi się znaleźć niczego w OpenLayers na temat renderowania obrazu. Czy ktoś wie, czy jest to możliwe? A jeśli nie, jakie inne metody renderowania moglibyśmy zastosować? Przypuszczam, że musielibyśmy przekazać wszystkie parametry mapy (bbox, rzutowanie, zawarte warstwy itp.) Do jakiegoś zewnętrznego silnika renderującego; jakie są dostępne silniki renderujące typu open source?

Hiebert
źródło
Zaimplementowałem eksportowanie jako png / pdf i drukowanie map openlayers tutaj na www.mapsdata.co. możesz się zarejestrować i sprawdzić.
Rayiez

Odpowiedzi:

12

Główne sposoby wyświetlania ładnych map drukowania z Openlayers, które znam:

-Geoserver z Geoextem

-Mapfish z Geoextem

Oba rozwiązania opierają się na części Java (np. Http://geoserver.org/display/GEOS/Printing+in+GeoServer lub http://www.mapfish.org/doc/print/ )

-Openlayers standalone (patrz oficjalny dokument http://trac.openlayers.org/wiki/Printing )

Ostatnio wydaje się, że technika renderowania obrazu za pomocą PhantomJS (oprogramowanie symulujące przeglądarkę z wiersza poleceń) http://acuriousanimal.com/blog/2012/09/17/creating-static-maps-in-openlayers-using-phantomjs/

Niektóre najnowsze biblioteki używają przeglądarki do renderowania na płótnie, aby „złapać” obraz, tak jak w tym przykładzie OpenLayers 3 lub niniejszej Ulotki

ThomasG77
źródło
2

Aby uzyskać „jakość publikacji”, potrzebujesz 300dpi, więc korzystanie z map, które przekazujesz do otwierania warstw do renderowania ekranu, prawdopodobnie nie jest początkowe.

Karta eksportu OpenStreetMap używa OpenLayers do wybrania tego, co chcesz wyeksportować, ale następnie renderuje to z oddzielnym procesem serwera zaplecza (właściwie kilka z nich). Jest to prawdopodobnie podejście, które trzeba będzie zastosować. Jest mało prawdopodobne, aby móc w tym celu korzystać z Map Google.

rjmunro
źródło
Cóż, „jakość publikacji” najprawdopodobniej oznaczałaby svg lub inny format wektorowy. A kiedy przedstawię to w tych kategoriach, myślę, że tak, prawdopodobnie będziemy chcieli użyć Mapnika lub czegoś innego do renderowania mapy bazowej z pliku planet.osm. Następnie możemy użyć biblioteki obrazów do nałożenia innych elementów (raster klimatu, elementy legendy, atrybuty). Masz rację, że Gmaps prawdopodobnie jest dla eksportera (z różnych przyczyn technicznych i nietechnicznych). W każdym razie dziękuję za wszystkie odpowiedzi.
Hiebert,