セシウム エンティティはタイムラインに関連付けられます (モーション トラックの追加)

ここに画像の説明を挿入します
ここに画像の説明を挿入します

1. まずエンティティを追加します

モデルを使用して航空機エンティティをロードする

let entity = viewer.entities.add({
    
    
   position: Cesium.Cartesian3.fromDegrees(120, 21),
   model: {
    
    
       uri: "/static/Cesium_Air.glb",
       minimumPixelSize: 128,
       maximumScale: 20000,
   },
 })
viewer.trackedEntity = entity;

2. セシウムの SampledPositionProperty の addSample メソッドを使用して、データ内の経度と緯度を時刻に関連付けます。

ここに画像の説明を挿入します
図によると、サンプル メソッド
1 が追加されていることがわかります。最初のパラメータは、セシウムの時刻 julianDate 形式です。Cesium.JulianDate.fromDate(new Date()) を使用して、標準時刻を julianDate 形式に変換できます (JulianDate には、多くのメソッド 多くの時刻形式を変換できます。ここではあまり説明しません。ドキュメントで自分で学ぶことができます。) 2. 2 番目のパラメータは、
Cartesian3 形式の緯度と経度の座標で、Cesium を使用して変換できます。 .Cartesian3.fromDegrees() メソッド
3. 3 番目のパラメータはここにあります。使用しない場合はオプションであり、ここでは説明しません。

2.1. 飛行経路データ

let position = [{
    
    lon:120,lat:21,height:1000,time:'2023-05-21 08:00:00'},{
    
    lon:121,lat:22,height:1500,time:'2023-05-21 10:00:00'},{
    
    lon:122,lat:23,height:2500,time:'2023-05-21 12:00:00'}]

2.2. SampledPositionProperty のメソッドを使用して、2.1 で指定された緯度、経度、時間に従ってバインドします。

// 取样位置 相当于实例化一个集合
  let property = new Cesium.SampledPositionProperty();
  for (let i = 0; i < position.length; i++) {
    
    
        let time = Cesium.JulianDate.fromDate(new Date(position[i].time));
        let positions = Cesium.Cartesian3.fromDegrees(position[i].longitude, position[i].latitude, position[i].altitude);
        // 添加位置,和时间对应
        property.addSample(time, positions);
 }

3. 上記 2 では、エンティティに時間と経度緯度を入れて移動させるだけです。

3.1 2.2 から、経度、緯度、時刻を関連付ける集計 (プロパティ) を取得し、それらをエンティティ内の位置に支払います。

let entity = viewer.entities.add({
    
    
 position:property,
 model: {
    
    
     uri: "/static/Cesium_Air.glb",
     minimumPixelSize: 128,
     maximumScale: 20000,
 },
})
viewer.trackedEntity = entity;

3.2 次に、可用性メソッドを使用してエンティティをタイムラインに関連付けます

ここに画像の説明を挿入します

let entity = viewer.entities.add({
    
    
availability : new Cesium.TimeIntervalCollection([new Cesium.TimeInterval({
    
    
         start: Cesium.JulianDate.fromDate(new Date("2023-05-21 08:00:00")),
         stop: Cesium.JulianDate.fromDate(new Date("2023-05-21 12:00:00"))
       })]),
  position:property,
  model: {
    
    
      uri: "/static/Cesium_Air.glb",
      minimumPixelSize: 128,
      maximumScale: 20000,
  },
})
viewer.trackedEntity = entity;

以下はセシウムのタイムラインを修正した時刻です。

4. 外部で使用される知識がほとんどない(セシウム時間の初期時間を変更する)

viewer.clock.startTime = Cesium.JulianDate.fromDate(new Date("2023-05-21 08:00:00"));//开始时间
viewer.clock.stopTime = Cesium.JulianDate.fromDate(new Date("2023-05-21 12:00:00"));//结束时间
viewer.clock.currentTime = Cesium.JulianDate.fromDate (new Date("2023-5-21 08:00:00"));//当前时间
``

おすすめ

転載: blog.csdn.net/weixin_46730573/article/details/130796119