麻辣GIS微信平台

更多 GIS 干货

微信关注不错过

Cesium API - HeightmapTerrainData 中文文档

本文介绍下Cesium中 HeightmapTerrainData API的详细使用说明。

HeightmapTerrainData API 调用方法

new Cesium.HeightmapTerrainData(options)
用于单个瓦片的地形数据,其中地形数据表示为高度图。 高度图是一个矩形的高度阵列,以行主序,从北到南,从西到东。
Name Type Description
options Object 对象,具有以下属性:
Name Type Default Description
buffer TypedArray 包含高度数据的缓冲区。
width Number 在样本中,高度图的宽度(经度方向)。
height Number 在样本中,高度图的高度(纬度方向)。
childTileMask Number 15 optional 一个位掩码,指示此瓦片的四个子代中哪个存在。 如果设置了子瓦片的位,那么当需要时也将为该瓦片请求几何图形。 如果位被清除,则不请求子瓦片,而是从父块上采样(upsampled)几何图形。 位值如下:
Bit Position Bit Value Child Tile
0 1 Southwest
1 2 Southeast
2 4 Northwest
3 8 Northeast
waterMask Uint8Array optional 这个地形数据中包含的水掩模,如果有的话。 水掩模是一个矩形的Uint8Array或图像,其中值255表示水,值0表示土地。0到255之间的值也可以平滑地混合在土地和水之间。
structure.heightScale Number 1.0 optional 为得到heightOffset以上的高度(以米为单位)而将高度样本相乘的因子。 heightOffset在乘以刻度(scale)后添加到结果高度。
structure.heightOffset Number 0.0 optional 将偏移量与比例高度相加得到最终高度(以米为单位)。偏移量在高度样本乘以heightScale后相加。
structure.elementsPerHeight Number 1 optional 构成单个高度样本的缓冲区中的元素数。这通常是1,表示每个元素是一个单独的高度样本。 如果它大于1,那么这些元素的数量就构成了高度样本,它是根据structure.elementMultiplier和structure.isBigEndian属性计算出来的。
structure.stride Number 1 optional 从一个高度的第一个元素跳到下一个高度的第一个元素要跳过的元素数。
structure.elementMultiplier Number 256.0 optional 当stride 属性大于1时,用来计算高度值的乘数(multiplier)。 例如,如果步长为4,strideMultiplier为256,则高度计算如下: `height = buffer[index] + buffer[index + 1] * 256 + buffer[index + 2] * 256 * 256 + buffer[index + 3] * 256 * 256 * 256` 这里假设isBigEndian属性为false。如果为true,则反转元素的顺序。
structure.isBigEndian Boolean false optional 指示当stride属性大于1时缓冲区中元素的优先级。 如果此属性为false,则第一个元素为低阶(low-order)元素。如果为true,则第一个元素是高阶(high-order)元素。
structure.lowestEncodedHeight Number optional 可以存储在高度缓冲区中的最小值。 使用' heightScale '和' height toffset '编码后,任何低于此值的高度都被夹(clamped)到此值中。 例如,如果高度缓冲区是' Uint16Array ',那么这个值应该是0,因为' Uint16Array '不能存储负数。如果未指定此参数,则不强制执行最小值。
structure.highestEncodedHeight Number optional 可以存储在高度缓冲区中的最大值。 使用' heightScale '和' height toffset '编码后,任何高于此值的高度都被夹(clamped)到此值中。 例如,如果高度缓冲区是' Uint16Array ',那么这个值应该是' 256 * 256 - 1 '或65535,因为' Uint16Array '不能存储大于65535的数字。如果未指定此参数,则不强制执行最大值。
encoding HeightmapEncoding HeightmapEncoding.NONE optional 在缓冲区上使用的编码。
createdByUpsampling Boolean false optional 如果此实例是通过向上采样另一个实例创建的,则为true;否则,false。
示例:
var buffer = ...
var heightBuffer = new Uint16Array(buffer, 0, that._heightmapWidth * that._heightmapWidth);
var childTileMask = new Uint8Array(buffer, heightBuffer.byteLength, 1)[0];
var waterMask = new Uint8Array(buffer, heightBuffer.byteLength + 1, buffer.byteLength - heightBuffer.byteLength - 1);
var terrainData = new Cesium.HeightmapTerrainData({
  buffer : heightBuffer,
  width : 65,
  height : 65,
  childTileMask : childTileMask,
  waterMask : waterMask
});
参考:

