月球大数据地理空间分析展示平台-【前端】-月球2期前端
Surpriseplus
2023-08-17 384fe106ad1efd66ef0910a824bff907322570ea
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
import { getToken } from "@/utils/auth";
//配置文件地址
import config from "./config";
 
const server = {
  layerList: [],
  addTreeData(treeNode) {
    if (!treeNode.checked) {
      this.delLayer(treeNode.id);
      return;
    }
    // WMTS -> 图片
    // DOM\DEM 彩色\黑白
 
    // TMS -> DOM、DEM
    // DOM->图片
    // DEM -> Terrain
 
    // URL -> URL
    // TMS -> URL DOM DEM
    // WMTS -> URL DOM DEM
    // WMS -> URL
    // WFS -> URL
    // Tileset -> URL`
    //comment on table lf.sys_res is '资源表';
    // comment on column lf.sys_res.id is '主键ID';
    // comment on column lf.sys_res.pid is '父ID:0-根节点';
    // comment on column lf.sys_res.cn_name is '中文名称';
    // comment on column lf.sys_res.en_name is '英文名称';
    // comment on column lf.sys_res.type is '类型:1-图层组,2-普通图层,3-代理图层';
    // comment on column lf.sys_res.status is '状态:-1-废弃,0-停用,1-启用';
    // comment on column lf.sys_res.category is '类型:0-URL,1-TMS,2-WMTS,3-WFS,4-Tileset';
    // comment on column lf.sys_res.firm is '厂商:0-其他,1-GisServer,2-GeoServer,3-数简';
    // comment on column lf.sys_res.url is '服务地址';
    // comment on column lf.sys_res.test is '测试地址';
    // comment on column lf.sys_res.proxy is '代理地址';
    // comment on column lf.sys_res.descr is '描述';
    // comment on column lf.sys_res.depid is '单位编码';
    // comment on column lf.sys_res.dirid is '项目编码';
    // comment on column lf.sys_res.img is '缩略图';
    // comment on column lf.sys_res.level is '层级:0-根节点';
    // comment on column lf.sys_res.sort is '排序';
    // comment on column lf.sys_res.create_user is '创建人ID';
    // comment on column lf.sys_res.create_time is '创建时间';
    // comment on column lf.sys_res.update_user is '更新人ID';
    // comment on column lf.sys_res.update_time is '更新时间';
    // comment on column lf.sys_res.bak is '备注';
    //     代理:/proxy/{token}/4
    // 地址:http://192.168.20.83:8088/MoonServer + proxy.replace("{token}", token)
    // order_num -> sort
    // serve_type -> category
 
    // switch (treeNode.type) {
    //   case 1:
    //     treeNode.useUrl = treeNode.url;
    //     break;
    //   case 2:
    //     treeNode.useUrl = treeNode.url;
    //     break;
    //   case 3:
    //     treeNode.useUrl = treeNode.url;
    //   
    //     break;
    // }
 
 
    //
    // if (treeNode.resid && treeNode.resid > 0) {
 
    // } else {
 
    // }
 
    //判断是否代理
    //treeNode.proxy有数据代理,数据不代理
 
 
    if (treeNode.proxy) {
      this.addProxyAddress(treeNode);//有代理
    } else {
      this.addUrlAddress(treeNode);//无代理
    }
 
 
    // this.addGisServer(treeNode);
    // if (treeNode.firm == 2) {
    //   this.addGeoServer(treeNode);
    // } else {
    //   this.addGisServer(treeNode);
    // }
  },
  addProxyAddress(res) {
    switch (res.data) {
      case 1://dom
        this.addGisServer(res)
        break;
      case 2://地形
        this.addGisServer(res)
        break;
      case 3:
        this.addGisServer(res)
        break;
      case 4:
        this.addGisServer(res)
        break;
      case 5:
        this.addGisServer(res)
        break;
      case 6:
        this.addGisServer(res)
        break;
      case 7:
        this.addGisServer(res)
        break;
      case 8:
        break;
    }
  },
 
  addUrlAddress(res) {
    switch (res.data) {
      case 1://dom
        this.addGeoServer(res)
        break;
      case 2://地形
        this.addGeoServer(res)
        break;
      case 3:
        this.addGeoServer(res)
        break;
      case 4:
        this.addGeoServer(res)
        break;
      case 5:
        this.addGeoServer(res)
        break;
      case 6:
        this.addGeoServer(res)
        break;
      case 7:
        this.addGeoServer(res)
        break;
      case 8:
        break;
    }
  },
 
 
  //清除图层
  delLayer(code) {
    this.layerList.forEach((e, i) => {
      if (e.id === code) {
        switch (e.type) {
          case "wmts":
            window.Viewer.imageryLayers.remove(e.layerData.item);
            break;
          case "tms":
            window.Viewer.imageryLayers.remove(e.layerData.item);
            break;
          case "dem":
            window.Viewer.terrainProvider = new Cesium.EllipsoidTerrainProvider(
              {}
            );
            break;
        }
        this.layerList.splice(i, 1);
      }
    });
  },
  addGisServer(treeNode) {
    // 0-URL,1-TMS,2-WMTS,3-WFS,4-Tileset'; 
    //判断服务是否已存在
    var service = [];
    if (this.layerList.length > 0) {
      service = this.layerList.filter((res) => {
        if (res.id == treeNode.id) {
          return res
        }
      })
    }
    if (service.length > 0) return
    var url = null;
 
    if (treeNode.proxy && treeNode.proxy.indexOf('{token}') > -1) {
      const token = getToken()
      url = config.proxy + treeNode.proxy.replaceAll("{token}", token)
    }
    console.log(url)
    switch (treeNode.type) {
      case 1:
        this.AddTmsLayer(url, treeNode.data, treeNode.id);
        break;
      case 2:
        this.AddWmtesLayer(url, treeNode.id);
        break;
      case 3:
        break;
      case 4:
        break;
    }
  },
  addGeoServer(treeNode) {
    // 0-URL,1-TMS,2-WMTS,3-WFS,4-Tileset';
 
    switch (treeNode.type) {
      case 1:
        break;
      case 2:
 
        break;
      case 3:
        this.AddGeoWmsLayer(treeNode.url, treeNode.id, treeNode.tab);
        break;
      case 4:
        break;
    }
  },
  //添加geoserver服务wms服务
  AddGeoWmsLayer(url, id, tab) {
    if (!tab) return
 
    let layer = new SmartEarth.Cesium.WebMapServiceImageryProvider({
      // url: "http://192.168.22.198:8090/geoserver/moon/wms",
      url: url,
      layers: "moon:geo_alkaline_rock_suite",
      parameters: {
        transparent: true,
        format: "image/png",
        srs: "EPSG:104903",
        styles: "",
      },
      tileWidth: 512,
      tileHeight: 512,
    });
    layer.name = `Wms_Layer${id}`;
 
    let img_layer = Viewer.imageryLayers.addImageryProvider(layer);
    this.layerList.push({ id: id, layerData: img_layer, type: "wmts" });
  },
  //添加GisServer服务TMS切片服务
  AddTmsLayer(url, data, id) {
    // var urlTemplateImageryProvider = new SmartEarth.Cesium.UrlTemplateImageryProvider({
    //   url: url + "/{z}/{x}/{y}.png"
    // });
    // Viewer.imageryLayers.addImageryProvider(urlTemplateImageryProvider);
 
    if (data == '0' || data == '1') {
      let img_layer = earthCtrl.Creator.createUrlTemplateImageryProvider(
        "tms服务",
        {
          url: Cesium.buildModuleUrl(url + "/{z}/{x}/{y}.png"),
        },
        "0",
        undefined,
        true,
        ""
      );
      this.layerList.push({ id: id, layerData: img_layer, type: "tms" });
    } else if (data == '2') {
      window.terrainLayer = new Cesium.CesiumTerrainProvider({
        url: url
      });
      Viewer.terrainProvider = window.terrainLayer
      this.layerList.push({ id: id, type: "dem", });
    }
  },
  AddWmtesLayer(url, id) {
    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,
      }),
    });
    console.log(urlTemplateImageryProvider);
    this.layerList.push({
      id: id,
      layerData: urlTemplateImageryProvider._primitive,
      type: "wmts",
    });
  },
  AddDemLayer(url, id) {
    var terrain = new Cesium.CesiumTerrainProvider({
      url: config.moonTerrain,
      // url: url,
      tilingScheme: new Cesium.GeographicTilingScheme({
        ellipsoid: Cesium.Ellipsoid.MOON,
      }),
    });
    window.Viewer.terrainProvider = terrain;
 
    // let img_layer = Viewer.imageryLayers.addImageryProvider(layer);
    this.layerList.push({ id: id, type: "dem" });
  },
};
export default server;