开源GIS(十四)——openlayers通过geoserver中WFS更改要素
目录
一、引言
二、WFS更改要素实现
三、WFS更改要素原理
1、请求xml
2、postman使用
3、要素修改
4、返回xml
四、总结
一、引言
上文介绍了通过WFS服务进行添加,在很多情况下我们会对当前添加的要素进行修改,本篇将进行介绍,与添加大同小异,不过还是要有细节需要关注。
二、WFS更改要素实现
代码前提是使用interaction的modify对象,“modifyend”事件获取feature对象后,进行保存。
if (modifyFeatures && modifyFeatures.getLength() > 0) {var modifyFeature = modifyFeatures.item(0).clone();modifyFeature.setId(modifyFeatures.item(0).getId());modifyFeature.set('Text', '修改后的text');
/* modifyFeature.set('the_geom', modifyFeature.getGeometry());modifyFeature.unset("geometry");*/modifyFeature.setGeometryName("the_geom");var format = new ol.format.WFS();var xml = format.writeTransaction(null, [modifyFeature], null, {featureNS: 'http://geoserver.org/nyc',featurePrefix: "xcy",//工作空间名称featureType: "polygon"//图层名称});var serializer = new XMLSerializer();var featString = serializer.serializeToString(xml);$.ajax({url: "http://localhost:8080/geoserver/wfs",type: "POST",data: featString,contentType: 'text/xml',success: function (req) {//select.getFeatures().clear();console.log(req);}});}
注意在将旧feature.clone()之后一定要setId(),因为clone函数中没有clone feature的id,不然无法添加;
这里还需要注意的是一定要设置setGeometryName为the_geom,而不是像在上篇文章添加在feature.set("the_geom",geometry)。
我也很纳闷,同样是识别feature中的几何字段,为什么添加的时候是geometry中的key(如图第二个框),更改的时候是feature中的GeometryName的value(如图第一个框),反正不这样设置就添加不上,如果细究的去看看wfs内部实现了,有时间去瞄瞄。
三、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"><Update xmlns:xcy="http://geoserver.org/nyc" typeName="xcy:polygon"><Property><Name>the_geom</Name><Value><MultiPolygon xmlns="http://www.opengis.net/gml"><polygonMember><Polygon><exterior><LinearRing><posList srsDimension="2">508797.40571958 299931.13585535 508825.47244091 299926.35854108 508818.3064695 299913.81809113 508799.3465035 299894.41025191 508788.29896426 299901.57622331 508726.34316985 299918.59540539 508768.1446696922 299948.45361956727 508797.40571958 299931.13585535</posList></LinearRing></exterior></Polygon></polygonMember></MultiPolygon></Value></Property><Property><Name>Text</Name><Value>修改后的text</Value></Property><Filter xmlns="http://www.opengis.net/ogc"><FeatureId fid="polygon.571"/></Filter></Update>
</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>1</wfs:totalUpdated><wfs:totalDeleted>0</wfs:totalDeleted></wfs:TransactionSummary><wfs:TransactionResults/><wfs:InsertResults><wfs:Feature><ogc:FeatureId fid="none"/></wfs:Feature></wfs:InsertResults>
</wfs:TransactionResponse>
四、总结
- WFS要素更改实现;
- WFS要素更改原理;
开源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 四.openlayers中feature的坐标信息获取 五.总结 ...
- 开源GIS(四)——openlayers中geoserver发布的WMS与WFS加载
目录 一.引言 二.geoserver中WMS加载 三.geoserver中WFS加载 四.总结 一.引言 使用openlayer中内置的一些类拓展已经能很好的加载arcgis的图层,比较简单:既然开 ...
- 【《Real-Time Rendering 3rd》 提炼总结】(十一) 第十四章 : 游戏开发中的渲染加速算法总结
本文由@浅墨_毛星云 出品,转载请注明出处. 文章链接: http://blog.csdn.net/poem_qianmo/article/details/78884513 导读 这是一篇1万3千 ...
- 【转载】【《Real-Time Rendering 3rd》 提炼总结】(十一) 第十四章 : 游戏开发中的渲染加速算法总结
本文由@浅墨_毛星云 出品,转载请注明出处. 文章链接: http://blog.csdn.net/poem_qianmo/article/details/78884513 导读 这是一篇1万 ...
- 三十四、深入Java中的泛型(上篇)
@Author:Runsen @Date:2019年10月22日 19:39:21 作者介绍:Runsen目前大三下学期,专业化学工程与工艺,大学沉迷日语,Python, Java和一系列数据分析软件 ...
- 第十四章 梁山好汉中谁最惹人爱
梁山好汉中谁最惹人爱 就帅气而言,武松比不上花荣和燕青,但武松的魅力不一般,超级强,无法挡,可谓人见人爱,动物也不例外. 第一个爱上武松的是柴进.大家先不要误会,这儿的"爱"是广义 ...
- Android探索之旅(第十四篇)Android中实现炫酷效果的Demo(持续收录中......)
RangeSeekBar Android简单实现订单模块类APP的物流详情页 Android开发中阴影效果的实现 Android 炫酷多重水波纹 MultiWaveHeader 利用Spannable ...
- python私有函数实现_024孤荷凌寒自学python第二十四天python类中隐藏的私有方法探秘...
(完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 今天发现了python的类中隐藏着一些特殊的私有方法. 这些私有方法不管我们定义类时是否在类的内部代码块中定义过它们,这些私有方法都是存在的.比 ...
最新文章
- 阿里云智能对话分析服务
- 无人机数车--Drone-based Object Counting by Spatially Regularized Regional Proposal Network
- Vivado中set_clock_groups时钟约束的使用
- d3 svg path添加文本_10 倍高清不花!大麦端选座 SVG 渲染
- 2017.4.5下午
- task文件服务器无法输入,求助大神,win10的输入法无法使用,去开task sche
- 远程连接oracle无监听
- win11如何查看下载速度 Windows11查看下载速度的方法介绍
- jsp错误处理页面_JSP异常处理– JSP错误页面
- 同济大学 线性代数 第六版 pdf_同济大学版工程数学 线性代数 第六版 课本
- python迷宫地图代码_python实现的生成随机迷宫算法核心代码分享(含游戏完整代码)...
- 只愿得一人心白首不分离
- BSCI社会责任验厂对员工考勤和工资的标准和要求
- DenseNet阅读心得体会
- esxi改mac地址_ESXI克隆CentOS修改MAC地址
- val( )函数的用法
- 城域网IPv6过渡技术——MAP技术
- Tomcat优化方案
- 计算机学习常用网站总结
- 资管软件源码|信管家软件源码|通达信陪资|博易大师软件