cesiumjs開發實踐 (六)

                                     CZML

摘要
CZML是cesium中很重要的一個概念,也是一個亮點,CZML使得cesium很酷很炫地展示動態數據成爲可能。

CZML是cesium中很重要的一個概念,也是一個亮點,CZML使得cesium很酷很炫地展示動態數據成爲可能。

CZML是一種JSON格式的字符串,用於描述與時間有關的動畫場景,CZML包含點、線、地標、模型、和其他的一些圖形元素,並指明瞭這些元素如何隨時間而變化。某種程度上說, Cesium 和 CZML的關係就像 Google Earth 和 KML。

 CZML 的一個典型結構如下

[
    // packet one
    {
        "id""GroundControlStation"
        "position": { "cartographicDegrees": [-75.540.00.0] },
        "point": {
            "color": { "rgba": [00255255] },
        }
    },
    // packet two
    {
        "id""PredatorUAV",
        // ...
    }
]

如上CZML片段描述了兩個包(packet,這裏每個包描述了一個點),每個包的id,position和color。

每個包都有一個 id 屬性用來唯一標識這個對象。id不一定要求用GUIDs,但是最好在載入場景中CZML中能夠唯一單個的對象。如果id沒有指定, cesium會自動生成一個,但是,這樣在後續處理中會遇到麻煩,比如後面的操作中需要引用這個對象並給它添加更多的數據。除了id屬性, 一個包還會有更多的屬性用於描述這個對象的特性. 在上面這個例子中, 我們指定了一個id爲"GroundControlStation" 的對象,這個對象擁有一個固定的WGS84座標 (-75.5 ,40.0,0.0), 並在這個位置顯示一個藍色的點。更多的屬性參考https://github.com/AnalyticalGraphicsInc/cesium/wiki/CZML-Content。

       CZML比較特殊的是跟時間序列相關的屬性

{  
    // ...  
    "someInterpolatableProperty": {  
        "cartesian": [  
            "2012-04-30T12:00Z"1.02.03.0, //表示當時間爲2012-04-30T12:00Z,座標爲(1,2,3)
            "2012-04-30T12:01Z"4.05.06.0, //表示當時間爲2012-04-30T12:01Z,座標爲(4,5,6)
            "2012-04-30T12:02Z"7.08.09.0  //表示當時間爲2012-04-30T12:02Z,座標爲(7,8,9)
        ]  
    }  
}

{  
    // ...  
    "someInterpolatableProperty": {  
        "epoch""2012-04-30T12:00Z", //表示時間起點爲2012-04-30T12:00:00 
        "cartesian": [  
            0.01.02.03.0,  //從起點開始,第0秒時座標爲(1,2,3)
            60.04.05.06.0, //從起點開始,第60秒時座標爲(4,5,6) 
            120.07.08.09.0 //從起點開始,第120秒時座標爲(7,8,9) 
        ]  
    }  
}

{  
    // ...  
    "someInterpolatableProperty": {  
        "epoch""2012-04-30T12:00Z",  
        "cartesian": [  
            0.01.02.03.0,  
            60.04.05.06.0,  
            120.07.08.09.0  
        ],  
        "interpolationAlgorithm""LAGRANGE",  //插值算法爲LAGRANGE,還有HERMITE,GEODESIC
        "interpolationDegree"5 //1爲線性插值,2爲平方插值
    },  }

定義了一個CZML後,就可以把它載入到場景中,就能獲得該對象的動態效果

dataSource = new Cesium.CzmlDataSource();
		dataSource.load(czml);
		viewer.dataSources.add(dataSource);

比如我們載入官方的czml例子中的Vehicle.czml,就能看到一輛小車緩緩移動,這時候動畫控制器就很有用,可以快進、暫停、倒放、回放等等

CZML的草案已經提交到OGC,有望成爲與KML競爭的國際標準。

本篇到此結束。下一篇《cesiumjs開發實踐(七) 3D模型》


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章