爆肝三天,制作属于自己的地图——DAY3(地图数据发布详细教程)

4,重建顶层。

倾斜摄影数据的组织方式,一个 Data 目录下的 Tile 可能会成千上万,如果不使用重建顶层,那么输出的3DTiles的包围盒会非常非常多,增加加载时长。重建顶层,程序会根据瓦片的空间结构关系采用八叉树重建,包围盒该合并的合并,该废弃的废弃,最终加快加载速度。

爆肝第三天,地图数据发布详细教程

作者:御剑飞行

在第二篇中,我们介绍了Maomost Studio支持的数据发布能力

爆肝三天,制作属于自己的地图——DAY2(地图数据发布)

那么本篇完结篇中,我会详细介绍数据集发布的过程,每一个参数我都会详细的说明,让大家加深对Maomost Studio的全能性与便利性的认识。后续我们Mapmost Studio开放使用时,大家也可以去使用并体验体验~~。

一,Mapmost Studio 地图影像发布流程

首先你需要准备好你的数据集,需要确认数据集是否带有地理空间信息。若数据集没有地理空间信息的话,切片程序无法执行下去,并报错。

1,开始


点击控制面板左上方的服务应用集按钮。

然后,点击资源服务管理下拉列表。

接下来点击发布影像服务按钮。

进入到影像服务发布面板,点击右上角的上传按钮。

进入影像发布参数控制面板。

2,输入文件

在面板上输入文件虚线框中,可以自行输入或拖入你的影像文件。

这是我上传好的结果。

3,空间参考

一般情况下空间参考默认为空,你不需要做任何设置,这是因为影像文件中往往都内含地理空间信息。

如果这里没有设置,那么切片程序会从tif 的地理空间信息里读取地理信息数据,如果没有读取成功,切片最终就失败了。

如果你在这里设置空间参考,那么切片程序会使用你设置好的,但是如果此空间参考和影像地理空间信息里的空间范围有冲突,也会导致处理失败或者出现结果异常。所以注意,这里空间参考设置要么就保留空白,要么你就要明确知道影像数据的正确空间参考,否则不要去尝试。

如果你要自行设置,下面是设置方法。

其设置方法与model2tiles等程序相同,分为三种:

第一种为EPSG:{code}。

第二种为采用 wtk 方式描述的空间参考。

第三种为站心坐标系 ENU(east north up),以ENU:{维度},{经度}的方式来设置。

在你要自行设置空间参考的时候,Mapmost Studio支持经纬度局部坐标系(也就是ENU:{维度},{经度} )与EPSG坐标系(也就是EPSG:{code})。

我在这里先选择经纬度局部坐标系试一下。

点击好确认后,就是业界默认的ENU:{维度},{经度} 显示方式:

那如果你要选择EPSG编码搜索,你需要这样设置。就是在编码搜索框中键入你要的EPSG编码,下方会自动出现该坐标系的正式名称。

4,零点坐标

一般而言零点坐标在这里不需要你手动设置,我们的切片程序没有使用这个字段。因为我们觉得影像的偏移不是必须的,或者说这个功能没有人会需要(或许大家加载影像都是想让影像正好,没有人会想让影像偏移)。

5,服务层级

服务层级也就是最终瓦片的最大放大层级,就是你想让瓦片在墨卡托投影下最终能放大到多少级别。切片程序会默认自动计算出最大级别。同时我们Studio的控制面板提供自行设置,范围是【10,25】。如果你自己设置了服务层级,切片程序会取设置的服务层级和自动计算的最小值。一般而言,我们不用管它就好,程序会自行计算。

6,颜色拉伸

栅格数据每个位置有一个值(或者多个波段值),这个值不一定是颜色值,但是除了地形高程栅格外,其他类型的数据如果要做 三维可视化都需要转为图片切片,那么切片里就说常规颜色值。所以就需要一个栅格值到颜色值的映射算法。当然对于绝大多数非专业的栅格(尤其是下载得到的)里面的值就是 RGBA,

那么这个映射就很简单,每个点位最终颜色=栅格里存储的值。

