qd-changjing/public/static/Build/Documentation/HeightmapTerrainData.html

1803 lines
77 KiB
HTML
Raw Normal View History

2022-07-05 16:56:29 +08:00
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>HeightmapTerrainData - Cesium Documentation</title>
<!--[if lt IE 9]>
<script src="javascript/html5.js"></script>
<![endif]-->
<link href="styles/jsdoc-default.css" rel="stylesheet">
<link href="styles/prism.css" rel="stylesheet">
</head>
<body>
<div id="main">
<h1 class="page-title">
<a href="index.html"><img src="Images/CesiumLogo.png" class="cesiumLogo"></a>
HeightmapTerrainData
<div class="titleCenterer"></div>
</h1>
<section>
<header>
</header>
<article>
<div class="container-overview">
<div class="nameContainer">
<h4 class="name" id="HeightmapTerrainData">
<a href="#HeightmapTerrainData" class="doc-link"></a>
new Cesium.HeightmapTerrainData<span class="signature">(options)</span>
<div class="source-link rightLinks">
<a href="https://github.com/CesiumGS/cesium/blob/1.91/Source/Core/HeightmapTerrainData.js#L97">Core/HeightmapTerrainData.js 97</a>
</div>
</h4>
</div>
<div class="description">
Terrain data for a single tile where the terrain data is represented as a heightmap. A heightmap
is a rectangular array of heights in row-major order from north to south and west to east.
</div>
<table class="params">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>options</code></td>
<td class="type">
<span class="param-type">Object</span>
</td>
<td class="description last">
Object with the following properties:
<table class="params">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th>Default</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>buffer</code></td>
<td class="type">
<span class="param-type">Int8Array</span>
|
<span class="param-type">Uint8Array</span>
|
<span class="param-type">Int16Array</span>
|
<span class="param-type">Uint16Array</span>
|
<span class="param-type">Int32Array</span>
|
<span class="param-type">Uint32Array</span>
|
<span class="param-type">Float32Array</span>
|
<span class="param-type">Float64Array</span>
</td>
<td class="default">
</td>
<td class="description last">
The buffer containing height data.</td>
</tr>
<tr>
<td class="name"><code>width</code></td>
<td class="type">
<span class="param-type">Number</span>
</td>
<td class="default">
</td>
<td class="description last">
The width (longitude direction) of the heightmap, in samples.</td>
</tr>
<tr>
<td class="name"><code>height</code></td>
<td class="type">
<span class="param-type">Number</span>
</td>
<td class="default">
</td>
<td class="description last">
The height (latitude direction) of the heightmap, in samples.</td>
</tr>
<tr>
<td class="name"><code>childTileMask</code></td>
<td class="type">
<span class="param-type">Number</span>
</td>
<td class="default">
<code class="language-javascript">15</code>
</td>
<td class="description last">
<span class="optional">optional</span>
A bit mask indicating which of this tile's four children exist.
If a child's bit is set, geometry will be requested for that tile as well when it
is needed. If the bit is cleared, the child tile is not requested and geometry is
instead upsampled from the parent. The bit values are as follows:
<table>
<tr><th>Bit Position</th><th>Bit Value</th><th>Child Tile</th></tr>
<tr><td>0</td><td>1</td><td>Southwest</td></tr>
<tr><td>1</td><td>2</td><td>Southeast</td></tr>
<tr><td>2</td><td>4</td><td>Northwest</td></tr>
<tr><td>3</td><td>8</td><td>Northeast</td></tr>
</table></td>
</tr>
<tr>
<td class="name"><code>waterMask</code></td>
<td class="type">
<span class="param-type">Uint8Array</span>
</td>
<td class="default">
</td>
<td class="description last">
<span class="optional">optional</span>
The water mask included in this terrain data, if any. A water mask is a square
Uint8Array or image where a value of 255 indicates water and a value of 0 indicates land.
Values in between 0 and 255 are allowed as well to smoothly blend between land and water.</td>
</tr>
<tr>
<td class="name"><code>structure</code></td>
<td class="type">
<span class="param-type">Object</span>
</td>
<td class="default">
</td>
<td class="description last">
<span class="optional">optional</span>
An object describing the structure of the height data.
<table class="params">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th>Default</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>heightScale</code></td>
<td class="type">
<span class="param-type">Number</span>
</td>
<td class="default">
<code class="language-javascript">1.0</code>
</td>
<td class="description last">
<span class="optional">optional</span>
The factor by which to multiply height samples in order to obtain
the height above the heightOffset, in meters. The heightOffset is added to the resulting
height after multiplying by the scale.</td>
</tr>
<tr>
<td class="name"><code>heightOffset</code></td>
<td class="type">
<span class="param-type">Number</span>
</td>
<td class="default">
<code class="language-javascript">0.0</code>
</td>
<td class="description last">
<span class="optional">optional</span>
The offset to add to the scaled height to obtain the final
height in meters. The offset is added after the height sample is multiplied by the
heightScale.</td>
</tr>
<tr>
<td class="name"><code>elementsPerHeight</code></td>
<td class="type">
<span class="param-type">Number</span>
</td>
<td class="default">
<code class="language-javascript">1</code>
</td>
<td class="description last">
<span class="optional">optional</span>
The number of elements in the buffer that make up a single height
sample. This is usually 1, indicating that each element is a separate height sample. If
it is greater than 1, that number of elements together form the height sample, which is
computed according to the structure.elementMultiplier and structure.isBigEndian properties.</td>
</tr>
<tr>
<td class="name"><code>stride</code></td>
<td class="type">
<span class="param-type">Number</span>
</td>
<td class="default">
<code class="language-javascript">1</code>
</td>
<td class="description last">
<span class="optional">optional</span>
The number of elements to skip to get from the first element of
one height to the first element of the next height.</td>
</tr>
<tr>
<td class="name"><code>elementMultiplier</code></td>
<td class="type">
<span class="param-type">Number</span>
</td>
<td class="default">
<code class="language-javascript">256.0</code>
</td>
<td class="description last">
<span class="optional">optional</span>
The multiplier used to compute the height value when the
stride property is greater than 1. For example, if the stride is 4 and the strideMultiplier
is 256, the height is computed as follows:
`height = buffer[index] + buffer[index + 1] * 256 + buffer[index + 2] * 256 * 256 + buffer[index + 3] * 256 * 256 * 256`
This is assuming that the isBigEndian property is false. If it is true, the order of the
elements is reversed.</td>
</tr>
<tr>
<td class="name"><code>isBigEndian</code></td>
<td class="type">
<span class="param-type">Boolean</span>
</td>
<td class="default">
<code class="language-javascript">false</code>
</td>
<td class="description last">
<span class="optional">optional</span>
Indicates endianness of the elements in the buffer when the
stride property is greater than 1. If this property is false, the first element is the
low-order element. If it is true, the first element is the high-order element.</td>
</tr>
<tr>
<td class="name"><code>lowestEncodedHeight</code></td>
<td class="type">
<span class="param-type">Number</span>
</td>
<td class="default">
</td>
<td class="description last">
<span class="optional">optional</span>
The lowest value that can be stored in the height buffer. Any heights that are lower
than this value after encoding with the `heightScale` and `heightOffset` are clamped to this value. For example, if the height
buffer is a `Uint16Array`, this value should be 0 because a `Uint16Array` cannot store negative numbers. If this parameter is
not specified, no minimum value is enforced.</td>
</tr>
<tr>
<td class="name"><code>highestEncodedHeight</code></td>
<td class="type">
<span class="param-type">Number</span>
</td>
<td class="default">
</td>
<td class="description last">
<span class="optional">optional</span>
The highest value that can be stored in the height buffer. Any heights that are higher
than this value after encoding with the `heightScale` and `heightOffset` are clamped to this value. For example, if the height
buffer is a `Uint16Array`, this value should be `256 * 256 - 1` or 65535 because a `Uint16Array` cannot store numbers larger
than 65535. If this parameter is not specified, no maximum value is enforced.</td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td class="name"><code>encoding</code></td>
<td class="type">
<span class="param-type"><a href="global.html#HeightmapEncoding">HeightmapEncoding</a></span>
</td>
<td class="default">
<code class="language-javascript">HeightmapEncoding.NONE</code>
</td>
<td class="description last">
<span class="optional">optional</span>
The encoding that is used on the buffer.</td>
</tr>
<tr>
<td class="name"><code>createdByUpsampling</code></td>
<td class="type">
<span class="param-type">Boolean</span>
</td>
<td class="default">
<code class="language-javascript">false</code>
</td>
<td class="description last">
<span class="optional">optional</span>
True if this instance was created by upsampling another instance;
otherwise, false.</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
<dl class="details">
<h5>Example:</h5>
<pre><code class="language-javascript">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
});</code></pre>
<h5>See:</h5>
<ul class="see-list">
<li><a href="TerrainData.html">TerrainData</a></li>
<li><a href="QuantizedMeshTerrainData.html">QuantizedMeshTerrainData</a></li>
<li><a href="GoogleEarthEnterpriseTerrainData.html">GoogleEarthEnterpriseTerrainData</a></li>
</ul>
</dl>
</div>
<h3 class="subsection-title">Members</h3>
<div class="nameContainer">
<h4 class="name" id="credits">
<a href="#credits" class="doc-link"></a>
credits<span class="type-signature"> : Array.&lt;<a href="Credit.html">Credit</a>></span>
<div class="source-link rightLinks">
<a href="https://github.com/CesiumGS/cesium/blob/1.91/Source/Core/HeightmapTerrainData.js#L162">Core/HeightmapTerrainData.js 162</a>
</div>
</h4>
</div>
<div class="description">
An array of credits for this tile.
</div>
<dl class="details">
</dl>
<div class="nameContainer">
<h4 class="name" id="waterMask">
<a href="#waterMask" class="doc-link"></a>
waterMask<span class="type-signature"> : Uint8Array|HTMLImageElement|HTMLCanvasElement</span>
<div class="source-link rightLinks">
<a href="https://github.com/CesiumGS/cesium/blob/1.91/Source/Core/HeightmapTerrainData.js#L174">Core/HeightmapTerrainData.js 174</a>
</div>
</h4>
</div>
<div class="description">
The water mask included in this terrain data, if any. A water mask is a square
Uint8Array or image where a value of 255 indicates water and a value of 0 indicates land.
Values in between 0 and 255 are allowed as well to smoothly blend between land and water.
</div>
<dl class="details">
</dl>
<h3 class="subsection-title">Methods</h3>
<div class="nameContainer">
<h4 class="name" id="interpolateHeight">
<a href="#interpolateHeight" class="doc-link"></a>
interpolateHeight<span class="signature">(rectangle, longitude, latitude)</span> &rarr; <span class="type-signature returnType">Number</span>
<div class="source-link rightLinks">
<a href="https://github.com/CesiumGS/cesium/blob/1.91/Source/Core/HeightmapTerrainData.js#L433">Core/HeightmapTerrainData.js 433</a>
</div>
</h4>
</div>
<div class="description">
Computes the terrain height at a specified longitude and latitude.
</div>
<table class="params">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>rectangle</code></td>
<td class="type">
<span class="param-type"><a href="Rectangle.html">Rectangle</a></span>
</td>
<td class="description last">
The rectangle covered by this terrain data.</td>
</tr>
<tr>
<td class="name"><code>longitude</code></td>
<td class="type">
<span class="param-type">Number</span>
</td>
<td class="description last">
The longitude in radians.</td>
</tr>
<tr>
<td class="name"><code>latitude</code></td>
<td class="type">
<span class="param-type">Number</span>
</td>
<td class="description last">
The latitude in radians.</td>
</tr>
</tbody>
</table>
<h5>Returns:</h5>
<div class="param-desc">
The terrain height at the specified position. If the position
is outside the rectangle, this method will extrapolate the height, which is likely to be wildly
incorrect for positions far outside the rectangle.
</div>
<dl class="details">
</dl>
<div class="nameContainer">
<h4 class="name" id="isChildAvailable">
<a href="#isChildAvailable" class="doc-link"></a>
isChildAvailable<span class="signature">(thisX, thisY, childX, childY)</span> &rarr; <span class="type-signature returnType">Boolean</span>
<div class="source-link rightLinks">
<a href="https://github.com/CesiumGS/cesium/blob/1.91/Source/Core/HeightmapTerrainData.js#L653">Core/HeightmapTerrainData.js 653</a>
</div>
</h4>
</div>
<div class="description">
Determines if a given child tile is available, based on the
<code>HeightmapTerrainData.childTileMask</code>. The given child tile coordinates are assumed
to be one of the four children of this tile. If non-child tile coordinates are
given, the availability of the southeast child tile is returned.
</div>
<table class="params">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>thisX</code></td>
<td class="type">
<span class="param-type">Number</span>
</td>
<td class="description last">
The tile X coordinate of this (the parent) tile.</td>
</tr>
<tr>
<td class="name"><code>thisY</code></td>
<td class="type">
<span class="param-type">Number</span>
</td>
<td class="description last">
The tile Y coordinate of this (the parent) tile.</td>
</tr>
<tr>
<td class="name"><code>childX</code></td>
<td class="type">
<span class="param-type">Number</span>
</td>
<td class="description last">
The tile X coordinate of the child tile to check for availability.</td>
</tr>
<tr>
<td class="name"><code>childY</code></td>
<td class="type">
<span class="param-type">Number</span>
</td>
<td class="description last">
The tile Y coordinate of the child tile to check for availability.</td>
</tr>
</tbody>
</table>
<h5>Returns:</h5>
<div class="param-desc">
True if the child tile is available; otherwise, false.
</div>
<dl class="details">
</dl>
<div class="nameContainer">
<h4 class="name" id="upsample">
<a href="#upsample" class="doc-link"></a>
upsample<span class="signature">(tilingScheme, thisX, thisY, thisLevel, descendantX, descendantY, descendantLevel)</span> &rarr; <span class="type-signature returnType">Promise.&lt;<a href="HeightmapTerrainData.html">HeightmapTerrainData</a>>|undefined</span>
<div class="source-link rightLinks">
<a href="https://github.com/CesiumGS/cesium/blob/1.91/Source/Core/HeightmapTerrainData.js#L508">Core/HeightmapTerrainData.js 508</a>
</div>
</h4>
</div>
<div class="description">
Upsamples this terrain data for use by a descendant tile. The resulting instance will contain a subset of the
height samples in this instance, interpolated if necessary.
</div>
<table class="params">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>tilingScheme</code></td>
<td class="type">
<span class="param-type"><a href="TilingScheme.html">TilingScheme</a></span>
</td>
<td class="description last">
The tiling scheme of this terrain data.</td>
</tr>
<tr>
<td class="name"><code>thisX</code></td>
<td class="type">
<span class="param-type">Number</span>
</td>
<td class="description last">
The X coordinate of this tile in the tiling scheme.</td>
</tr>
<tr>
<td class="name"><code>thisY</code></td>
<td class="type">
<span class="param-type">Number</span>
</td>
<td class="description last">
The Y coordinate of this tile in the tiling scheme.</td>
</tr>
<tr>
<td class="name"><code>thisLevel</code></td>
<td class="type">
<span class="param-type">Number</span>
</td>
<td class="description last">
The level of this tile in the tiling scheme.</td>
</tr>
<tr>
<td class="name"><code>descendantX</code></td>
<td class="type">
<span class="param-type">Number</span>
</td>
<td class="description last">
The X coordinate within the tiling scheme of the descendant tile for which we are upsampling.</td>
</tr>
<tr>
<td class="name"><code>descendantY</code></td>
<td class="type">
<span class="param-type">Number</span>
</td>
<td class="description last">
The Y coordinate within the tiling scheme of the descendant tile for which we are upsampling.</td>
</tr>
<tr>
<td class="name"><code>descendantLevel</code></td>
<td class="type">
<span class="param-type">Number</span>
</td>
<td class="description last">
The level within the tiling scheme of the descendant tile for which we are upsampling.</td>
</tr>
</tbody>
</table>
<h5>Returns:</h5>
<div class="param-desc">
A promise for upsampled heightmap terrain data for the descendant tile,
or undefined if too many asynchronous upsample operations are in progress and the request has been
deferred.
</div>
<dl class="details">
</dl>
<div class="nameContainer">
<h4 class="name" id="wasCreatedByUpsampling">
<a href="#wasCreatedByUpsampling" class="doc-link"></a>
wasCreatedByUpsampling<span class="signature">()</span> &rarr; <span class="type-signature returnType">Boolean</span>
<div class="source-link rightLinks">
<a href="https://github.com/CesiumGS/cesium/blob/1.91/Source/Core/HeightmapTerrainData.js#L693">Core/HeightmapTerrainData.js 693</a>
</div>
</h4>
</div>
<div class="description">
Gets a value indicating whether or not this terrain data was created by upsampling lower resolution
terrain data. If this value is false, the data was obtained from some other source, such
as by downloading it from a remote server. This method should return true for instances
returned from a call to <a href="HeightmapTerrainData.html#upsample"><code>HeightmapTerrainData#upsample</code></a>.
</div>
<h5>Returns:</h5>
<div class="param-desc">
True if this instance was created by upsampling; otherwise, false.
</div>
<dl class="details">
</dl>
</article>
</section>
<footer>
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.6.10</a>
</footer>
</div>
<div class="nav">
<div class="menu">
<input type="text" class="classFilter" id="ClassFilter" placeholder="Search">
<ul id="ClassList"><li data-name="Animation"><a href="Animation.html">Animation</a></li><li data-name="AnimationViewModel"><a href="AnimationViewModel.html">AnimationViewModel</a></li><li data-name="Appearance"><a href="Appearance.html">Appearance</a></li><li data-name="ArcGisMapServerImageryProvider"><a href="ArcGisMapServerImageryProvider.html">ArcGisMapServerImageryProvider</a></li><li data-name="ArcGISTiledElevationTerrainProvider"><a href="ArcGISTiledElevationTerrainProvider.html">ArcGISTiledElevationTerrainProvider</a></li><li data-name="ArcType"><a href="global.html#ArcType">ArcType</a></li><li data-name="AssociativeArray"><a href="AssociativeArray.html">AssociativeArray</a></li><li data-name="Axis"><a href="global.html#Axis">Axis</a></li><li data-name="AxisAlignedBoundingBox"><a href="AxisAlignedBoundingBox.html">AxisAlignedBoundingBox</a></li><li data-name="backFaceCulling"><a href="global.html#backFaceCulling">backFaceCulling</a></li><li data-name="barycentricCoordinates"><a href="global.html#barycentricCoordinates">barycentricCoordinates</a></li><li data-name="BaseLayerPicker"><a href="BaseLayerPicker.html">BaseLayerPicker</a></li><li data-name="BaseLayerPickerViewModel"><a href="BaseLayerPickerViewModel.html">BaseLayerPickerViewModel</a></li><li data-name="Billboard"><a href="Billboard.html">Billboard</a></li><li data-name="BillboardCollection"><a href="BillboardCollection.html">BillboardCollection</a></li><li data-name="BillboardGraphics"><a href="BillboardGraphics.html">BillboardGraphics</a></li><li data-name="BillboardVisualizer"><a href="BillboardVisualizer.html">BillboardVisualizer</a></li><li data-name="binarySearch"><a href="global.html#binarySearch">binarySearch</a></li><li data-name="binarySearchComparator"><a href="global.html#binarySearchComparator">binarySearchComparator</a></li><li data-name="BingMapsGeocoderService"><a href="BingMapsGeocoderService.html">BingMapsGeocoderService</a></li><li data-name="BingMapsImageryProvider"><a href="BingMapsImageryProvider.html">BingMapsImageryProvider</a></li><li data-name="BingMapsStyle"><a href="global.html#BingMapsStyle">BingMapsStyle</a></li><li data-name="BlendEquation"><a href="global.html#BlendEquation">BlendEquation</a></li><li data-name="BlendFunction"><a href="global.html#BlendFunction">BlendFunction</a></li><li data-name="BlendingState"><a href="BlendingState.html">BlendingState</a></li><li data-name="BlendOption"><a href="global.html#BlendOption">BlendOption</a></li><li data-name="BoundingRectangle"><a href="BoundingRectangle.html">BoundingRectangle</a></li><li data-name="BoundingSphere"><a href="BoundingSphere.html">BoundingSphere</a></li><li data-name="boundingSphere"><a href="global.html#boundingSphere">boundingSphere</a></li><li data-name="BoxEmitter"><a href="BoxEmitter.html">BoxEmitter</a></li><li data-name="BoxGeometry"><a href="BoxGeometry.html">BoxGeometry</a></li><li data-name="BoxGeometryUpdater"><a href="BoxGeometryUpdater.html">BoxGeometryUpdater</a></li><li data-name="BoxGraphics"><a href="BoxGraphics.html">BoxGraphics</a></li><li data-name="BoxOutlineGeometry"><a href="BoxOutlineGeometry.html">BoxOutlineGeometry</a></li><li data-name="buildModuleUrl"><a href="global.html#buildModuleUrl">buildModuleUrl</a></li><li data-name="CallbackProperty"><a href="CallbackProperty.html">CallbackProperty</a></li><li data-name="Camera"><a href="Camera.html">Camera</a></li><li data-name="CameraEventAggregator"><a href="CameraEventAggregator.html">CameraEventAggregator</a></li><li data-name="CameraEventType"><a href="global.html#CameraEventType">CameraEventType</a></li><li data-name="cancelAnimationFrame"><a href="global.html#cancelAnimationFrame">cancelAnimationFrame</a></li><li data-name="Cartesian2"><a href="Cartesian2.html">Cartesian2</a></li><li data-name="Cartesian3"><a href="Cartesian3.html">Cartesian3</a></li><li data-name="Cartesian4"><a href="Cartesian4.html">Cartesian4</a></li><li data-name="Cartographic"><a href="Cartographic.html">Cartographic</a></li><li data-name="CartographicGeocoderService"><a href="CartographicGeocoderServic
</div>
</div>
<script>
if (window.frameElement) {
document.body.className = 'embedded';
var ele = document.createElement('a');
ele.className = 'popout';
ele.target = '_blank';
ele.href = window.location.href;
ele.title = 'Pop out';
document.getElementById('main').appendChild(ele);
}
// Set targets on external links. Sandcastle and GitHub shouldn't be embedded in any iframe.
Array.prototype.forEach.call(document.getElementsByTagName('a'), function(a) {
if (/^https?:/i.test(a.getAttribute('href'))) {
a.target='_blank';
}
});
</script>
<script src="javascript/prism.js"></script>
<script src="javascript/cesiumDoc.js"></script>
</body>
</html>