加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Arcgis Flex在线编辑

发布时间:2020-12-15 04:23:01 所属栏目:百科 来源:网络整理
导读:用了下Editor控件,感觉不错吖,但是基本功能实现了后,,,又有好多问题发现了。反正用别人的总是那么不灵活吧,,, Editor把添加,更改,删除都整合在一起了,但是在不用Editor时我想更新要素的属性又怎么办呢。。。 通过Rest的接口就可以实现顾 增加要素

用了下Editor控件,感觉不错吖,但是基本功能实现了后,,,又有好多问题发现了。反正用别人的总是那么不灵活吧,,, Editor把添加,更改,删除都整合在一起了,但是在不用Editor时我想更新要素的属性又怎么办呢。。。

通过Rest的接口就可以实现顾

增加要素

url:http://localhost/ArcGIS/rest/services/coal/FeatureServer/0/addFeatures

输入Json格式的数据

?[
??? {
????? "geometry" : {
??????? "x" : 102.52385461800003,
??????? "y" : 31.281218208000041
????? },
????? "attributes" : {??????
??????? "NAME" : "11223344",
??????? "COALID" : null
????? }
??? }
]

更新要素

url如:http://localhost/ArcGIS/rest/services/Monitor/FeatureServer/0/updateFeatures

[{"geometry":{"x":0,"y":0},"attributes":{"OBJECTID":407,"COALID":"22222"}}]

删除要素

http://localhost/ArcGIS/rest/services/coal/FeatureServer/0/deleteFeatures

打开页面后,一般只需要要设置 Object IDs 或Where就行了

参考:http://help.arcgis.com/en/arcgisserver/10.0/apis/rest/fsupdate.html?

=============================================================================

ArcGIS API for Flex中提供了一些工具实现对Feature的编辑操作,不过其实质是对ArcGIS Server REST API的再包装。为了更大的灵活性,在这里我们谈一下如何直接调用ArcGIS Server REST API来实现对Feature的新增、更新、删除操作。

FeatureServer

对Feature进行操作,首先需要FeatureServer的支持。这里我们使用ArcGIS服务器上的一个FeatureServer,http://sampleserver3.arcgisonline.com/ArcGIS/rest/services/Fire/Sheep/FeatureServer。在浏览器中打开这个rest服务,共有点、线、面三个图层,点击进入点图层Points of Interest后,在页面的最下方可以看到该图层支持查询(Query)、新增(add Features)、更新(Update Features)、删除(Delete Features)和可以同时执行新增、更新和删除操作的应用编辑(Apply Edits)操作。

点击任何一个操作,在新打开的页面中输入一些必要的参数便可执行。对应在页面中输入参数这种方式,本文以对点要素的操作为例,讲述在Flex中如何调用ArcGIS Server REST API、如何传递参数以及如何对返回结果进行处理,从而实现对Featrue的新增、更新和删除操作。

新增点

点击上图的Add Features进入新页面后,其url地址为http://sampleserver3.arcgisonline.com/ArcGIS/rest/services/Fire/Sheep/FeatureServer/0/addFeatures。这个地址即为实现新增feature功能的rest接口,Format选择JSON,在Features中输入[{"geometry":{"y":34,"x":108},"attributes":{"description":"addPoint","type":2}}],点击Add Features按钮开始执行。

如果成功,返回

否则

相应地,在Flex中需要三步来完成上述操作,首先构造一个JSON格式字符串;其次调用对应的Rest接口;最后对返回结果进行处理。

在Flex中构造JSON字符串,可以采用直接构造或者先构造成嵌套的Object,然后转成JSON两种方式。为了灵活性,本文采用后一种方式,构造的代码如下,

?
var feature: Object = new Object ();
//设置几何信息
feature.geometry = new Object ();
feature.geometry.x = x;
feature.geometry.y = y;
//设置属性信息
feature.attributes = new Object ();?
feature.attributes[ "description" ] = "addPoint" ;
feature.attributes[ "type" ] = type;
?????????????????
//把对象转成JSON,备注:此处使用的是Flash Builder的JSON类,需要SDK4.5及其以上版本的支持。
//当然也可以使用ArcGIS Flex API带的JSON类,在3.0版本中JSON类该层了JSONUtil。???????????????
var arr: Array = new Array ();
arr.push(feature);
var features: String = JSON.stringify(arr);

在Flex中调用ArcGIS Server REST API,通过URLRequest调用一个URL地址就可以了,同时需要将JSON赋值给URLRequest的data属性,设置format为json。至于是选择POST还是GET,这个取决于REST接口支持哪种方式。

?
//调用FeatureServer支持的addFeature操作,添加元素;
var loader:URLLoader = new URLLoader();
var request:URLRequest = new URLRequest( "http://sampleserver3.arcgisonline.com/ArcGIS/rest/services/Fire/Sheep/FeatureServer/0/addFeatures" );
request.method = URLRequestMethod.POST;
var data:URLVariables = new URLVariables();
data.f = "json" ;
data.features = features;
request.data = data;

最后需要对返回的结果进行处理,这里尤其要强调的是,执行后有正确和错误两种返回结果。需要对返回的内容进行判断,才能最终确定是否能正确执行。

?
loader.addEventListener(Event.COMPLETE, function (event:Event): void {
//对结果进行处理,分成功和失败两种
});????????????
loader.addEventListener(IOErrorEvent.IO_ERROR, function (event:Event): void {
//执行失败
});????????????
loader.load(request);

更新和删除点

和新增点相差无几,就是调用的REST接口和返回结果有所不同而已,当然需要构造对应的JSON字符串。相关代码均在源程序中,在这里就不再详细讲解。

小结

本文以对点的编辑操作为例,讲述了如何使用ArcGIS Server REST API,当然这种方式不局限于此,适合于所有的REST API。除此之外需要说明的是,上述API支持多个点的同时编辑操作,为了简洁源码中仅仅对单个点进行编辑操作。 开发环境为Flash Builder4.6,ArcGIS API 2.5 for Flex。

http://www.cnblogs.com/esrichina/archive/2012/11/05/2754580.html

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读