颜色拉伸支持“偏移缩放”、“最值”、“百分比”三种方式。

(1)选中【偏移缩放】,如果【偏移】是 0,【缩放】是 0,根据栅格的波段数值类型来进行自动

处理。如果栅格的每个波段是 8bit,那么根据如下计算:

切片颜色=栅格里存储的值

如果栅格的每个波段是 16bit,那么如下计算:

切片颜色=栅格里存储的值*255/65535

如果【缩放】不是 0 值,那么按照下述计算

切片颜色= ( 栅格里存储的值 + 偏移 ) * 缩放

(2)选中【最值】,则按照下述计算

切片的像素颜色= ( 栅格里存储的值 – 最小值 ) * ( 255 / (最大值 – 最小值))

(3)选中【百分比】,首先根据最小百分比和最大百分比计算需要裁剪的最小像素个数和最大像素个数,然后把所有像素值进行排序,并统计每个像素值的个数,最小像素个数和最大像素个数进行裁剪,最后将剩余部分进行线性拉伸。

例如最小最大百要比都设置为 0.25 时,影像大小为 100*100 像素,首先把像素值从小到大排序,然后找到正序第 100*100*0.25 个像素的像素值 minvalue 和倒序第 100*100*0.25个像素的像素值 maxvalue,最后进行线性拉伸(同最小最大值拉伸),如下述计算

切片的像素颜色= ( 栅格里存储的值 – minvalue ) * ( 255 / (maxvalue – minvalue))

7,背景透明

下拉会出现自动、第四波段、透明色三种方式。

(1), 选中【自动】

处理程序内部自动根据栅格的波段元数据判定哪个波段是透明色。

(2), 选中【第四波段】

如果栅格的波段数大于 3 个,那么强制使用第四波段是透明波段。适合实际数据带第四波段,并且明确知道该波段是透明值的数据。

(3), 选中【透明色】

无论栅格的波段数是多少,只要读取到的颜色等于设定的 RGB 值,认为该像素是纯透明的。

8,服务类型

服务类型说白了就是切出来的影像切片的坐标形式,支持WMTS、TMS两种。

其中

WMTS就是GOOGLE那种切片坐标零点在左上角的切片坐标形式,

TMS就是切片坐标零点在左下角的切片坐标形式。

给大家个网站可以体验下栅格地图两种坐标形式的区别,这网站整的很详细。

Tiles à la Google Maps: Coordinates, Tile Bounds and Projection | No code | MapTiler

9,投影参数

支持经纬度和墨卡托两种。两者投影的精度不相同。

10,瓦片大小

就是最终切片后,正方形切片影像图片的像素宽高,支持256、512、1024三种。

11,发布

别忘了写服务名称,在控制面板最开始的那个框框。我在这里写了“ggggg”,点击发布按钮后,任务面板最上方会出现你的任务进度。(影像比较大,慢慢等吧~~~)

12,预览

发布成功就可以预览了,点击右边那个小眼睛。

随鼠标拖动,影像会自动根据放大层级去更新。

二,Mapmost Studio三维模型发布流程

怎么进入的部分,这次我直接上图。

1,开始

2,服务名称

填你所喜,写你所好。

3,模型类型

目前三维通用模型切片输出3DTiles支持三种格式:OBJ、GLTF、FBX。

在这三个中选一个即可。我这时选择GLTF给大家演示一下。

4,服务文件

操作照旧。

5,空间参考

这部分大家一直是比较在意的,下面我再重复一下。

空间参考分为三种:

第一种为EPSG:{code}。

EPSG:4326 这就是 WGS84 椭球定义的官方编码 。

EPSG:3857 这是流行的电子地图 web 墨卡托,比如谷歌地图,高德地图等都是这种方式。

EPSG:4490 这是我国的椭球定义标准 CGCS2000 。

EPSG:4546 等紧挨着的一系列,都是基于 EPSG:4490 椭球定义,采用 3 度带分割高斯克吕格投影的投影坐标系,也是目前国内数据常用的相关坐标系。

第二种为采用 wtk 方式描述的空间参考,在工程领域,由于一些精度需要,会自定义中

