arcgis xml 下载 切片_openlayers6结合geoserver利用WFS服务实现图层编辑功能(附源码下载)...

0be5961f2516564ea8d0176faa8fe040.png

内容概览

1.openlayers6结合geoserver利用WFS服务实现图层编辑功能
2.源代码demo下载

效果图如下:

50ba3f40f590787459e27957517b23e2.png

54d93586284b5c9633dfd427d212f5a6.png
本篇主要是参照openlayers6结合geoserver利用WFS服务实现图层新增功能(附源码下载)基础上实现的,openlayers6通过调用geoserver发布的地图服务WFS来达到图层编辑记录的目的。与GeoServer的WFS进行基于Rest交互关键就在于请求参数,值得注意的是这些请求最好采用POST方法发送。查询可以采用json,但增加,删除,修改都只能采用XML形式Transaction
  • 部分核心代码,完整的见源码demo下载
//叠加geoserver发布的wms图层 
var geoserverUrl = 'http://localhost:8080/geoserver/WebGIS'; 
var wmsSource = new TileWMS({ url: geoserverUrl+'/wms', params: {'LAYERS': 'WebGIS:testLayer', 'TILED': true}, serverType: 'geoserver', crossOrigin: 'anonymous' 
}); var wmsLayer = new TileLayer({ source: wmsSource 
}); var view = new View({ projection: 'EPSG:4326', //center: [0, 0], //zoom: 2 center: [113.90271877, 22.95186415], zoom: 13 
}) var map = new Map({ target: 'map', layers: [ new TileLayer({ source: new XYZ({ //url: 'https://{a-c}.tile.openstreetmap.org/{z}/{x}/{y}.png' url: 'http://cache1.arcgisonline.cn/arcgis/rest/services/ChinaOnlineStreetPurplishBlue/MapServer/tile/{z}/{y}/{x}' }) }), wmsLayer ], overlays: [overlay], view: view 
}); //监听地图鼠标事件 
map.on('singleclick',function(e) { if (e.dragging) { return; } var feature =map.forEachFeatureAtPixel(e.pixel, function(feature) { return feature; }); //console.log('feature',feature); //console.log('e',e); if(feature==undefined){ //隐藏气泡窗口 overlay.setPosition(undefined); closer.blur(); } var viewResolution = /** @type {number} */ (view.getResolution()); var url = wmsSource.getFeatureInfoUrl( e.coordinate, viewResolution, 'EPSG:4326', {'INFO_FORMAT': 'application/json'}); if (url) { fetch(url) .then(function (response) { return response.json(); }) .then(function (json) { //document.getElementById('info').innerHTML = html; console.log('json',json); var coordinate = e.coordinate; if(json.features.length>0){ var properties = json.features[0].properties; var id = json.features[0].id; var geometry = json.features[0].geometry; //var elements = '名称:'+properties.estate_num+'</br>备注:'+properties.holder_nam+'</br><button type="button" id="editBtn">编辑</button>'; var elements = '<span>名称:</span><input type="text" id="estate_num"  value = "'+properties.estate_num+'" /></br><span>备注:</span><input type="text" id="holder_nam" value = "'+properties.holder_nam+'"  /></br><button type="button" id="editBtn">编辑</button>'; content.innerHTML = elements; overlay.setPosition(coordinate); $("#editBtn").unbind("click"); $("#editBtn").click(function(){ //console.log('编辑按钮点击事件');  if(id) { //构造polygon  var polygon = ''; var data = geometry.coordinates[0][0]; for(var i=0;i<data.length;i++){ var item = data[i]; polygon += item[0] + ',' + item[1] + ' ' ; } polygon += data[0][0] + ',' + data[0][1]; //只编辑属性信息,默认图形信息不变,感兴趣的,读者你们可自行编辑图形变化信息,这里预留图形参数传值了的 editLayers(id,polygon,$("#estate_num").val(),$("#holder_nam").val(),callbackEditLayersWFSService); } });  } }); } }) /*图层编辑 *@method editLayers *@param polygon 图形 *@param fid 记录fid值 *@param fieldValue1 字段1值 *@param fieldValue2 字段2值 *@return callback */ function editLayers(fid,polygon,fieldValue1,fieldValue2, callback){ var xml = '<wfs:Transaction service="WFS" version="1.0.0"    xmlns:opengis="http://webgis.com"     xmlns:wfs="http://www.opengis.net/wfs"    xmlns:ogc="http://www.opengis.net/ogc"    xmlns:gml="http://www.opengis.net/gml"   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    xsi:schemaLocation="http://www.opengis.net/wfs   http://schemas.opengis.net/wfs/1.0.0/WFS-basic.xsd">'; xml += '<wfs:Update typeName="WebGIS:testLayer">'; xml += '<wfs:Property>'; xml += '<wfs:Name>the_geom</wfs:Name>'; xml += '<wfs:Value>'; xml += '<gml:LineString>'; xml += '<gml:coordinates decimal="." cs="," ts=" ">' + polygon + '</gml:coordinates>'; xml += '</gml:LineString>'; xml += '</wfs:Value>'; xml += '</wfs:Property>'; xml += '<wfs:Property>'; xml += '<wfs:Name>estate_num</wfs:Name>'; xml += '<wfs:Value>' + fieldValue1 + '</wfs:Value>'; xml += '</wfs:Property>'; xml += '<wfs:Property>'; xml += '<wfs:Name>holder_nam</wfs:Name>'; xml += '<wfs:Value>' + fieldValue2 + '</wfs:Value>'; xml += '</wfs:Property>'; xml += '<ogc:Filter>'; xml += '<ogc:FeatureId fid="' + fid + '"/>'; xml += '</ogc:Filter>'; xml += '</wfs:Update>'; xml += ' </wfs:Transaction>'; $.ajax({ url: geoserverUrl+'/wfs', async: true, data:xml, type:'Post', contentType: 'text/xml', success(result) { callback(result); }, error(err) { console.log(err); } }) } /* * 图层编辑回调函数 */ function callbackEditLayersWFSService(data){ console.log('data',data); //刷新图层 clearMap(); wmsSource.refresh(); } function clearMap(){ //隐藏气泡窗口 overlay.setPosition(undefined); closer.blur(); 
} 

几点说明:
1.WebGIS,geoserver工作区;
2.testLayer,操作图层名称;
3.fid,操作图层的默认固有属性字段。
4.estate_num,holder_nam,操作图层属性字段。
图层编辑回调函数,操作成功或者失败,可以在网页的控制台网络看请求结果

79b7eeac483116b48bbd01058220a934.png

完整的源码demo下载在链接文章尾部

openlayers6结合geoserver利用WFS服务实现图层编辑功能(附源码下载) - 小专栏​xiaozhuanlan.com
347c7c7afa851fb2e19ecb14ad1c50a6.png

对本专栏感兴趣的话,可以关注一波

GIS之家店铺:GIS之家
GIS之家源码咨询:GIS之家webgis入门开发系列demo源代码咨询

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/508205.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

存储性能测试软件怎么用的,《杉岩两语》:Vdbench在分布式存储性能测试中的使用方法...

Vdbench是Oracle编写的一款应用广泛的存储性能测试工具&#xff0c;既支持块设备的性能测试&#xff0c;也支持文件系统性能测试。Vdbench使用java编写&#xff0c;兼容linux和windows的操作系统&#xff0c;使用方便。1、Vdbench使用及结果参看使用vdbench时需要先安装java的j…

计算机键盘练习,电脑键盘指法练习

电脑键盘指法练习就像使用筷子&#xff0c;只有掌握了正确的指法&#xff0c;夹东西才稳。对于电脑键盘也一样&#xff0c;只有掌握了正确的指法&#xff0c;打字速度才会快。以下百分网小编整理的电脑键盘指法练习介绍&#xff0c;希望对大家有所帮助&#xff0c;更多信息请关…

c语言 数组、字符串的形参格式_华中师范大学计算机考研874C语言笔记(一)

运算符优先级自右向左记忆口诀条件赋值自增减&#xff08;?: //- -- &#xff09;指针取址按位反 (* & ~)内存非负强制转 (sizeof ! - (type))define 前面的#标志着define是一个【预处理命令】而不是C语句。高字节在【高地址】存储单元&#xff0c;低字节在【低地址】存储…

前端分页_前端分页

1、适合情形前端分页一般用于数据量较小的情况&#xff0c;一次请求把数据全部从后端请求回来。2、前端分页例子前端分页代码示例​github.comcd front-end-page 进入front-end-page 文件夹下npm install 安装依赖npm run dev …

服务器分发系统如何做性能测试,怎么做软件性能测试,完整的性能测试流程有哪些内容?...

原标题&#xff1a;怎么做软件性能测试&#xff0c;完整的性能测试流程有哪些内容&#xff1f;一、做性能测试前的准备工作1.要清楚服务器的ip地址和账号密码(目的是用于监控)2.服务器的系统是什么3.是否需要多级联合4.服务器一共有几台5.了解服务器的配置情况6.本机的配置(16g…

cocos怎么把res文件夹放服务器上,cocos2d 三合一跑胡子房卡+服务器组件+后台控制+安装教程+棋牌完整源码...

cocos2d 三合一跑胡子房卡服务器组件后台控制棋牌完整源码安装方法&#xff1a;1将工程下的res和src目录复制到version/fromSource 目录中2使用cocos2dx命令 把src目录下的js文件转换成jsc文件在fromSource目录下执行cocos jscompile -s . -d .3删除掉src目录下的js 文件 只保留…

优秀自我简介200字_急需稿件,稿费200元起/篇 | 公众号【深夜秘杏酱】长期征稿(可签约)...

“深夜秘杏酱”征稿函新号大量收稿 欢迎写手大大们踊跃投稿哦Hi&#xff01;我们是一个专注女生性知识科普及女生情感生活的新号——深夜秘杏酱&#xff01;我们希望能在这个新成立的公众号上跟各位小姐姐分享各种搞怪有趣但又干货满满的性知识,一起偷摸“开车”&#xff0c;顺…

kafka中topic默认属性_分享:Kafka 的 Lag 计算误区及正确实现

前言消息堆积是消息中间件的一大特色&#xff0c;消息中间件的流量削峰、冗余存储等功能正是得益于消息中间件的消息堆积能力。然而消息堆积其实是一把亦正亦邪的双刃剑&#xff0c;如果应用场合不恰当反而会对上下游的业务造成不必要的麻烦&#xff0c;比如消息堆积势必会影响…

手机系统安装打印机服务器错误代码,OKI打印机报错?各型号代码故障解决方法...

原标题&#xff1a;OKI打印机报错&#xff1f;各型号代码故障解决方法这一期干货贴邀请大家一起看看OKI打印机常见报错代码↓↓↓1、报错代码 610/611/612/613黄色/品红色/青色/黑色碳粉盒未安装产生原因&#xff1a;◆可替代芯片安装不正确、芯片触点上有异物遮挡、鼓组件探针…

python3 批量定义多个变量_Python 3.8 新功能大揭秘

Python 3.8是Python语言的最新版本&#xff0c;它适合用于编写脚本、自动化以及机器学习和Web开发等各种任务。现在Python 3.8已经进入官方的beta阶段&#xff0c;这个版本带来了许多语法改变、内存共享、更有效的序列化和反序列化、改进的字典和更多新功能。Python 3.8还引入了…

div独占一行 html_web前端基础-HTML及CSS选择器

HTML及CSS选择器一、html基本结构二、html标签1、标题标签2、a标签3、img标签4、div和span标签5、列表标签6、表格标签7、form表单8、select下拉框标签9、textarea标签三、CSS1、css样式引入方式2、标签嵌套3、css选择器一、html基本结构html是一种超文本标记语言&#xff0c;进…

监控系统服务器如何配置,监控系统服务器的配置

监控系统服务器的配置 内容精选换一换裸金属服务器安装Agent后&#xff0c;裸金属实例出现在云监控服务管理控制台的“主机监控 > 弹性云服务器”列表中。主机监控Agent根据169.254.169.254提供的服务来判断是弹性云服务器还是裸金属服务器。如果该地址的路由被修改&#xf…

解析markdown_markdown-it 原理浅析

前言最近使用 markdown-it 比较多&#xff0c;也开发了一些插件&#xff0c;在这个过程中对源码进行了研读&#xff0c;最终写了这篇文章。需要了解细节的读者可以自行阅读文档。此文分为两个部分&#xff1a;原理剖析和原理应用&#xff08;编写插件&#xff09;。markdown-it…

第一次失效_特斯拉螺栓腐蚀失效分析_搜狐汽车

本文车型速览除了文章作者的主观观点外&#xff0c;我们正尝试基于全网可查的客观数据&#xff0c;为您提供中立、客观的参考依据&#xff1a;本文部分车型速览&#xff1a;展开微信扫码&#xff0c;直接一次看完附近所有城市低价(附近城市均有经销商可售卖至本市) 提交成功&am…

c#计算长方形的周长和面积公式_Java面向对象练习题之计算圆的面积和周长

创建一个圆Circle类。为该类提供一个变量r表示半径&#xff0c;一个常量PI表示圆周率&#xff1b;同时为该类提供两个方法&#xff1a;方法一用于求圆的面积&#xff0c;方法二用于求圆的周长&#xff1b;为该类提供一个无参的构造方法&#xff0c;用于初始化r的值为4。在main方…

简单计算机面试题库及答案_试讲可以看教案吗?必看的面试考前问题解答

“皮卡皮卡&#xff01;”教资面试倒计时4天啦快使尽全力发出你的十万伏特胜利就在前方部分小伙伴们还对教资面试存在种种疑惑下面牛奶为大家一一作出解答教师资格面试题目是如何确定的?答&#xff1a;面试题目分为试讲题目、结构化题目和答辩题目。▲试讲题目是考生在备课前&…

python输出读取的空格数目_Python 3基础教程: 输入和输出具体代码实例

在前面文章中&#xff0c;我们其实已经接触了 Python 的输入输出的功能。本章节我们将具体介绍 Python 的输入输出。输出格式美化Python两种输出值的方式: 表达式语句和 print() 函数。(第三种方式是使用文件对象的 write() 方法; 标准输出文件可以用 sys.stdout 引用。)如果你…

点击button后改变文字_27. 教你零基础搭建小程序:小程序的常见组件—button

筒子们&#xff0c;这一章接着讲Button 标签。开放能力的属性button标签的开放能力是指open-type 属性。其中&#xff0c;这个属性的合法值包括如下&#xff1a;这一部分呢&#xff0c;需要分为两个方式来演示。一是可在模拟器中直接看效果&#xff1b; 二是要通过真机调试看效…

语言把数据写入csv文件_把JSON/CSV文件打造成MySQL数据库

生活中&#xff0c;你我一定都看到过这种「xx元爆改出租屋」&#xff0c;「爆改小汽车」之类的文章&#xff0c;做为IT人&#xff0c;折腾的劲头一点也不差。软件开发过程中&#xff0c;你是否有时候&#xff0c;会拿着业务提供的一个个CSV或者JSON的数据文件&#xff0c;写个解…

图片饱和度_摄影后期完全调色指南(三):饱和度与自然饱和度有什么区别?...

泼辣年度大课 | 摄影后期完全调色指南(一)摄影后期完全调色指南(二)&#xff1a;详解色温与色调在上一篇教程里面我们讲到了全局色彩调整中的色温和色调工具&#xff0c;今天来讲解剩下的两个工具&#xff1a;饱和度与自然饱和度工具&#xff0c;这两个工具使用的频率也非常的高…