地形服务加载过程遇到的问题

8/26/2024

# 地形服务可以支持多个数据吗?

image

解决方案:

  1. 目前 cesium 底层一个 map 只能支持一个地形服务
  2. 在创建地球后更新 terrainProvider(用 mars3d.layer.createTerrainProvider 工厂方法创建)[目前 1 个球只支持 1 个地形服务]

参考代码:

// 方式2:在创建地球后更新terrainProvider(用 mars3d.layer.createTerrainProvider工厂方法创建)[目前1个球只支持1个地形服务]
map.terrainProvider = mars3d.LayerUtil.createTerrainProvider({
  url: "http://data.mars3d.cn/terrain",
});

// 方式3:图层的方式(一般用于图层管理中,多个地形的切换)
const terrainLayer = new mars3d.layer.TerrainLayer({
  url: "http://data.mars3d.cn/terrain",
});
map.addLayer(terrainLayer);
1
2
3
4
5
6
7
8
9
10

# 替换地形数据后,坡度坡向异常(几份地形数据均是一样的效果

image

image

替换后进行分析,控制台存在报错:

image

问题回复:

  1. arcgis 地形、天地图地形等是 Heightmap-1.0,与 cesium 本身的 terrain 还不一样, 其他地形不支持相关分析和计算

# 火星的标准服务与 arcgis 地形服务精度对比差异

  1. 在示例中,火星的地形数据服务,在高视角下会出现经纬度高度值为负数的情况,但是 arcgis 的地形服务,在高视角下,不会出现经纬度高度值为负数的情况,

  2. 这种时候,这个地形服务该如何避免负数的情况呢?从数据方向还是代码方向有思路优化避免该情况吗?

image

image

回复:

  1. 目前代码方面无法处理,数据来源 2021 年下载的谷歌地球,年份也不清楚;支持加载其他的地形服务或自己的高精度地形服务

  2. 示例的海拔一直是负数,视高越高,海拔就越不正常也是相似的问题,在高视角下地形精度不准确造成的。如果只是想工具栏不展示这种数据,可以自定义判断下不显示,如果是不拾取数据,目前不行的

# 离线部署地形数据是否有更新?包括精度提高、数据源更新之类

  1. 目前这个公开的 12.5 米,很多地图细节不太准确

  2. 地形不平坦,有的小山包已经推平盖楼了,这个 12.5 的在该视角下还是一个山包起伏。

map.setCameraView({
  lat: 20.056004,
  lng: 110.309636,
  alt: 251.9,
  heading: 60.7,
  pitch: -37.9,
});
1
2
3
4
5
6
7

回复:

目前没有更新计划,全国数据 12.5 米目前全网都是同一套公开数据。目前没有其他数据渠道有最新的地形数据。

# 有没有办法将 Mars3d 的 地形夸张,嵌入到 datax ?

  1. datax 是阿里出的一个开源工具,有个管理界面,datax-admin

image

回复:不同引擎支持的数据格式不一样,可以查看下 datax 是否支持 terrain 数据

# 屏蔽地形服务

config.json 的 control 节点下修改参数 terrainProviderViewModels:[],支持屏蔽地形服务

image

image

最后更新: 9/29/2024, 5:37:49 PM