想要一个本地部署的海洋实景三维展示系统吗?

news2025/1/9 15:10:41

最近几年实景三维非常火,很多人包括博主都想将自己平时干的海洋测绘项目进行实景三维化,这样做的好处就是无论是管理数据还是成果展示都非常方便。我们可能会使用谷歌地图、奥维地图、图新地球等地图服务软件,它们也提供了一些测量、画图功和漫游功能。它们大部分是桌面版,调用在线地图数据,如果我们用它们管理自己的数据,一是担心数据安全问题,二是不能部署在内部局域网,三是没有源代码,功能不能扩充,四是重装软件需要重新配置数据。

有鉴于此,博主在保留《基于Cesium和mars3d海洋三维管线信息系统》的查询、测量和漫游等功能的基础之上,以威海刘公岛为例,构建一套水上水下一体化三维实景系统。下面是详细的开发步骤:

1、数据准备:图新地球下载刘公岛18级影像,具体见文献5。地形数据使用全球3弧秒DEM,具体见文献6,下载n40e120.tif。用影像范围裁剪地形tiff。

正在上传…重新上传取消​

2、地形数据切片使用CesiumLab的地形切片功能将地形TIFF转成Geojson。

在CesiumLab的官网http://www.cesiumlab.com,下载Cesiumlab最新版,安装,注册,登录。

(1)导入设置文件属性,设置最大处理级别、无数据值、空间参考等相关信息。

(2)经纬度局部坐标系(ENU):如果不设置,表示采用默认的经纬度,即北京天安门经纬度。点击经纬度局部坐标系,设置好经纬度(122.187674,37.502478),点击确定就会在空间参考的文本框内出现对应坐标信息。

(3)EPSG编码搜索:点击弹出搜索框,在框内输入EPSG编码,回车后下面列表将出现对应的编码,选中该编码(4326-WGS84),确定即可。

(4)三角算法选择vcg:vcg 是基于经典的边塌陷算法的三角网简化算法,该算法网格结构质量较好,误差更小,但是缺陷是处理速度较慢。ctb 是一种基于网格的快速三角网简化算法,算法计算速度快,缺陷是误差较大。vcg 的时间消耗大约是 ctb 的 60 倍。

(5)提交处理,生成地形json文件,文件夹的文件结构如下:

3、提取水面矢量

提取范围边界,转成shp格式文件,作为动态水面的范围。

4、发布数据

使用GeoServer作为二维地图服务器,发布矢量和栅格数据。GeoServer安装按照参考文献4。

在tomcat的geoserver目录下data/data目录下添加子目录liugongdao,在liugongdao下建立两个子目录:vector和raster,vector目录存放矢量文件,raster目录存放栅格文件。

新建工作区:liugongdao

命名空间URI:http://localhost:8080/geoserver/liugongdao

数据存储,添加数据存储,添加矢量数据目录,和栅格数据文件。

图层:添加新图层,逐一发布图层。

浏览新发布的图层,下图是发布的边界矢量图形和卫星影像。

5、配置文件config.json

config.json是实景三维系统的图层配置文件。无论是矢量数据还是栅格数据都是以图层的形式加载到三维图中。地形数据也类似于图层一样添加至三维图中,但是一个三维图中仅有一个地形。

(1)设定视图的起始点,(122.187674,37.502478,1827)

(2)设定地形文件,将生成的地形切片放在/mapdata/terrain/liugongdao,在配置文件中增加:

{ "pid": 60, "type": "terrain", "name": "刘公岛地形", "terrain": { "type": "xyz", "url": "mapdata/terrain/liugongdao" }, "radio": true },

(3)因为地形数据反映是海底的地形,位于水面以下,通常喜欢做一个动态水面,增加三维显示效果。提取水深成果范围作为水面矢量文件,在ArcMap中转成geojson文件放在mapdata/geojson目录下,在config.json增加如下语句,就可以得到动态水面效果,见下图所示。

{

"id": 303012,

"pid": 3030,

"type": "geojson",

"name": "水面(面状)",

"url": "mapdata/geojson/shuimian.json",

"symbol": {

"type": "water",

"styleOptions": {

"height": 10,

"normalMap": "img/textures/waterNormals.jpg",

"frequency": 8000.0,

"animationSpeed": 0.02,

"amplitude": 5.0,

"specularIntensity": 0.8,

"baseWaterColor": "#006ab4",

"blendColor": "#006ab4",

"opacity": 0.4,

"clampToGround": false

}

},

"show": false

},

(4)在GeoServer的图层预览中打开栅格图层的地址如下:

http://localhost:8080/geoserver/liugongdao/wms?service=WMS&version=1.1.0&request=GetMap&layers=liugongdao%3Aliugongdao&bbox=1.3598492799245965E7%2C4506876.364550371%2C1.360552500584846E7%2C4511768.334360803&width=768&height=534&srs=EPSG%3A404000&format=application/openlayers#toggle

将其写到config.json的格式如下:

{

"pid": 4020,

"name": "地形面",

"type": "wms",

"url": "http://localhost:8080/geoserver/liugongdao/wms",

"layers": "liugongdao:liugongdao",

"crs": "EPSG:4326",

"parameters": { "transparent": "true", "format": "image/png" },

"showClickFeature": false,

"center": { "lat": 37.5024478, "lng": 122.187674, "alt": 1827, "heading": 359.2, "pitch": -40.0, "roll": 360 },

"popup": "all",

"show": false,

"flyTo": true

},

6、网络服务器

系统开发由三部分组成,分别是Nginx网络服务器、Chrome客户端调试工具和代码编辑器VSCode。

在Nginx网络服务器的配置文件中增加如下的服务:

server {

keepalive_requests 120; #单连接请求上限次数。

listen       4546;   #监听端口

server_name  127.0.0.1;   #监听地址

location  ~*^.+$ {       #请求的url过滤,正则匹配。

root htmls;  #根目录

index index.html;  #设置默认页

#proxy_pass  http://mysvr;  #请求转向mysvr 定义的服务器列表

#deny 127.0.0.1;  #拒绝的ip

#allow 172.18.5.54; #允许的ip

}}

至此,威海刘公岛一体化实景三维系统就完成了。

7、主要功能展示

(1)空间测量

(2)图标标记

(3)剖面分析

(4)缓冲分析

(5)淹没分析

(6)方量分析

(7)飞行漫游

8、小结

该系统是本地化部署,没有数据安全问题;代码是开源的,功能可随意扩充;系统是网络版的,即使重装操作系统和软件,数据也无需再配置,若部署在局域网服务器,可实现局域网数据共享,局域网内任何客户端通过浏览器就可以访问。

如果您想要这样一个本地部署的海洋实景三维展示系统,请关注公众号留言咨询。

参考文献

1、一些海洋数据的分享及地磁tiff数据的提取

2、基于mars3d海洋三维管线系统开发中期总结

3、基于cesium和mars3d海洋三维管线信息系统开发完工总结

4、利用GeoServer建立本地二维地图服务器

5、中科图新地图软件(LocaSpaceViewer)非常不错

6、全球3弧秒超分辨率DEM数据集真是好样的

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

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

相关文章

使用Hexo在Github上搭建个人博客

使用Hexo在Github上搭建个人博客 1. 安装Node和git2. 安装Hexo3. Git与Github的准备工作4. 将Hexo部署到Github5. 开始写作 1. 安装Node和git 在Mac上安装Node.js可以使用Homebrew,使用以下命令安装: brew install node使用以下命令安装Git: …

解决 Uncaught TypeError: SpriteCanvasMaterial is not a constructor.

文章目录 前言一、替代语法总结 前言 上周买了本《Three.js开发指南》, 第三版, 里面的语法不太跟趟, 有点旧, 倒也不能全怪作者, three迭代的确很快. 一、替代语法 这几天没事做, 加上前面本来就接触过Three, 很快进展到了第六章. 在推进 利用Canvas贴图给精灵(Sprite)增加样…

研发工程师玩转Kubernetes——启用microk8s的监控面板(dashboard)

安装插件 microk8s enable dashboard 查看dashboard 地址 由于dashboard是在kube-system的namespace中,我们可以使用下面指令查看它服务的地址。 microk8s kubectl get service -n kube-system kubernetes-dashboard 可以得到地址是https://10.152.183.167。 登…

Android Jetpack-Databinding基本使用

文章目录 让你的项目支持Databinding基本使用布局和绑定表达式常用运算符判空null获取对象属性避免空指针异常其他控件引用资源引用 事件处理import,variables,and includesimportVariablesIncludes 数据更新->UI更新监听字段变化更新监听对象变化更新 UI更新->数据更新绑…

MPLS隧道——隧道迭代与MPLS高可靠性

