在OpenLayers中显示PostGIS矢量的选项


22

我是Web映射的新手,因此这个问题可能会被误导。

我希望有一个使用OpenLayers(甚至更简单的Google Maps)的非常简单的Web界面,它可以显示PostGIS中当前的许多点和多边形表。

我希望这尽可能简单(且维护成本低):

  • 我不想创建图块(除非有充分的理由),也不希望拥有庞大,复杂的中间件层。
  • 性能不需要是惊人的,因为这是供内部使用的,因此不需要扩展到几个并发用户。
  • 矢量层的样式至关重要。
  • 开源工具是首选,因为我对此几乎没有预算。

推荐的方法是什么?

Answers:


14

从PostGIS来源建立在线地图的最简单方法是使用Geoserver。Geoserver用户手册很好地介绍了如何使用PostGIS作为数据源。基本上,您将添加一个包含连接信息的数据存储,然后可以发布任何包含几何的表。除了PostGIS,您还可以使用许多其他数据源:

替代文字

在Geoserver的Web界面内部,您还可以在OpenLayers网页上预览图层。您可以使用此预览页面的源代码来构建自己的OpenLayers应用程序。

Geoserver为矢量和栅格数据提供了许多样式选项。首先,您可能对只定制安装随附的一些预制样式感到满意。

默认情况下,Geoserver不平铺,OpenLayers不请求平铺。如果您不需要高性能,则也无需打扰瓷砖。

就个人而言,我认为OpenLayers比Google Maps API更易于使用,并且您将独立于Google。如果需要背景图,则可能需要查看OpenStreetMap。


8

如果您确实不希望使用大型中间件层,则可以使用TinyOWS(http://tinyows.org/trac)-我从未尝试过,但是它声称体积小而又快速。另外,它使用OGC标准,因此,如果您决定发布给更广泛的受众,并且又赶不上切换到GeoServer或MapServer,则可以不更改而继续使用相同的客户端代码。


啊,是的,忘记了tinyOWS,似乎有点难以配置,而且仅适用于PostGIS
dodobas 2010年

这个问题只问了关于postgis的问题
伊恩·特顿

6

您可以使用任何可以支持WFS协议的应用程序。使用Openlayers,您可以通过WFS协议轻松使用PostGIS数据。很少有FLOSS应用程序可以做到这一点。例如,FeatureServerGeoserverMapServer ...如果您是Web映射的新手,我会推荐Geoserver,因为它非常容易上手。

请参阅此带有WFS的Openlayers示例


最后一个链接断开。
亚当·马坦

1
我尝试了所有这些,它们都起作用了。也许最后一个是暂时的。
Mario Miler

4

Openlayers支持大量矢量数据格式(GeoJSON,GML,KML ..),可以使用OpenLayers Vector图层显示和设置其样式。

也许最简单的中间件可能是FeatureServer,它可以将PostGIS数据提供给大多数OL支持的格式。它易于设置,并支持简单的空间/属性查询。

但是,如果您需要更强大的功能,则Geoserver可能是一个可行的解决方案。


对地图服务器没有爱:(
dassouki 2010年

1
实际上mapserver是我的初恋,约会于2001年左右,但是...我们开始战斗了很多,所以我们不得不刹车了:)
dodobas 2010年

因此,如果我给openlayers一个指向geojson / gml / kml的URL,它可以只渲染它们吗?
fmark

1
是的,但是如果您需要过滤(即使是通过简单的边界框),则也需要使用WFS
dodobas 2010年

4

您可以从Postgis中获取json,kml amd wkt,例如用于PHP或JSP服务器脚本的st_asgeojson(),st_asKML(),然后使用openlayers ajax类从服务器连接数据源


我认为最适合我当前的用例。如果太慢,我将尝试TinyOWS和其他更重型的地图服务器。假设我在某个地方返回了geojson / kml / wkt的PHP脚本,您能否提供openlayers的代码示例?
fmark

@chaipat:您手边有一个示例(php脚本和相应的openlayers片段)吗?
underdark

2

您可以使用Geomajas轻松地执行此操作,该工具将使用Hibernate或Geotools从数据库中读取数据。这是全Java语言,如果您更喜欢其他语言,可能会出现问题。


1

好吧,您可以使用OpenLayers库和服务器语言将所有Postgis几何类型推送到Openlayers中。您需要:

  • Openlayers.Layer.Vector创建一个图层来矢量数据
  • Openlayers OpenLayers.Protocol.HTTP从Postgis服务器读取数据
  • OpenLayers.Strategy.Fixed可选
  • OpenLayers.Feature.Vector所有向量都来自客户端的此类
  • OpenLayers.Format.GeoJSON或OpenLayers.Format.JSON
  • 服务器端语言,用于向Postgis发出请求并将几何图形泵送到客户端
  • 服务器和客户端上的JSON解析器,用于将数据传输为这种格式

这样,您可以非常轻松地显示它们,而无需任何其他中间件。

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.