@kq_npm/client3d_webgl_vue 4.5.55 → 4.5.57

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (82) hide show
  1. package/adddata/index.js +189 -21
  2. package/airspacegridoccupancyquery/index.js +1977 -0
  3. package/airspacegridoccupancyquery/style/airspacegridoccupancyquery.css +1 -0
  4. package/airspacegridoccupancyquery/style/index.js +3 -0
  5. package/airspaceprofileanalysis/index.js +1870 -0
  6. package/airspaceprofileanalysis/style/airspaceprofileanalysis.css +1 -0
  7. package/airspaceprofileanalysis/style/index.js +3 -0
  8. package/aspectanalysis/index.js +25 -7
  9. package/baseterraingallery/index.js +16 -4
  10. package/boxclip/index.js +58 -16
  11. package/buildpointmodel/index.js +3207 -230
  12. package/buildpointmodel/style/buildpointmodel.css +1 -1
  13. package/buildpolygonmodel/index.js +205 -81
  14. package/buildpolylinemodel/index.js +346 -70
  15. package/clientPrint/index.js +32440 -2337
  16. package/comparemap/index.js +132 -60
  17. package/compass/index.js +16 -6
  18. package/excavatefillanalysis/index.js +51 -7
  19. package/fixedzoomin/index.js +24 -7
  20. package/fixedzoomout/index.js +25 -7
  21. package/flight/index.js +113 -26
  22. package/floodanalysis/index.js +79 -14
  23. package/geologicalbodyanalysis/index.js +41 -5
  24. package/gpuspatialquery/index.js +127 -19
  25. package/gridoccupancyquery/index.js +627 -0
  26. package/gridoccupancyquery/style/gridoccupancyquery.css +1 -0
  27. package/gridoccupancyquery/style/index.js +3 -0
  28. package/hawkeye/index.js +20 -2
  29. package/headertemp/index.js +7 -2
  30. package/heatmap3d/index.js +282 -158
  31. package/index.js +32440 -2337
  32. package/isolineanalysis/index.js +113 -38
  33. package/light/index.js +80 -22
  34. package/limitheightanalysis/index.js +30 -10
  35. package/lowaltitudefeature/index.js +5027 -0
  36. package/lowaltitudefeature/style/index.js +3 -0
  37. package/lowaltitudefeature/style/lowaltitudefeature.css +1 -0
  38. package/measure/index.js +60 -19
  39. package/modelFlat/index.js +48 -8
  40. package/modeledit/index.js +38 -4
  41. package/modelexcavate/index.js +48 -7
  42. package/modelfilter/index.js +51 -8
  43. package/modelmaterialedit/index.js +127 -25
  44. package/modelprofileanalysis/index.js +51 -14
  45. package/modelselect/index.js +34 -3
  46. package/modelstyleedit/index.js +39 -3
  47. package/modeltransform/index.js +79 -14
  48. package/package.json +1 -1
  49. package/particleeffect/index.js +83 -17
  50. package/planeclip/index.js +66 -17
  51. package/pointcloudrender/index.js +134 -15
  52. package/radarscananalysis/index.js +35 -3
  53. package/resetview/index.js +14 -6
  54. package/roller/index.js +55 -18
  55. package/scaneffect/index.js +98 -29
  56. package/sceneadvancedtoimage/index.js +32 -6
  57. package/sceneapp/index.js +32440 -2337
  58. package/sceneset/index.js +141 -71
  59. package/scenetohdimage/index.js +23 -3
  60. package/sceneview/index.js +32440 -2337
  61. package/sceneview/style/sceneview.css +1 -1
  62. package/screenshot/index.js +44 -11
  63. package/shadowanalysis/index.js +79 -19
  64. package/sightlineanalysis/index.js +66 -15
  65. package/skylineanalysis/index.js +20 -4
  66. package/slopeanalysis/index.js +75 -16
  67. package/slopeaspectanalysis/index.js +128 -26
  68. package/statusbar/index.js +80 -67
  69. package/style.css +1 -1
  70. package/terrainoperation/index.js +39 -7
  71. package/terrainprofileanalysis/index.js +43 -5
  72. package/toolbarapp/index.js +32440 -2337
  73. package/toolboxapp/index.js +32440 -2337
  74. package/typhoontrac/index.js +134 -16
  75. package/underground/index.js +8 -2
  76. package/videofusion/index.js +164 -79
  77. package/videoproject/index.js +77 -23
  78. package/viewshedanalysis/index.js +61 -14
  79. package/weathereffect/index.js +73 -18
  80. package/webgl.es.js +866 -16
  81. package/windyslicing/index.js +258 -54
  82. package/wireframesketch/index.js +25 -8
