HeightmapTerrainData

new Cesium.HeightmapTerrainData(options)

单个瓦片的地形数据,其中地形数据以高度图(heightmap)形式表示。高度图 是一个按行优先顺序排列的矩形高度数组,从北到南、从西到东。
Name Type Description
options object 包含以下属性的对象:
Name Type Default Description
buffer Int8Array | Uint8Array | Int16Array | Uint16Array | Int32Array | Uint32Array | Float32Array | Float64Array 包含高度数据的缓冲区。
width number 高度图的宽度(经度方向),以采样点数为单位。
height number 高度图的高度(纬度方向),以采样点数为单位。
childTileMask number 15 optional 一个位掩码,指示此瓦片的四个子瓦片中哪些存在。 如果设置了某个子瓦片的位,则在需要时也会请求该子瓦片的几何数据; 如果清除了该位,则不会请求子瓦片,而是 从父瓦片向上采样几何数据。位值如下所示:
Bit PositionBit ValueChild Tile
01Southwest
12Southeast
24Northwest
38Northeast
waterMask Uint8Array optional 此地形数据中包含的水掩码(如果有)。水掩码是一个正方形 Uint8Array 或图像,其中值 255 表示水,值 0 表示陆地。 也允许 0 到 255 之间的值,以在陆地和水之间平滑混合。
structure object optional 描述高度数据结构信息的对象。
Name Type Default Description
heightScale number 1.0 optional 用于将高度采样值相乘以得到 heightOffset 之上高度(单位:米)的因子。相乘后,将 heightOffset 加到结果 高度上。
heightOffset number 0.0 optional 加到缩放后高度上以获得最终 高度(单位:米)的偏移量。该偏移量在高度采样值乘以 heightScale 之后添加。
elementsPerHeight number 1 optional 缓冲区中组成一个高度 采样值的元素数量。通常为 1,表示每个元素是一个独立的高度采样值。如果 该值大于 1,则相应数量的元素共同构成高度采样值,该值根据 structure.elementMultiplier 和 structure.isBigEndian 属性计算。
stride number 1 optional 从一个高度的第一个元素跳到 下一个高度的第一个元素所需跳过的元素数量。
elementMultiplier number 256.0 optional 当 stride 属性大于 1 时用于计算高度值的乘数。例如,如果 stride 为 4 且 strideMultiplier 为 256,则高度计算如下: `height = buffer[index] + buffer[index + 1] * 256 + buffer[index + 2] * 256 * 256 + buffer[index + 3] * 256 * 256 * 256` 这假设 isBigEndian 属性为 false。如果为 true,则 元素的顺序会反转。
isBigEndian boolean false optional 指示缓冲区中元素的字节序(endianness),当 stride 属性大于 1 时。如果此属性为 false,则第一个元素为 低位元素。如果为 true,则第一个元素为高位元素。
lowestEncodedHeight number optional 高度缓冲区中可存储的最小值。编码后任何低于 (使用 `heightScale` 和 `heightOffset`)的高度都会被限制到该值。例如,如果高度 缓冲区是 `Uint16Array`,则该值应为 0,因为 `Uint16Array` 无法存储负数。如果未指定此参数, 则不强制要求最小值。
highestEncodedHeight number optional 高度缓冲区中可存储的最大值。编码后任何高于 (使用 `heightScale` 和 `heightOffset`)的高度都会被限制到该值。例如,如果高度 缓冲区是 `Uint16Array`,则该值应为 `256 * 256 - 1`(即 65535),因为 `Uint16Array` 无法存储大于 65535 的数值。如果未指定此参数, 则不强制要求最大值。
encoding HeightmapEncoding HeightmapEncoding.NONE optional 用于缓冲区的编码方式。
createdByUpsampling boolean false optional 如果此实例是通过对另一个实例向上采样创建的,则为 true; 否则为 false。
Example:
const buffer = ...
const heightBuffer = new Uint16Array(buffer, 0, that._heightmapWidth * that._heightmapWidth);
const childTileMask = new Uint8Array(buffer, heightBuffer.byteLength, 1)[0];
const waterMask = new Uint8Array(buffer, heightBuffer.byteLength + 1, buffer.byteLength - heightBuffer.byteLength - 1);
const terrainData = new Cesium.HeightmapTerrainData({
  buffer : heightBuffer,
  width : 65,
  height : 65,
  childTileMask : childTileMask,
  waterMask : waterMask
});
See:

Members

此瓦片的版权信息(credits)数组。

waterMask : Uint8Array|HTMLImageElement|HTMLCanvasElement|ImageBitmap|undefined

此地形数据中包含的水掩码(如果有)。水掩码是一个正方形 Uint8Array 或图像,其中值 255 表示水,值 0 表示陆地。 也允许 0 到 255 之间的值,以在陆地和水之间平滑混合。

Methods

interpolateHeight(rectangle, longitude, latitude)number

计算指定经度和纬度处的地形高度。
Name Type Description
rectangle Rectangle 此地形数据所覆盖的矩形区域。
longitude number 经度(单位:弧度)。
latitude number 纬度(单位:弧度)。
Returns:
指定位置处的地形高度。如果位置 在矩形区域之外,此方法会外推高度,对于远离矩形区域的位置,结果很可能 严重不准确。

isChildAvailable(thisX, thisY, childX, childY)boolean

根据给定的 HeightmapTerrainData.childTileMask,判断给定的子瓦片是否可用。给定的子瓦片坐标假定 为此瓦片的四个子瓦片之一。如果给定的不是子瓦片坐标, 则返回东南子瓦片的可用性。
Name Type Description
thisX number 此(父)瓦片的瓦片 X 坐标。
thisY number 此(父)瓦片的瓦片 Y 坐标。
childX number 要检查可用性的子瓦片的瓦片 X 坐标。
childY number 要检查可用性的子瓦片的瓦片 Y 坐标。
Returns:
如果子瓦片可用,则为 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 我们要对其向上采样的后代瓦片在切片方案中的层级。
Returns:
用于后代瓦片向上采样后的高度图地形数据的 Promise, 如果网格不可用则为 undefined。

wasCreatedByUpsampling()boolean

获取一个值,指示此地形数据是否通过对较低分辨率 地形数据向上采样创建。如果此值为 false,则数据来自其他来源,例如 从远程服务器下载。对于通过调用 HeightmapTerrainData#upsample 返回的实例,此方法应返回 true。
Returns:
如果此实例是通过向上采样创建的,则为 true;否则为 false。
需要帮助?获取答案的最快方式是在 Cesium 论坛 上向社区和团队提问。