下面对第二种方式进行介绍:
在构建好WFS查询语句后,可以在Flex中对该查询语句进行请求:
varurlString:String =
“http://localhost/ArcGIS/services/DemoWFS/MapServer/WFSServer?request=Getfeature&service=WFS&typename=Tbeijing_qiao&Filter= escapeChar=''> *
如果该语句中包含有中文查询字符,则需要先进行转换成URI模式,如下:
varuriString:String = encodeURI(urlString);
对转换好的WFS查询语句进行请求,如下:
varrequest:URLRequest = newURLRequest(uriString); varloader:URLLoader = newURLLoader();
loader.load(request);
loader.addEventListener(Event.COMPLETE,onCompleteHandler);
这样请求后就可以得到查询的结果,但是由于WFS查询结果是以XML结构方式进行展现GML模式,这样需要在Flex中对得到的查询结果进行解析。
4.2、Flex解析WFS查询结果
使用Flex API中相应的类来构建对查询结果中的地图要素信息,需要对查询结果进行解析。在WFS查询结果中要素信息都是包含在“featureMember”这个GML的节点中,包括:属性值信息和空间几何类型及坐标值等。
对应WFS查询结果中不同的几何类型,使用Flex API中的几何类进行定义:
varpt:Point=new Point();
varpolygon:Polygon=new Polygon(); varpolyline:Polyline= new Polyline();
在获取几何坐标后,使用Flex API中的几何类型进行展现对应的几何形状。获取到几何信息和属性信息后,使用Flex API中Graphic进行几何形状的绘制
并表现在客户端。
五、使用ArcGIS Flex API更新WFS服务图层
ArcGIS Server 10中支持的WFS版本为最新的1.1.0。在ArcGIS Server中,只需简单地勾选的Capabilities选项卡中可以选择支持WFS,如下图。如果勾选了Transaction复选框,那么通过该WFS还可以进行数据更新(注意,需要是SDE数据源)。
对WFS服务启用事务能力后,就可以实现对WFS服务地图图层进行更新编辑操作,包括Insert、Update、Delete三种编辑操作,可以使用如下语句进行插入一条新记录:
xsi:schemaLocation=\ http://localhost/ArcGIS/services/TestWFST/MapServer/WFSServer?request=DESCRIBEFEATURETY PE&typename=TestPoints http://www.opengis.net/wfs ../wfs/1.1.0/WFS.xsd\
然后使用HTTPService方式进行POST请求,如果执行成功则返回类似如下结果:
version=\ xmlns:xs=\xmlns:wfs=\xmlns:ogc=\ /> fid=\ 在进行地图数据编辑中,需要注意“Delete”和“Update”操作。设想这样的情况,A获得了图层states的1,2,3,4四个Feature,然后把Feature 1的属性做了修改,这时B向服务器发出删除Feature的指令,碰巧Feature 1被删除了,此时A才将修改后的数据提交到服务器。会发生什么?服务器首先是找不到Feature 1,然后它会返回异常给A说Feature 1不存在,而A会很郁闷,Feature 1明明是存在的!这种情况就是分布式系统常常需要处理的,并发访问。不幸的是几乎所有GIS系统都是分布式的。 WFS考虑到了并发访问的问题,它提出的解决方案就是锁住需要删除和修改的Feature。我们只需要告诉服务器我们希望锁住哪些Feature,然后服务器会返回两组数据,一组是成功锁定的Feature Id,一组是无法锁定的Feature Id。 在删除要素对象之前需要先锁定该要素,发送锁定要素的请求,如下语句: http://localhost/ArcGIS/services/TestWFST/MapServer/WFSServer?request=getfeaturewithlock&typename=TestPoints&filter= 请求后会得到相应的结果,如果锁定成功,则会返回一个lockId值,如: “{CE53A506-3683-4F35-A96F-AB7AA1488A07}”;否则返回“Feature * is already locked”要素已经被锁定。 获取到lockId值后,发送删除操作的语句,如下: xmlns=\ xmlns:ogc=\xmlns:xsi=\83-4F35-A96F-AB7AA1488A07} 如果删除成功则返回: xmlns:gml=\/wfs:totalDeleted> 百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说教育文库ArcGIS查询WFS服务解决方案(4)在线全文阅读。
相关推荐: