两种方式:

第一种

要素服务的增删改操作,在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]);
}); }

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

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

    控制数据库的服务: 方法一: 1.Windows+R 打开运行  打开cmd 2.输入net start MSSQLserver 启动数据库服务 输入net stop MSSQLserver 关闭数据 ...

  2. WCFRESTFul服务搭建及实现增删改查

    WCFRESTFul服务搭建及实现增删改查 RESTful Wcf是一种基于Http协议的服务架构风格,  RESTful 的服务通常是架构层面上的考虑. 因为它天生就具有很好的跨平台跨语言的集成能力 ...

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

    前言 在去年的时候,在各种渠道中略微的了解了SpringBoot,在开发web项目的时候是如何的方便.快捷.但是当时并没有认真的去学习下,毕竟感觉自己在Struts和SpringMVC都用得不太熟练. ...

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

    本篇体验使用HttpClient对ASP.NET Web API服务实现增删改查. 创建ASP.NET Web API项目 新建项目,选择"ASP.NET MVC 4 Web应用程序&quo ...

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

    控制数据库的服务: 方法一: 1.Windows+R 打开运行  打开cmd 2.输入net start MSSQLserver 启动数据库服务 输入net stop MSSQLserver 关闭数据 ...

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

    博客地址:http://www.moonxy.com 关于AD 域服务器搭建及其使用,请参阅:AD 域服务简介(一) - 基于 LDAP 的 AD 域服务器搭建及其使用 Java 获取 AD 域用户, ...

  7. Go微服务框架go-kratos实战03:使用 gorm 实现增删改查操作

    一.简介 在上一篇文章 go-kratos实战02 中,详细介绍了用 kratos 编写项目代码的步骤.这篇就在上篇基础上,再结合 Go 数据库操作库 gorm 一步一步来实现一个简单的增删改查操作. ...

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

    本篇实践一个案例,大致是:左边有导航菜单,右边显示列表,并可对列表项编辑或删除,也可添加新的列表项.借此,可体会到:如何组织可扩展的AngualrJS文件结构,如何点击左侧菜单项右侧显示相应内容,an ...

  9. WFS1.1.0协议(增删改查)+openlayers4.3.1前端构建+geoserver2.15.1安装部署+shpfile数据源配置

    WFS简介 1.WFS即,Web要素服务,全称WebFeatureService.GIS下,支持对地理要素的插入,更新,删除,检索和发现服务. 2.属于OGC标准下的通信协议.OGC标准下的GIS服务 ...

随机推荐

  1. MySQL 0Day漏洞出现 该漏洞可以拿到本地Root权限

    2016年9月12日, legalhackers.com网站发布了编号为CVE-2016-6662的0day漏洞公告 .由于该漏洞可以获得MySQL服务器的Root权限,且影响MySql5.5.5.6 ...

  2. windows下多个python版本共存,如何在Windows7系统上安装最新的64位Python3.6.2

    windows下多个python版本共存,如何在Windows7系统上安装最新的64位Python3.6.2 1.官网下载python3.6.2https://www.python.org/ftp/p ...

  3. redis安装--转

    第一部分:安装redis 希望将redis安装到此目录 1 /usr/local/redis 希望将安装包下载到此目录 1 /usr/local/src 那么安装过程指令如下: 1 2 3 4 5 6 ...

  4. css 初级进阶

    摘自:https://www.jianshu.com/p/dcc40ccc9841 CSS中级 Class和ID选择器 CSS初级教程中我们可以使用HTML标签选择器定义样式. 同样你也可以使用Cla ...

  5. mysql5.5被django抛弃,安装mysql5.7记录

    安装: https://www.jb51.net/article/123004.htm 问题解决: https://blog.csdn.net/zztingfeng/article/details/8 ...

  6. P1382 楼房

    P1382 楼房 每个矩形拆成2个坐标按$x$轴排序,蓝后$multiset$维护最高值. #include<iostream> #include<cstring> #incl ...

  7. Excel vba map/dictionary

    今天在调整一生成java代码的工具时,要用到在不同语言间互转数据类型的逻辑,原来的代码中根据excel记录的行号来计算,再到另外一个collection中获取,个人想着这也太土鳖了,于是搜了下,在vb ...

  8. 鸡兔同笼问题(Java)

    问题描述:编程解决鸡兔同笼问题,笼子中鸡兔共有35只,94只脚,求有鸡和兔各有几只 我的代码: /** * 鸡兔同笼问题 * @author Administrator * */ public cla ...

  9. mvc 遇到的问题

    VS2010无法加载项目,此安装不支持该项目类型. 错误产生的原因是以前是用2010建的,后来用2012打开,可能是经过转换后,2010又打不开了. 用VS2010无法加载项目,提示:无法打开项目文件 ...

  10. centos6.9 svn提交更新到网站根目录

    一.首先创建网站根目录 ~] # mkdir -pv /export/home/cms/www_dyrs ~] # svn co svn://127.0.0.1/svn1 /export/home/c ...