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

news2024/12/23 19:00:19

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.coloradmin.cn/o/1821794.html

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

相关文章

opencv安装笔记 各种平台

目录 python安装opencv-python c 麒麟arm系统安装和用法 python安装opencv-python pypi上搜索 Search results PyPI 现在安装是一个版本,大于3.6都可以安装 c 麒麟arm系统安装和用法 参考: ffmpeg rknn麒麟系统 安装 opencv_ffmpeg4 解码示例-CSDN…

Vitis HLS 学习笔记--Vitis Accelerated Libraries介绍

1. 简介 Vitis Accelerated Libraries,包含很多现成的库,这些库都是开源的,也就是说代码是公开的,而且已经优化过,可以让程序运行得更快。你不需要改变太多你的代码,就能让你的程序速度提升。 这些库有很…

两个螺旋面的交线

已知轴截面齿形,先得到螺旋面 然后在计算出对应的端面齿形 在用端面齿形来计算和另一个螺旋面的相交曲线。 三维验证这个方法可行!

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…

conda添加镜像源与channels

文章目录 一、conda下添加国内镜像源&#xff08;window下&#xff09;二、pip配置国内镜像源&#xff08;window下&#xff0c;临时修改&#xff09;三、conda源的定义 一、conda下添加国内镜像源&#xff08;window下&#xff09; 1、为【channels】配置清华镜像通道 直接在…

每日一题——Python实现PAT乙级1012 数字分类(举一反三+思想解读+逐步优化)五千字好文

一个认为一切根源都是“自己不够强”的INTJ 个人主页&#xff1a;用哲学编程-CSDN博客专栏&#xff1a;每日一题——举一反三Python编程学习Python内置函数 Python-3.12.0文档解读 目录 我的写法 代码优点 代码缺点 时间复杂度 空间复杂度 代码改进建议 我要更强 哲…

Docker部署常见应用之大数据基础框架Hadoop

文章目录 Hadoop简介主要特点核心组件生态系统 Docker Compose 部署集群参考文章 Hadoop简介 Hadoop是一个开源框架&#xff0c;由Apache软件基金会开发&#xff0c;用于在普通硬件构建的集群中存储和处理大量数据。它最初由Doug Cutting和Mike Cafarella创建&#xff0c;并受…

量化交易入门——盘口

今天接着上一期讲解开盘定势的种类&#xff0c;在讲之前&#xff0c;科普一下“盘口五档”的成交知识。 每个炒股软件上&#xff0c;都会有某只个股的成交信息&#xff0c;在其中会出现一个五档的行情列表&#xff0c;里面列出了买家和卖家各五个价格及其对应的数量。这五档价…

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

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

数字经济红利惠及全民,从掏钱消费到赚钱消费的转变,你准备好了吗?

伴随科技飞速发展&#xff0c;我们迎来了一个全新的经济时代——数字经济。数字经济以其独特的魅力&#xff0c;正为我们每个人带来前所未有的红利。 那么&#xff0c;面对数字经济的红利&#xff0c;我们是否已经做好了准备&#xff1f;我们又该如何把握这个时代赋予我们的机…

期末测试2(1)---PTA

一开始写错了&#xff0c; 因为这个再定义一个和原函数一样类型的进行存储&#xff0c; 然后将第一个设置为最大的&#xff0c;依次用循环比较后面的&#xff0c; 最后输出 但是这个适用于找最大的、字符串这样最后只输出一个最大项比较好 对于结构体不好将比较的这个数所…

学了这篇面试经,轻松收割网络安全的offer

网络安全面试库 吉祥学安全知识星球&#x1f517;除了包含技术干货&#xff1a;Java代码审计、web安全、应急响应等&#xff0c;还包含了安全中常见的售前护网案例、售前方案、ppt等&#xff0c;同时也有面向学生的网络安全面试、护网面试等。 0x1 应届生面试指南 网络安全面…

【课程总结】Day8(上):深度学习基本流程

前言 在上一篇课程《【课程总结】Day7&#xff1a;深度学习概述》中&#xff0c;我们了解到&#xff1a; 模型训练过程→本质上是固定w和b参数的过程&#xff1b;让模型更好→本质上就是让模型的损失值loss变小&#xff1b;让loss变小→本质上就是求loss函数的最小值&#xf…

SQL Server中的FOR XML PATH以及Split

前提 数据库是在2016年以下的版本&#xff0c;以上的版本&#xff0c;现在有最新的函数可以支持者两个了 Split 在c#中Split可以将以指定字符分割的字符串转换为字符串数组&#xff0c;这里主要是用于&#xff0c;主表存储了多个从表的id&#xff0c;存储的时候用的字符串&a…

企业级Flask项目移植记录【待补完】

背景 Flask项目A从老电脑C1移植到新电脑C2上 更新日志 1-240614上线第一版经验&#xff0c;博主关于这个项目包的问题还没有解决&#xff0c;正在解决中&#xff0c;但是整体思路大家在移植的时候可以借鉴。 思路 1-首先生产环境的python解释器等相关的东西最好严格保持一…

海康充电桩报文校验TCP校验和

1 TCP校验文档校验文档要求: 校验码描述 校验码计算范围包含包头标识、消息头和消息体,校验算法采用 TCP 和校验,具体规则如下。 将待校验的所有数据分为 16 位的字(大端序),如果总长度为奇数个字节,则在最后增添一个 位都为 0 的字节; 将所有 16 位的字进行累加,累加…

SemanticKITTI 拼接语义点云帧

文章目录 KITTISemanticKITTISemantic Segmentation and Panoptic SegmentationSemantic Scene Completion 数据转换语义标签和点云拼接 KITTI The odometry benchmark consists of 22 stereo sequences, saved in loss less png format: We provide 11 sequences (00-10) wit…

【等保资料】等级保护定级指南及网络安全解读(ppt原件)

新版网络安全等级保护定级指南网络安全等级保护工作的作用对象&#xff0c;主要包括基础信息网络、工业控制系统、云计算平台、物联网、使用移动互联技术的网络和大数据等。 软件全套精华资料包清单部分文件列表&#xff1a; 工作安排任务书&#xff0c;可行性分析报告&#xf…

TVS管选择

在RS485和CAN电路设计中&#xff0c;经常要考虑“静电和浪涌保护”&#xff0c;怎么选择TVS管&#xff0c;很少有人讲解。 1、先了解TVS管 TVS管有单向管和双向管&#xff0c;通常后缀为CA的是双向TVS管&#xff0c;只有字母A的是单向TVS管。见下图&#xff1a; 2、TVS选择依…

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

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