地形数据:TIF地形转terrain格式

6/8/2023

地形是三维场景中的重要三维效果,能看到山峰的高低起伏效果,是三维场景的"骨骼", 如果想要看到真实感,地形数据(DEM)不可或缺。 Mars3D支持渐进流式加载和渲染全球高精度地形,并且包含海、湖、河等水面效果。相对2D地图,山峰、山谷等其他地形特征的更适宜在这种3D地球中展示。 目前一个三维场景只支持一个地形服务图层。 地形瓦片数据格式,是与瓦片底图类似的四叉树金字塔瓦片结构。

image

# 1. tif和terrain格式介绍

# 1.2 tif格式介绍

TIF文件为栅格图像文件,后缀为tif或tiff,是ogc规范的一种,全称GeoTiff。通常不能在资源管理器中查看tif栅格影像数据的坐标系信息,需要用GIS软件查看,因为它的坐标系信息写在数据文件内部。

tif可以有8位,24位等深度,一般真彩色是24位,而地形数据只有一个高度值,采用8位。目前很多卫星影像数据、地形数据的存储格式都是tif。

# 1.2 terrain格式介绍

可以参考 官方资料 (opens new window)

# 1.3 DEM数据来源

目前很多网站可以下载公开的90米或30米精度的tif格式DEM地形数据,比如:

也可以通过一些爬虫工具,如水经微图 (opens new window)太乐地图 (opens new window)等下载谷歌地球的高精度DEM地形数据。

# 3. 处理工具

# 3.1 Cesium Terrain Builder 开源工具(CTB)

来源:Github开源

说明:按开源仓库教程操作,通过命令行的方式进行数据转换。

CTB地形处理工具 (opens new window)

# 3.2 terr2cesiumApp工具

来源:QQ群703622028 风的心愿 提供

说明:按下载的文件内说明进行操作。

下载地址 (opens new window)

# 3.3 Cesiumlab工具“地形切片”模块

来源:北京西部世界公司

说明:从官网下载工具后,按工具说明注册帐号登录后即可使用,是图形化界面操作,操作比较简便。

官方下载地址 (opens new window) 官方操作说明 (opens new window)

# 4. 常见问题说明

我们先说一下地形栅格数据的几个关键参数: 强烈建议处理之前,先用arcmap打开,确保以下参数正常。

下面操作需要安装 ArcGIS for Desktop (opens new window) 软件,可以自行百度后下载。

# 1,空间参考(spatial reference)

spatial reference 定义了 栅格数据的坐标空间,下图为正常参数,如果arcmap 这里显示undefined,那表示空间参考未知,必然无法正常处理。 栅格的空间参考信息。如果tif中不含空间参考,但是空间参考数据处理人员又明确知道,那么可以在处理工具中指定。反过来说如果不确定,那就不要乱尝试,只会浪费处理时间。

# 2,无数据值(nodata)

nodata定义了删格中的无效数据数据值,也就是说如果栅格里某个像素的值 = nodata,意味着该像素没有数据。 对于nodata的处理,处理工具把该位置使用高程0填充。

但是原始数据中这个值很乱,完全是用户设置的,栅格里可能没有这个nodata信息,也可能为任意值。一般用户会设置一个超大的负数值,比如 -10000  ,-99999等。这里强烈建议,不要设置数据极值,例如-1.797693e+308 ,这种极值会导致中间计算出现非数字,导致地形处理异常。

如果原始栅格中没有nodata值,只有一种情况处理地形高程会正常(数据的空间参考是wgs84,地形数据边界为矩形)。

除此之外都必须知道nodata值对应的具体数值,还是必须通过arcmap打开tif,使用indentify工具,点击我们明确知道是无数据区域,那么获得他的值。

# 3,地理范围(extent)

栅格数据实际上是一张图片,必须要一个转换,把像素坐标转到地理坐标,这就是extent,在gdal里是geotransform。

正常这里应该显示的地理坐标,如果你发现这个extent的四个值里有0,那么基本意味着,你的tif的地理范围信息缺失。 tif 一般把这个信息存储在文件内,还有另一种方式存储为 同名的tfw 文件。所以我们处理或者拷贝数据的时候,如果有tfw,请一并拷贝。

# 分析处理地形的异常情况原因

确保上面三个关键参数正确,我们再分析处理地形的异常情况原因:

  1. 瞬间结束:空间参考缺失  或者  地理范围缺失
  2. 处理完成之后半边黑球:nodata 过大
  3. 地形高程异常:nodata 缺失或者不正确
  4. 位置不正确或伴随高程不正常:一般是空间参考不正确

根据异常原因,请在arcmap使用相关工具处理你的栅格数据。

# 3. 处理操作流程完整示例

# 3.1 下载tif地形文件

若已拥有tif文件直接进行下一步操作,下面我们通过水经微图软件下载为例讲解;

如下图操作,进行下载导出;

image

导出结果如下:

image

# 3.2 转换为terrain文件

下面我们以Cesiumlab工具“地形切片”模块为例,进行转换

  • 选择地形切片模块;
  • 添加文件,可以添加多个,勾选自己所需要导出的文件;
  • 选择散列文件,导出terrain格式;
  • 选择导出的路径

image

转换成功后的地形文件如下:

image

# 4.3 发布三维数据为HTTP服务

因为terrain数据一般都很大,建议发布为独立服务。

可以参考教程发布三维数据服务

# 4.4 在平台中加载模型

可以在地形加载示例 (opens new window) 更换对应url后进行验证,查看是否可以成功加载

var map = new mars3d.Map('mars3dContainer', {
  terrain: { 
    url: 'http://localhost/mars3d-data/terrain',
    show: true
  },
})  
1
2
3
4
5
6

# 4. 其他优秀教程

最后更新: 9/8/2023, 5:23:49 PM