import { getToken } from '../../utils/auth.js';
|
const server = {
|
addLayer(res) {
|
switch (res.category) {
|
case 0://其他
|
this.setAddGisServerLayer(res);
|
break;
|
case 1://GisServer
|
this.setAddGisServerLayer(res);
|
break;
|
case 2://GeoServer
|
this.setAddGeoServerLayer(res);
|
break;
|
case 3://数简
|
this.setAddGisServerLayer(res);
|
break;
|
}
|
},
|
//GisServer图层
|
setAddGisServerLayer(res) {
|
switch (res.data) {
|
case 1://数字正射影像图
|
this.setAddGisServerDomLayer(res);
|
break;
|
case 2://场景地形数据
|
this.setAddGisServerTerrainLayer(res);
|
break;
|
case 3://数字高程模型(晕渲图)
|
this.setAddGisServerDomLayer(res);
|
break;
|
case 4://单波段栅格数据
|
this.setAddGisServerDomLayer(res);
|
break;
|
case 5://多光谱栅格数据
|
this.setAddGisServerDomLayer(res);
|
break;
|
case 6://高光谱栅格数据
|
this.setAddGisServerDomLayer(res);
|
break;
|
case 7://矢量图层
|
this.setAddGisServerVectorLayer(res);
|
break;
|
case 8://三维模型
|
this.setAddGisServerModelLayer(res);
|
break;
|
}
|
},
|
//GeoServer图层
|
setAddGeoServerLayer(res) {
|
switch (res.data) {
|
case 1://数字正射影像图
|
this.setAddGeoServerDomLayer(res);
|
break;
|
case 2://场景地形数据
|
this.setAddGeoServerTerrainLayer(res);
|
break;
|
case 3://数字高程模型(晕渲图)
|
this.setAddGeoServerDomLayer(res);
|
break;
|
case 4://单波段栅格数据
|
this.setAddGeoServerDomLayer(res);
|
break;
|
case 5://多光谱栅格数据
|
this.setAddGeoServerDomLayer(res);
|
break;
|
case 6://高光谱栅格数据
|
this.setAddGeoServerDomLayer(res);
|
break;
|
case 7://矢量图层
|
this.setAddGeoServerVectorLayer(res);
|
break;
|
case 8://三维模型
|
this.setAddGeoServerModelLayer(res);
|
break;
|
}
|
},
|
setAddGeoServerDomLayer(res) {
|
switch (res.type) {
|
case 0://URL
|
break;
|
case 1://TMS
|
this.setAddTmsLayer(res)
|
break;
|
case 2://WMTS
|
this.setAddWmtsLayer(res)
|
break;
|
case 3://WMS
|
this.setAddGeoWmsLayer(res)
|
break;
|
}
|
},
|
setAddGeoServerTerrainLayer(re) {
|
switch (res.type) {
|
case 0://URL
|
this.setAddTearrinLayer(res)
|
break;
|
case 1://TMS
|
this.setAddTearrinLayer(res)
|
break;
|
}
|
},
|
setAddGeoServerVectorLayer(res) {
|
switch (res.type) {
|
case 0://URL
|
break;
|
case 3://WMS
|
this.setAddGeoWmsLayer(res)
|
break;
|
case 4://WFS
|
break;
|
}
|
},
|
setAddGeoServerModelLayer(res) {
|
switch (res.type) {
|
case 0://URL
|
this.setAddModelLayer(res)
|
break;
|
case 5://Tileset
|
this.setAddModelLayer(res)
|
break;
|
}
|
},
|
|
setAddGisServerDomLayer(res) {
|
switch (res.type) {
|
case 0://URL
|
break;
|
case 1://TMS
|
this.setAddTmsLayer(res)
|
break;
|
case 2://WMTS
|
this.setAddWmtsLayer(res)
|
break;
|
case 3://WMS
|
this.setAddWmsLayer(res)
|
break;
|
}
|
},
|
setAddGisServerTerrainLayer(res) {
|
switch (res.type) {
|
case 0://URL
|
this.setAddTearrinLayer(res)
|
break;
|
case 1://TMS
|
this.setAddTearrinLayer(res)
|
break;
|
}
|
},
|
setAddGisServerVectorLayer(res) {
|
switch (res.type) {
|
case 0://URL
|
break;
|
case 3://WMS
|
this.setAddWmsLayer(res)
|
break;
|
case 4://WFS
|
break;
|
}
|
},
|
setAddGisServerModelLayer(res) {
|
switch (res.type) {
|
case 0://URL
|
this.setAddModelLayer(res)
|
break;
|
case 5://Tileset
|
this.setAddModelLayer(res)
|
break;
|
}
|
},
|
|
|
|
|
|
|
|
|
|
|
|
//加载Geoserver WMS 服务
|
setAddGeoWmsLayer(res) {
|
var url = this.getLayerUrl(res);
|
let layer = new SmartEarth.Cesium.WebMapServiceImageryProvider({
|
url: url,
|
layers: res.tab,
|
parameters: {
|
transparent: true,
|
format: "image/png",
|
srs: "EPSG:104903",
|
styles: "",
|
},
|
tileWidth: 512,
|
tileHeight: 512,
|
});
|
layer.name = `Wms_Layer${res.id}`;
|
window.Viewer.imageryLayers.addImageryProvider(layer);
|
},
|
|
//添加地形服务
|
setAddTearrinLayer(res) {
|
window.Viewer.terrainProvider = new Cesium.EllipsoidTerrainProvider({});
|
var url = this.getLayerUrl(res)
|
window.terrainLayer = new Cesium.CesiumTerrainProvider({
|
url: url
|
});
|
Viewer.terrainProvider = window.terrainLayer
|
},
|
//添加模型服务
|
setAddModelLayer(res) {
|
var url = this.getLayerUrl(res);
|
let tileset = Viewer.scene.primitives.add(
|
new Cesium.Cesium3DTileset({
|
name: res.cnName,
|
url: url,
|
skipLevelOfDetail: true, // 在遍历时候跳过详情:false
|
baseScreenSpaceError: 1024,
|
maximumScreenSpaceError: 64, // 最大屏幕空间错误:16,数值加大能让最终成像变模糊
|
skipScreenSpaceErrorFactor: 16,
|
skipLevels: 1,
|
immediatelyLoadDesiredLevelOfDetail: false,
|
loadSiblings: true, // 自动从中心开始超清化模型:false
|
cullWithChildrenBounds: true, // 使用子项边界体积的并集来剔除图块:true
|
cullRequestsWhileMoving: true,
|
cullRequestsWhileMovingMultiplier: 10, // 值越小能够更快的剔除:60
|
preloadWhenHidden: true,
|
preferLeaves: true, // 预装子节点:false
|
maximumMemoryUsage: 768, // 内存分配变小有利于内存回收,提升性能体验
|
progressiveResolutionHeightFraction: 0.5, // 数值偏于0能够让初始加载变得模糊
|
dynamicScreenSpaceErrorDensity: 0.5, // 数值加大,能让周边加载变快
|
dynamicScreenSpaceErrorFactor: 2, // 动态屏幕空间误差的系数
|
dynamicScreenSpaceError: true, // 减少离相机较远的屏幕空间错误:false,全屏加载完之后才清晰化房屋
|
})
|
|
);
|
tileset.readyPromise.then((tileset) => {
|
tileset.id = res.id;
|
});
|
},
|
//添加WMTS服务
|
setAddWmtsLayer(res) {
|
var url = this.getLayerUrl(res)
|
var urlTemplateImageryProvider = earthCtrl.factory.createImageryLayer({
|
sourceType: "wmts",
|
url: url,
|
layer: "",
|
format: "image/png",
|
tileMatrixSetID: "GoogleCRS84Quad01",
|
tileMatrixLabels: [
|
"0",
|
"1",
|
"2",
|
"3",
|
"4",
|
"5",
|
"6",
|
"7",
|
"8",
|
"9",
|
"10",
|
"11",
|
"12",
|
"13",
|
"14",
|
"15",
|
"16",
|
"17",
|
"18",
|
],
|
style: "",
|
tilingScheme: new Cesium.GeographicTilingScheme({
|
ellipsoid: Cesium.Ellipsoid.MOON,
|
}),
|
});
|
},
|
//加载TMS服务
|
setAddTmsLayer(res) {
|
var url = this.getLayerUrl(res)
|
let img_layer = earthCtrl.Creator.createUrlTemplateImageryProvider(
|
"tms服务",
|
{
|
url: Cesium.buildModuleUrl(url + "/{z}/{x}/{y}.png"),
|
},
|
"0",
|
undefined,
|
true,
|
""
|
);
|
this.layerList.push({ id: res.id, layerData: img_layer, type: "tms" });
|
},
|
|
//加载WMS服务
|
setAddWmsLayer(res) {
|
var url = this.getLayerUrl(res)
|
var img_layer = sgworld.Creator.createImageryProvider('giserver', "wms", {
|
url: url,
|
layers: '',
|
parameters: {
|
format: "image/png",
|
transparent: true,
|
}
|
}, "0", undefined, true, "");
|
},
|
|
|
|
//获取
|
getLayerUrl(res) {
|
switch (res.status) {
|
case 1://本地地址
|
return res.url
|
break;
|
case 2://代理地址
|
var token = getToken();
|
if (res.proxy && res.proxy.indexOf('{token}') > -1) {
|
var val = res.proxy.replaceAll('{token}', token)
|
return BASE_URL + val
|
}
|
break;
|
}
|
},
|
};
|
export default server;
|