從這篇文章開始,我們正式進入了Cesium項目實戰,在接下來的系列文章中,我們以“北京市”作為我們的研究區域,探討在城市綜合運營管理中的一些常見場景,結合具體的業務場景進行三維可視化。
在本篇“城市行政區划信息展示以及專題信息展示”中我們主要包括如下幾個可視化內容。
- 展示城市行政區划信息
- 專題信息展示
1. 展示城市行政區划信息
Cesium支持好幾種矢量格式的數據加載,比如geojson、kml、czml等,但是不支持shp,但是,我們拿到的城市行政區划數據往往都是shp格式的,對此,我們首先需要做的就是數據格式轉換,在這里,我們將shp轉換為geojson格式的。
- 方法(注意shp文件的坐標系需要WGS84的經緯度投影)
- 在線轉換(個人推薦)
https://mapshaper.org/ - 工具軟件轉換
QGIS 等專業GIS軟件 - 編碼實現
使用 geotools 等開發庫
接下來,我們重點說說如何在Cesium中使用geojson格式的數據來做三維可視化。在Cesium中,使用GeoJsonDataSource接口來作為geojson格式數據的加載。我們看看API文檔中的定義。
在API實例中,我們可以看到主要是通過GeoJsonDataSource接口的靜態load方法來加載,接受一個文件地址參數,以及一些自定義的樣式顯示參數即可。我們按照API文檔中的示例來試一下。
1、默認參數(最精簡)
可以看出,默認參數情況下,有一個填充色和邊界線。
2、自定義參數(更改邊線顏色、邊線的粗細程度以及填充色)
2. 專題信息展示
1、注記標簽
僅僅顯示行政區划未免太單調了,同時不太好進行分辨。我們首先添加一層標簽,告訴使用者,每一塊區划的地名。
2、分色渲染
根據不同的地塊分色渲染,更便於區分
3、標簽+分色渲染
4、專題分類
在數據准備的過程中,我們構造了persons這個人口字段專題信息,那么,我們就可以對專題字段進行專題分類。這是我們構造的數據接口信息。
比如:我們要按照人口數量的大小,進行顏色漸變的專題顯示。
我們還可以通過拉升多邊形的方式,使用高度來可視化專題信息。
詳細代碼請參考 Cesium項目實戰小專欄
總結
關於城市中用面狀來表達的數據,均可以通過shp轉geojson的方式,然后通過GeoJsonDataSource接口來加載,剩下來的就是按照數據以平面或者立體的方式,分色,漸變,均色來表達專題信息。