开源GIS(十五)——openlayers通过geoserver中WFS删除要素
目录
一、引言
二、WFS要素删除实现
三、WFS要素删除原理
1、请求xml
2、postman使用
3、要素删除
4、返回xml
四、openlayers中feature的坐标信息获取
五、总结
一、引言
前两篇文章介绍了以openlayers为工具通过WFS添加和修改要素,最后我们将介绍如何删除一个要素,修改的话比较简单,主要是id对应就可以。
二、WFS要素删除实现
本代码在使用interaction中的select操作,在“select”之后获取到feature,进行删除。
select.on('select', function (evt) {var feature = evt.selected[0];//feature.set('id_',feature.attr.id);var format = new ol.format.WFS();var xml = format.writeTransaction(null, null, [feature], {featureNS: 'http://geoserver.org/nyc',featurePrefix: "xcy",//工作空间名称featureType: "polygon"//图层名称});var serializer = new XMLSerializer();var featString = serializer.serializeToString(xml);$.ajax({url: "http://localhost:8080/geoserver/xcy/wfs",type: "POST",data: featString,contentType: 'text/xml',success: function (req) {console.log(req);//window.location.reload();}});});
本例子中需要注意的地方,在上面代码确实没啥需要注意的,直接使用select就能获取到feature,向transaction中一放就行了,注意的点应该在另外的地方:这些选中的feature是如何加载上去的。
当你使用下面加载矢量数据作为数据源可以放心使用上面的代码
var polygonVectorSource = new ol.source.Vector({format: new ol.format.GeoJSON(),url: function(extent) {return gisip+gisport+'geoserver/xcy/wfs?service=WFS&version=1.0.0&request=GetFeature&typeName='+polygonTypename+'&outputFormat=application%2Fjson';},strategy: ol.loadingstrategy.bbox});
如果你没有使用封装的方法,是通过获取到geojson自己创建feature添加到source中,就需要注意了
$.ajax({type: "GET",url: gisip+gisport+'geoserver/xcy/wfs?service=WFS&request=GetFeature&typeName='+polygonTypename+'&outputFormat=application%2Fjson',dataType:'json',success: function(data){var features=data.features;for(var i=0;i<features.length;i++){var feature=features[i];var ft=new ol.Feature({geometry:new ol.geom.MultiPolygon(feature.geometry.coordinates),//attr:feature});ft.setId(feature.id);ft.attr=feature;var geometry=ft.getGeometry();polygonVectorSource.addFeature(ft);}}});
这里必须使用ft.setId(),给feature设置id,不然你在删除的时候id为空,删除不了。
三、WFS要素删除原理
1、请求xml
<?xml version="1.0" encoding="utf-8"?><Transaction xmlns="http://www.opengis.net/wfs" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" service="WFS" version="1.1.0" xsi:schemaLocation="http://www.opengis.net/wfs http://schemas.opengis.net/wfs/1.1.0/wfs.xsd"><Delete xmlns:xcy="http://geoserver.org/nyc" typeName="xcy:polygon"><Filter xmlns="http://www.opengis.net/ogc"><FeatureId fid="polygon.571"/></Filter></Delete>
</Transaction>
2、postman使用
3、要素删除
4、返回xml
<?xml version="1.0" encoding="UTF-8"?>
<wfs:TransactionResponse xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:wfs="http://www.opengis.net/wfs" xmlns:gml="http://www.opengis.net/gml" xmlns:ogc="http://www.opengis.net/ogc" xmlns:ows="http://www.opengis.net/ows" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.1.0" xsi:schemaLocation="http://www.opengis.net/wfs http://localhost:8080/geoserver/schemas/wfs/1.1.0/wfs.xsd"><wfs:TransactionSummary><wfs:totalInserted>0</wfs:totalInserted><wfs:totalUpdated>0</wfs:totalUpdated><wfs:totalDeleted>1</wfs:totalDeleted></wfs:TransactionSummary><wfs:TransactionResults/><wfs:InsertResults><wfs:Feature><ogc:FeatureId fid="none"/></wfs:Feature></wfs:InsertResults>
</wfs:TransactionResponse>
四、openlayers中feature的坐标信息获取
获取到feature对象的geometry对象
坐标信息都在flatcoordinate中,我们自然想从其中获取,直接使用js基础知识.出来,不过获取到的multipolygon竟然是一个数组,what?不过人明明写着呢是flatcoordinate,就是这样的
要获取到比较规范的要使用下面的,这样使用起来比较方便
五、总结
- WFS要素删除实现;
- WFS要素删除原理;
- feature对象坐标信息获取;
开源GIS(十五)——openlayers通过geoserver中WFS删除要素相关推荐
- 开源GIS(十三)——openlayers通过geoserver中WFS添加要素
目录 一.引言 二.WFS添加要素实现 三.WFS添加要素原理 1.请求xml 2.postman使用 3.要素添加 4.返回xml 四.总结 一.引言 ArcGIS server的要素增删改查实在是 ...
- 开源GIS(十四)——openlayers通过geoserver中WFS更改要素
目录 一.引言 二.WFS更改要素实现 三.WFS更改要素原理 1.请求xml 2.postman使用 3.要素修改 4.返回xml 四.总结 一.引言 上文介绍了通过WFS服务进行添加,在很多情况下 ...
- Visual C++ 2008入门经典 第十五章 在窗口中绘图
/*第十五章 在窗口中绘图 主要内容: 1 Windows为窗口绘图提供的坐标系统 2 设置环境及其必要性 3 程序如何以及在窗口中绘图 4 如何定义鼠标消息的处理程序 5 如何定义自己的形状类 6 ...
- C语言编程>第二十五周 ① 给定程序中,函数fun的功能是:在形参s所指字符串中的每个非数字字符之后插入一个“*”号。
例题:给定程序中,函数fun的功能是:在形参s所指字符串中的每个非数字字符之后插入一个"*"号. 例如,形参s所指的字符串为:albc45sdtg56f,则执行结果为:a*1b*c ...
- C语言编程>第二十五周 ② 下列程序中,函数fun的功能是:将大写字母转换为对应小写字母之后的第五个字母,若为小写字母为v~z,使小写字母的值减21,转换后的小写字母作为函数值返回。
例题:下列程序中,函数fun的功能是:将大写字母转换为对应小写字母之后的第五个字母,若为小写字母为v-z,使小写字母的值减21,转换后的小写字母作为函数值返回. 例如,若形参是字母A,则转换为小写字母 ...
- 二十五、深入Java中的static静态修饰符
@Author:Runsen @Date:2020/6/2 作者介绍:Runsen目前大三下学期,专业化学工程与工艺,大学沉迷日语,Python, Java和一系列数据分析软件.导致翘课严重,专业排名 ...
- 三十五、深入Java中的泛型(下篇)
@Author:Runsen @Date:2019年10月26日 17:10:34 作者介绍:Runsen目前大三下学期,专业化学工程与工艺,大学沉迷日语,Python, Java和一系列数据分析软件 ...
- 路漫漫其修远兮:js的成长经历(二十五)—— Node.js中的MongoDB
目录 MongoDB简介 MongoDB安装教程 mongoDB基本组成 mongoDB的基本指令 安装可视化操作软件 熟悉使用MongoDB的基本指令(增删改查等) Node进阶-Mongoose ...
- 开源GIS(五)——openlayers中interaction的select、draw与modify
目录 一.引言 二.interaction中select选取feature 三.interaction中draw与modify修改feature 四.总结 一.引言 gis中最基础的就是空间查询,鼠标 ...
最新文章
- jQuery EasyUI dialog 居中最简单的办法
- 阿里前CEO卫哲的万字长文:被马云骂醒,看透B2B 10大核心问题!
- C# GC 垃圾回收机制原理
- (转)女生应该找一个玩ACM的男生
- 3000字长文剖析!企业大数据到底是什么,从哪来,怎么用?
- Java高级语法笔记-HashMap
- Python基于用户协同过滤算法的电影推荐代码demo
- ES6:Rest 参数和参数默认值【转】
- 联想打印机测试软件,办公实用主义 联想LJ3800DW打印机测试
- 解决Linux下Questasim中代码字体非常小
- Java 菜鸟入门 | 常用进制转换
- HTML基础(新手入门教程)
- Stable Diffusion:使用Lora用二十张图片训了一个简易版薇尔莉特头像生成器(不作商用,纯纯个人兴趣,狗头保命)
- 支付宝个人收款解决方案之支付宝签约方案
- 程序人生:如果纯做业务测试的话,在测试行业有出路吗?
- java 网络编程(二) tcp传输实现客户端和服务端进行信息交流
- NTSTATUS类型返回值及含义
- leetcode(546)消消乐(动态规划)
- web 树莓派zero_树莓派 零 Raspberry Pi Zero 网络解决方案
- git 如何清理操作日志_git 清除所有历史记录
热门文章
- 每个叶子节点(nil)是黑色。_填充每个节点的下一个右侧节点指针
- 正则除了几个汉字的其它汉字_理解汉字的几个层次
- java 协议开发_用Java的NIO开发网络协议
- 利用对象字面量创建对象
- 计算机组成原理运算器设计,计算机组成原理2_5教学计算机运算器设计.ppt
- js 中的 number 为何很怪异 1
- MVC Remote属性验证
- 一致性 hash 算法(consistent hashing)
- hive on tez集成完整采坑指南(含tez-ui及安全环境)
- 「非推广」为什么我说本是设计师专属的『数位板』,也是程序猿+科研狗的开会神器?