Рендеринг изображений в OpenLayers?


11

В моей организации есть веб-приложение для отображения глобальных и региональных климатических данных, и мы рассматриваем возможность его улучшения. Наша главная идея - создать приложение на основе OpenLayers для отображения климатических растров на базовых слоях, таких как OSM или Google Maps. Карта также может включать в себя некоторые другие специфичные для приложения векторные слои и цветную полосу или другие элементы легенды, описывающие данные. Насколько я могу судить, все это кажется выполнимым с OpenLayers.

Однако одним из требований к проекту является возможность экспортировать (в идеале из веб-приложения) карты качества публикации (более или менее). Типичный вариант использования будет примерно таким:

  1. Пользователь, используя базовый слой в качестве руководства, перемещается к своей области интересов
  2. Пользователь выбирает параметр климата (например, средняя температура для 2040-х годов) или набор параметров
  3. Пользователь нажимает кнопку «Экспорт», а затем загружает карту хорошего качества, которая включает в себя все элементы, описанные в первом абзаце.

Я не смог найти ничего в OpenLayers о рендеринге изображения. Кто-нибудь знает, возможно ли это? А если нет, то какие другие подходы к рендерингу мы могли бы использовать? Я бы предположил, что нам нужно будет передать все параметры карты (bbox, проекция, включенные слои и т. Д.) В какой-либо внешний механизм рендеринга; какие движки рендеринга с открытым исходным кодом существуют?


Я реализовал экспорт в формате png / pdf и печать карт открытых слоев здесь, на www.mapsdata.co. Вы можете зарегистрироваться и проверить.
Райез

Ответы:


12

Основные способы отображения красивых печатных карт из открытых слоев, которых я знаю:

-Гео-сервер с Geoext

-Мапфиш с Geoext

Оба решения основаны на Java-части (например, http://geoserver.org/display/GEOS/Printing+in+GeoServer или http://www.mapfish.org/doc/print/ ).

-Openlayers автономно (см. Официальный документ http://trac.openlayers.org/wiki/Printing )

Совсем недавно появилась технология визуализации изображения с помощью PhantomJS (программное обеспечение, имитирующее браузер из командной строки) http://acuriousanimal.com/blog/2012/09/17/creating-static-maps-in-openlayers-using-phantomjs/

Некоторые недавние библиотеки используют возможности рендеринга Canvas браузера, чтобы «поймать» изображение, как этот пример OpenLayers 3 или этот Leaflet



2

Чтобы получить «качество публикации», вам нужно 300 точек на дюйм, поэтому использование карт, которые вы передаете, чтобы открыть слои для рендеринга экрана, вероятно, не для начала.

Вкладка экспорта OpenStreetMap использует OpenLayers для выбора того, что вы хотите экспортировать, но затем отображает его с помощью отдельного процесса внутреннего сервера (на самом деле на выбор несколько). Это, вероятно, подход, который вы должны будете использовать. Вы вряд ли сможете использовать Google Maps для этого.


Что ж, «качество публикации» более вероятно будет означать SVG или какой-либо другой векторный формат. И когда я выражаю это в таких терминах, это заставляет меня думать, что да, мы, вероятно, захотим использовать Mapnik или что-то еще для визуализации базовой карты из файла planet.osm. Затем мы могли бы использовать некоторую библиотеку изображений для наложения других элементов (растрового климата, элементов легенды, атрибутов). Вы правы в том, что Gmaps, вероятно, для экспортера (по ряду технических и нетехнических причин). В любом случае, спасибо за все ответы.
Хиберт
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.