地图动态标绘--B/S应用(二)

2024-02-25 10:58
文章标签 动态 应用 地图 标绘

本文主要是介绍地图动态标绘--B/S应用(二),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

作者:Sniper

动态标绘广泛应用于电力、通信和应急等多个行业和领域。它可以用形象生动的矢量符号描述各种业务对象,表示各种资源,还可以动态渲染业务进度和流程。

在地图动态标绘–B/S应用(一)这篇博客中我们介绍了在B/S应用中使用SuperMap iServer和SuperMap iClient实现关于动态标绘的数据发布、使用标绘控件和面板以及编辑标号等功能。那么今天我们介绍下标绘态势图保存、加载、上传以及下载的操作。

一、态势图的保存和加载

首先我们需要知道的是,再客户端绘制成功的态势图,可以保存在服务器中,也可以保存在本地。对服务器中态势图的相关操作就是态势图的保存和加载。

首先,我们可以在iServer的动态标绘服务中看到当前服务器保存的态势图,本地服务地址为:
http://iserverihost:8090/iserver/services/plot-jingyong/rest/plot/smlInfos
态势图列表

态势图文件在服务器中的物理存储路径为发布的plot文件同级目录下的SmlFile目录下,即:
服务器态势图本地文件

打开态势图文件可以看到,实际上态势图文件中存储的是json格式的标绘符号信息,如下:
这里写图片描述

加载态势图的时候,iClient会读取到态势图中的内容并绘制到地图上。需要注意的是,态势图文件本身不包含坐标信息,其中的坐标值是地图坐标系中的值。暂时不支持投影转换。

那么如何用iClient的代码来实现保存和载入态势图呢?
1、按照上一篇文章中描述的那样,添加标绘图层,添加标绘绘制控件和编辑控件,定义态势标绘总控类,获取获取态势数据管理接口,绘制标绘符号。这里只贴出来定义总控类和获取获取态势数据管理接口的代码,其余代码请参考地图动态标绘–B/S应用(一)。

//总控类
plotting = new SuperMap.Plotting(map, serverUrl);
//获取获取态势数据管理接口
sitManager = plotting.getSitDataManager();

2、保存态势图

sitManager.saveSmlFile();

这里非常简单,就是使用态势数据管理类,调用saveSmlFile方法。但需要注意的是,如果当前服务器中没有保存态势图,则会新建一个名为situationMap的态势图文件。如果服务器中已经有了situationMap,则覆盖。

3、另存态势图

sitManager.saveAsSmlFile("yourSituationMap");

将当前绘制的符号保存到一个名为yourSituationMap的态势图文件中,同样的道理,如果已经存在yourSituationMap,就会覆盖原文件。

4、加载态势图

        //加载态势图function loadSimulationMap() {function success() {var sitDataLayers = sitManager.getSitDataLayers();plottingEdits = [];drawGraphicObjects = [];for (var i = 0; i < sitDataLayers.length; i++) {plottingEdits.push(sitDataLayers[i].plottingEdit);drawGraphicObjects.push(sitDataLayers[i].drawGraphicObject);stylePanel.addEditLayer(sitDataLayers[i]);}plotPanel.setDrawFeature(drawGraphicObjects[0]);}function fail() {console.log("error");}var select = document.getElementById("SLT");for (var i = 0; i < select.children.length; i++) {if (select.children[i].selected) {//打开指定的已发布态势图文件到指定图层,未指定图层则加载到this.activeLayer。sitManager.openSmlFileOnServer(select.children[i].value, success, fail);}}}

这里是创建一个select标签,从标签中获取要加载的态势图名称,然后读取态势图文件,将其中的标绘符号渲染出来。

二、态势图的上传和下载

态势图的下载就是将当前服务器上的态势图文件保存到本地,同时也可以将本地的态势图文件上传到服务器。下载的态势图中的数据结构和服务器中存储的一样,上传的态势图保存在服务器中的相应位置。
下面我们来看一下怎么通过代码来实现上传和下载的操作:

1、下载

//服务地址
var serverUrl = "http://localhost:8090/iserver/services/plot-jingyong/rest/plot/";
//从服务器上获取指定的态势文件的下载地址
var result = sitManager.downloadSmlFileURL(downliadFileName);
//组织url
var downloadUrl = serverUrl + result;
//打开新页面下载
window.open(downloadUrl);

下载下来的态势图如图所示,是一个以态势图名称命名的没有后缀名的文件。
下载下来的态势图文件

用nodepad++打开该文件可以看到,其中的文件格式和服务器中保存的一样:
nodepad++打开