目录 MPLS隧道迭代 什么情况下需要隧道迭代 解决方法 MPLS高可靠性 VPN FRR VPN GR MPLS隧道迭代 什么情况下需要隧道迭代 解决方法 两种解决方法 将IBGP邻居更改为Vpnv4的IBGP邻居(为目标网段产生私网标签,然后此带标签的BGP路由直接进入标签隧道…

作为程序员的你,常用的工具软件有哪些?

不会还有程序员没用过Chatgpt吧? 我现在的工作日常:把需求提给Chatgpt,代码出来后再自行润色一下代码,然后到工业环境里跑一下,没问题就可以提交了。一来一回效率提高了好几倍,摸鱼的时间都变多了…… 除了…

自学黑客(网络安全)必学内容

随着时代的发展,经济、社会、生产、生活越来越依赖网络。而随着万物互联的物联网技术的兴起,线上线下已经打通,虚拟世界和现实世界的边界正变得模糊。这使得来自网络空间的攻击能够穿透虚拟世界的边界,直接影响现实世界的安全。 …

环环相扣,循环不止:深入解析循环队列

本盘博客会讲解力扣“622. 设计循环队列”的解题思路,这是题目链接。 先来审下题: 以下是示例: 以下是提示: 如何设计一个循环队列呢?这里我用数组来实现。结构的定义如下: typedef struct {int* a; …

又一神器开源!无需服务器支持!打通手机,浏览器的Web LLM!

大家好,我是千与千寻,大家可以叫我“千寻哥”,之前和大家分享了两篇关于ChatGPT的技术文章: 1.chatgpt 2.chatgpt ChatGPT毫无疑问是现在最大的风口,各个行业都在集成ChatGPT的API接口以及各类的应用插件&#xff0…

本地部署 GPT Academic

本地部署 GPT Academic GPT Academic 项目概述Github 地址部署 GPT Academic配置 GPT Academic 参数启动 GPT Academic访问 GPT AcademicNew Bing Cookie 的获取方法 GPT Academic 项目概述 GPT 学术优化 (GPT Academic),为GPT/GLM提供图形交互界面,特别…

SSM整合(单元测试、结果封装、异常处理)

文章目录 1,SSM整合1.1 流程分析1.2 整合配置步骤1:创建Maven的web项目步骤2:添加依赖步骤3:创建项目包结构步骤4:创建SpringConfig配置类步骤5:创建JdbcConfig配置类步骤6:创建MybatisConfig配置类步骤7:创建jdbc.properties步骤8:创建SpringMVC配置类步…

【Leetcode刷题】算法:最长公共前缀

文章目录 一、题目描述二、解题思路2.1 解法12.2 解法22.3 解法32.4 解法4 三、结果提交 一、题目描述 二、解题思路 2.1 解法1 class Solution:def longestCommonPrefix(self, strs: List[str]) -> str:if not strs: # 如果字符串数组为空,则返回空字符串ret…

MIL-STD-1553B总线系统搭建指导

MIL-STD-1553B总线系统搭建指导 1.1553B总线协议 1.11553B总线介绍 MIL-STD-1553B(GJB 289A)是一种应用于机载电子设备间通信的共享式总线通信协议,以总线式拓扑结构连接最多31个终端设备互联,传输速率为1Mbps,在航…

任务跟踪器重要性探析:提升项目效率,实现管理优化

使用任务跟踪器完成项目的最显著好处之一是它们大大减少了开始新项目的初始阻力,尤其是当它们是大型、长期和复杂的项目时。任务跟踪器可用于将这些艰巨的项目分解为更小的、相互依赖的任务,这些任务有助于激发动力和行动以实现最终目标。使用项目任务跟…

Python: 让单元测试输出像GoogleTest一样

文章目录 1. 目的2. 原版 unittest 的输出3. 仿 GoogleTest 的输出效果4. 实现原理浅析传入 testRunner 参数testRunner 参数应该满足的条件颜色高亮: ASCII 转义字符的使用测试用例输出文本内容的格式调整:仿googletest 5. 完整实现代码6. 完整调用代码…

$‘\r‘: command not found syntax error near unexpected token `$‘do\r‘‘ 解决方案

问题描述 今天在执行代码时出现了这样的错误: bash xxx.sh xxx.sh: line 2: $\r: command not found xxx.sh: line 7: $\r: command not found xxx.sh: line 8: syntax error near unexpected token $do\r 经查阅,发现是.sh文件在windows下编辑&#xf…

Nevron Open Vision for .NET Crack

Nevron Open Vision for .NET Crack 增加了对Microsoft.NET 7.0的支持-NOV现在完全支持.NET Core 7.0,此外还支持Microsoft.NET Framework 4.7.2、.NET Core 5.0和.NET Core 6.0的内部版本。 用于.NET改进的NOV图表 添加了WPF和WinForms版本中提供的新3D渲染引擎。新…

展会回顾 | 2023元宇宙生态博览会圆满落幕,3DCAT荣获“元宇宙交互技术奖”

2023年5月10日-5月12日,一场涵盖了元宇宙终端头显、数字文娱、数字艺术、数字运动、数字多媒体展陈设计、数字展厅展馆、科技文旅、夜游演艺、沉浸式KTV/酒吧等多个领域的元宇宙商业盛会——2023第2届世界元宇宙生态博览会在广州广交会展馆A区3.2馆、4.2馆掀开帷幕。…

Python求balance_list【三】

本文为博主原创,未经授权,严禁转载及使用。 本文链接:https://blog.csdn.net/zyooooxie/article/details/130159648 很早之前,我写了2篇 如何求balance_list 的博客: https://blog.csdn.net/zyooooxie/article/detail…

DeepFM - 工业界经典baseline(哈工大 华为)

文章目录 1、模型结构如下:2、关键理解点:3、代码实现细节:DeepFM: A Factorization-Machine based Neural Network for CTR Prediction。dfm由哈工大和华为合作发表在IJCAI-2017;模型结构很简单,wide&deep结构。1、模型结构如下: 相比wide&deep [下文简称wd] 有…