@@ -81,12 +81,19 @@ var _gisUtils = __webpack_require__(20064);
81
81
  //模型开挖逻辑类
82
82
 
83
83
  class ModelExcavateViewModel {
84
+ /**
85
+ * @description 构造函数,初始化viewer、地形参数、平整纹理对象、测量处理器及图层监听
86
+ * @param {Object} scenceView 三维场景视图对象
87
+ * @param {Object} options 配置参数对象
88
+ * @param {Function} callbackParams 回调函数,用于通知外部状态变化
89
+ */
84
90
  constructor(scenceView, options, callbackParams) {
85
91
  this._viewer = null;
86
92
  //三维viewer对象
87
93
  this._options = {};
88
94
  //Box裁剪存储参数对象
89
95
  this._Kq3dTerrainExcavation = null;
96
+ //地形开挖扩展对象
90
97
  this._removeEventListener = null;
91
98
  //绘制完成监听事件
92
99
  this._measureHandler = null;
@@ -116,14 +123,18 @@ class ModelExcavateViewModel {
116
123
  this._viewer = scenceView._viewer;
117
124
  this._options = options;
118
125
  this._viewer.scene.globe.depthTestAgainstTerrain = true; //开启深度检测
126
+ // 地形提供者存在时,对椭球地形请求顶点法线
119
127
  if (this._viewer.terrainProvider) {
120
128
  if (this._viewer.terrainProvider instanceof Cesium.EllipsoidTerrainProvider) {
121
129
  this._viewer.terrainProvider.requestVertexNormals = true;
122
130
  }
123
131
  }
124
132
  var that = this;
133
+
134
+ // 创建平整多边形纹理对象
125
135
  const kq3dFlattenning = new window.Cesium.Kq3dFlattenning(this._viewer, {});
126
136
  this.g_flattenedPolygonTexture = kq3dFlattenning.createFlattenedPolygonTexture();
137
+ // 实例化测量处理器
127
138
  this._measureHandler = new Cesium.Kq3dMeasureHandler(this._viewer, {
128
139
  selfIntersectTest: true
129
140
  });
@@ -137,10 +148,12 @@ class ModelExcavateViewModel {
137
148
  }
138
149
  };
139
150
  }
151
+ // 测量完成事件:保存测量结果并隐藏标签
140
152
  this._measureHandler.measureEvent.addEventListener(function (result) {
141
153
  that._measureResult = result;
142
154
  result.measureResult.label.show = false;
143
155
  });
156
+ // 测量激活状态变化事件:测量结束时触发开挖效果创建
144
157
  this._measureHandler.activeEvent.addEventListener(function (ret) {
145
158
  if (ret == false) {
146
159
  if (that._measureResult) {
@@ -193,6 +206,7 @@ class ModelExcavateViewModel {
193
206
  }
194
207
  createWallPrimitive() {
195
208
  if (!this._Kq3dTerrainExcavation) return;
209
+ // 若已存在墙体图元,先移除
196
210
  if (this._wallPrimitive) {
197
211
  this._viewer.scene.primitives.remove(this._wallPrimitive);
198
212
  this._wallPrimitive = undefined;
@@ -206,12 +220,16 @@ class ModelExcavateViewModel {
206
220
  });
207
221
  this._viewer.scene.primitives.add(this._wallPrimitive);
208
222
  let that = this;
223
+ // 通知外部开始分析
209
224
  this.callbackParams && this.callbackParams("start");
225
+ // 墙体图元准备就绪事件
210
226
  this._wallPrimitive._readyEvent.addEventListener(function (eventType) {
211
227
  if (eventType != "Ready") {
212
228
  return;
213
229
  }
230
+ // 通知外部分析结束
214
231
  that.callbackParams && that.callbackParams("end");
232
+ // 清除已有的平整多边形并基于开挖位置添加新的平整多边形
215
233
  that.g_flattenedPolygonTexture && that.g_flattenedPolygonTexture.removeAllFlattenedPolygon();
216
234
  var myPolygon = window.Cesium.PolygonGeometry.fromPositions({
217
235
  positions: that._options.positions,
@@ -220,7 +238,11 @@ class ModelExcavateViewModel {
220
238
  that.g_flattenedPolygonTexture && that.g_flattenedPolygonTexture.addFlattenedPolygon(myPolygon);
221
239
  });
222
240
  }
223
- // 电锯效果
241
+ /**
242
+ * @description 创建电锯效果(带闪电材质的墙体和贴地折线)
243
+ * @param {Array} positions 坐标点数组
244
+ * @returns {Object} 贴地折线图元
245
+ */
224
246
  createPolyline(positions) {
225
247
  var material = window.Cesium.Material.fromType("Kq3dLightningMaterial", {});
226
248
  if (this.wall) {
@@ -265,6 +287,7 @@ class ModelExcavateViewModel {
265
287
  var flag = false;
266
288
  this.remove();
267
289
  var models = this._viewer.scene.primitives._primitives;
290
+ // 遍历所有3dtiles,对选中模型启用平整并附加纹理
268
291
  for (let i = 0; i < models.length; i++) {
269
292
  if (models[i] instanceof Cesium.Cesium3DTileset && models[i]._url) {
270
293
  if (this.tiles.includes(models[i].guid)) {
@@ -280,6 +303,7 @@ class ModelExcavateViewModel {
280
303
  }
281
304
  }
282
305
  if (flag) {
306
+ // 存在模型时启动水平面积测量,触发后续开挖效果
283
307
  this._measureHandler.startMeasure(Cesium.Kq3dMeasureMode.HorizontalArea);
284
308
  // let that =this;
285
309
  // if (this._drawManager) {
@@ -293,6 +317,7 @@ class ModelExcavateViewModel {
293
317
  // }, "ModelExcavateDraw");
294
318
  // }
295
319
  } else {
320
+ // 未添加模型时给出警告
296
321
  (0, _message.default)({
297
322
  message: this._language.value.webgl["addModelTips"],
298
323
  type: "warning"
@@ -306,7 +331,10 @@ class ModelExcavateViewModel {
306
331
  if (model.refresh) model.refresh(tileset, tile.content);
307
332
  }
308
333
  }
309
- // 切换高度重新计算
334
+ /**
335
+ * @description 切换开挖深度并重新计算墙体高度
336
+ * @param {Number} val 开挖深度值
337
+ */
310
338
  setHeight(val) {
311
339
  this._options.height = Number(val);
312
340
  if (this._wallPrimitive) {
@@ -319,6 +347,7 @@ class ModelExcavateViewModel {
319
347
  if (!this._Kq3dTerrainExcavation) return;
320
348
  this.remove();
321
349
  var models = this._viewer.scene.primitives._primitives;
350
+ // 遍历所有3dtiles,对选中模型重新启用平整并刷新
322
351
  for (let i = 0; i < models.length; i++) {
323
352
  if (models[i] instanceof Cesium.Cesium3DTileset && models[i]._url) {
324
353
  if (this.tiles.includes(models[i].guid)) {
@@ -336,6 +365,7 @@ class ModelExcavateViewModel {
336
365
  }
337
366
  resetModel() {
338
367
  var models = this._viewer.scene.primitives._primitives;
368
+ // 遍历所有3dtiles,取消平整并移除tileVisible监听
339
369
  for (let i = 0; i < models.length; i++) {
340
370
  if (models[i] instanceof Cesium.Cesium3DTileset && models[i]._url) {
341
371
  if (!models[i].refresh) models[i]?.tileVisible?.removeEventListener(this.tileVisible);
@@ -531,10 +561,11 @@ var _default = exports.A = /*@__PURE__*/Object.assign(__default__, {
531
561
  lang,
532
562
  locale
533
563
  } = (0, _useGlobalConfig.useLocale)();
534
- // Status
564
+ // 状态事件发送
535
565
  const emit = __emit;
536
566
  //语言
537
567
  let viewModel = null;
568
+ // 可选的3dtiles图层列表
538
569
  let tiles = (0, _vue.ref)([]);
539
570
  // 获取组件传参
540
571
  const props = __props;
@@ -583,18 +614,25 @@ var _default = exports.A = /*@__PURE__*/Object.assign(__default__, {
583
614
  callbackParams("layer");
584
615
  }, 500);
585
616
  });
617
+ /**
618
+ * @description 回调函数,根据事件类型更新图层列表、加载状态并向外发送状态事件
619
+ * @param {String} key 事件类型:layer(图层更新)、start(开始分析)、end(分析结束)
620
+ */
586
621
  function callbackParams(key) {
587
622
  if (viewModel) {
588
623
  switch (key) {
624
+ // 图层更新:获取所有tileset并默认全选
589
625
  case "layer":
590
626
  tiles.value = viewModel?.findLayers?.() ?? []; // 获取所有tileset对象
591
627
  if (formItem.isCheckTilset) formItem.tileset = tiles.value.map(item => item.guid).filter(guid => guid);
592
628
  changeTilset(formItem.tileset);
593
629
  break;
630
+ // 开始分析:进入加载状态
594
631
  case "start":
595
632
  loadState.value = true;
596
633
  emit("callbackStatus", key);
597
634
  break;
635
+ // 分析结束:退出加载状态
598
636
  case "end":
599
637
  loadState.value = false;
600
638
  emit("callbackStatus", key);
@@ -613,7 +651,10 @@ var _default = exports.A = /*@__PURE__*/Object.assign(__default__, {
613
651
  headerTemp.value = (0, _util.createHeaderTemp)(boxRef.value, (0, _vue.toRefs)(props), headerTempRef, "webgl.modelExcavateTitle");
614
652
  }
615
653
  };
616
- // 切换模型
654
+ /**
655
+ * @description 切换开挖目标模型图层
656
+ * @param {Array} val 选中的tileset guid数组
657
+ */
617
658
  function changeTilset(val) {
618
659
  viewModel.tiles = formItem?.tileset ?? [];
619
660
  }
@@ -782,11 +823,11 @@ Object.defineProperty(exports, "__esModule", ({
782
823
  value: true
783
824
  }));
784
825
  exports.kq_npm_client_leaflet_vue = exports.kq_npm_client_common_vue = exports.kq_npm_client3d_webgl_vue = void 0;
785
- let kq_npm_client_common_vue = exports.kq_npm_client_common_vue = window.kq_npm_client_common_vue = window.kq_npm_client_common_vue || {};
826
+ const kq_npm_client_common_vue = exports.kq_npm_client_common_vue = window.kq_npm_client_common_vue = window.kq_npm_client_common_vue || {};
786
827
  __webpack_require__.g.kq_npm_client_common_vue = kq_npm_client_common_vue;
787
- let kq_npm_client_leaflet_vue = exports.kq_npm_client_leaflet_vue = window.kq_npm_client_leaflet_vue = window.kq_npm_client_leaflet_vue || {};
828
+ const kq_npm_client_leaflet_vue = exports.kq_npm_client_leaflet_vue = window.kq_npm_client_leaflet_vue = window.kq_npm_client_leaflet_vue || {};
788
829
  __webpack_require__.g.kq_npm_client_leaflet_vue = kq_npm_client_leaflet_vue;
789
- let kq_npm_client3d_webgl_vue = exports.kq_npm_client3d_webgl_vue = window.kq_npm_client3d_webgl_vue = window.kq_npm_client3d_webgl_vue || {};
830
+ const kq_npm_client3d_webgl_vue = exports.kq_npm_client3d_webgl_vue = window.kq_npm_client3d_webgl_vue = window.kq_npm_client3d_webgl_vue || {};
790
831
  __webpack_require__.g.kq_npm_client3d_webgl_vue = kq_npm_client3d_webgl_vue;
791
832
 
792
833
  /***/ })
@@ -104,6 +104,12 @@ var _gisUtils = __webpack_require__(20064);
104
104
  //模型滤镜逻辑类
105
105
 
106
106
  class ModelFilterViewModel {
107
+ /**
108
+ * @description 构造函数,合并默认参数与外部参数,初始化viewer及图层监听
109
+ * @param {Object} scenceView 三维场景视图对象
110
+ * @param {Object} options 外部传入的滤镜参数
111
+ * @param {Function} callbackParams 回调函数,用于通知外部状态变化
112
+ */
107
113
  constructor(scenceView, options, callbackParams) {
108
114
  this._viewer = null;
109
115
  //三维viewer对象
@@ -136,7 +142,7 @@ class ModelFilterViewModel {
136
142
  }
137
143
  // 查找所有3dtiles模型对象
138
144
  findLayers() {
139
- let tilesets = [];
145
+ const tilesets = [];
140
146
  const primitives = this._viewer.scene.primitives._primitives;
141
147
  for (let m = 0; m < primitives.length; m++) {
142
148
  if (primitives[m] instanceof Cesium.Cesium3DTileset) {
@@ -150,7 +156,10 @@ class ModelFilterViewModel {
150
156
  return tilesets;
151
157
  }
152
158
 
153
- // 设置过滤对象
159
+ /**
160
+ * @description 设置过滤对象:清除原滤镜,定位到目标图层并启用色彩校正
161
+ * @param {String} layerId 图层guid
162
+ */
154
163
  setLayer(layerId) {
155
164
  if (layerId) {
156
165
  this.clear();
@@ -160,7 +169,11 @@ class ModelFilterViewModel {
160
169
  }
161
170
  }
162
171
 
163
- //根据id获取tileset对象
172
+ /**
173
+ * @description 根据id获取tileset对象
174
+ * @param {String} id 图层guid
175
+ * @returns {Object} tileset对象
176
+ */
164
177
  findLayerById(id) {
165
178
  const primitives = this._options.viewer.scene.primitives._primitives;
166
179
  const tileset = primitives.find(function (item) {
@@ -168,23 +181,38 @@ class ModelFilterViewModel {
168
181
  });
169
182
  return tileset;
170
183
  }
171
- // 设置亮度
184
+ /**
185
+ * @description 设置亮度
186
+ * @param {Number} newValue 亮度值
187
+ */
172
188
  setBrightness(newValue) {
173
189
  this._options.tileset.brightness = Number(newValue);
174
190
  }
175
- // 设置对比
191
+ /**
192
+ * @description 设置对比度
193
+ * @param {Number} newValue 对比度值
194
+ */
176
195
  setContrast(newValue) {
177
196
  this._options.tileset.contrast = Number(newValue);
178
197
  }
179
- // 设置色调
198
+ /**
199
+ * @description 设置色调
200
+ * @param {Number} newValue 色调值
201
+ */
180
202
  setTone(newValue) {
181
203
  this._options.tileset.hue = Number(newValue);
182
204
  }
183
- // 设置饱和
205
+ /**
206
+ * @description 设置饱和度
207
+ * @param {Number} newValue 饱和度值
208
+ */
184
209
  setSaturation(newValue) {
185
210
  this._options.tileset.saturation = Number(newValue);
186
211
  }
187
- // 设置伽马
212
+ /**
213
+ * @description 设置伽马值
214
+ * @param {Number} newValue 伽马值
215
+ */
188
216
  setGamma(newValue) {
189
217
  this._options.tileset.gamma = Number(newValue);
190
218
  }
@@ -230,6 +258,7 @@ const __default__ = {
230
258
  };
231
259
  var _default = exports.A = /*@__PURE__*/Object.assign(__default__, {
232
260
  props: {
261
+ // 指定组件绑定的viewer对象的div的id
233
262
  mapTarget: {
234
263
  type: String
235
264
  },
@@ -280,6 +309,7 @@ var _default = exports.A = /*@__PURE__*/Object.assign(__default__, {
280
309
  } = (0, _useGlobalConfig.useLocale)();
281
310
  let viewModel = null;
282
311
  let ref_box = (0, _vue.ref)();
312
+ // 可选的3dtiles图层列表
283
313
  let tiles = (0, _vue.ref)([]);
284
314
  // 获取组件传参
285
315
  const props = __props;
@@ -317,6 +347,7 @@ var _default = exports.A = /*@__PURE__*/Object.assign(__default__, {
317
347
  //父组件ScenceView初始化完成后执行
318
348
  _gisUtils.utils.getWebMap(props.mapTarget, scenceView => {
319
349
  if (scenceView) {
350
+ // 组装滤镜参数初始化逻辑类
320
351
  let options = {
321
352
  tileset: formItem.tileset,
322
353
  brightness: formItem.brightness,
@@ -334,6 +365,11 @@ var _default = exports.A = /*@__PURE__*/Object.assign(__default__, {
334
365
  }
335
366
  }, 1000);
336
367
  });
368
+ /**
369
+ * @description 回调函数:图层数据变化时刷新可选图层列表并重置选中图层
370
+ * @param {String} key 事件类型
371
+ * @param {*} val 附加参数
372
+ */
337
373
  function callbackParams(key, val) {
338
374
  if (viewModel) {
339
375
  tiles.value = viewModel.findLayers(); // 获取所有tileset对象
@@ -350,9 +386,15 @@ var _default = exports.A = /*@__PURE__*/Object.assign(__default__, {
350
386
  headerTemp.value = (0, _util.createHeaderTemp)(boxRef.value, (0, _vue.toRefs)(props), headerTempRef, "webgl.modelFilterPick");
351
387
  }
352
388
  };
389
+
390
+ /**
391
+ * @description 参数变化处理:根据变化类型调用对应的滤镜设置方法
392
+ * @param {String} value 变化的参数名:tileset/brightness/contrast/tone/saturation/gamma
393
+ */
353
394
  function paramsChanged(value) {
354
395
  if (formItem.tileset) {
355
396
  switch (value) {
397
+ // 切换图层时一次性应用全部滤镜参数
356
398
  case "tileset":
357
399
  viewModel.setLayer(formItem.tileset);
358
400
  viewModel.setBrightness(formItem.brightness);
@@ -379,6 +421,7 @@ var _default = exports.A = /*@__PURE__*/Object.assign(__default__, {
379
421
  }
380
422
  }
381
423
  }
424
+ // 清除滤镜并重置参数为默认值
382
425
  function clear() {
383
426
  viewModel.clear();
384
427
  formItem.brightness = 1;