2、上传

        function fileFilter(){//上传文件var file = document.getElementById('smlFile');file.setAttribute("accept",".sml");}

这里使用fileupLoad.js来上传文件,fileupLoad.js可以在 iServer目录\iClient\forJavaScript\examples\js中获取。

       //上传态势图文件。function uploadSmlFile( ){function sucess(){getSMLInfos();}function fail(){console.log("todo something if faied");}//要上传到服务器的态势图文件的div的id。//成功回调函数//失败回掉函数sitManager.uploadSmlFile('smlFile', sucess, fail);}

上传后的态势图,就可以在iServer的服务页面中看到。

到这里关于态势标绘图的保存、加载、上传、下载的操作已经全部介绍完毕了。那么关于标绘符号的SQL查询、几何查询等功能,我们下一篇再讲~

这篇关于地图动态标绘--B/S应用(二)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/745253

相关文章

中文分词jieba库的使用与实景应用(一)

知识星球:https://articles.zsxq.com/id_fxvgc803qmr2.html 目录 一.定义: 精确模式(默认模式): 全模式: 搜索引擎模式: paddle 模式(基于深度学习的分词模式): 二 自定义词典 三.文本解析   调整词出现的频率 四. 关键词提取 A. 基于TF-IDF算法的关键词提取 B. 基于TextRank算法的关键词提取

水位雨量在线监测系统概述及应用介绍

在当今社会,随着科技的飞速发展,各种智能监测系统已成为保障公共安全、促进资源管理和环境保护的重要工具。其中,水位雨量在线监测系统作为自然灾害预警、水资源管理及水利工程运行的关键技术,其重要性不言而喻。 一、水位雨量在线监测系统的基本原理 水位雨量在线监测系统主要由数据采集单元、数据传输网络、数据处理中心及用户终端四大部分构成,形成了一个完整的闭环系统。 数据采集单元:这是系统的“眼睛”,

无人叉车3d激光slam多房间建图定位异常处理方案-墙体画线地图切分方案

墙体画线地图切分方案 针对问题:墙体两侧特征混淆误匹配,导致建图和定位偏差,表现为过门跳变、外月台走歪等 ·解决思路:预期的根治方案IGICP需要较长时间完成上线,先使用切分地图的工程化方案,即墙体两侧切分为不同地图,在某一侧只使用该侧地图进行定位 方案思路 切分原理:切分地图基于关键帧位置,而非点云。 理论基础:光照是直线的,一帧点云必定只能照射到墙的一侧,无法同时照到两侧实践考虑:关

第10章 中断和动态时钟显示

第10章 中断和动态时钟显示 从本章开始,按照书籍的划分,第10章开始就进入保护模式(Protected Mode)部分了,感觉从这里开始难度突然就增加了。 书中介绍了为什么有中断(Interrupt)的设计,中断的几种方式:外部硬件中断、内部中断和软中断。通过中断做了一个会走的时钟和屏幕上输入字符的程序。 我自己理解中断的一些作用: 为了更好的利用处理器的性能。协同快速和慢速设备一起工作

csu 1446 Problem J Modified LCS (扩展欧几里得算法的简单应用)

这是一道扩展欧几里得算法的简单应用题,这题是在湖南多校训练赛中队友ac的一道题,在比赛之后请教了队友,然后自己把它a掉 这也是自己独自做扩展欧几里得算法的题目 题意:把题意转变下就变成了:求d1*x - d2*y = f2 - f1的解,很明显用exgcd来解 下面介绍一下exgcd的一些知识点:求ax + by = c的解 一、首先求ax + by = gcd(a,b)的解 这个

hdu1394(线段树点更新的应用)

题意:求一个序列经过一定的操作得到的序列的最小逆序数 这题会用到逆序数的一个性质,在0到n-1这些数字组成的乱序排列,将第一个数字A移到最后一位,得到的逆序数为res-a+(n-a-1) 知道上面的知识点后,可以用暴力来解 代码如下: #include<iostream>#include<algorithm>#include<cstring>#include<stack>#in

动态规划---打家劫舍

题目: 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。 思路: 动态规划五部曲: 1.确定dp数组及含义 dp数组是一维数组,dp[i]代表

zoj3820(树的直径的应用)

题意:在一颗树上找两个点,使得所有点到选择与其更近的一个点的距离的最大值最小。 思路:如果是选择一个点的话,那么点就是直径的中点。现在考虑两个点的情况,先求树的直径,再把直径最中间的边去掉,再求剩下的两个子树中直径的中点。 代码如下: #include <stdio.h>#include <string.h>#include <algorithm>#include <map>#

【区块链 + 人才服务】可信教育区块链治理系统 | FISCO BCOS应用案例

伴随着区块链技术的不断完善,其在教育信息化中的应用也在持续发展。利用区块链数据共识、不可篡改的特性, 将与教育相关的数据要素在区块链上进行存证确权,在确保数据可信的前提下,促进教育的公平、透明、开放,为教育教学质量提升赋能,实现教育数据的安全共享、高等教育体系的智慧治理。 可信教育区块链治理系统的顶层治理架构由教育部、高校、企业、学生等多方角色共同参与建设、维护,支撑教育资源共享、教学质量评估、

AI行业应用(不定期更新)

ChatPDF 可以让你上传一个 PDF 文件,然后针对这个 PDF 进行小结和提问。你可以把各种各样你要研究的分析报告交给它,快速获取到想要知道的信息。https://www.chatpdf.com/