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]);
}); }
arcgis 要素服务增删改查的更多相关文章
- 数据库开发基础-SQl Server 控制数据库的服务+数据库的创建与管理(增删改查)
控制数据库的服务: 方法一: 1.Windows+R 打开运行 打开cmd 2.输入net start MSSQLserver 启动数据库服务 输入net stop MSSQLserver 关闭数据 ...
- WCFRESTFul服务搭建及实现增删改查
WCFRESTFul服务搭建及实现增删改查 RESTful Wcf是一种基于Http协议的服务架构风格, RESTful 的服务通常是架构层面上的考虑. 因为它天生就具有很好的跨平台跨语言的集成能力 ...
- 基于SpringBoot开发一个Restful服务,实现增删改查功能
前言 在去年的时候,在各种渠道中略微的了解了SpringBoot,在开发web项目的时候是如何的方便.快捷.但是当时并没有认真的去学习下,毕竟感觉自己在Struts和SpringMVC都用得不太熟练. ...
- 使用HttpClient对ASP.NET Web API服务实现增删改查
本篇体验使用HttpClient对ASP.NET Web API服务实现增删改查. 创建ASP.NET Web API项目 新建项目,选择"ASP.NET MVC 4 Web应用程序&quo ...
- 数据库开发基础-★SQl Server 控制数据库的服务+数据库的创建与管理(增删改查)★
控制数据库的服务: 方法一: 1.Windows+R 打开运行 打开cmd 2.输入net start MSSQLserver 启动数据库服务 输入net stop MSSQLserver 关闭数据 ...
- AD 域服务简介(三)- Java 对 AD 域用户的增删改查操作
博客地址:http://www.moonxy.com 关于AD 域服务器搭建及其使用,请参阅:AD 域服务简介(一) - 基于 LDAP 的 AD 域服务器搭建及其使用 Java 获取 AD 域用户, ...
- Go微服务框架go-kratos实战03:使用 gorm 实现增删改查操作
一.简介 在上一篇文章 go-kratos实战02 中,详细介绍了用 kratos 编写项目代码的步骤.这篇就在上篇基础上,再结合 Go 数据库操作库 gorm 一步一步来实现一个简单的增删改查操作. ...
- AngularJS的增删改查、state嵌套案例,不涉及服务端
本篇实践一个案例,大致是:左边有导航菜单,右边显示列表,并可对列表项编辑或删除,也可添加新的列表项.借此,可体会到:如何组织可扩展的AngualrJS文件结构,如何点击左侧菜单项右侧显示相应内容,an ...
- WFS1.1.0协议(增删改查)+openlayers4.3.1前端构建+geoserver2.15.1安装部署+shpfile数据源配置
WFS简介 1.WFS即,Web要素服务,全称WebFeatureService.GIS下,支持对地理要素的插入,更新,删除,检索和发现服务. 2.属于OGC标准下的通信协议.OGC标准下的GIS服务 ...
随机推荐
- 接口作为方法的参数或返回值——List接口
接口作为方法的参数或返回值,源码可知,List为一个接口,ArraryList是的它的实现类: 其中,addNames方法中,入参和返回值都List接口,入参是多态的,编译看左,运行看右(访问成员方法 ...
- android使用inject需要注意的地方
android使用inject需要注意的地方1.viewmodel里面添加注解@Inject FavoritesDBManager mFavoritesDBManager; 2.Component里面 ...
- POJ 2492 A Bug's Life (并查集)
Background Professor Hopper is researching the sexual behavior of a rare species of bugs. He assumes ...
- What Would you Find out about MS908CV ?
The Autel MaxiSYS commercial car diagnostics scan device, No. MS908CV, performs increased technique ...
- Django框架----分页器(paginator)
Django的分页器(paginator) view.py from django.shortcuts import render,HttpResponse # Create your views h ...
- 同行span标签设置display:inline-block;overflow:hidden垂直对齐问题
1 问题描述:一个div包含 三个span 当span2 类样式设置如下图时,将导致垂直方向不对齐的情况 2解决方案: 将前面的也设置同样的样式 overflow:hidden; display:in ...
- 海瑞菌的web前端学习直播间
这是本人的web前端学习直播间 一般每天晚上10点--12点为直播时间...以web前端开发为主. 若设备无法打开,请点击链接进入:https://www.huya.com/14958154 setT ...
- 安装虚拟环境virtualenvwrapper和django
以下操作在windows平台进行 1.安装虚拟环境virtualenvwrapper 首先需要安装python管理工具pip,安装完python3.7之后自带了pip,可通过where pip查看管理 ...
- linux下mysql 8.0安装
安装本身同mysql 5.7,仍然建议使用tar.gz解压版,而非rpm安装包版. mysql已经将之前的mysql_native_password认证,修改成了caching_sha2_passwo ...
- mysql 水平分表技术
这里做的是我的一个笔记. 水平分表比较简单, 理解就是: 合并的表使用的必须是MyISAM引擎 表的结构必须一致,包括索引.字段类型.引擎和字符集 数据表 user1 CREATE TABLE `us ...