央经线,这样就没有对应的 EPSG 编码,那么这种方式下,会使用如下类似的格式来编写:类似下面这种:

GEOGCS["WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223

563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]

第三种为站心坐标系 ENU(east north up),经常有一些模型没有考虑和地球位置匹配的问题, 可以采用站心坐标系的方式来处理。ENU 是以一个地球表面的位置点做为 0,0,0 点,以垂直地表向上为 z 轴,以正东向为 x 轴,正北向为 y 轴的一个局部空间来定义位置。在这里以ENU:{维度},{经度}的方式来设置。

在你要自行设置空间参考的时候,Mapmost Studio支持经纬度局部坐标系(也就是ENU:{维度},{经度} )与EPSG坐标系(也就是EPSG:{code})。

这次演示我使用EPSG:3857试一下。

6,零点坐标

零点坐标本质上就是中心偏移,是相对于你在上面选择的坐标系的中心点的偏移。零点坐标的出现还是数据精度的问题。假设你要建城市的三维模型,采用流行的 2000 某个投影坐标系,你会发现你的模型坐标非常大:

这个坐标范围几乎难以操作,实践中,经常假定我所有数据都有一个偏移位置,建模的坐标 + 这个偏移位置 = EPSG:4549 下投影坐标,这样就可以解决建模工具的精度问题。那么这个偏移位置就应该设置在零点坐标上。

切片程序的处理逻辑也简单,做空间变换:

                                            模型坐标 + 零点坐标 = WGS84 世界坐标

这样数据才能精确放置到地球上。

在这里,我之前就选择了EPSG:3857坐标系。而我选择的glb模型本身是没有坐标系的,glb模型中的网格中的点的坐标全都是相对坐标,是相对于模型中心点的坐标,比如“23.909,56.345,1.889”,而模型中心点的坐标就是“0,0,0”。

因此我随机设置了一个中心点:"13433488.47,3674354.40,0",这是在EPSG:3857下的XY坐标。结合我之前讲过的“零点坐标本质上就是中心偏移,是相对于你在上面选择的坐标系的中心点的偏移。”,因此中心点:"13433488.47,3674354.40,0"就是相对于EPSG:3857坐标系中心点的偏移,这下大家应该理解了。

(换句话说,如果我选择ENU坐标系,比如ENU:39.90691,116.39123,那么我设置零点坐标的时候,比如“零点坐标:0,0,9.45”,其实就是经纬度保持不变,模型相对于地面的高度整体向上偏移9.45米。)

7,场景处理器

当前通用三维模型切片程序支持小场景和八叉树两种处理模式。目前八叉树处理模式我们正在测试,所以当前只支持小场景模式。下面的讲述都是围绕着小场景处理器展开的。

8,大小参数

大小参数控制产生的最大切片数据量,如果处理过程有一些b3dm超过你设置的大小参数的值(单位是MB),会尝试进行分割,以保证输出的B3DM文件的大小均不超过你设置的大小参数的值(单位是MB)。需要注意,这个分割是在空间进行的。

9,实例优化数

输出的3DTiles瓦片集中若有一些模型是复用的,那么不必每个模型都存储为b3dm,因此只要把模型集合体和纹理存一份,然后保存这些复用的模型的空间变换就可以了,这个最终输出的文件就是i3dm。比如场景中有一座森林,森林中的树都是相同的,如果我每棵树都存成一个b3dm,那浪费的存储空间将会非常恐怖。因此,我只将树存一份,以及所有树的相对空间变换矩阵(4X4列优先矩阵)统统存在一起,就是最终的i3dm。

实例优化数就是控制,当一个模型被复用超过多少次的时候,那么我们就把该模型使用 i3dm 方式输出。反之使用b3dm。

模型复用率越高,i3dm 优化意义越大。有人尝试把这个值设置为 2,只要复用超过 2 次,就使用 i3dm,就会发现 i3dm 的个数会很多,反倒导致最终的渲染效率降低。所以这个阈值最好和你的数据来匹配调整更合适一些,达到一个渲染批次和数据量的平衡。

10,纹理合并与翻转YZ

