6)、GreaterOrEqual(>=):第一个%s填写字段名称,第二个%s填写字段值:
7)、Like:第一个%s填写字段名称,第二个%s填写字段值: escapeChar=\PropertyIsLike>; 8)、IsNull:第一个%s填写字段名称: 9)、Between:第一个%s填写字段名称,第二个%s填写字段值下限,第三个%s填写字段值上限: 综上所述,例子中属性查询语句部分可以直接写成: http://localhost/ArcGIS/services/DemoWFS/MapServer/WFSServer?request=Getfeature&service=WFS&typename=Tbeijing_qiao&Filter= escapeChar=''> * WFS的“Filter”就相当于SQL中的“where”。从上述语句看出,其实SQL的where查询语句为:name like '%河%' and class = 2。而在进行WFS查询时,其查询语句为上述结构,并且构建时需要带“ogc”标识,要不然就无法正常查询了。 从上述WFS过滤查询语句与SQL查询语句对比,可以看出两者之间的差异非 常大,这样我们就需要了解怎样将SQL的where查询语句解析为WFS过滤查询语句,解析代码详见代码文件。 3.2、空间查询语句 同样,可以使用空间查询方式进行WFS服务的查询,下面介绍空间查询语句如何编写。需要注意的是由于WFS坐标显示为“40.151,116.527”,而我们在ArcMap查看坐标显示是“116.527,40.151”,所以在填写坐标时需要将从地图上获取到XY坐标顺序进行反转为YX。在某些地理坐标系(例如 WGS 84)中返回的要素具有默认的纬度、经度 (y,x) 的轴顺序。这一点符合 WFS 1.1 规范。如果某些 WFS 客户端希望坐标以经度、纬度 (x,y) 的轴顺序返回。要使用这些客户端,您可将服务的轴顺序设置为经度、纬度。以下描述了设置该属性的方法: 1. 以管理员的身份登录到运行 ArcGIS Server 的计算机。 2. 关闭 ArcGIS Server。 3. 转到服务配置文件的位置。例如,如果 ArcGIS Server 安装在 c:\\arcgis 中,则请转到 c:\\arcgis\\server\%user\\cfg。 4. 在文本编辑器中打开您的服务的配置文件(例如 myservice.cfg)。 5. 在 WFS 部分中,将以下内容添加到属性: longlat。例如: 6. 启动 ArcGIS Server。 从服务中请求的地理坐标的要素现在以经度、纬度的轴顺序返回。请注意轴顺序属性仅适用于带地理坐标的要素。带有投影坐标的要素始终以 x,y 的轴顺序返回。 以下列举说明空间比较谓词如何写成WFS查询条件: 1)、Equals:第一个%s填写图形字段名称(如:shape),第二个%f,%f填写图形的坐标值: 2)、Intersects:第一个%s填写图形字段名称,第二个%f,%f填写多边形的节点坐标,注意要首尾坐标闭合。 3)、BBOX:第一个%s填写图形字段名称,第二个%s填写坐标系统,后面四个%f填写一个矩形范围(顺序为xmin,ymin,xmax,ymax)。 多个空间查询条件也需要逻辑比较谓词来包含,同时需要使用正确的标识“gml”,一个空间查询条件可以看作是一个属性查询条件,这方面操作是一致的。完整的空间查询语句如下: http://xiaogl/ArcGIS/services/DemoWFS/MapServer/WFSServer?request=Getfeature&service=WFS&typename=Tbeijing_qiao&Filter= 40.334,116.304 各类空间关系查询表现样式,请详细参见: https://wiki.state.ma.us/confluence/display/massgis/contains 3.3、空间和属性混合查询 通过上述说明,可以实现属性查询和空间查询,能否实现将属性和空间进行联合查询呢?答案是肯定的,通过组合WFS属性和空间的查询语句,实现两者的混合查询模式,查询语句如下: http://localhost/ArcGIS/services/DemoWFS/MapServer/WFSServer?request=Getfeature&service=WFS&typename=Tbeijing_qiao&Filter= srsName='EPSG:4326'> 这样可以有效结合属性查询和空间查询,达到精确查询的目的。 四、使用ArcGIS Flex API查询WFS 在了解WFS属性和空间查询语句的构建方法后,需要在其他客户端进行测试,看能否通过构建的查询语句正确查询到所需要的对象信息。而且了解在客户端怎样实现WFS查询语句的执行和查询结果的解析成符合客户端需要的方式进行展现查询结果。 下面以ArcGIS API For Flex为客户端表现方式进行WFS服务地图查询并展现查询结果。 4.1、Flex 执行WFS查询方式 对于在Flex 执行WFS服务查询语句有两种方式:“HTTPService”和“urlLoader”,下面分别介绍两种查询方式: 第一种“HTTPService”查询方式,一般在使用XML格式描述WFS查询语句时常使用,使用步骤是: 首先定义一个“HTTPService”对象,并且使用“POST”方法进行请求,如下: fault=\xml\/> 然后定义WFS的XML格式查询语句,如下: varxmlFile:XML = xmlns:gml=\xmlns:ogc=\ version=\calhost/ArcGIS/services/DemoWFS/MapServer/WFSServer\ xmlns=\ogc:PropertyName> ; varxml:XML = new XML(xmlFile); 发送该XML查询语句到后台进行请求,如下: parseXml.request=xml; parseXml.url=\; parseXml.contentType = \; //需要注意:必须设置该项内容,否则后台无法解析XML parseXml.send(); 并获取查询结果,如下: privatefunctionfaultEve(event:FaultEvent):void } vardata:Object = event.result; { trace(event.message) } privatefunctionresultEve(event:ResultEvent):void { vararr:String=event.result.toString(); //Alert.show(event.result.result.row.toString()); 百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说教育文库ArcGIS查询WFS服务解决方案(3)在线全文阅读。
相关推荐: