arcgis 要素服务增删改查

两种方式:

第一种

要素服务的增删改操作,在ArcGIS API for JS中给我们提供了三个类用于要素的增Add,删Delete,改Update

添加draw和要素服务

//用于操作的要素图层,注意我们是操作的宿舍楼图层
                    var featureLayer = new FeatureLayer("http://localhost:6080/arcgis/rest/services/Test/ft/FeatureServer/1",
                         {
                            mode:FeatureLayer.MODE_SNAPSHOT,
                            outFields: ["*"]
                         });
                    //在添加要素时,利用Draw工具获得geometry对象
                    var d = new Draw(map, { showTooltips: true });
                    //要操作的graphic
                    var g;
   query("button").on("click",function(event){
                        //获得按钮的文本
                        var value=this.innerHTML;
                        //根据文本绑定不同的事件
                        switch(value){
                            case "添加要素":
                                d.activate(Draw.POLYGON);
                                break;
                            case "删除要素":
                                //创建Graphic对象,删除OBJECTID为34的元素,
                                //因为OBJECTID是主键,所以只需要指定主键即可
                                g=new Graphic("","",{
                                    "OBJECTID":34
                                });
                                //创建删除对象
                                var de=new Delete({
                                    "featureLayer":featureLayer,
                                    "deletedGraphics":[g]
                                });
                                //执行删除结果
                                de.performRedo();
                                //刷新图层
                                layer.refresh();
                                break;
                            case "修改要素":
                                //用于修改要素的函数,查询更新为36的要素
                                updateFeature(36);
                                break;
                            case "查询要素":
                                //用于查询要素的函数,查询主键为36的要素
                                searchFeather(36);
                                break;
                        }
                    });

修改、更新:

var oldUpdateGrapgics;
var updateGrapgics;

var selectid = selectArray[0]["OBJECTID"];

var queryTask, query;
    queryTask = new esri.tasks.QueryTask(featureURL);
    //dojo.connect(queryTask, "onComplete", showResults);
    var queryWhere = "OBJECTID=" + selectid;
    //build query filter
    query = new esri.tasks.Query();
    query.returnGeometry = true;
    query.outFields = ["*"];
    query.where = queryWhere;
    queryTask.execute(query, queryUpdateResults);

    function queryUpdateResults(results) {
        var features = results.features;
        oldUpdateGrapgics = features[0];
        updateGrapgics = new esri.Graphic(oldUpdateGrapgics.toJson());
        //featureAttribution["OBJECTID"] = ;
        $("input[name=‘OBJECTID‘]").val(updateGrapgics.attributes["OBJECTID"]);
        $("input[name=‘ID‘]").val(updateGrapgics.attributes["ID"]);
        $("input[name=‘要素代码‘]").val(updateGrapgics.attributes["要素代码"]);
        $("input[name=‘图斑编号‘]").val(updateGrapgics.attributes["图斑编号"]);
        $("input[name=‘地类编码‘]").val(updateGrapgics.attributes["地类编码"]);
        $("input[name=‘城镇用地‘]").val(updateGrapgics.attributes["城镇用地"]);
    }

function saveUpdateClick() {
    require(["esri/map", "dojo/on",
            "esri/layers/FeatureLayer",
            "esri/graphic", "esri/dijit/editing/Add",
            "esri/dijit/editing/Delete", "esri/dijit/editing/Update", "esri/tasks/query", "dojo/json",
            "dojo/domReady!"
        ],
        function(Map, on, FeatureLayer, Graphic, Add, Delete, Update, Query, jsonUtil) {
            //console.log($("#attrForm").serialize());
            // attributes =$("#attrForm").serializeObject(); //将表单序列化为JSON对象
            //console.log(attributes);
            // updateGrapgics.setAttributes(attributes);
            // editFeatureLayer.applyEdits(null, [updateGrapgics], null);
            updateGrapgics.attributes[‘要素代码‘] = getValueOrNULL($("input[name=‘要素代码‘]").val());
            updateGrapgics.attributes[‘图斑编号‘] = getValueOrNULL($("input[name=‘图斑编号‘]").val());
            updateGrapgics.attributes[‘城镇用地‘] = getValueOrNULL($("input[name=‘城镇用地‘]").val());

            var update = new Update({
                "featureLayer": editFeatureLayer,
                "postUpdatedGraphics": [updateGrapgics], //修改之后的要素
                "preUpdatedGraphics": [oldUpdateGrapgics] //修改之前的要素
            });

            update.performRedo();
            //刷新视图
            editFeatureLayer.refresh();
            alert("修改成功");
        });
}

