HeightmapTerrainData

new Cesium.HeightmapTerrainData(options)

单个瓦片的地形数据,其中地形数据表示为高度图。高度图 是一个矩形的高度数组,按行主序从北到南和从西到东排列。
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 表示此瓦片的四个子瓦片是否存在的位掩码。 如果子瓦片的位被设置,则在需要时也会请求该瓦片的几何图形。 如果位被清除,则不请求子瓦片,而是从父瓦片上采样几何图形。位值如下:
位位置位值子瓦片
01西南
12东南
24西北
38东北
waterMask Uint8Array optional 此地形数据中包含的水域掩码(如果有的话)。水域掩码是一个方形 的 Uint8Array 或图像,其中值为 255 表示水,值为 0 表示陆地。 允许0到255之间的值,以平滑地过渡于陆地和水域之间。
structure object optional 描述高度数据结构的对象。
Name Type Default Description
heightScale number 1.0 optional 用于获得 高度(以米为单位)上方的高度样本的因子。高度偏移会在乘以缩放值后添加到结果 高度中。
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 时,用于计算高度值的乘数。 例如,如果模数为 4,模数乘数为 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 当 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

此瓦片的信用数组。

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:
如果子瓦片可用,则返回 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 Forum.