Cesium中MultiPolygon數(shù)據(jù)處理
Cesium支持加載geojson的數(shù)據(jù)源,加載成功后,Cesium會創(chuàng)建對應(yīng)的實體(Entity)對象,在地圖上進(jìn)行顯示。
在加載具有MultiPolygon空間類型的geojson數(shù)據(jù)時,獲得的實體(Entity)數(shù)量和geojson中數(shù)據(jù)條數(shù)并不對應(yīng)。
MultiPolygon類型的geojson數(shù)據(jù)格式說明,參見下列網(wǎng)址:
https://tools.ietf.org/html/rfc7946#section-3.1.7
Cesium加載geojson數(shù)據(jù)源
Cesium加載geojson的數(shù)據(jù)代碼示例:
? ???let?promise?=?Cesium.GeoJsonDataSource.load(_geojsondata);
? ?? ?promise
????.then(function?(dataSource)?{?
??????viewer.dataSources.add(dataSource);
??????let?entities?=?dataSource.entities.values;
? ? ?//根據(jù)不同類型進(jìn)行屬性區(qū)別設(shè)置
? ? ? }
加載的過程,Cesium自動判斷geojson的空間數(shù)據(jù)類型:點、線、面,在異步的實體(Entity)加載過程中,才會對點、線、面的實體進(jìn)行區(qū)別屬性設(shè)置。
Cesium中MultiPolygon數(shù)據(jù)
加載MultiPolygon數(shù)據(jù)時,Cesium中實體的數(shù)量會和geojson中數(shù)據(jù)源的條數(shù)有所不同,MultiPolygon類型feature中,可能存在多個Polygon面狀數(shù)據(jù),Cesium會分開進(jìn)行實體創(chuàng)建,導(dǎo)致會多一些實體,這在獲取面狀數(shù)據(jù)的屬性時,需要對多個面的feature進(jìn)行判斷,按照實際面的數(shù)量進(jìn)行屬性賦值,這樣在地圖獲取時,才能獲取到對應(yīng)正確的。單個面的數(shù)據(jù),有的存在hole(挖洞),Cesium中實體對應(yīng)寫法是:
? ? ?polygon:?{
??????????hierarchy:?{
????????????positions:?polygon,
????????????holes:?holes
??????????},
??這樣才能顯示挖洞的效果。