删除

var selectid = selectArray[0].OBJECTID;
    var selectids = [];
    selectids.push(selectid);

    $("#table").bootstrapTable(‘remove‘, {
        field: ‘OBJECTID‘,
        values: selectids
    });
    //queryFeaturesByWhere();
    var queryTask, query;
    queryTask = new esri.tasks.QueryTask(featureURL);
    //dojo.connect(queryTask, "onComplete", showResults);
    var queryWhere = "OBJECTID=" + selectid;
    //build query filter
    query = new esri.tasks.Query();
    query.returnGeometry = true;
    query.outFields = ["*"];
    query.where = queryWhere;
    queryTask.execute(query, deleteResults);

function deleteResults(results) {
    var gs = results.features;
    editFeatureLayer.applyEdits(null, null, gs, function(evt) {
        console.log(evt);
        // alert("删除成功");
    });
    // return features;
}

第二种:

FeatureLayer.applyEdits函数说明

applyEdits函数是FeatureLayer类中的一个方法,主要作用是修改featurelayer的要素,但仅对要素服务(feature service)

函数形式:applyEdits(adds?, updates?, deletes?, callback?, errback?)

返回类型:dojo.Deferred

参数表:

1)<Graphic[]> adds 可选项 要被添加到要素服务中的图层中的要素数组。新要素通常由Draw工具条创建。

2)<Graphic[]> updates 可选项 几何对象和属性有所改变的要素数组。要素必须有一个有效的OBJECTID。要素的几何对象通常由Edit工具条修改。属性使用Attribute Inspector修改。

3)<Graphic[]> deletes 可选项 待删除的要素数组,这些要素必须有有效的OBJECTID。

4)<Function> callback 可选项 当操作完成时本函数会被调用。传给本函数的参数和onEditsComplete事件中的一样。

5)<Function> callback 可选项 如果有错误发生将会返回一个错误对象。

例子:

//更新require([
  "esri/layers/FeatureLayer", ...
], function(FeatureLayer, ... ) {
  var firePerimeterFL = new FeatureLayer( ... );
  var targetGraphic = firePerimeterFL.getSelectedFeatures()[0].setGeometry(reshapedGeometry);
  firePerimeterFL.applyEdits(null, [targetGraphic], null);
  ...
});
//删除        function initSelectToolbar(evt) {
            var petroFieldsFL = evt.layers[0].layer;

            petroFieldsFL.on("dbl-click", function(evt) {
                    event.stop(evt);
                    petroFieldsFL.applyEdits(null, null, [evt.graphic]);
            });

        }

原文地址:https://www.cnblogs.com/zhaoyanhaoBlog/p/9510547.html

时间: 2024-10-17 03:50:28

arcgis 要素服务增删改查的相关文章

数据库开发基础-SQl Server 控制数据库的服务+数据库的创建与管理(增删改查)

控制数据库的服务: 方法一: 1.Windows+R 打开运行  打开cmd 2.输入net start MSSQLserver 启动数据库服务 输入net stop MSSQLserver 关闭数据库服务 输入net pause MSSQLserver 暂停数据库服务 输入net continue MSSQLserver 继续数据库服务 数据库的创建与管理(增删改查): 打开SQL Server 2008 方法二: 1.打开控制面板→管理工具→服务 2.右键进行选择 数据库的创建与管理: 打开

使用HttpClient对ASP.NET Web API服务实现增删改查