成员变量

此瓦片的版权数组。
waterMask : Uint8Array|Image|Canvas
这个地形数据中包含的水掩模,如果有的话。 水掩模是一个矩形的Uint8Array或图像,其中值255表示水,值0表示土地。 0到255之间的值也可以平滑地混合在土地和水之间。

内置方法

interpolateHeight(rectangle, longitude, latitude)Number
计算指定经度和纬度处的地形高度。
Name Type Description
rectangle Rectangle 这个地形数据覆盖的矩形。
longitude Number 以弧度表示的经度。
latitude Number 以弧度表示的纬度。
返回值:
指定位置的地形高度。如果位置在矩形外,此方法将推断高度,这对于位于矩形外的位置可能是非常不正确的。
isChildAvailable(thisX, thisY, childX, childY)Boolean
根据HeightmapTerrainData.childTileMask确定给定的子瓦片是否可用。 给定的子瓦片坐标被假定为该瓦片的四个子瓦片中的一个。如果给出了非子瓦片坐标,则返回东南子瓦片的可用性。
Name Type Description
thisX Number 这个(父)瓦片的X坐标。
thisY Number 这个(父)瓦片的Y坐标。
childX Number 检查可用性的子瓦片的X坐标。
childY Number 检查可用性的子瓦片的Y坐标。
返回值:
如果子瓦片可用,则为true;否则,false。
upsample(tilingScheme, thisX, thisY, thisLevel, descendantX, descendantY, descendantLevel)Promise.<HeightmapTerrainData>|undefined
将此地形数据上采样以供后代瓦片使用。结果实例将包含此实例中高度样本的一个子集,必要时将进行插值。
Name Type Description
tilingScheme TilingScheme 该地形数据的切片方案。
thisX Number 在切片方案中,此瓦片的X坐标。
thisY Number 在切片方案中,此瓦片的Y坐标。
thisLevel Number 在切片方案中,此瓦片的级别。
descendantX Number 为其上采样的后代瓦片的切片方案中的X坐标。
descendantY Number 为其上采样的后代瓦片的切片方案中的Y坐标。
descendantLevel Number 我们正在对其进行上采样的后代瓦片的切片方案中的级别。
返回值:
对后代瓦片的上采样高度图地形数据的约定(promise), 或者如果太多异步上采样操作正在进行并且请求被延迟,则未定义。
wasCreatedByUpsampling()Boolean
获取一个值,该值指示此地形数据是否由上采样低分辨率地形数据创建。 如果该值为false,则从其他来源获取数据,例如从远程服务器下载数据。 对于调用HeightmapTerrainData#upsample返回的实例,该方法应该返回true。
返回值:
如果此实例是通过上采样创建的,则为true;否则,false。

其他API

Cesium中文API文档手册(v1.63.1版本)参考:《Cesium中文API文档手册(v1.63.1版本)

相关阅读

麻辣GIS-Sailor

作者:

GIS爱好者,学GIS,更爱玩GIS。

声明

1.本文所分享的所有需要用户下载使用的内容(包括但不限于软件、数据、图片)来自于网络或者麻辣GIS粉丝自行分享,版权归该下载资源的合法拥有者所有,如有侵权请第一时间联系本站删除。

2.下载内容仅限个人学习使用,请切勿用作商用等其他用途,否则后果自负。

手机阅读
公众号关注
知识星球
手机阅读
麻辣GIS微信公众号关注
最新GIS干货
关注麻辣GIS知识星球
私享圈子

留言板(小编看到第一时间回复)