Answers:
不幸的是,出于安全考虑,您无法将网页直接连接到数据库,通常您需要一些中间件才能将两者结合在一起。
因此,在您的示例中,如果您想使用开源软件,则可以轻松地将GeoServer用作地理服务器,以将数据从PostGIS数据库提供到OpenLayers HTML网页。
这样做的好处是,GeoServer将以标准方式(OGC Web地图服务器(WMS)或Web功能服务(WFS))来提供数据,而OpenLayers和许多其他API(ESRI,Leaflet等)和其他桌面都可以理解这两者GIS软件(ESRI,MapInfo,QGIS,uDig等)
因此,我将查看GeoServer文档入门,该文档将引导您逐步了解如何将GeoServer连接到PostGIS,然后提供数据。
http://docs.geoserver.org/stable/zh-CN/user/gettingstarted/index.html
如果您不熟悉这些类型的东西,那么没有比OpenGeo教程更好的起点了。
如果可以的话,我绝对会坚持将您的数据保存在PostGIS中
a)您有很多数据b)您想运行查询(像您一样),以及c)如果有很多人要使用您的应用程序
如果您要运行查询,我将查看Web处理服务(WPS),它们仍然是“新的”,但GeoServer支持这些功能。
但是,如果您的数据量很少并且可以预先运行查询,然后仅使用OpenLayers进行显示,则您应该坚持使用平面文件中的GeoJSON甚至查看TopoJSON,它已在D3 javascript库中广受欢迎-看到这里http://bost.ocks.org/mike/map/ Mike Bostock的教程很棒。
希望能有所帮助
连接两者的一种方法是使用GeoJSON。这是PostGIS数据库的示例查询:
SELECT population,ST_AsGeoJSON(geom) FROM censusblocks
获得查询结果后,您可以执行以下操作:
var geojson_format = new OpenLayers.Format.GeoJSON();
var vector_layer = new OpenLayers.Layer.Vector();
map.addLayer(vector_layer);
vector_layer.addFeatures(geojson_format.read(featurecollection));
featurecollection
您的PostGIS查询结果在哪里;
但请注意,如果您的GeoJSON非常复杂,则可能会出现加载/渲染问题。
我在没有GeoServer的情况下将PostGis与Openlayers 3/4一起使用。我选择的方式是通过调用的函数从Postgis数据库中获取geojson,该函数将返回数据并根据我的设置设置其样式。
在Javascript中我定义了数据和造型=> JavaScript的功能,通过GET调用PHP脚本从POSTGIS =>功能风格retrive数据的数据中的OpenLayers 3.全sripts渲染中可以看到有一个简单的方法在Openlayers 3中使用Postgis-geojson?
似乎这种方法并不安全,因为可以操纵GET-Strings,但是我使用通过https进行的调用,并且服务器端php-script检查是否设置了SESSION。因此,如果没有bee登录,就无法执行脚本。我们在非常小的小组中使用此脚本,但是在许多人正在访问数据的环境中,这可能不是一个好方法。