HeightmapTerrainData

单个瓦片的地形数据,其中地形数据表示为高度图。高度图是从北到南、从西到东的一排主要高度的矩形阵列。
new HeightmapTerrainData(options)
Parameters:
options (Object)
Name Description
options.buffer
TypedArray
包含高度数据的缓冲区。
options.width
Number
高度图的宽度(经度方向),以样本为单位。
options.height
Number
高度图的高度(纬度方向),以样本为单位。
options.childTileMask
Number
default 15
一个位掩码,指示此瓦片的四个子项中存在哪一个。如果设置了子位,则需要时也将请求该瓦片的几何图形。如果清除了位,则不会请求子瓦片,而是从父瓦片中向上采样几何图形。
options.waterMask
Uint8Array
地形数据中包含的水面掩蔽(如果有)。一个水面掩蔽是一个正方形的uint8数组或图像,其中值255表示水,值0表示土地。允许0到255之间的值在陆地和水之间平滑混合。
options.structure
Object
描述高度数据结构的对象。
Properties
Name Description
options.structure.heightScale
Number
default 1.0
乘以高度样本以获得高度偏移以上高度的系数,单位为米。将高度偏移量乘以比例后添加到生成的高度。
options.structure.heightOffset
Number
default 0.0
要添加到缩放高度以获得最终高度(以米为单位)的偏移量。高度样本乘以高度比例后,将添加偏移量。
options.structure.elementsPerHeight
Number
default 1
缓冲区中组成单个高度样本的元素数。这通常是1,表示每个元素都是单独的高度样本。如果它大于1,那么元素的数量加在一起构成高度示例,高度示例根据structure.element乘数和structure.isbigendian属性计算。
options.structure.stride
Number
default 1
要从一个高度的第一个元素跳到下一个高度的第一个元素的元素数。
options.structure.elementMultiplier
Number
default 256.0
当“步幅”属性大于1时,用于计算高度值的乘数。例如,如果步幅为4,步幅倍增器为256,则高度计算如下:`height=buffer[index]+buffer[index+1]*256+buffer[index+2]*256*256+buffer[index+3]*256*256*256`假定isbigendian属性为假。如果为真,则元素的顺序颠倒。
options.structure.isBigEndian
Boolean
default false
当stride属性大于1时,指示缓冲区中元素的endianness。如果此属性为假,则第一个元素是低阶元素。如果为真,则第一个元素是高阶元素。
options.structure.lowestEncodedHeight
Number
可存储在高度缓冲区中的最小值。使用“heightscale”和“heightoffset”编码后,任何低于此值的高度都将被固定到此值。例如,如果高度缓冲区是“uint16array”,则此值应为0,因为“uint16array”不能存储负数。如果未指定此参数,则不会强制使用最小值。
options.structure.highestEncodedHeight
Number
可存储在高度缓冲区中的最大值。使用“heightscale”和“heightoffset”编码后,任何高于此值的高度都将被固定到此值。例如,如果高度缓冲区是“uint16array”,则该值应为“256*256-1”或65535,因为“uint16array”不能存储大于65535的数字。如果未指定此参数,则不会强制使用最大值。
options.encoding
HeightmapEncoding
default HeightmapEncoding.NONE
缓冲区上使用的编码。
options.createdByUpsampling
Boolean
default false
如果此实例是通过向上采样另一个实例创建的,则为true;否则为false。
Example
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 bmgl.HeightmapTerrainData({
  buffer : heightBuffer,
  width : 65,
  height : 65,
  childTileMask : childTileMask,
  waterMask : waterMask
});
See:

Members

credits : Array.<Credit>

此瓦片的信用证数组。

waterMask : (Uint8Array|Image|Canvas)

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

Methods

interpolateHeight(rectangle, longitude, latitude) → {Number}
计算指定经度和纬度的地形高度。
Parameters:
rectangle (Rectangle) 地形数据覆盖的矩形。
longitude (Number) 经度以弧度表示。
latitude (Number) 以弧度表示的纬度。
isChildAvailable(thisX, thisY, childX, childY) → {Boolean}
根据HeightmapTerrainData.childTileMask确定给定的子瓦片是否可用。给定的子瓦片坐标假定为该瓦片的四个子瓦片之一。如果给出了非子瓦片坐标,则返回东南子瓦片的可用性。
Parameters:
thisX (Number) 此(父)瓦片的瓦片X坐标。
thisY (Number) 此(父)瓦片的瓦片Y坐标。
childX (Number) 子瓦片的瓦片X坐标,用于检查可用性。
childY (Number) 子瓦片的瓦片Y坐标,用于检查可用性。
upsample(tilingScheme, thisX, thisY, thisLevel, descendantX, descendantY, descendantLevel) → {Promise.<HeightmapTerrainData>|undefined}
向上采样此地形数据,以供后代瓦片使用。生成的实例将包含此实例中高度示例的子集,必要时进行插值。
Parameters:
tilingScheme (TilingScheme) 地形数据的切片方案。
thisX (Number) 瓦片方案中切片方案的X坐标。
thisY (Number) 瓦片方案中切片方案的Y坐标。
thisLevel (Number) 瓦片方案中此切片方案的级别。
descendantX (Number) 在瓦片方案中的切片方案中,我们正在对其进行上采样的X坐标。
descendantY (Number) 在瓦片方案中的Y坐标,我们正在对切片方案进行采样。
descendantLevel (Number) 在瓦片方案中的切片方案中,我们正在对其进行上采样。
wasCreatedByUpsampling() → {Boolean}
获取一个值,该值指示此地形数据是否是通过向上采样低分辨率地形数据创建的。如果该值为假,则数据是从其他来源获得的,例如从远程服务器下载。对于调用HeightmapTerrainData#upsample返回的实例,此方法应返回true。