在OpenLayers中渲染图像?


11

我的组织有一个用于显示全球和区域气候数据的Web应用程序,我们正在考虑对其进行改进。我们的主要想法是创建一个基于OpenLayers的应用程序,以在OSM或Google Maps等基本图层上显示气候栅格。该地图还可以包括一些其他特定于应用程序的矢量层和一个彩条或其他说明数据的图例特征。据我所知,这一切对OpenLayers都是可行的。

但是,该项目的一项要求是能够导出(理想情况下是从Web应用程序中)出版质量(或多或少)的地图。一个典型的用例是这样的:

  1. 用户以基础层为指导,导航到他们感兴趣的区域
  2. 用户选择气候参数(例如2040年代的平均温度)或一组参数
  3. 用户单击“导出”按钮,然后下载高质量的地图,其中包括第一段中描述的所有元素。

我无法在OpenLayers中找到任何有关渲染图像的内容。有人知道这是否可能吗?如果不是,我们还可以采用其他哪些渲染方法?我想我们需要将所有地图参数(bbox,投影,包含的图层等)传递给某个外部渲染引擎;有哪些开源渲染引擎?


我已经在www.mapsdata.co上实现了以png / pdf格式导出并打印openlayers地图。您可以注册并检查。
Rayiez 2013年

Answers:


12

从我知道的openlayers显示漂亮的打印地图的主要方法是:

-Geoserver与Geoext

-Mapfish与Geoext

两种解决方案都依赖于Java部分(例如http://geoserver.org/display/GEOS/Printing+in+GeoServerhttp://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

要获得“出版质量”,您需要300dpi,因此使用传递给您的地图打开图层进行屏幕渲染的方法可能并非如此。

OpenStreetMap的导出选项卡使用OpenLayers选择要导出的内容,然后使用单独的后端服务器进程(实际上是多个)进行渲染。这可能是您必须采取的方法。您不太可能为此使用Google地图。


好吧,“发布质量”更可能表示svg或其他某种矢量格式。当我用这些术语来表达它时,我想,是的,我们可能希望使用Mapnik或其他工具来从planet.osm文件渲染底图。然后,我们可以使用一些图像库来覆盖其他元素(气候栅格,图例元素,属性)。您是对的,Gmaps可能已被出口商淘汰(出于各种技术和非技术原因)。无论如何,感谢您的所有答复。
Hiebert'9
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.