爆肝三天,制作属于自己的地图——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——让人与机器联合创作成为新常态

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

《web应用技术》第十一次课后作业

1、验证过滤器进行权限验证的原理。 Filter过滤器:javaweb三大组件(Servlet,Filter,Listener)之一;过滤器可以把对资源的请求拦截下来,从而实现一些特殊功能;过滤器一般完成一些通用操作,比如登录校验等。 执行对应的…

两个螺旋面的交线

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

1毛钱1百万token,写2遍红楼梦!国产大模型下一步还想卷什么?

大模型价格战,这匹国产黑马又破纪录了!最低的GLM-4 Flash版本,百万token价格已经低至0.1元,可以说是击穿地心。MaaS 2.0大升级,让企业训练私有模型的成本无限降低。 刚刚,智谱AI开放日上,新一代…

快速掌握JUnit等测试框架的使用,进行Java单元测试

1. 单元测试简介 单元测试(Unit Testing)是一种软件测试方法,通过对软件中的最小可测试单元进行验证,确保它们按预期工作。单元测试通常用于测试一个类的单个方法,以确保其逻辑正确、边界情况处理妥当、异常处理合适。…

计算机毕业设计Python+Django农产品推荐系统 农产品爬虫 农产品商城 农产品大数据 农产品数据分析可视化 PySpark Hadoop Hive

课题研究的意义,国内外研究现状、水平和发展趋势 研究意义21世纪是一个信息爆炸的时代,人们在日常生活中可接触到的信息量非常之巨大。推荐系统逐步发展,其中又以个性化推荐系统最为瞩目。个性化推荐系统的核心在于个性化推荐算法&#xff0c…

李永乐线代笔记

线性方程组 解方程组的变换就是矩阵初等行变换 三秩相等 方程组系数矩阵的行秩列秩,线性相关的问题应求列秩,但求行秩方便 齐次线性方程组 对应向量组的线性相关,所以回顾下线性相关的知识: 其中k是x,所以用向…

组态软件之万维组态介绍(web组态、html组态、vue2/vue3组态、组态软件、组态编辑器)

一、什么是组态软件 组态软件是一种用于创建、配置和管理监控和控制系统的软件工具。组态是指不需要编写计算机程序、通过配置的方式完成工业应用开发的系统。它们通常用于工业自动化领域,用于实时监视和控制工业过程。组态软件提供了丰富的功能和工具,使…

【漏洞复现】飞企互联-FE企业运营管理平台 treeXml.jsp SQL注入漏洞

0x01 产品简介 飞企互联-FE企业运营管理平台是一个基于云计算、智能化、大数据、物联网、移动互联网等技术支撑的云工作台。这个平台可以连接人、链接端、联通内外,支持企业B2B、C2B与020等核心需求,为不同行业客户的互联网转型提供支持。其特色在于提供…

原型模式(大话设计模式)C/C++版本

原型模式 C 参考&#xff1a;https://www.cnblogs.com/Galesaur-wcy/p/15924300.html #include <iostream> #include <string> using namespace std;class WorkExprerience { private:string workDate;string company;public:WorkExprerience() {}~WorkExprerie…

收银系统源码-分销商城功能!

在当今的数字化时代&#xff0c;分销已经成为了一种非常流行的商业模式&#xff0c;它与我们的生活息息相关。 分销&#xff0c;简单来说&#xff0c;就是通过一定的渠道和方式&#xff0c;将商品或服务推广给更多的人&#xff0c;从而实现销售增长的过程。在生活中&#xff0…

告别照片丢失!掌握4个实用技巧,找回相册不再困扰

手机里的相册记录了我们的瞬间&#xff0c;捕捉了我们的笑容&#xff0c;让我们的回忆变得生动而具体。然而&#xff0c;随着科技的飞速发展&#xff0c;照片丢失的问题也随之而来。每当我们不小心删除了心爱的照片&#xff0c;那种失落感可能会让我们感到无所适从。那么&#…

Elasticsearch:智能 RAG,获取周围分块

作者&#xff1a;来自 Elastic Sunile Manjee 在检索增强生成 (RAG) 领域&#xff0c;一个持续存在的挑战是找到输入大型语言模型 (LLM) 的最佳数据量。数据太少会导致响应不足或不准确&#xff0c;而数据太多会导致答案模糊。这种微妙的平衡启发我开发了一个专注于智能分块和利…

免费听歌,电脑或手机免费听歌,落雪音乐安装详细步骤

近年来&#xff0c;由于资本的力量导致各种收费&#xff0c;看个电视想听歌都必须要付费了&#xff0c;否则你听不完整&#xff0c;吃相非常难看&#xff0c;特别是电视&#xff0c;吸血鬼式吸收各种会员费&#xff0c;各种APP也是铺天盖地的广告&#xff0c;渐渐迷失了自我&am…

用C语言实现扫雷

本篇适用于C语言初学者&#xff0c;主要涉及对于函数&#xff0c;数组&#xff0c;分支循环的运用。 目录 设计思想&#xff1a; 总代码&#xff08;改进后&#xff09;&#xff1a; 运行结果展示&#xff1a; 分布介绍&#xff1a; 声明&#xff1a; 代码主体部分&#…

三个pdf工具和浏览软件(pdftk,muppdf,epdfview)

安装pdftk pdftk是一款功能强大的PDF处理工具&#xff0c;主要用于对PDF文件进行各种操作。它提供了丰富的功能&#xff0c;包括但不限于合并、拆分、旋转、加密、解密、添加水印、从PDF文档中解出附件等。pdftk分为图形界面版本和命令行版本&#xff0c;适用于不同的用户需求…

计算机网络(6) TCP协议

TCP&#xff08;Transmission Control Protocol&#xff0c;传输控制协议&#xff09;是互联网协议套件中一种核心协议。它提供面向连接的、可靠的字节流传输服务&#xff0c;确保数据从一端正确无误地传输到另一端。TCP的主要特点包括&#xff1a; 可靠性&#xff1a;TCP使用…

AIGC绘画设计:Midjourney V6 来袭,该版本有哪些新功能?

Midjourney V6 支持更自然的语言输入&#xff0c;可以处理更自然地对话式&#xff08;以前的版本是以关键字为中心的&#xff09;提示&#xff0c;对复杂提示有了更好的解释能力。大幅增加了每个 /image 的内存&#xff0c;可以处理更长、更详细的提示&#xff08;从40 直接提升…

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

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

北斗车载终端TD30助力户外出行现代化、信息化——保障无信号区域通信、实时精准定位

据官方统计&#xff0c;截至2023年9月底&#xff0c;全国机动车保有量达4.3亿辆&#xff0c;其中汽车3.3亿辆&#xff0c;新能源汽车1821万辆&#xff1b;机动车驾驶人5.2亿人&#xff0c;其中汽车驾驶人4.8亿人。车辆持有率的上升也带来车辆安全的考量&#xff0c;再者交通运输…

【linux】给net/socket.c部分接口添加pr_info后运行情况

net/socket.c 合入文件及代码&#xff1a; https://gitee.com/r77683962/linux-6.9.0/commit/d9aca07352311a9c185cbc2d3c39894e02f10df3 开机后dmesg命令运行效果&#xff1a; 这也是一部分&#xff0c;不过从这里看出来&#xff0c;添加打印日志的地方不太好&#xff0c;另…