纹理合并开关被打开后,输出的3DTiles中的模型的相同的纹理会被合并,从而减少drall call。

翻转YZ指的是OBJ、GLTF某些模型的坐标的YZ其实是翻转过来的,如果这时,此开关不打开,最后输出的3DTiles加载出来时就是“立着的”。

11,纹理压缩与顶点压缩

纹理压缩支持默认、basis、webp、ktx2三个选项。

选择【默认】使用 jpg(非透明)或者 png(透明)格式。

选择【basis】比原来的综合优化(crn)的压缩速度更快,且支持 pc,android,iphone多平台使用。

选择【Webp】使用 webp 格式的纹理,webp 存储量大约是默认 jpg 的 70%,可以加快网络传输,但是它只能在 chrome 下使用,而且不会减少显存占用。

选择【ktx2】 使用 ktx2 格式的纹理,存储量大约是默认 jpg 的 90%,可以固定减少显存消耗 5/6 左右,比如一张 1024*1024 分辨率纹理,默认 jpg 在显存里实际占用是固定 3MB显存,处理程 ktx2 只占 3MB / 6 = 512KB,这个对于显卡来说极度友好。

顶点压缩采用了 Draco 压缩算法来减少顶点数据的存储量,Draco 是比较高效的一种压缩方式,目前我们内部的配置是顶点采用 14bit,法向量采用 10bit,纹理坐标采用 10bit,总计 34bit 存储一个顶点。未压缩的数据顶点是 96bit(3 个 float),法向量 96bit(3 个 float), 纹理坐标 64bit(2 个 float),总计 256bit。那么压缩率是 :大约 1/7.5,这个压缩率很强大的,大量节省传输数据量。如果你的模型观察视角都是较大范围,那么可以开启这个,如果你的模型包含一些细小的零件,那么最好不要开启,会导致模型扭曲变形。

12,颜色转纹理

这个开关选项,如果开启,如果模型 Mesh 的材质存在基础颜色(baseColorFactor),且不等于纯白色,会做如下操作:

如果此 Mesh 材质也存在基础色纹理,那么该纹理的每个像素值会乘以这个基础颜色。

如果此 Mesh 材质不存在基础色纹理,那么会构造一个 4x4 的小纹理设置到这个材质上,并且把材质的基础色设置为白色。

这么做的意义在于,对于一些 BIM 构件,内部几乎没有纹理,绝大部分构件都是不同颜色,为了能降低渲染批次,而进行此操作。

13,发布并预览

三,Mapmost Studio倾斜摄影数据集发布流程

怎么进入的部分,直接上图。

1,开始

2,填写服务名称

3,服务文件、空间参考、零点坐标

这三项与Mapmost Studio三维模型发布流程相同,不再赘述。

4,重建顶层。

倾斜摄影数据的组织方式,一个 Data 目录下的 Tile 可能会成千上万,如果不使用重建顶层,那么输出的3DTiles的包围盒会非常非常多,增加加载时长。重建顶层,程序会根据瓦片的空间结构关系采用八叉树重建,包围盒该合并的合并,该废弃的废弃,最终加快加载速度。

5,强制双面与无光照

强制双面的意思是双面渲染。大家可能发现一些倾斜模型从这面看有纹理,从反面看就没了纹理,强制双面就是让反面也渲染纹理。

无光照的部分,倾斜数据的来源是实景照片,无光照选项开启后,倾斜模型的渲染部分不参与 Cesium引擎的默认光照计算,显示的更加真实一些。而且生成的 3dtiles 里不包含法向信息,节省了空间。一般来说无需关闭,但是一些引擎对于不含法向信息的模型渲染是黑色的,为了避免这个问题可以尝试关闭该选项。

6,纹理格式、顶点压缩、压缩等级

这部分同Mapmost Studio三维模型发布流程。

只是倾斜摄影数据发布这部分的纹理格式支持“默认、webp、ktx2”三种。

7,发布并预览

如果倾斜数据量比较大,那么切片时间就会长一些。

四,结语

