HeightmapTerrainData

new Cesium.HeightmapTerrainData (options)

单个图块的地形数据,其中地形数据表示为高度图。高度图是一个矩形的高度数组,从北到南,从西到东,以行为主的顺序排列。
Name Type Description
options Object 具有以下属性的对象:
姓名 类型 默认 描述
buffer 整数8数组 | Uint8Array | 整数 16 数组 | Uint16Array | 整数32数组 | Uint32Array | Float32Array | 浮点64数组 包含高度数据的缓冲区。
width 数字 高度图的宽度(经度方向),以样本为单位。
height 数字 高度图的高度(纬度方向),以样本为单位。
childTileMask 数字 15 可选 一个位掩码,指示此 tile 的四个子项中的哪一个存在。如果设置了子位,则在需要时也会为该图块请求几何图形。如果清除该位,则不请求子图块,而是从父图块上采样几何。位值如下:
位位置 位值 儿童瓷砖
0 1 西南
1 2 东南
2 4 西北
3 8 东北
waterMask Uint8Array 可选 此地形数据中包含的水面罩(如果有)。水掩膜是一个方形 Uint8Array 或图像,其中 255 的值表示水,0 的值表示陆地。 0 到 255 之间的值也允许在陆地和水之间平滑混合。
structure 目的 可选 描述高度数据结构的对象。
姓名 类型 默认 描述
heightScale 数字 1.0 可选 将高度样本相乘以获得高于 heightOffset 的高度的因子,以米为单位。 heightOffset 在乘以比例后添加到结果高度。
heightOffset 数字 0.0 可选 要添加到缩放高度以获得最终高度(以米为单位)的偏移量。在高度样本乘以 heightScale 后添加偏移量。
elementsPerHeight 数字 1 可选 缓冲区中构成单个高度样本的元素数。这通常为 1,表示每个元素都是一个单独的高度样本。如果大于 1,则该元素数量共同构成高度样本,该样本根据 structure.elementMultiplier 和 structure.isBigEndian 属性计算。
stride 数字 1 可选 从一个高度的第一个元素到下一个高度的第一个元素要跳过的元素数。
elementMultiplier 数字 256.0 可选 当 stride 属性大于 1 时用于计算高度值的乘数。例如,如果 stride 为 4,strideMultiplier 为 256,则高度计算如下:`he​​ight = buffer[index] + buffer[index + 1] * 256 + buffer[index + 2] * 256 * 256 + buffer[index + 3] * 256 * 256 * 256` 这是假设 isBigEndian 属性为假。如果为真,则元素的顺序颠倒。
isBigEndian 布尔值 false 可选 当stride属性大于1时,表示缓冲区中元素的字节序。如果该属性为false,则第一个元素是低位元素。如果为真,则第一个元素是高阶元素。
lowestEncodedHeight 数字 可选 可以存储在高度缓冲区中的最小值。使用 `heightScale` 和 `heightOffset` 编码后低于此值的任何高度都将被限制为该值。例如,如果高度缓冲区是 `Uint16Array`,则该值应为 0,因为 `Uint16Array` 不能存储负数。如果未指定此参数,则不强制执行最小值。
highestEncodedHeight 数字 可选 可以存储在高度缓冲区中的最大值。在使用 `heightScale` 和 `heightOffset` 编码后高于此值的任何高度都将被限制为该值。例如,如果高度缓冲区是 `Uint16Array`,则该值应为 `256 * 256 - 1` 或 65535,因为 `Uint16Array` 不能存储大于 65535 的数字。如果未指定此参数,则不强制执行最大值.
encoding 高度图编码 HeightmapEncoding.NONE 可选 在缓冲区上使用的编码。
createdByUpsampling 布尔值 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

此图块的一系列学分。

waterMask : Uint8Array|HTMLImageElement|HTMLCanvasElement

此地形数据中包含的水面罩(如果有)。水掩膜是一个方形 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:
如果子图块可用,则为真;否则为假。

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:
对后代图块的上采样高度图地形数据的承诺,如果网格不可用,则未定义。

wasCreatedByUpsampling () Boolean

获取一个值,该值指示此地形数据是否是通过对较低分辨率地形数据进行上采样创建的。如果此值为 false,则数据是从其他来源获得的,例如从远程服务器下载。对于从调用 HeightmapTerrainData#upsample 返回的实例,此方法应返回 true。
Returns:
如果此实例是通过上采样创建的,则为真;否则为假。