`
windhello
  • 浏览: 7347 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

利用Geoserver的wfs BBOX范围查询及Openlayers解析GML,添加Marker收藏

阅读更多
以下方法描述了对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过滤查询

    在本例子中,我们将讨论如何在GeoServer中利用WFS的过滤查询功能来获取特定记录。 首先,WFS的GetFeature请求是用来从服务器获取地理特征的重要方法。在这个例子中,我们看到一个`&lt;wfs:GetFeature&gt;`元素,它包含了...

    openlayers 加载Geoserver wfs服务

    利用openlayers加载geoserver wfs服务发布的矢量图层。

    geoserver中wfs-t 编辑demo

    geoserver中wfs-t 编辑demo 包含添加 更新 删除 简单sample code

    leaflet结合geoserver利用WFS服务实现图层编辑.zip

    本教程将详细介绍如何通过Leaflet与GeoServer的集成,利用WFS服务来实现地图图层的编辑功能。 首先,了解WFS服务。WFS是一种OGC(开放地理空间联盟)标准,它允许客户端通过HTTP请求获取、修改和删除地理空间特征...

    geoServer+openLayers简单小例子

    GeoServer和OpenLayers是地理信息系统(GIS)领域中两个重要的开源工具。GeoServer是一个基于Java的Web服务,用于发布和管理地理空间数据,而OpenLayers则是一个JavaScript库,用于在Web浏览器中创建交互式地图应用...

    openlayers 编辑geoserver图层

    1. **查询**:OpenLayers可以发送一个WFS请求到GeoServer,获取特定图层的数据,展示在地图上。用户可以通过查询控件筛选和查找感兴趣的对象。 2. **编辑**:当用户选择地图上的某个要素时,OpenLayers可以打开一个...

    leaflet结合geoserver利用WFS服务实现图层删除.zip

    本教程将详细讲解如何利用Leaflet与GeoServer的WFS服务来实现地图图层的删除功能。 首先,让我们了解WFS服务。WFS是一种OGC(开放地理空间联盟)标准,它允许用户通过网络获取、操作地理空间对象。在GeoServer中,...

    wfs获取图层信息并返回geoJson数据集

    在本例中,我们看到的是如何利用GeoServer提供的WFS服务来获取图层信息,并将其转化为GeoJSON格式的数据集。 GeoServer是一款开源的GIS服务器,它支持WFS服务,使得用户能够通过HTTP协议进行地理数据的查询、添加、...

    cesium结合geoserver利用WFS服务实现图层删除.zip

    在GIS(地理信息系统)领域,Cesium和GeoServer是两个重要...以上是关于“cesium结合geoserver利用WFS服务实现图层删除”的核心知识点。通过理解并实践这些概念,开发者可以创建出具有高级地图编辑功能的Web GIS应用。

    cesium结合geoserver利用WFS服务实现图层编辑.zip

    本教程将详细讲解如何通过Cesium与GeoServer集成,利用WFS(Web Feature Service)服务来实现图层的编辑功能。 首先,了解WFS服务。WFS是一种OGC标准,允许用户通过网络获取、修改和管理地理空间特征数据。它提供了...

    openlayers编辑地图图层并保存到geoserver

    这个程序示例展示了如何结合OpenLayers和GeoServer实现地图图层的编辑功能,这在GIS(地理信息系统)开发中是非常常见的需求。GeoServer是一个开源的GIS服务器,能够发布地图数据并提供WFS(Web Feature Service)等...

    openLayers geoserver常见问题

    在OpenLayers中,删除Layer中的marker可以通过以下步骤实现:首先,获取到你想要删除的marker对象,这通常基于用户交互事件(如点击)来完成。然后,调用Layer的removeFeatures方法,传入marker对象即可将其从地图上...

    geoserver配置及openlayers应用

    在GIS领域,Geoserver和OpenLayers是两个非常重要的开源工具。Geoserver是一个基于Java的Web服务,用于发布和管理地理空间数据,而OpenLayers则是一个JavaScript库,用于在Web浏览器中创建交互式地图。这两者的结合...

    Geoserver+openlayer+postGis要素增删改查

    在这个项目中,OpenLayers 被用来展示由 GeoServer 提供的地图,并提供用户界面,允许用户对地图上的要素执行添加、修改、删除和属性查询等操作。用户可以通过 OpenLayers 的图层控制、查询工具等组件与地图进行交互...

    JAVA+GeoServer+OpenLayers.zip_Openlayers java_geoserver_idae开发

    Java+OpenLayers3+GeoServer 二次开发应用

    openlayers3+geoserver地图交互

    然后,我们向GeoServer发送WFS请求,查询在选定区域内的所有要素,并更新地图显示。 在开发这样的应用时,需要注意的是,正确配置GeoServer的数据发布,确保WMS和WFS服务正常工作。同时,OpenLayers 3的配置也需要...

    leaflet结合geoserver实现地图空间查询.zip

    - 发送WFS请求:当用户完成选择后,通过Ajax或Fetch API发送一个WFS请求到GeoServer,请求包含用户选择的空间范围。 - 处理响应:GeoServer返回符合查询条件的地理特征,这些特征通常是GML( Geography Markup ...

    Geoserver/OpenLayers-世上最详细配置资料

    资料中将详细解析如何使用OpenLayers在网页上展示地图、叠加图层、添加标记、实现拖放功能、处理地图事件,以及如何使用瓦片服务。同时,还会涵盖OpenLayers与GeoServer的协同工作,通过WMS和WFS请求获取和编辑地理...

    WebGIS之OpenLayers全面解析源码.rar

    本资源“WebGIS之OpenLayers全面解析源码.rar”提供了OpenLayers的详细解析及随书源码,涵盖了后台数据库代码和前台示例代码,确保用户能够全面理解和应用OpenLayers。 一、OpenLayers简介 OpenLayers是一个完全用...

Global site tag (gtag.js) - Google Analytics