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以上高度(以米为单位)的因子。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 当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|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。
Need help? The fastest way to get answers is from the community and team on the Cesium Forum.