1、shp轉(zhuǎn)換成json格式
此處整理了兩種shp轉(zhuǎn)為json格式的方式:一是使用工具;二是使用ArcGIS進行轉(zhuǎn)換。
1.1、ArcGIS轉(zhuǎn)換
1、使用ArcGIS將shp文件的地理坐標設(shè)置為WGS_198484并導(dǎo)出為shp數(shù)據(jù)。
(1)打開ArcGIS的Toolbox工具箱,選擇“定義投影”:

image.png
(2)選擇要轉(zhuǎn)換的shp格式文件并選擇地理坐標為 WGS_1984,單擊確認。

image.png
(3)將shp(WGS1984坐標系)數(shù)據(jù)導(dǎo)出。

image.png
(4)打開ArcGIS的Toolbox工具,選擇轉(zhuǎn)換工具中的要素轉(zhuǎn)JSON,并選擇前面設(shè)置過地理坐標的shp文件。

image.png

image.png
1.2、使用mapshaper工具轉(zhuǎn)換
(1)打開網(wǎng)站 http://www.mapshaper.org/

image.png
(2)點擊select按鈕,選擇目標shp圖層

image.png
(3)確認,inport導(dǎo)入。

image.png
(4)點擊右上角的export,選擇GeoJson ,輸入encoding=utf8,點擊export。

image.png
2、Cesium添加GeoJson數(shù)據(jù)
將前面轉(zhuǎn)換得到的json格式世界數(shù)據(jù)疊加到Cesium的底圖上。
//添加geojson格式地理數(shù)據(jù)(由shp格式文件轉(zhuǎn)換得來)
Cesium.Math.setRandomNumberSeed(0);
var promise =Cesium.GeoJsonDataSource.load('Output_bou2_4p.json');
promise.then(function (dataSource) {
viewer.dataSources.add(dataSource);
var entities =dataSource.entities.values;
var colorHash = {};
for (var i = 0; i < entities.length;i++) {
var entity = entities[i];
var name = entity.name;
var color = colorHash[name];
if (!color) {
color =Cesium.Color.fromRandom({
alpha: 1.0
});
colorHash[name] = color;
}
entity.polygon.material = color;
entity.polygon.outline = false;
entity.polygon.extrudedHeight =5000.0;
}
});
viewer.flyTo(promise);
延伸:如果shp格式文件中有包含各個面的面積或者周長的話,通過一下代碼使得加載出來的json數(shù)據(jù)呈立體形狀
entity.polygon.extrudedHeight= entity.properties.Shape_Area / 100000.0;

image.png