在OpenLayers中显示PostGIS栅格的选项


12

这个问题类似于先前关于在网络地图中显示矢量数据的问题。我想要一个使用OpenLayers的基本Web界面,并可以使用诸如Google的底图显示PostGIS中当前的栅格数据。我已经将PostGIS2.0与栅格库一起安装,并从文档中看到有多个输出数据的选项,例如JPEG,GeoTIFF和PNG。是他们推荐的格式吗?

为了显示矢量数据,我目前正在使用javascript从用户浏览器向我的服务器发送坐标,然后在PostGIS上使用PHP / SQL执行查询。然后将结果作为GeoJSON返回,可以覆盖在底图上。我想知道是否可以使用栅格应用类似的方法,但是我不知道哪种栅格格式是最好的,或者我是否应该考虑其他约束。

我已经看到了很多有关GeoServer的参考,但是我不确定该项目是否必要(我不确定何时应使用GeoServer)。

Answers:


13

栅格图像,因此最好的格式是图像格式(png / jpg / etc)。Geojson是向量的一种很好的格式。您将永远不会看到,例如,您的facebook个人资料图片会作为纯json传输回去。当然,将网址返回为json图像非常不同:)

关于jpeg,png和其他任何图像格式的讨论,对此都有很多不同的意见。归结为一些图像格式是无损的,而其他图像格式是有损的。您的决定取决于对数据的处理方式。为了进行分析,您可能不会容忍有损,但要在网络上显示内容就可以了。

PostGIS 2.0可以生成图像吗?当然。查看“ 栅格输出”部分。

这是一个好主意吗?这真的真的取决于您在做什么。有时生成图像可能会花费非常非常长的时间,并且您希望将它们缓存起来,以避免每次通过Web环境请求图像时都要付出代价。在PostGIS端唯一可以执行的“缓存”是将结果保存到另一个表中,然后在需要时查询该表。Geoserver具有用于执行此操作的整个基础结构(GeoWebCache)。

需要的GeoServer,大概不会-但它使生活更轻松了很多,当你有这样的中间件暴露所有使用数据的OGC Web服务做缓存向量和栅格的造型 一大堆更多的东西


我了解如何使用PostGIS生成图像-我想了解的是将其加载到Openlayers中的最佳方法。例如,如果我使用ST_AsPNG()-我仍然需要识别此图像所在的上下坐标。我认为可能有一种巧妙的方法来返回一个自包含的图像,该图像可以直接加载到openlayers中(除了使用geoserver之外)。
djq 2011年

是的,您可以将其直接从st_aspng加载到openlayers,但这将需要额外的工作。然后,您必须跟踪bbox,并在加载它时进行具体说明。dev.openlayers.org/apidocs/files/OpenLayers/Layer/Image-js.html相信我,这是一条漫长的路。您最好让geoserver或mapserver执行此操作。他们将WMS / WMTS退还给您,并且您使用两行代码将其添加到openlayers。
Ragi Yaser Burhum 2011年

4

Mapserver支持postgis栅格,并在此处提供了基本设置的说明(项目9.9)。

在您的情况下,您可以将Mapserver设置为WMS服务器,以便将Postgis栅格作为普通WMS图层返回。然后,使用WMS图层对象将图层添加到OpenLayers映射中几乎是微不足道的。

这种解决方案可能是您最好的选择,因为它全部基于OpenSource软件,它是经过验证的堆栈,不需要大量的中间件。mapserver的所有需求都是可以运行cgi脚本的网络服务器(您可能已经在php中使用的Apache可以)。如果性能不是关键问题,那么您可以避免使用(tile)缓存,而每次让mapserver实时渲染图层。

如果要缓存图块以最小化服务器负载并改善响应时间,请考虑使用mapcache或tilecacheMapcache是Mapserver的一个姊妹项目,但由于它作为apache模块运行,因此其性能优于所有其他缓存。

对于Ubuntu用户,安装Mapserver依赖项的最简单方法是将Ubuntu GIS PPA添加到您的系统。


Mapserver绝对是GeoServer的绝佳替代品(我将其用于其他一些项目)。通常,我为客户选择geoserver,因为它具有易于使用的界面。不过,我想指出的是,提供切片缓存是在提供静态内容,并且基于nginx(或任何其他非阻塞服务器)的任何解决方案都将比任何apache解决方案都快得多-在基于进程的隔离或线程模式下。
2011年

谢谢@unicoletti。如果要基于用户查询生成栅格,可以使用Mapserver吗?例如,如果我允许用​​户指定某个区域(在特定边界内),是否可以使我对该区域进行空间查询?
djq 2011年

@celenius Mapserver和GeoServer都将允许您这样做。
2011年

1
@RagiYaserBurhum我将mapcache与其他缓存进行比较。静态图块严格来说并不是缓存。
unicoletti 2011年

0

一切都取决于。图像大小,缓存,可用库(例如某些专有的jp2k驱动程序)。

这是一个很棒的pdf的链接,有关类固醇的Geoserver。这将为您介绍各种格式,它们的优缺点和一些基本设置。

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.