zoukankan      html  css  js  c++  java
  • 利用ArcGIS Server REST API实现对Feature的编辑操作

    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://dl.vmall.com/c0bz10cedn

  • 相关阅读:
    洛谷 P3366 【模板】最小生成树
    libfreenect
    openni2 和opencv读取数据
    kinect数据读取
    kinect for windows sdk
    caffe android lib
    Hlsl2glsl
    手势识别半自动标注结果视频
    CLM
    10位算法大师
  • 原文地址:https://www.cnblogs.com/esrichina/p/2754580.html
Copyright © 2011-2022 走看看