本篇体验使用HttpClient对ASP.NET Web API服务实现增删改查. 创建ASP.NET Web API项目 新建项目,选择"ASP.NET MVC 4 Web应用程序". 选择"Web API". 在Models文件夹下创建Product类. public class Product { public int Id { get; set; } public string Name { get; set; } public string Categor

SAP云平台以微服务的方式提供了Document的CRUD(增删改查)操作。该微服务基于标准的CMI

SAP云平台以微服务的方式提供了Document的CRUD(增删改查)操作.该微服务基于标准的CMIS协议(Content Management Interoperability Service). 同标准的CMIS相比,SAP云平台的Document Service增添了一些功能的支持: 通过一个Hello World应用来了解如何在Java程序里消费SAP云平台的Document Service. 通过这个链接下载例子程序. 点击该超链接下载Java Web Tomcat 8 SDK. 例子

AD 域服务简介(三)- Java 对 AD 域用户的增删改查操作

博客地址:http://www.moonxy.com 关于AD 域服务器搭建及其使用,请参阅:AD 域服务简介(一) - 基于 LDAP 的 AD 域服务器搭建及其使用 Java 获取 AD 域用户,请参阅:AD 域服务简介(二)- Java 获取 AD 域用户 一.前言 在日常的开发中,为了实现单点登录,需要对域用户进行增删改查操作,以维持最新的用户信息,确保系统的安全. 二.Java 对 AD 域用户的增删改查操作 package com.moonxy.ad; import java.uti

基于SpringBoot开发一个Restful服务,实现增删改查功能

在去年的时候,在各种渠道中略微的了解了SpringBoot,在开发web项目的时候是如何的方便.快捷.但是当时并没有认真的去学习下,毕竟感觉自己在Struts和SpringMVC都用得不太熟练.不过在看了很多关于SpringBoot的介绍之后,并没有想象中的那么难,于是开始准备学习SpringBoot. 在闲暇之余的时候,看了下SpringBoot实战以及一些大神关于SpringBoot的博客之后,开始写起了我的第一个SpringBoot的项目.在能够对SpringBoot进行一些简单的开发Re

AngularJS的增删改查、state嵌套案例,不涉及服务端

本篇实践一个案例,大致是:左边有导航菜单,右边显示列表,并可对列表项编辑或删除,也可添加新的列表项.借此,可体会到:如何组织可扩展的AngualrJS文件结构,如何点击左侧菜单项右侧显示相应内容,angular-ui-router的使用以及嵌套state,增删改查,等等. 大致如下: 当点击添加按钮: 当点击更新按钮: 文件结构 node_modules/src/.....app/..........categories/  ...............categories.js  <包含一个

数往知来 ASP.NET MVC HtmlHelper、MVC快速增删改查 Cache MVC3客户端验证 MVC隐式异步提交 &lt;二十八&gt;

一.HtmlHelper.MVC快速增删改查 MVC 在MVC里面请求首先到控制器-->然后 -->数据库数据放在APP_DATE文件夹里, -->js.css文件放在content文件夹里 -->控制器放在Controllers里,控制器要以controller结尾 控制器下面的所有方法都称为action 2)webform跟 aspnet MVC:区别请求的地址不一样了 MVC请求的是控制器下面的action webform:aspx页面或者是一般处理程序 -->a标签

zookeeper基本命令,增删改查

zookeeper被广泛的使用,由于项目中用到了dubbo框架,所以今天也来简单分享一下zookeeper的简单命令,来查询服务和节点信息,不说了,直接来增删改查命令. -h命令: [zk: localhost:2189(CONNECTED) 35] h ZooKeeper -server host:port cmd args addauth scheme auth close config [-c] [-w] [-s] connect host:port create [-s] [-e] [-

[转]什么是Pro*C/C++,嵌入式SQL,第一个pro*c程序,pro*c++,Makefile,Proc增删改查

1 什么是Pro*C/C++ 1.通过在过程编程语言C/C++中嵌入SQL语句而开发出的应用程序 2.什么是嵌入式SQL 1.在通用编程语言中使用的SQL称为嵌入式SQL 2.在SQL标准中定义了很多中语言的嵌入式SQL 3.各个厂商对嵌入式SQL的具体实现不同 3.什么是Pro*C/C++ 1.在C/C++语言中嵌入SQL语句而开发出的应用程序. 2.目的:使c/c++这种效率语言称为访问数据库的工具. 4.嵌入式SQL的载体是宿主语言 宿主语言 Pro程序 C/C++ Pro*C/C++ F