77范文网 - 专业文章范例文档资料分享平台

ArcGIS查询WFS服务解决方案(3)

来源:网络收集 时间:2020-05-13 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

%s%s

6)、GreaterOrEqual(>=):第一个%s填写字段名称,第二个%s填写字段值:

%s%s

7)、Like:第一个%s填写字段名称,第二个%s填写字段值:

escapeChar=\PropertyIsLike>;

8)、IsNull:第一个%s填写字段名称:

%s

9)、Between:第一个%s填写字段名称,第二个%s填写字段值下限,第三个%s填写字段值上限:

%s%s%s

综上所述,例子中属性查询语句部分可以直接写成:

http://localhost/ArcGIS/services/DemoWFS/MapServer/WFSServer?request=Getfeature&service=WFS&typename=Tbeijing_qiao&Filter=

escapeChar=''>name*河

*class2

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。例如:

WFSServer true longlat false false wfs_WFSTest_ras http://bobmk/arcgis/services/wfs/WFSTest_ras/MapServer/WFSServer http://bobmk/arcgis/services/wfs/WFSTest_ras/MapServer/WFSServer wfs_WFSTest_ras true

6. 启动 ArcGIS Server。

从服务中请求的地理坐标的要素现在以经度、纬度的轴顺序返回。请注意轴顺序属性仅适用于带地理坐标的要素。带有投影坐标的要素始终以 x,y 的轴顺序返回。

以下列举说明空间比较谓词如何写成WFS查询条件:

1)、Equals:第一个%s填写图形字段名称(如:shape),第二个%f,%f填写图形的坐标值:

%s%f,%f

2)、Intersects:第一个%s填写图形字段名称,第二个%f,%f填写多边形的节点坐标,注意要首尾坐标闭合。

%s%f,%f%f,%f%f,%f%f,%f

3)、BBOX:第一个%s填写图形字段名称,第二个%s填写坐标系统,后面四个%f填写一个矩形范围(顺序为xmin,ymin,xmax,ymax)。

%s%f,%f %f,%f

多个空间查询条件也需要逻辑比较谓词来包含,同时需要使用正确的标识“gml”,一个空间查询条件可以看作是一个属性查询条件,这方面操作是一致的。完整的空间查询语句如下:

http://xiaogl/ArcGIS/services/DemoWFS/MapServer/WFSServer?request=Getfeature&service=WFS&typename=Tbeijing_qiao&Filter=Shape40.334,116.304 40.317,116.366 40.264,116.321 40.277,116.288 40.312,116.287

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=class2Shape

srsName='EPSG:4326'>40.268176013,116.199341863 40.30384199,116.250685194

这样可以有效结合属性查询和空间查询,达到精确查询的目的。

四、使用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)在线全文阅读。

ArcGIS查询WFS服务解决方案(3).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/jiaoyu/1051337.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: