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; } }, setAddReleaseLayer(res) { switch (res.type) { case "DOM"://URL this.setAddWmtsLayer(res) break; case 'DEM'://Tileset this.setAddTearrinLayer(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, tilingScheme: new Cesium.GeographicTilingScheme({ ellipsoid: Cesium.Ellipsoid.MOON, }), }); Viewer.terrainProvider = window.terrainLayer Viewer.scene.globe.terrainExaggeration = 1.0000001; }, //添加模型服务 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}/{reverseY}.png"), }, "0", undefined, true, "" ); }, //加载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; case 3: 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;