我是Web映射的新手,所以这个问题可能有点误导了。

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

我希望它尽可能简单(且维护性较低):


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

推荐的方法是什么?

#1 楼

从PostGIS来源设置在线地图的最简单方法是使用Geoserver。 《 Geoserver用户手册》很好地介绍了如何使用PostGIS作为数据源。基本上,您将添加一个包含连接信息的数据存储,然后可以发布任何包含几何的表。除了PostGIS,还可以使用许多其他数据源:在Geoserver的Web界面内部,您还可以预览OpenLayers网页上的图层。您可以使用此预览页面的源代码来构建自己的OpenLayers应用程序。

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

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

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

#2 楼

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

评论


嗯,是的,忘记了tinyOWS,似乎很难配置,并且仅适用于PostGIS

–多多巴
2010年8月15日在19:07

这个问题只问有关postgis的问题

–伊恩·特顿♦
2010年8月15日19:45

无效链接,是否有更新?

–Theo F
20年5月14日在11:28

我认为它已经合并到MapServer中了

–伊恩·特顿♦
20-05-14在16:14

#3 楼

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

请参阅此带有WFS的Openlayers示例。

评论


最后一个链接断开。

–亚当·马坦(Adam Matan)
2010年8月15日15:30

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

–马里奥·米尔勒(Mario Miler)
2010年8月15日在20:22

#4 楼

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

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

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

评论


不喜欢mapserver :(

– dassouki
2010年8月15日12:58

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

–多多巴
2010年8月15日14:17

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

–fmark
2010年8月16日,下午3:12

是的,但是如果您需要过滤(甚至通过简单的边界框进行过滤),则需要使用WFS

–多多巴
10年8月16日在6:42

#5 楼

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

评论


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

–fmark
10年8月23日在1:45

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

– Underdark♦
2011年4月15日在19:03

#6 楼

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

#7 楼

好吧,您可以使用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解析器将数据传输为这种格式

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