本篇文章是《制作属于自己的地图》的完结篇,详细介绍了Mapmost Studio地图影像发布、三维模型发布、倾斜摄影数据发布,大家可以看到这个平台工具是非常便捷的,一顿鼠标点点点,最终就把地图数据服务发出来了。我们后面会把底图影像放上去,之后就更加便捷了。请大家即时关注我们的动态,谢谢!


 关注Mapmost,持续更新GIS、三维美术、计算机技术干货

Mapmost是一套以三维地图和时空计算为特色的数字孪生底座平台,包含了空间数据管理工具(Studio)、应用开发工具(SDK)、应用创作工具(Alpha)。平台能力已覆盖城市时空数据的集成、多源数据资源的发布管理,以及数字孪生应用开发工具链,满足企业开发者用户快速搭建数字孪生场景的切实需求,助力实现行业领先。

欢迎进入官网体验使用:Mapmost——让人与机器联合创作成为新常态

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

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

相关文章

高危CNVD获取姿势|用友-U8-OA基础版存在文件上传漏洞getshell

漏洞描述 用友U8-OA基础版存在任意文件覆盖写入漏洞 漏洞说明:用友U8-OA基础版因为代码问题,存在任意文件覆盖写入漏洞,可以覆盖写入系统中存在的文件,可getshell。FOFA指纹: body"致远" && "/yyoa/&quo…

MySQL----常见的存储引擎

存储引擎 存储引擎就是数据库如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法。因为在关系数据库中数据的存储是以表的形式存储的,所以存储引擎也可以称为表类型(即存储和操作此表的类型)。 MySQL存储引擎 M…

用 Azure OpenAI 服务开发生成式 AI

简介 在当今迅速发展的技术环境中,生成式人工智能(AI)成为了众多企业创新和优化业务流程的重要工具。微软的 Azure OpenAI 服务为开发生成式 AI 解决方案提供了强大的平台和工具。本文将介绍如何利用 Azure OpenAI 服务开发生成式 AI 解决方…

WinForm之TCP客户端通讯

