Cesium は地形データをロードします
1. 地形データとは
地形データは、地球の表面と地形の標高を表すデジタル モデルまたは画像です。3D 視覚化アプリケーションでは、ユーザーが地表の特徴や地形をよりよく理解できるように、地形データを使用して現実的な地形サーフェスが作成されることがよくあります。
Cesium では、TerrainProvider クラスのサブクラスを使用して地形データを読み込み、サブクラスによってインスタンス化された TerrainProvider を Viewer.terrainProvider に割り当てることで、地形データを表示できます。
2、TerrainProvider クラス
TerrainProvider クラスは、Cesium に地形データをロードするために使用される基本クラスです。地形の高さデータやその他の地形情報を要求および取得するための一連のインターフェイスを定義します。
共通の属性
- 可用性 : 可用性。地形データが利用可能かどうか、および特定のエリアおよび詳細レベル (LOD) でどのデータが利用可能であるかを示します。可用性は一定にすることも、動的に計算することもできます
- errorEvent : 地形データのロード中にエラーが発生したときにトリガーされるイベント オブジェクト
- Credit : 現在の TerrainProvider に関する情報
- tilingScheme : 地球の表面をタイルに分割し、座標系を作成する方法を説明するタイル スキーマ
- hasVertexNormals : TerrainProvider が各頂点の法線ベクトル (サーフェスに垂直) を提供するかどうかを示します。
- hasWaterMask : TerrainProvider が水域エリア マスクを提供するかどうかを示します。つまり、どのエリアが水域のバイナリ イメージであるかを示します。
一般的な方法
- requestTileGeometry(x, y, level, throttleRequests): 指定された階層レベル (x, y, level) を持つタイルの幾何学的データを要求します。
- getLevelMinimumGeometricError(level): 指定された階層レベルの最大幾何誤差を取得します
- getTileDataAvailable(x, y, level): タイルが利用可能かどうかを取得します。
3. TerrainProvider サブクラス
Cesium の TerrainProvider には複数のサブクラスがあり、それぞれが異なるタイプの地形データ ソースやレンダリング手法をサポートしています。Cesium の一般的な TerrainProvider サブクラスには主に次のものが含まれます。
- CesiumTerrainProvider: STK World Terrain データ ソースを使用して標高データを読み込み、地形テクスチャ マップをサポートします。CesiumTerrainProvider は、Cesium のデフォルトの地形プロバイダーです。
- CustomHeightmapTerrainProvider: Cesium のカスタム標高データの地形プロバイダー。これにより、開発者はプログラムによる生成や他のソースからの標高データのインポートを使用してカスタム地形を作成できます。
- GoogleEarthEnterpriseTerrainProvider: 標高と画像データを Google Earth Enterprise サーバーに読み込みます。
- ArcGISTiledElevationTerrainProvider: ArcGIS Server によって提供されるスライス タイル サービスを標高データの地形として使用します。ArcGIS Server によって公開された事前に生成された標高タイルにアクセスでき、タイルの動的取得とキャッシュをサポートします。
- VRTheWorldTerrainProvider: VR-TheWorldの標高と画像データを読み込みます。
- EllipsoidTerrainProvider: 楕円体を地形モデルとして使用し、標高データは提供しません。
Cesium で一般的に使用される TerrainProvider サブクラスは、主に CesiumTerrainProvider クラスです。
CesiumTerrainProvider クラス
CesiumTerrainProvider は、STK World Terrain データ ソースを使用して標高データを読み込み、地形テクスチャ マップをサポートします。データ ソースは、解像度 30 メートルの地球規模の標高データと土地被覆マテリアルのレイヤーを提供します。CesiumTerrainProvider は、動的な地形データの取得、アンロード、キャッシュをサポートし、実行時に LOD レベルと地形テクスチャを変更できます。CesiumTerrainProvider は、高精度かつ高性能の地形レンダリングを必要とするアプリケーションに適しています
共通の属性
url
: 地形データをロードするための URL アドレス。requestVertexNormals
: 頂点法線情報を要求するかどうかを示すブール型requestWaterMask
: 水面マスク情報を要求するかどうかを示すブール型hasVertexNormals
: 地形プロバイダーに頂点法線情報が含まれているかどうかを示す読み取り専用のブール値hasWaterMask
: 読み取り専用のブール値。地形プロバイダーにウォーター マスク情報が含まれているかどうかを示します。errorEvent
: イベント タイプ、地形データ要求エラー時にトリガーされます。availability
: 地形データの可用性を定義する TimeIntervalCollection オブジェクト
一般的な方法
requestTileGeometry(x, y, level, request)
: 指定された座標およびレベルの地形ジオメトリ データをリクエストします。このメソッドは、完了時に地形ジオメトリ データを取得できる Promise オブジェクトを返します。getLevelMaximumGeometricError(level)
: 指定したレベルの最大地形幾何誤差を取得しますgetTileDataAvailable(x, y, level)
: 特定の座標とレベルで地形データが利用可能かどうかをクエリします。
CustomHeightmapTerrainProvider类
CustomHeightmapTerrainProvider は HeightmapTerrainProvider クラスを継承するため、同期および非同期の標高タイルの要求、最大幾何誤差の取得など、HeightmapTerrainProvider のすべての機能を備えています。さらに、CustomHeightmapTerrainProvider は requestHeightmapTerrain メソッドも実装します。カスタム標高データを返すには、このメソッドをサブクラスによって実装する必要があります。
標高データをカスタマイズする場合は、データの解像度、範囲、形式を決定する必要があります。標高データは、数値標高モデル (DEM) ファイル、画像ファイル、データベース、またはその他の形式で保存し、CustomHeightmapTerrainProvider が処理できる形式に変換できます。
CustomHeightmapTerrainProvider を使用して、現実世界の標高データを仮想環境にロードしたり、Minecraft に似たブロック状の地形を作成したりするなど、さまざまなカスタムの地形効果を実現します。
CustomHeightmapTerrainProvider クラスの共通プロパティとメソッドは CesiumTerrainProvider と同様であるため、ここでは繰り返しません。詳細については、公式ドキュメントを参照してください。
ArcGISTiledElevationTerrainProvider类
ArcGISTiledElevationTerrainProvider は、ArcGIS Server によって提供されるタイル タイル サービスを標高データとして読み込むために Cesium で使用される地形プロバイダーです。
共通の属性
errorEvent
: 地形データリクエストエラー時に発生するイベントcredit
: データソースや著作権情報を記述する Credit オブジェクトavailability
: 地形データの可用性を定義する TimeIntervalCollection オブジェクト
一般的な方法
requestTileGeometry(x, y, level, request)
: 指定された座標およびレベルの地形ジオメトリ データをリクエストします。このメソッドは、完了時に地形ジオメトリ データを取得できる Promise オブジェクトを返します。getLevelMaximumGeometricError(level)
: 指定したレベルの最大地形幾何誤差を取得しますgetTileDataAvailable(x, y, level)
: 特定の座標とレベルで地形データが利用可能かどうかをクエリします。
EllipsoidTerrainProvider类
EllipsoidTerrainProvider は、地球表面のおおよその幾何学形状を表す楕円体ベースのモデルを提供する Cesium の組み込み地形プロバイダーです。他の地形プロバイダーとは異なり、EllipsoidTerrainProvider は実際の地形データに依存しませんが、定義した楕円体モデルに基づいて地表の標高グリッドを生成します。
EllipsoidTerrainProvider は TerrainProvider クラスを継承し、地形データの非同期読み込み、地形データの要求など、TerrainProvider のすべての機能を備えています。
EllipsoidTerrainProvider は、地球の表面を迅速にレンダリングする必要があるアプリケーション シナリオに適しています。たとえば、全球の衛星画像や気象データを表示する場合、EllipsoidTerrainProvider を通じて地球表面の近似幾何学的モデルを迅速に生成でき、データをこれに添付できます。地球表面の高速かつスムーズなレンダリングを実現するモデル。
共通の属性
tilingScheme
: この地形プロバイダーによって使用されるタイル スキーマを記述する TileTilingScheme オブジェクト。ellipsoid
: 地球のおおよその幾何学形状を表す楕円体オブジェクト
方法
getLevelMaximumGeometricError(level)
: 指定したレベルの最大地形幾何誤差を取得しますrequestTileGeometry(x, y, level, request)
: 指定された座標およびレベルの地形ジオメトリ データをリクエストします。このメソッドは、完了時に地形ジオメトリ データを取得できる Promise オブジェクトを返します。
4. CesiumTerrainProvider を使用して地形データ インスタンスをロードする
Cesium への地形データのロードは非常に簡単です。CesiumTerrainProvider オブジェクトを作成し、関連パラメーターを設定し、それを viewer.terrainProvider に割り当てるだけで、地形データのロードが完了します
// 加载地形数据
const terrainProvider = new Cesium.CesiumTerrainProvider({
url:Cesium.IonResource.fromAssetId(3956),
requestWaterMask:true,//请求水体效果所需要的海岸线数据
requestVertexNormals:true,//请求地形照明数据
})
viewer.terrainProvider = terrainProvider
ページを更新し、地球を一定のレベルまでズームすると、地形データがロードされ、起伏のある山々がはっきりとわかることがわかります。
さて、これで地形データを読み込むCesiumの紹介は終わりです。