以下方法描述了对Geoserver进行范围查询,并将查询结果在用OpenLayers在地图上画出的实现方法。
首先wfs查询分为1.0.0和1.1.0两个版本,这两个版本的查询filter格式是不一样的,我是以1.0的格式写的,各位朋友可以研究一下1.1写法。
另外向Geoserver服务器发送请求,这里用到了prototype,在这里的prototype只是简单的发送了一个ajax请求。
比如要进行一个简单的范围查询,这里需要两个点来确定一下矩形,如:116.374614,39.949336和116.391498,39.955299
还要指定一个图层,比如:MyGis下的type图层,还有就是确定要返回的字段,如:NAME和TYPE,
整个的查询xml字符串如下:
<wfs:GetFeature service='WFS' version='1.0.0' outputFormat='GML2'
xmlns:topp='http://www.openplans.org/topp' xmlns:wfs='http://www.opengis.net/wfs'
xmlns:ogc='http://www.opengis.net/ogc' xmlns:gml='http://www.opengis.net/gml'
xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
xsi:schemaLocation='http://www.opengis.net/wfs http://schemas.opengis.net/wfs/1.0.0/WFS-basic.xsd'>
<wfs:Query typeName='MyGis:type'>
<wfs:PropertyName>MyGis:NAME</wfs:PropertyName>
<wfs:PropertyName>MyGis:TYPE</wfs:PropertyName>
<ogc:Filter><ogc:BBOX><ogc:PropertyName>the_geom</ogc:PropertyName>
<gml:Box srsName='http://www.opengis.net/gml/srs/epsg.xml#4326'>
<gml:coordinates>116.374614,39.949336 116.391498,39.955299</gml:coordinates>
</gml:Box></ogc:BBOX></ogc:Filter>
</wfs:Query></wfs:GetFeature>
Geoserver wfs查询的地址为:http://localhost:8080/geoserver/wfs
于是用Ajax.Request,发送一个ajax请求,代码如下:
var myAjax = new Ajax.Request(
GIS_SERVER_URL,
{contentType: "application/xml", method: 'post', postBody: xmlPara, onComplete: showResponse}
);
以上参数中: GIS_SERVER_URL为Geoserver wfs查询的地址,xmlPara为查询的xml字符串,showResponse为查询返回后的处理函数,
showResponse函数如下:
function showResponse(req){
//openlayers的GML解析器
var gmlParse = new OpenLayers.Format.GML();
var features = gmlParse.read(req.responseText);
var icon = new OpenLayers.Icon('images/pp.gif');
var feature, lonlat, marker;
for(var feat in features){
feature = features[feat];
lonlat = new OpenLayers.LonLat(feature.geometry.x,feature.geometry.y);
marker = new OpenLayers.Marker(lonlat,icon.clone());
//此处注册了鼠标的点击事件,可以在mousedown中做些事情
marker.events.register("mousedown", marker, mousedown);
//markers为OpenLayers.Layer.Markers 画点的层
markers.addMarker(marker);
}
}
以上便完成wfs查询并用openlayers标画结果的任务。
另外wfs的GetFeature还有许多查询功能,在Geoserver的样例查询中,有一些例子,比如主键查询,Between查询,更全面的功能就要看OGC WFS的白皮书了,filter可以实现如sql语句中的功能,不过白皮书中的讲解也不是很详细(可能是自己E文不够好吧~~),朋友们可以互相讨论一下~~
分享到:
相关推荐
在本例子中,我们将讨论如何在GeoServer中利用WFS的过滤查询功能来获取特定记录。 首先,WFS的GetFeature请求是用来从服务器获取地理特征的重要方法。在这个例子中,我们看到一个`<wfs:GetFeature>`元素,它包含了...
利用openlayers加载geoserver wfs服务发布的矢量图层。
geoserver中wfs-t 编辑demo 包含添加 更新 删除 简单sample code
本教程将详细介绍如何通过Leaflet与GeoServer的集成,利用WFS服务来实现地图图层的编辑功能。 首先,了解WFS服务。WFS是一种OGC(开放地理空间联盟)标准,它允许客户端通过HTTP请求获取、修改和删除地理空间特征...
GeoServer和OpenLayers是地理信息系统(GIS)领域中两个重要的开源工具。GeoServer是一个基于Java的Web服务,用于发布和管理地理空间数据,而OpenLayers则是一个JavaScript库,用于在Web浏览器中创建交互式地图应用...
1. **查询**:OpenLayers可以发送一个WFS请求到GeoServer,获取特定图层的数据,展示在地图上。用户可以通过查询控件筛选和查找感兴趣的对象。 2. **编辑**:当用户选择地图上的某个要素时,OpenLayers可以打开一个...
本教程将详细讲解如何利用Leaflet与GeoServer的WFS服务来实现地图图层的删除功能。 首先,让我们了解WFS服务。WFS是一种OGC(开放地理空间联盟)标准,它允许用户通过网络获取、操作地理空间对象。在GeoServer中,...
在本例中,我们看到的是如何利用GeoServer提供的WFS服务来获取图层信息,并将其转化为GeoJSON格式的数据集。 GeoServer是一款开源的GIS服务器,它支持WFS服务,使得用户能够通过HTTP协议进行地理数据的查询、添加、...
在GIS(地理信息系统)领域,Cesium和GeoServer是两个重要...以上是关于“cesium结合geoserver利用WFS服务实现图层删除”的核心知识点。通过理解并实践这些概念,开发者可以创建出具有高级地图编辑功能的Web GIS应用。
本教程将详细讲解如何通过Cesium与GeoServer集成,利用WFS(Web Feature Service)服务来实现图层的编辑功能。 首先,了解WFS服务。WFS是一种OGC标准,允许用户通过网络获取、修改和管理地理空间特征数据。它提供了...
这个程序示例展示了如何结合OpenLayers和GeoServer实现地图图层的编辑功能,这在GIS(地理信息系统)开发中是非常常见的需求。GeoServer是一个开源的GIS服务器,能够发布地图数据并提供WFS(Web Feature Service)等...
在OpenLayers中,删除Layer中的marker可以通过以下步骤实现:首先,获取到你想要删除的marker对象,这通常基于用户交互事件(如点击)来完成。然后,调用Layer的removeFeatures方法,传入marker对象即可将其从地图上...
在GIS领域,Geoserver和OpenLayers是两个非常重要的开源工具。Geoserver是一个基于Java的Web服务,用于发布和管理地理空间数据,而OpenLayers则是一个JavaScript库,用于在Web浏览器中创建交互式地图。这两者的结合...
在这个项目中,OpenLayers 被用来展示由 GeoServer 提供的地图,并提供用户界面,允许用户对地图上的要素执行添加、修改、删除和属性查询等操作。用户可以通过 OpenLayers 的图层控制、查询工具等组件与地图进行交互...
Java+OpenLayers3+GeoServer 二次开发应用
然后,我们向GeoServer发送WFS请求,查询在选定区域内的所有要素,并更新地图显示。 在开发这样的应用时,需要注意的是,正确配置GeoServer的数据发布,确保WMS和WFS服务正常工作。同时,OpenLayers 3的配置也需要...
- 发送WFS请求:当用户完成选择后,通过Ajax或Fetch API发送一个WFS请求到GeoServer,请求包含用户选择的空间范围。 - 处理响应:GeoServer返回符合查询条件的地理特征,这些特征通常是GML( Geography Markup ...
资料中将详细解析如何使用OpenLayers在网页上展示地图、叠加图层、添加标记、实现拖放功能、处理地图事件,以及如何使用瓦片服务。同时,还会涵盖OpenLayers与GeoServer的协同工作,通过WMS和WFS请求获取和编辑地理...
本资源“WebGIS之OpenLayers全面解析源码.rar”提供了OpenLayers的详细解析及随书源码,涵盖了后台数据库代码和前台示例代码,确保用户能够全面理解和应用OpenLayers。 一、OpenLayers简介 OpenLayers是一个完全用...