目录 一 设计界面 二 后台代码 一 设计界面 二 后台代码 using System.Net.Sockets; using System.Text;namespace TCP网络客户端通讯 {public partial class Form1 : Form{public Form1(){InitializeComponent();}TcpClient tcpClient new TcpClient();private void conne…

一文理清sshc包的使用场景和掌握两种连接方式及异常场景

一文理清sshc、ssh包的使用场景和两种连接方式 SSH协议SSH(Secure Shell)协议支持通过多种编程语言实现客户端和服务端的功能,包括Go、Python、Java、C#等。 GO语言 sshc包的使用建立连接1.DialWithKey2.DialWithPasswd 运行命令异常场景思维…

Non-aligned Supervision for Real Image Dehazing

原文链接:https://www.semanticscholar.org/paper/Non-aligned-supervision-for-Real-Image-Dehazing-Fan-Guo/7595d39e71ae58343e8728fc1af0e18ffe38218b 数据集:https://www.cityscapes-dataset.com/ 真实的图像去雾的非对准监督 摘要 由于天气条件…

three.js纹理贴图褪色失真问题解决

网上查的都是加encoding配置,但是最新版本,纹理对象属性名.encoding已经变更为.colorSpace // 纹理贴图加载器 const texLoader new THREE.TextureLoader(); const texture texLoader.load("./test.jpg"); texture.colorSpace THREE.SRGBC…

掌握这招,串口通信高频收发32W数据,0丢包!

我做过挺多串口通讯类的产品,有用485通讯的pdu,有wifi/4G/蓝牙通讯类的网关... 做串口的应用,把串口外设调通只是第一步,串口只是数据传输的媒介,在此基础上,两个设备/器件要进行通信,传递更有意…

nginx 启动报错:Failed to start The nginx HTTP and reverse proxy server.

1,启动 nginx报错 systemctl start nginx[rootlaoban yum.repos.d]# systemctl start nginx Job for nginx.service failed because the control process exited with error code. See "systemctl status nginx.service" and "jetails. [rootlaoban…

react用ECharts实现组织架构图

找到ECharts中路径图。 然后开始爆改。 <div id{org- name} style{{ width: 100%, height: 650, display: flex, justifyContent: center }}></div> // data的数据格式 interface ChartData {name: string;value: number;children: ChartData[]; } const treeDep…

未来之门开启:探索电子墨水屏日历的无界可能

导语: 在科技的浪潮中&#xff0c;一种全新的电子产品正悄然改变我们的生活——电子墨水屏日历。不同于传统日历&#xff0c;它以极简的设计、超低的功耗和无光污染的特性&#xff0c;掀起了一场桌面革命。无需插座&#xff0c;一年一充&#xff0c;便携易用&#xff0c;它是如…

计算机网络 —— 应用层(应用层概述及服务方式)

计算机网络 —— 应用层&#xff08;应用层概述及服务方式&#xff09; 应用层服务方式C/S&#xff08;客户端-服务器&#xff08;C/S&#xff09;模型&#xff09;基本概念特点B/S&#xff08;Browser/Server&#xff09;基本概念特点应用场景 p2p &#xff08;对等网络&#…

【UML用户指南】-13-对高级结构建模-包

目录 1、名称 2、元素 3、可见性 4、引入与引出 用包把建模元素安排成可作为一个组来处理的较大组块。可以控制这些元素的可见性&#xff0c;使一些元素在包外是可见的&#xff0c;而另一些元素要隐藏在包内。也可以用包表示系统体系结构的不同视图。 狗窝并不复杂&#x…

【单片机毕业设计选题24003】-基于STM32和阿里云的家庭安全监测系统

系统功能: 此设计采用STM32单片机采集环境温湿度,烟雾浓度和一氧化碳浓度显示在OLED上&#xff0c;并将这些信息上报至阿里云平台。 1. 上电连接手机热点后自动连接阿里云&#xff0c;可通过阿里云平台收到系统上报的温湿度&#xff0c;烟雾 浓度&#xff0c;一氧化碳数据以…

一个顶级产品经理的自我修养,从掌控AI工具开始

前言 在数字化浪潮的推动下&#xff0c;人工智能&#xff08;AI&#xff09;技术的快速发展正深刻地改变着各行各业的运营模式与竞争格局。产品经理&#xff0c;作为连接用户需求与产品设计之间的桥梁&#xff0c;在这场变革中扮演着至关重要的角色。随着AI技术的广泛应用&…

1. NAS和SAN存储

NAS和SAN存储 一、存储设备1、根据工作方式2、DAS 直接附加存储3、NAS存储4、SAN存储 二、模拟配置SAN存储1、创建虚拟机、安装openfiler2、访问openfiler webUI3、创建RAID设备4、开启iSCSI服务5、配置SAN存储设备共享空间5.1 设置IQN 6、业务服务器连接使用存储6.1 安装客户端…

OceanBase 并行执行参数 parallel_servers_target 理解

为了最大程度降低 PX 使用难度&#xff0c;OceanBase 3.1 版起&#xff0c;parallel_max_servers 参数废弃。 用户只需用好 parallel_servers_target 即可。 target 的用途 用一个酒吧的例子来粗略理解下 parallel_servers_target 的意思&#xff1a; target 先生开了一个酒…

【中科蓝讯BT896X】app.lst、ram.ld、map.txt文件的分析和使用

【中科蓝讯BT896X】app.lst、ram.ld、map.txt文件的分析和使用 测试SDK版本&#xff1a;《SDK_BT896X_S12685_20240314》 文章目录 【中科蓝讯BT896X】app.lst、ram.ld、map.txt文件的分析和使用前言一、app.lst、ram.ld、map.txt文件介绍1.1 app.lst文件1.2 ram.ld文件1.3 map…

【FPGA项目】bin文件ram存取回环测试

&#x1f389;欢迎来到FPGA专栏~bin文件ram存取回环测试 ☆* o(≧▽≦)o *☆嗨~我是小夏与酒&#x1f379; ✨博客主页&#xff1a;小夏与酒的博客 &#x1f388;该系列文章专栏&#xff1a;FPGA学习之旅 文章作者技术和水平有限&#xff0c;如果文中出现错误&#xff0c;希望大…