目录

一、引言

二、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删除要素相关推荐

  1. 开源GIS(十三)——openlayers通过geoserver中WFS添加要素

    目录 一.引言 二.WFS添加要素实现 三.WFS添加要素原理 1.请求xml 2.postman使用 3.要素添加 4.返回xml 四.总结 一.引言 ArcGIS server的要素增删改查实在是 ...

  2. 开源GIS(十四)——openlayers通过geoserver中WFS更改要素

    目录 一.引言 二.WFS更改要素实现 三.WFS更改要素原理 1.请求xml 2.postman使用 3.要素修改 4.返回xml 四.总结 一.引言 上文介绍了通过WFS服务进行添加,在很多情况下 ...

  3. Visual C++ 2008入门经典 第十五章 在窗口中绘图

    /*第十五章 在窗口中绘图 主要内容: 1 Windows为窗口绘图提供的坐标系统 2 设置环境及其必要性 3 程序如何以及在窗口中绘图 4 如何定义鼠标消息的处理程序 5 如何定义自己的形状类 6 ...

  4. C语言编程>第二十五周 ① 给定程序中,函数fun的功能是:在形参s所指字符串中的每个非数字字符之后插入一个“*”号。

    例题:给定程序中,函数fun的功能是:在形参s所指字符串中的每个非数字字符之后插入一个"*"号. 例如,形参s所指的字符串为:albc45sdtg56f,则执行结果为:a*1b*c ...

  5. C语言编程>第二十五周 ② 下列程序中,函数fun的功能是:将大写字母转换为对应小写字母之后的第五个字母,若为小写字母为v~z,使小写字母的值减21,转换后的小写字母作为函数值返回。

    例题:下列程序中,函数fun的功能是:将大写字母转换为对应小写字母之后的第五个字母,若为小写字母为v-z,使小写字母的值减21,转换后的小写字母作为函数值返回. 例如,若形参是字母A,则转换为小写字母 ...

  6. 二十五、深入Java中的static静态修饰符

    @Author:Runsen @Date:2020/6/2 作者介绍:Runsen目前大三下学期,专业化学工程与工艺,大学沉迷日语,Python, Java和一系列数据分析软件.导致翘课严重,专业排名 ...

  7. 三十五、深入Java中的泛型(下篇)

    @Author:Runsen @Date:2019年10月26日 17:10:34 作者介绍:Runsen目前大三下学期,专业化学工程与工艺,大学沉迷日语,Python, Java和一系列数据分析软件 ...

  8. 路漫漫其修远兮:js的成长经历(二十五)—— Node.js中的MongoDB

    目录 MongoDB简介 MongoDB安装教程 mongoDB基本组成 mongoDB的基本指令 安装可视化操作软件 熟悉使用MongoDB的基本指令(增删改查等) Node进阶-Mongoose ...

  9. 开源GIS(五)——openlayers中interaction的select、draw与modify

    目录 一.引言 二.interaction中select选取feature 三.interaction中draw与modify修改feature 四.总结 一.引言 gis中最基础的就是空间查询,鼠标 ...

最新文章

  1. jQuery EasyUI dialog 居中最简单的办法
  2. 阿里前CEO卫哲的万字长文:被马云骂醒,看透B2B 10大核心问题!
  3. C# GC 垃圾回收机制原理
  4. (转)女生应该找一个玩ACM的男生
  5. 3000字长文剖析!企业大数据到底是什么,从哪来,怎么用?
  6. Java高级语法笔记-HashMap
  7. Python基于用户协同过滤算法的电影推荐代码demo
  8. ES6:Rest 参数和参数默认值【转】
  9. 联想打印机测试软件,办公实用主义 联想LJ3800DW打印机测试
  10. 解决Linux下Questasim中代码字体非常小
  11. Java 菜鸟入门 | 常用进制转换
  12. HTML基础(新手入门教程)
  13. Stable Diffusion:使用Lora用二十张图片训了一个简易版薇尔莉特头像生成器(不作商用,纯纯个人兴趣,狗头保命)
  14. 支付宝个人收款解决方案之支付宝签约方案
  15. 程序人生:如果纯做业务测试的话,在测试行业有出路吗?
  16. java 网络编程(二) tcp传输实现客户端和服务端进行信息交流
  17. NTSTATUS类型返回值及含义
  18. leetcode(546)消消乐(动态规划)
  19. web 树莓派zero_树莓派 零 Raspberry Pi Zero 网络解决方案
  20. git 如何清理操作日志_git 清除所有历史记录

热门文章

  1. 每个叶子节点(nil)是黑色。_填充每个节点的下一个右侧节点指针
  2. 正则除了几个汉字的其它汉字_理解汉字的几个层次
  3. java 协议开发_用Java的NIO开发网络协议
  4. 利用对象字面量创建对象
  5. 计算机组成原理运算器设计,计算机组成原理2_5教学计算机运算器设计.ppt
  6. js 中的 number 为何很怪异 1
  7. MVC Remote属性验证
  8. 一致性 hash 算法(consistent hashing)
  9. hive on tez集成完整采坑指南(含tez-ui及安全环境)
  10. 「非推广」为什么我说本是设计师专属的『数位板』,也是程序猿+科研狗的开会神器?