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

2024-05-30 15:38

本文主要是介绍基于mars3d海洋三维管线系统开发中期总结,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

从8月下旬到现在,差不多20天,海洋三维管线系统开发基本上完成了预想的一半。原始设想就是做一个类似于mars3d基础项目的网络海洋三维系统。

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

1、前10天主要是数据处理和制作。

(1)用geoserver发布平台矢量平台点和管线数据

无标题2.png

无标题3.png

关于三维管线,根据一些文献和技术文档,主要思路就是,每段管线必须提前做好,生成gltf模型,然后通过程序将管线模型加载到三维场景中;如果通过坐标实时生成,速度慢,而且效果也比较差。

(2)地形数据制作

地形数据推荐使用cesiumlab制作,地形栅格数据格式,一般是tif ,也有dem或者img。tif制作步骤就是,用geosoft生成grid,然后导出surfer的grd格式,在globalmapper转成dem,在ArcMap打开dem,转成tif。

点击查看原图

(3)地形贴图,通过geoserver发布;然后在ArcMap中将shp转成json,生成矢量水面。

点击查看原图

(4)建筑物制作,由于没有无人机飞的三维模型数据,只能通过SHP转换。具体做法就是:根据卫片,画出建筑物的轮廓,然后,在ArcMap编辑建筑物的高度和名称,使用cesiumlab转成3dtiles。

点击查看原图

点击查看原图

2、后10天主要是编码。

之前将javaScript主要内容看了2-3遍,一直没有动手编代码,有较强的畏难情绪,感觉javascript语法比较复杂,而且夹杂着大量HTML和CSS的内容。虽然HTML和CSS难度不大,但涵盖的内容及其惊人。单个网页的内容(包含HTML和javaScript代码)轻松过万行。

动手开始编码以后,发现javaScript虽然杂,但是难度自己想象的那么难。javaScript主要特点是函数功能强大,函数不但可以做函数,还可以做变量,还有匪夷所思的自调用函数。在ES6之前,它的类功能也是函数提供的。jQuery库类似与MFC,异步编程其实就是VC的回调函数。现在javaScript有向着面向对象语言发展的趋势,更加标准化。下面是mars3d提供的widget变成示例:

;(function (window, mars3d) {

//创建widget类,需要继承BaseWidget

class MyWidget extends mars3d.widget.BaseWidget {

//外部资源配置

get resources() {

return ['view.css']

}

//弹窗配置,弹窗div弹窗,而非iframe模式

get view() {

return {

type: 'divwindow',

url: 'view.html',

windowOptions: {

width: 250,

},

}

}

//初始化[仅执行1次]

create() {}

//每个窗口创建完成后调用

winCreateOK(opt, result) {

//此处可以绑定页面dom事件

}

//激活插件

activate() {

toastr.info('激活插件_example_divwin')

}

//释放插件

disable() {

toastr.info('释放插件_example_divwin')

}

}

//注册到widget管理器中。

mars3d.widget.bindClass(MyWidget)

//每个widet之间都是直接引入到index.html中,会存在彼此命名冲突,所以闭包处理下。

})(window, mars3d)

上面的代码首先是一个自调用函数,函数里面有一个widget的类。

目前主要完成了空间测量、空间标记、空间分析(剖面、缓冲和淹没)等功能

(1)空间测量功能,主要测距、测面积、高度差等

点击查看原图

(2)空间标记,在三维图上标注点、线、面以及模型等

点击查看原图

(3)空间分析包括剖面、缓冲区以及淹没分析等

点击查看原图

点击查看原图

点击查看原图

(4)飞行漫游功能

无标题13.png

更多咨询见xiaok海洋测绘网及同名公众号

æ æ é¢2.png

 

这篇关于基于mars3d海洋三维管线系统开发中期总结的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Python FastAPI+Celery+RabbitMQ实现分布式图片水印处理系统

《PythonFastAPI+Celery+RabbitMQ实现分布式图片水印处理系统》这篇文章主要为大家详细介绍了PythonFastAPI如何结合Celery以及RabbitMQ实现简单的分布式... 实现思路FastAPI 服务器Celery 任务队列RabbitMQ 作为消息代理定时任务处理完整

Linux系统中卸载与安装JDK的详细教程

《Linux系统中卸载与安装JDK的详细教程》本文详细介绍了如何在Linux系统中通过Xshell和Xftp工具连接与传输文件,然后进行JDK的安装与卸载,安装步骤包括连接Linux、传输JDK安装包... 目录1、卸载1.1 linux删除自带的JDK1.2 Linux上卸载自己安装的JDK2、安装2.1

Spring Boot + MyBatis Plus 高效开发实战从入门到进阶优化(推荐)

《SpringBoot+MyBatisPlus高效开发实战从入门到进阶优化(推荐)》本文将详细介绍SpringBoot+MyBatisPlus的完整开发流程,并深入剖析分页查询、批量操作、动... 目录Spring Boot + MyBATis Plus 高效开发实战:从入门到进阶优化1. MyBatis

Python基于wxPython和FFmpeg开发一个视频标签工具

《Python基于wxPython和FFmpeg开发一个视频标签工具》在当今数字媒体时代,视频内容的管理和标记变得越来越重要,无论是研究人员需要对实验视频进行时间点标记,还是个人用户希望对家庭视频进行... 目录引言1. 应用概述2. 技术栈分析2.1 核心库和模块2.2 wxpython作为GUI选择的优

利用Python开发Markdown表格结构转换为Excel工具

《利用Python开发Markdown表格结构转换为Excel工具》在数据管理和文档编写过程中,我们经常使用Markdown来记录表格数据,但它没有Excel使用方便,所以本文将使用Python编写一... 目录1.完整代码2. 项目概述3. 代码解析3.1 依赖库3.2 GUI 设计3.3 解析 Mark

利用Go语言开发文件操作工具轻松处理所有文件

《利用Go语言开发文件操作工具轻松处理所有文件》在后端开发中,文件操作是一个非常常见但又容易出错的场景,本文小编要向大家介绍一个强大的Go语言文件操作工具库,它能帮你轻松处理各种文件操作场景... 目录为什么需要这个工具?核心功能详解1. 文件/目录存javascript在性检查2. 批量创建目录3. 文件

Linux系统之主机网络配置方式

《Linux系统之主机网络配置方式》:本文主要介绍Linux系统之主机网络配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、查看主机的网络参数1、查看主机名2、查看IP地址3、查看网关4、查看DNS二、配置网卡1、修改网卡配置文件2、nmcli工具【通用

Linux系统之dns域名解析全过程

《Linux系统之dns域名解析全过程》:本文主要介绍Linux系统之dns域名解析全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、dns域名解析介绍1、DNS核心概念1.1 区域 zone1.2 记录 record二、DNS服务的配置1、正向解析的配置

java常见报错及解决方案总结

《java常见报错及解决方案总结》:本文主要介绍Java编程中常见错误类型及示例,包括语法错误、空指针异常、数组下标越界、类型转换异常、文件未找到异常、除以零异常、非法线程操作异常、方法未定义异常... 目录1. 语法错误 (Syntax Errors)示例 1:解决方案:2. 空指针异常 (NullPoi

Linux系统中配置静态IP地址的详细步骤

《Linux系统中配置静态IP地址的详细步骤》本文详细介绍了在Linux系统中配置静态IP地址的五个步骤,包括打开终端、编辑网络配置文件、配置IP地址、保存并重启网络服务,这对于系统管理员和新手都极具... 目录步骤一:打开终端步骤二:编辑网络配置文件步骤三:配置静态IP地址步骤四:保存并关闭文件步骤五:重