@supermapgis/iclient-ol 11.2.0

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 (91) hide show
  1. package/README.md +56 -0
  2. package/control/ChangeTileVersion.js +438 -0
  3. package/control/Logo.js +97 -0
  4. package/control/ScaleLine.js +164 -0
  5. package/control/index.js +6 -0
  6. package/core/MapExtend.js +49 -0
  7. package/core/StyleUtils.js +1253 -0
  8. package/core/Util.js +500 -0
  9. package/core/index.js +6 -0
  10. package/css/ChangeTileVersion.css +347 -0
  11. package/css/index.js +5 -0
  12. package/dist/iclient-openlayers-es6.js +124963 -0
  13. package/dist/iclient-openlayers-es6.min.js +8 -0
  14. package/dist/iclient-openlayers.css +668 -0
  15. package/dist/iclient-openlayers.js +142946 -0
  16. package/dist/iclient-openlayers.min.css +8 -0
  17. package/dist/iclient-openlayers.min.js +8 -0
  18. package/index.js +9 -0
  19. package/mapping/BaiduMap.js +121 -0
  20. package/mapping/ImageSuperMapRest.js +252 -0
  21. package/mapping/ImageTileSuperMapRest.js +99 -0
  22. package/mapping/InitMap.js +150 -0
  23. package/mapping/SuperMapCloud.js +56 -0
  24. package/mapping/Tianditu.js +152 -0
  25. package/mapping/TileSuperMapRest.js +374 -0
  26. package/mapping/WebMap.js +5485 -0
  27. package/mapping/index.js +11 -0
  28. package/mapping/webmap/Util.js +176 -0
  29. package/mapping/webmap/config/MunicipalCenter.json +1 -0
  30. package/mapping/webmap/config/ProvinceCenter.json +1 -0
  31. package/mapping/webmap/config/SampleDataInfo.json +55 -0
  32. package/namespace.js +150 -0
  33. package/overlay/DataFlow.js +114 -0
  34. package/overlay/FGB.js +100 -0
  35. package/overlay/Graph.js +439 -0
  36. package/overlay/GraphMap.js +140 -0
  37. package/overlay/Graphic.js +588 -0
  38. package/overlay/HeatMap.js +450 -0
  39. package/overlay/Label.js +966 -0
  40. package/overlay/Mapv.js +149 -0
  41. package/overlay/Range.js +129 -0
  42. package/overlay/RankSymbol.js +94 -0
  43. package/overlay/Turf.js +299 -0
  44. package/overlay/Unique.js +124 -0
  45. package/overlay/VectorTileSuperMapRest.js +501 -0
  46. package/overlay/graphic/CanvasRenderer.js +177 -0
  47. package/overlay/graphic/CloverShape.js +133 -0
  48. package/overlay/graphic/Graphic.js +174 -0
  49. package/overlay/graphic/HitCloverShape.js +64 -0
  50. package/overlay/graphic/WebGLRenderer.js +356 -0
  51. package/overlay/graphic/index.js +9 -0
  52. package/overlay/index.js +21 -0
  53. package/overlay/mapv/MapvCanvasLayer.js +104 -0
  54. package/overlay/mapv/MapvLayer.js +413 -0
  55. package/overlay/mapv/index.js +5 -0
  56. package/overlay/theme/GeoFeature.js +275 -0
  57. package/overlay/theme/Theme.js +587 -0
  58. package/overlay/theme/ThemeFeature.js +46 -0
  59. package/overlay/theme/index.js +6 -0
  60. package/overlay/vectortile/DeafultCanvasStyle.js +125 -0
  61. package/overlay/vectortile/MapboxStyles.js +377 -0
  62. package/overlay/vectortile/StyleMap.js +252 -0
  63. package/overlay/vectortile/VectorTileStyles.js +554 -0
  64. package/overlay/vectortile/index.js +7 -0
  65. package/overlay/vectortile/olExtends.js +382 -0
  66. package/package.json +30 -0
  67. package/services/AddressMatchService.js +60 -0
  68. package/services/ChartService.js +97 -0
  69. package/services/DataFlowService.js +119 -0
  70. package/services/DatasetService.js +104 -0
  71. package/services/DatasourceService.js +76 -0
  72. package/services/FeatureService.js +260 -0
  73. package/services/FieldService.js +53 -0
  74. package/services/GeoprocessingService.js +157 -0
  75. package/services/GridCellInfosService.js +53 -0
  76. package/services/ImageCollectionService.js +93 -0
  77. package/services/ImageService.js +70 -0
  78. package/services/KnowledgeGraphService.js +96 -0
  79. package/services/LayerInfoService.js +85 -0
  80. package/services/MapService.js +85 -0
  81. package/services/MeasureService.js +77 -0
  82. package/services/NetworkAnalyst3DService.js +93 -0
  83. package/services/NetworkAnalystService.js +268 -0
  84. package/services/ProcessingService.js +507 -0
  85. package/services/QueryService.js +116 -0
  86. package/services/ServiceBase.js +26 -0
  87. package/services/SpatialAnalystService.js +466 -0
  88. package/services/ThemeService.js +50 -0
  89. package/services/TrafficTransferAnalystService.js +93 -0
  90. package/services/WebPrintingJobService.js +112 -0
  91. package/services/index.js +27 -0
@@ -0,0 +1,466 @@
1
+ /* Copyright© 2000 - 2024 SuperMap Software Co.Ltd. All rights reserved.
2
+ * This program are made available under the terms of the Apache License, Version 2.0
3
+ * which accompanies this distribution and is available at http://www.apache.org/licenses/LICENSE-2.0.html.*/
4
+ import {Util} from '../core/Util';
5
+ import { DataFormat } from '@supermapgis/iclient-common/REST';
6
+ import { Point as GeometryPoint } from '@supermapgis/iclient-common/commontypes/geometry/Point';
7
+ import { SpatialAnalystService as CommonSpatialAnalystService } from '@supermapgis/iclient-common/iServer/SpatialAnalystService';
8
+ import {ServiceBase} from './ServiceBase';
9
+ import LineString from 'ol/geom/LineString';
10
+ import GeoJSON from 'ol/format/GeoJSON';
11
+
12
+ /**
13
+ * @class SpatialAnalystService
14
+ * @extends {ServiceBase}
15
+ * @category iServer SpatialAnalyst
16
+ * @classdesc 空间分析服务类。提供方法:地区太阳辐射、缓冲区分析、点密度分析、动态分段分析、空间关系分析、
17
+ * 插值分析、栅格代数运算、叠加分析、路由定位、路由测量计算、表面分析、地形曲率计算、坡度计算、坡向计算、
18
+ * 泰森多边形分析、填挖方分析、凸包计算等。
19
+ * @modulecategory Services
20
+ * @example
21
+ * new SpatialAnalystService(url).bufferAnalysis(params,function(result){
22
+ * //doSomething
23
+ * })
24
+ * @param {string} url - 服务地址。
25
+ * @param {Object} options - 参数。
26
+ * @param {string} [options.proxy] - 服务代理地址。
27
+ * @param {boolean} [options.withCredentials=false] - 请求是否携带 cookie。
28
+ * @param {boolean} [options.crossOrigin] - 是否允许跨域请求。
29
+ * @param {Object} [options.headers] - 请求头。
30
+ * @usage
31
+ */
32
+ export class SpatialAnalystService extends ServiceBase {
33
+
34
+ constructor(url, options) {
35
+ super(url, options);
36
+ this._spatialAnalystService = new CommonSpatialAnalystService(url, options);
37
+ }
38
+
39
+ /**
40
+ * @function SpatialAnalystService.prototype.getAreaSolarRadiationResult
41
+ * @description 地区太阳辐射。<br>
42
+ * 地区太阳辐射计算,指的是计算整个 DEM 范围内每个栅格的太阳辐射情况,计算可得到太阳辐射的总辐射量、直射辐射量、散射辐射量、直射持续时间。
43
+ * @param {AreaSolarRadiationParameters} params - 地区太阳辐射参数类。
44
+ * @param {RequestCallback} [callback] 回调函数,该参数未传时可通过返回的 promise 获取结果。
45
+ * @param {DataFormat} [resultFormat=DataFormat.GEOJSON] - 返回的结果类型。
46
+ * @returns {Promise} Promise 对象。
47
+ */
48
+ getAreaSolarRadiationResult(params, callback, resultFormat) {
49
+ return this._spatialAnalystService.getAreaSolarRadiationResult(params, callback, resultFormat);
50
+ }
51
+
52
+ /**
53
+ * @function SpatialAnalystService.prototype.bufferAnalysis
54
+ * @description 缓冲区分析。<br>
55
+ * 缓冲区分析是围绕空间对象,使用与空间对象的距离值(称为缓冲半径)作为半径,生成该对象的缓冲区域的过程,
56
+ * 其中缓冲半径可以是固定数值也可以是空间对象各自的属性值。缓冲区也可以理解为空间对象的影响或服务范围。
57
+ * @param {DatasetBufferAnalystParameters|GeometryBufferAnalystParameters} params - 数据集缓冲区分析参数类 || 几何对象缓冲区分析参数类。
58
+ * @param {RequestCallback} [callback] 回调函数,该参数未传时可通过返回的 promise 获取结果。
59
+ * @param {DataFormat} [resultFormat=DataFormat.GEOJSON] - 返回的结果类型。
60
+ * @returns {Promise} Promise 对象。
61
+ */
62
+ bufferAnalysis(params, callback, resultFormat) {
63
+ params = this._processParams(params);
64
+ return this._spatialAnalystService.bufferAnalysis(params, callback, resultFormat);
65
+ }
66
+
67
+ /**
68
+ * @function SpatialAnalystService.prototype.densityAnalysis
69
+ * @description 点密度分析。目前提供 1 种点密度分析方式:核密度分析。<br>
70
+ * 核密度分析用于计算点、线要素测量值在指定邻域范围内的单位密度,能直观地反映出离散测量值在连续区域内的分布情况。
71
+ * 其结果是中间值大周边值小的光滑曲面,栅格值即为单位密度,在邻域边界处降为 0。
72
+ * 核密度分析可用于计算人口密度、建筑密度、获取犯罪情况报告、旅游区人口密度监测、连锁店经营情况分析等等。
73
+ * @param {DensityKernelAnalystParameters} params - 核密度分析参数类。
74
+ * @param {RequestCallback} [callback] 回调函数,该参数未传时可通过返回的 promise 获取结果。
75
+ * @param {DataFormat} [resultFormat=DataFormat.GEOJSON] - 返回的结果类型。
76
+ * @returns {Promise} Promise 对象。
77
+ */
78
+ densityAnalysis(params, callback, resultFormat) {
79
+ params = this._processParams(params);
80
+ return this._spatialAnalystService.densityAnalysis(params, callback, resultFormat);
81
+ }
82
+
83
+ /**
84
+ * @function SpatialAnalystService.prototype.generateSpatialData
85
+ * @description 动态分段分析。动态分段技术是在传统 GIS 数据模型的基础上,利用线性参考技术,根据属性数据的空间位置,实现属性数据在地图上动态地显示、分析及输出等。
86
+ * 线性参考是一种采用沿具有测量值的线性要素的相对位置来描述和存储地理位置的方法,即使用距离来定位沿线的事件。
87
+ * @param {GenerateSpatialDataParameters} params - 动态分段操作参数类。
88
+ * @param {RequestCallback} [callback] 回调函数,该参数未传时可通过返回的 promise 获取结果。
89
+ * @param {DataFormat} [resultFormat=DataFormat.GEOJSON] - 返回的结果类型。
90
+ * @returns {Promise} Promise 对象。
91
+ */
92
+ generateSpatialData(params, callback, resultFormat) {
93
+ return this._spatialAnalystService.generateSpatialData(params, callback, resultFormat);
94
+ }
95
+
96
+ /**
97
+ * @function SpatialAnalystService.prototype.geoRelationAnalysis
98
+ * @description 空间关系分析。根据指定的空间关系,查询数据集中所有满足要求的对象。支持的空间关系判断类型:包含、被包含、相交。
99
+ * @param {GeoRelationAnalystParameters} params - 空间关系分析服务参数类。
100
+ * @param {RequestCallback} [callback] 回调函数,该参数未传时可通过返回的 promise 获取结果。
101
+ * @param {DataFormat} [resultFormat=DataFormat.GEOJSON] - 返回的结果类型。
102
+ * @returns {Promise} Promise 对象。
103
+ */
104
+ geoRelationAnalysis(params, callback, resultFormat) {
105
+ params = this._processParams(params);
106
+ return this._spatialAnalystService.geoRelationAnalysis(params, callback, resultFormat);
107
+ }
108
+
109
+ /**
110
+ * @function SpatialAnalystService.prototype.interpolationAnalysis
111
+ * @description 插值分析。插值分析可以将有限的采样点数据,通过插值对采样点周围的数值情况进行预测,
112
+ * 从而掌握研究区域内数据的总体分布状况,使采样的离散点不仅仅反映其所在位置的数值情况,而且可以反映区域的数值分布。
113
+ * @param {InterpolationRBFAnalystParameters|InterpolationDensityAnalystParameters|InterpolationIDWAnalystParameters|InterpolationKrigingAnalystParameters} params - 插值分析参数类,包括:点密度插值分析参数类、反距离加权插值分析参数类、样条插值(径向基函数插值法)分析参数类、克吕金插值分析参数类。
114
+ * @param {RequestCallback} [callback] 回调函数,该参数未传时可通过返回的 promise 获取结果。
115
+ * @param {DataFormat} [resultFormat=DataFormat.GEOJSON] - 返回的结果类型。
116
+ * @returns {Promise} Promise 对象。
117
+ */
118
+ interpolationAnalysis(params, callback, resultFormat) {
119
+ params = this._processParams(params);
120
+ return this._spatialAnalystService.interpolationAnalysis(params, callback, resultFormat);
121
+ }
122
+ /**
123
+ * @function SpatialAnalystService.prototype.mathExpressionAnalysis
124
+ * @description 栅格代数运算。栅格代数运算的思想是运用代数学的观点对地理特征和现象进行空间分析,实质上是对多个栅格数据集进行数学运算以及函数运算。
125
+ * 运算结果栅格的像元值是由输入的一个或多个栅格同一位置的像元的值通过代数规则运算得到的。
126
+ * @param {MathExpressionAnalysisParameters} params - 栅格代数运算参数类。
127
+ * @param {RequestCallback} [callback] 回调函数,该参数未传时可通过返回的 promise 获取结果。
128
+ * @param {DataFormat} [resultFormat=DataFormat.GEOJSON] - 返回的结果类型。
129
+ * @returns {Promise} Promise 对象。
130
+ */
131
+ mathExpressionAnalysis(params, callback, resultFormat) {
132
+ params = this._processParams(params);
133
+ return this._spatialAnalystService.mathExpressionAnalysis(params, callback, resultFormat);
134
+ }
135
+
136
+ /**
137
+ * @function SpatialAnalystService.prototype.overlayAnalysis
138
+ * @description 叠加分析。叠加分析是指在统一空间参考系统下,通过对两个数据集进行的一系列集合运算,产生新数据集的过程。
139
+ * @param {DatasetOverlayAnalystParameters|GeometryOverlayAnalystParameters} params - 数据集叠加分析参数类 || 几何对象叠加分析参数类。
140
+ * @param {RequestCallback} [callback] 回调函数,该参数未传时可通过返回的 promise 获取结果。
141
+ * @param {DataFormat} [resultFormat=DataFormat.GEOJSON] - 返回的结果类型。
142
+ * @returns {Promise} Promise 对象。
143
+ */
144
+ overlayAnalysis(params, callback, resultFormat) {
145
+ params = this._processParams(params);
146
+ return this._spatialAnalystService.overlayAnalysis(params, callback, resultFormat);
147
+ }
148
+
149
+ /**
150
+ * @function SpatialAnalystService.prototype.routeCalculateMeasure
151
+ * @description 路由测量计算。<br>
152
+ * 基于路由对象计算指定点 M 值。
153
+ * @param {RouteCalculateMeasureParameters} params - 基于路由对象计算指定点 M 值操作的参数类。
154
+ * @param {RequestCallback} [callback] 回调函数,该参数未传时可通过返回的 promise 获取结果。
155
+ * @param {DataFormat} [resultFormat=DataFormat.GEOJSON] - 返回的结果类型。
156
+ * @returns {Promise} Promise 对象。
157
+ */
158
+ routeCalculateMeasure(params, callback, resultFormat) {
159
+ params = this._processParams(params);
160
+ return this._spatialAnalystService.routeCalculateMeasure(params, callback, resultFormat);
161
+ }
162
+
163
+ /**
164
+ * @function SpatialAnalystService.prototype.routeLocate
165
+ * @description 路由定位。<br>
166
+ * 路由定位有定位点和定位线两种类型。路由定点是根据指定路由上的 M 值来定位点,路由定线是根据指定线的范围来确定路由上对应的线对象。
167
+ * @param {RouteLocatorParameters} params - 路由对象定位空间对象的参数类。
168
+ * @param {RequestCallback} [callback] 回调函数,该参数未传时可通过返回的 promise 获取结果。
169
+ * @param {DataFormat} [resultFormat=DataFormat.GEOJSON] - 返回的结果类型。
170
+ * @returns {Promise} Promise 对象。
171
+ */
172
+ routeLocate(params, callback, resultFormat) {
173
+ params = this._processParams(params);
174
+ return this._spatialAnalystService.routeLocate(params, callback, resultFormat);
175
+ }
176
+
177
+ /**
178
+ * @function SpatialAnalystService.prototype.surfaceAnalysis
179
+ * @description 表面分析。<br>
180
+ * 表面分析主要通过生成新数据集,获得更多反映原始数据集中所暗含的空间特征、空间格局等信息。
181
+ * 支持的表面分析提取操作:提取等值线和提取等值面。
182
+ * @param {SurfaceAnalystParameters} params - 表面分析提取操作参数类。
183
+ * @param {RequestCallback} [callback] 回调函数,该参数未传时可通过返回的 promise 获取结果。
184
+ * @param {DataFormat} [resultFormat=DataFormat.GEOJSON] - 返回的结果类型。
185
+ * @returns {Promise} Promise 对象。
186
+ */
187
+ surfaceAnalysis(params, callback, resultFormat) {
188
+ params = this._processParams(params);
189
+ return this._spatialAnalystService.surfaceAnalysis(params, callback, resultFormat);
190
+ }
191
+
192
+ /**
193
+ * @function SpatialAnalystService.prototype.terrainCurvatureCalculate
194
+ * @description 地形曲率计算。地形曲率是表达地形曲面结构的主要参数之一。
195
+ * DEM 栅格数据每个像元的表面曲率,是通过将目标像元与八个相邻像元拟合为二次曲面,再对此拟合曲面求(0,0)位置处的曲率而得。
196
+ * 支持计算平均曲率数据集、剖面曲率(即沿最大斜率方向的曲率)数据集、平面曲率(即垂直于最大斜率方向的曲率)数据集。
197
+ * 输出的三种曲率数据集都是和原数据集等大且分辨率相同的数据集。
198
+ * @param {TerrainCurvatureCalculationParameters} params - 地形曲率计算参数类。
199
+ * @param {RequestCallback} [callback] 回调函数,该参数未传时可通过返回的 promise 获取结果。
200
+ * @param {DataFormat} [resultFormat=DataFormat.GEOJSON] - 返回的结果类型。
201
+ * @returns {Promise} Promise 对象。
202
+ */
203
+ terrainCurvatureCalculate(params, callback, resultFormat) {
204
+ return this._spatialAnalystService.terrainCurvatureCalculate(params, callback, resultFormat);
205
+ }
206
+
207
+ /**
208
+ * @function SpatialAnalystService.prototype.terrainCutFillCalculate
209
+ * @description 填挖方计算。<br>
210
+ * 填挖方计算用于计算填挖操作过程中填方、挖方的面积和体积,包含四种类型:栅格填挖方、选面填挖方、斜面填挖方和三维面填挖方。
211
+ * @version 11.1.1
212
+ * @param {TerrainCutFillCalculationParameters} params - 填挖方计算参数类。
213
+ * @param {RequestCallback} [callback] 回调函数,该参数未传时可通过返回的 promise 获取结果。
214
+ * @param {DataFormat} [resultFormat=DataFormat.GEOJSON] - 返回的结果类型。
215
+ * @returns {Promise} Promise 对象。
216
+ */
217
+ terrainCutFillCalculate(params, callback, resultFormat) {
218
+ params = this._processParams(params);
219
+ return this._spatialAnalystService.terrainCutFillCalculate(params, callback, resultFormat);
220
+ }
221
+
222
+ /**
223
+ * @function SpatialAnalystService.prototype.terrainAspectCalculate
224
+ * @description 地形坡向分析。<br>
225
+ * 地形坡向分析用于计算栅格数据集(通常使用 DEM 数据)中各个像元的坡度面的朝向。
226
+ * 坡向计算的范围是 0 到 360 度,以正北方 0 度为开始,按顺时针移动,回到正北方以 360 度结束。平坦的坡面没有方向,赋值为 -1。
227
+ * @version 11.1.1
228
+ * @param {TerrainAspectCalculationParameters} params - 地形坡向分析参数类。
229
+ * @param {RequestCallback} [callback] 回调函数,该参数未传时可通过返回的 promise 获取结果。
230
+ * @param {DataFormat} [resultFormat=DataFormat.GEOJSON] - 返回的结果类型。
231
+ * @returns {Promise} Promise 对象。
232
+ */
233
+ terrainAspectCalculate(params, callback, resultFormat) {
234
+ params = this._processParams(params);
235
+ return this._spatialAnalystService.terrainAspectCalculate(params, callback, resultFormat);
236
+ }
237
+
238
+ /**
239
+ * @function SpatialAnalystService.prototype.terrainSlopeCalculate
240
+ * @description 地形坡度分析。<br>
241
+ * 地形坡度分析用于计算栅格数据集(通常使用 DEM 数据)中各个像元的坡度值。坡度值越大,地势越陡峭;坡度值越小,地势越平坦。
242
+ * DEM 数据中的像元值即该点的高程值,通过高程值计算该点的坡度。由于计算点的坡度没有实际意义,在 SuperMap 中,坡度计算的是各像元平面的平均值,
243
+ * 并且提供了三种坡度表现形式:度数、弧度、百分比。
244
+ * @version 11.1.1
245
+ * @param {TerrainSlopeCalculationParameters} params - 地形坡度分析参数类。
246
+ * @param {RequestCallback} [callback] 回调函数,该参数未传时可通过返回的 promise 获取结果。
247
+ * @param {DataFormat} [resultFormat=DataFormat.GEOJSON] - 返回的结果类型。
248
+ */
249
+ terrainSlopeCalculate(params, callback, resultFormat) {
250
+ params = this._processParams(params);
251
+ return this._spatialAnalystService.terrainSlopeCalculate(params, callback, resultFormat);
252
+ }
253
+
254
+ /**
255
+ * @function SpatialAnalystService.prototype.thiessenAnalysis
256
+ * @description 泰森多边形分析。泰森多边形又称为 Voronoi 图,是由一组连接两邻点直线的垂直平分线组成的连续多边形组成。
257
+ * 泰森多边形可用于定性分析、统计分析、邻近分析等,通过创建泰森多边形创建的多边形要素可对可用空间进行划分并将其分配给最近的点要素。
258
+ * 泰森多边形有时会用于替代插值操作,以便将一组样本测量值概化到最接近他们的区域。使用泰森多边形可将取自一组气候测量仪的测量值概化到周围区域,还可为一组店铺快速建立服务区模型等。例如:<br>
259
+ * 1.可用离散点的性质来描述泰森多边形区域的性质;<br>
260
+ * 2.可用离散点的数据来计算泰森多边形区域的数据;<br>
261
+ * 3.判断一个离散点与其它哪些离散点相邻时,可根据泰森多边形直接得出,且若泰森多边形是 n 边形,则就与 n 个离散点相邻;<br>
262
+ * 4.当某一数据点落入某一泰森多边形中时,它与相应的离散点最邻近,无需计算距离。
263
+ * @param {DatasetThiessenAnalystParameters|GeometryThiessenAnalystParameters} params - 数据集泰森多边形分析参数类 || 几何对象泰森多边形分析参数类。
264
+ * @param {RequestCallback} [callback] 回调函数,该参数未传时可通过返回的 promise 获取结果。
265
+ * @param {DataFormat} [resultFormat=DataFormat.GEOJSON] - 返回的结果类型。
266
+ * @returns {Promise} Promise 对象。
267
+ */
268
+ thiessenAnalysis(params, callback, resultFormat) {
269
+ params = this._processParams(params);
270
+ return this._spatialAnalystService.thiessenAnalysis(params, callback, resultFormat);
271
+ }
272
+
273
+ /**
274
+ * @function SpatialAnalystService.prototype.minDistanceAnalysis
275
+ * @description 最近距离计算。<br>
276
+ * 最近距离计算即在指定地图上,查找距离指定几何对象一定容限内最近的几何对象。
277
+ * @version 11.1.1
278
+ * @param {DatasetMinDistanceAnalystParameters|GeometryMinDistanceAnalystParameters} params - 数据集最近距离计算参数类 || 几何对象最近距离计算参数类。
279
+ * @param {RequestCallback} [callback] 回调函数,该参数未传时可通过返回的 promise 获取结果。
280
+ * @param {DataFormat} [resultFormat=DataFormat.GEOJSON] - 返回的结果类型。
281
+ * @returns {Promise} Promise 对象。
282
+ */
283
+ minDistanceAnalysis(params, callback, resultFormat) {
284
+ params = this._processParams(params);
285
+ return this._spatialAnalystService.minDistanceAnalysis(params, callback, resultFormat);
286
+ }
287
+
288
+ /**
289
+ * @function SpatialAnalystService.prototype.convexHullAnalysis
290
+ * @description 凸包计算。<br>
291
+ * 三维模型对象可以看作三维空间中由无数个三维点构成的点集,该模型对象的凸包即是一个能够包含选中模型的所有三维点的最小闭合几何体。
292
+ * 基于模型对象进行凸包运算,可以得到该模型对象的凸包。
293
+ * @version 11.1.1
294
+ * @param {ConvexHullAnalystParameters} params - 凸包计算参数类。
295
+ * @param {RequestCallback} [callback] 回调函数,该参数未传时可通过返回的 promise 获取结果。
296
+ * @param {DataFormat} [resultFormat=DataFormat.GEOJSON] - 返回的结果类型。
297
+ * @returns {Promise} Promise 对象。
298
+ */
299
+ convexHullAnalysis(params, callback, resultFormat) {
300
+ params = this._processParams(params);
301
+ return this._spatialAnalystService.convexHullAnalysis(params, callback, resultFormat);
302
+ }
303
+
304
+ /**
305
+ * @function SpatialAnalystService.prototype.geometrybatchAnalysis
306
+ * @description 批量空间分析。<br>
307
+ * 支持的批量空间分析方法包括:缓冲区分析、插值分析、叠加分析、表面分析等。
308
+ * @param {Array.<Object>} params - 批量分析参数对象数组。
309
+ * @param {Array.<Object>} params.analystName - 空间分析方法的名称。包括:</br>
310
+ * "buffer","overlay","interpolationDensity","interpolationidw","interpolationRBF","interpolationKriging","isoregion","isoline"。
311
+ * @param {Object} params.param - 空间分析类型对应的请求参数,包括:</br>
312
+ * {@link GeometryBufferAnalystParameters} 缓冲区分析参数类。</br>
313
+ * {@link GeometryOverlayAnalystParameters} 叠加分析参数类。</br>
314
+ * {@link InterpolationAnalystParameters} 插值分析参数类。</br>
315
+ * {@link SurfaceAnalystParameters} 表面分析参数类。</br>
316
+ * @param {RequestCallback} [callback] 回调函数,该参数未传时可通过返回的 promise 获取结果。
317
+ * @param {DataFormat} [resultFormat=DataFormat.GEOJSON] - 返回的结果类型。
318
+ * @returns {Promise} Promise 对象。
319
+ */
320
+ geometrybatchAnalysis(params, callback, resultFormat) {
321
+ for (var i = 0; i < params.length; i++) {
322
+ params[i].param = this._processParams(params[i].param)
323
+ }
324
+ return this._spatialAnalystService.geometrybatchAnalysis(params, callback, resultFormat);
325
+ }
326
+
327
+ _processParams(params) {
328
+ if (!params) {
329
+ return {};
330
+ }
331
+ if (params.bounds) {
332
+ params.bounds = Util.toSuperMapBounds(params.bounds);
333
+ }
334
+ if (params.inputPoints) {
335
+ for (let i = 0; i < params.inputPoints.length; i++) {
336
+ var inputPoint = params.inputPoints[i];
337
+ if (Util.isArray(inputPoint)) {
338
+ params.inputPoints[i] = {x: inputPoint[0], y: inputPoint[1], tag: inputPoint[2]};
339
+ } else {
340
+ params.inputPoints[i] = {
341
+ x: inputPoint.getCoordinates()[0],
342
+ y: inputPoint.getCoordinates()[1],
343
+ tag: inputPoint.tag
344
+ };
345
+ }
346
+
347
+ }
348
+ }
349
+ if (params.points) {
350
+ for (let i = 0; i < params.points.length; i++) {
351
+ let point = params.points[i];
352
+ if (Util.isArray(point)) {
353
+ point.setCoordinates(point);
354
+ }
355
+ params.points[i] = new GeometryPoint(point.getCoordinates()[0], point.getCoordinates()[1]);
356
+ }
357
+ }
358
+ if (params.point) {
359
+ let point = params.point;
360
+ if (Util.isArray(point)) {
361
+ point.setCoordinates(point);
362
+ }
363
+ params.point = new GeometryPoint(point.getCoordinates()[0], point.getCoordinates()[1]);
364
+ }
365
+ if (params.extractRegion) {
366
+ params.extractRegion = this.convertGeometry(params.extractRegion);
367
+ }
368
+ if (params.extractParameter && params.extractParameter.clipRegion) {
369
+ params.extractParameter.clipRegion = this.convertGeometry(params.extractParameter.clipRegion);
370
+ }
371
+ if (params.clipParam && params.clipParam.clipRegion) {
372
+ params.clipParam.clipRegion = this.convertGeometry(params.clipParam.clipRegion);
373
+ }
374
+ if (params.clipRegion) {
375
+ params.clipRegion = this.convertGeometry(params.clipRegion);
376
+ }
377
+ //支持格式:Vector Layers; GeoJson
378
+ if (params.sourceGeometry) {
379
+ var SRID = null;
380
+ if (params.sourceGeometrySRID) {
381
+ SRID = params.sourceGeometrySRID;
382
+ }
383
+ params.sourceGeometry = this.convertGeometry(params.sourceGeometry);
384
+ if (SRID) {
385
+ params.sourceGeometry.SRID = SRID;
386
+ }
387
+ delete params.sourceGeometry.sourceGeometrySRID;
388
+ }
389
+ if (params.operateGeometry) {
390
+ params.operateGeometry = this.convertGeometry(params.operateGeometry);
391
+ }
392
+ //支持传入多个几何要素进行叠加分析:
393
+ if (params.sourceGeometries) {
394
+ var sourceGeometries = [];
395
+ for (var k = 0; k < params.sourceGeometries.length; k++) {
396
+ sourceGeometries.push(this.convertGeometry(params.sourceGeometries[k]));
397
+ }
398
+ params.sourceGeometries = sourceGeometries;
399
+ }
400
+ //支持传入多个几何要素进行叠加分析:
401
+ if (params.operateGeometries) {
402
+ var operateGeometries = [];
403
+ for (var j = 0; j < params.operateGeometries.length; j++) {
404
+ operateGeometries.push(this.convertGeometry(params.operateGeometries[j]));
405
+ }
406
+ params.operateGeometries = operateGeometries;
407
+ }
408
+
409
+ // 最近距离
410
+ if (params.inputGeometries) {
411
+ var inputGeometries = [];
412
+ for (var l = 0; l < params.inputGeometries.length; l++) {
413
+ inputGeometries.push(this.convertGeometry(params.inputGeometries[l]));
414
+ }
415
+ params.inputGeometries = inputGeometries;
416
+ }
417
+
418
+ if (params.sourceRoute) {
419
+ if (params.sourceRoute instanceof LineString && params.sourceRoute.getCoordinates()) {
420
+ var target = {};
421
+ target.type = "LINEM";
422
+ target.parts = [params.sourceRoute.getCoordinates()[0].length];
423
+ target.points = [];
424
+ for (let i = 0; i < params.sourceRoute.getCoordinates()[0].length; i++) {
425
+ let point = params.sourceRoute.getCoordinates()[0][i];
426
+ target.points = target.points.concat({x: point[0], y: point[1], measure: point[2]})
427
+ }
428
+ params.sourceRoute = target;
429
+ }
430
+
431
+ }
432
+ var me = this;
433
+ if (params.operateRegions && Util.isArray(params.operateRegions)) {
434
+ params.operateRegions.map(function (geometry, key) {
435
+ params.operateRegions[key] = me.convertGeometry(geometry);
436
+ return params.operateRegions[key];
437
+ });
438
+ }
439
+ if (params.sourceRoute && params.sourceRoute.components && Util.isArray(params.sourceRoute.components)) {
440
+ params.sourceRoute.components.map(function (geometry, key) {
441
+ params.sourceRoute.components[key] = me.convertGeometry(geometry);
442
+ return params.sourceRoute.components[key];
443
+ });
444
+ }
445
+ return params;
446
+ }
447
+
448
+ _processFormat(resultFormat) {
449
+ return (resultFormat) ? resultFormat : DataFormat.GEOJSON;
450
+ }
451
+
452
+ /**
453
+ * @private
454
+ * @function SpatialAnalystService.prototype.convertGeometry
455
+ * @description 转换几何对象。
456
+ * @param {Object} ol3Geometry - 待转换的几何对象。
457
+ */
458
+
459
+ convertGeometry(ol3Geometry) {
460
+ //判断是否传入的是geojson 并作相应处理
461
+ if(["FeatureCollection", "Feature", "Geometry"].indexOf(ol3Geometry.type) != -1){
462
+ return Util.toSuperMapGeometry(ol3Geometry);
463
+ }
464
+ return Util.toSuperMapGeometry(JSON.parse((new GeoJSON()).writeGeometry(ol3Geometry)));
465
+ }
466
+ }
@@ -0,0 +1,50 @@
1
+ /* Copyright© 2000 - 2024 SuperMap Software Co.Ltd. All rights reserved.
2
+ * This program are made available under the terms of the Apache License, Version 2.0
3
+ * which accompanies this distribution and is available at http://www.apache.org/licenses/LICENSE-2.0.html.*/
4
+ import {ServiceBase} from './ServiceBase';
5
+ import { ThemeService as CommonThemeService } from '@supermapgis/iclient-common/iServer/ThemeService';
6
+
7
+ /**
8
+ * @class ThemeService
9
+ * @category iServer Map Theme
10
+ * @classdesc 专题图服务类。地图学中将突出而深入地表示一种或几种要素或现象,即集中表示一个主题内容的地图称为专题地图。在 SuperMap 中,专题图是地图图层的符号化显示,即用各种图形渲染风格(大小,颜色,线型,填充等)来图形化地表现专题要素的某方面特征。该类可用于获取专题图的信息。
11
+ * @modulecategory Services
12
+ * @extends {ServiceBase}
13
+ * @example
14
+ * new ThemeService(url,{
15
+ * projection:projection
16
+ * }).getThemeInfo(params,function(result){
17
+ * //doSomething
18
+ * });
19
+ * @param {string} url - 服务地址。
20
+ * @param {Object} options - 参数。
21
+ * @param {string} [options.proxy] - 服务代理地址。
22
+ * @param {boolean} [options.withCredentials=false] - 请求是否携带 cookie。
23
+ * @param {boolean} [options.crossOrigin] - 是否允许跨域请求。
24
+ * @param {Object} [options.headers] - 请求头。
25
+ * @usage
26
+ */
27
+ export class ThemeService extends ServiceBase {
28
+
29
+ constructor(url, options) {
30
+ super(url, options);
31
+ var me = this;
32
+ this._themeService = new CommonThemeService(me.url, {
33
+ proxy: me.options.proxy,
34
+ withCredentials: me.options.withCredentials,
35
+ crossOrigin: me.options.crossOrigin,
36
+ headers: me.options.headers
37
+ });
38
+ }
39
+
40
+ /**
41
+ * @function ThemeService.prototype.getThemeInfo
42
+ * @description 获取专题图信息。
43
+ * @param {ThemeParameters} params - 专题图参数类。
44
+ * @param {RequestCallback} [callback] 回调函数,该参数未传时可通过返回的 promise 获取结果。
45
+ * @returns {Promise} Promise 对象。
46
+ */
47
+ getThemeInfo(params, callback) {
48
+ return this._themeService.processAsync(params, callback);
49
+ }
50
+ }
@@ -0,0 +1,93 @@
1
+ /* Copyright© 2000 - 2024 SuperMap Software Co.Ltd. All rights reserved.
2
+ * This program are made available under the terms of the Apache License, Version 2.0
3
+ * which accompanies this distribution and is available at http://www.apache.org/licenses/LICENSE-2.0.html.*/
4
+ import {Util} from '../core/Util';
5
+ import {ServiceBase} from './ServiceBase';
6
+ import { TrafficTransferAnalystService as CommonTrafficTransferAnalystService } from '@supermapgis/iclient-common/iServer/TrafficTransferAnalystService';
7
+ import Point from 'ol/geom/Point';
8
+
9
+ /**
10
+ * @class TrafficTransferAnalystService
11
+ * @extends {ServiceBase}
12
+ * @category iServer TrafficTransferAnalyst
13
+ * @classdesc 交通换乘分析服务类。交通换乘分析支持按照指定的公交站点和公交换乘策略进行换乘分析,
14
+ * 返回相应的换乘方案,以及指定的某条换乘路线的详细信息。其中,支持的换乘策略包括时间最短、距离最短、最少换乘、少步行等。
15
+ * 此外,交通换乘分析还支持通过关键字查询站点信息,这样客户端可以先查询站点,再根据合适的站点进行换乘分析。
16
+ * @modulecategory Services
17
+ * @example
18
+ * new TrafficTransferAnalystService(url).queryStop(params,function(result){
19
+ * //doSomething
20
+ * })
21
+ * @param {string} url - 服务地址。
22
+ * @param {Object} options - 参数。
23
+ * @param {string} [options.proxy] - 服务代理地址。
24
+ * @param {boolean} [options.withCredentials=false] - 请求是否携带 cookie。
25
+ * @param {boolean} [options.crossOrigin] - 是否允许跨域请求。
26
+ * @param {Object} [options.headers] - 请求头。
27
+ * @usage
28
+ */
29
+ export class TrafficTransferAnalystService extends ServiceBase {
30
+
31
+ constructor(url, options) {
32
+ super(url, options);
33
+ this._commonTrafficTransferAnalystService = new CommonTrafficTransferAnalystService(url, options);
34
+ }
35
+
36
+ /**
37
+ * @function TrafficTransferAnalystService.prototype.queryStop
38
+ * @description 站点查询服务。<br>
39
+ * 根据传入的关键词进行公交站点查询,返回名称与关键词相关的公交站点。
40
+ * @param {StopQueryParameters} params - 站点查询参数类。
41
+ * @param {RequestCallback} [callback] 回调函数,该参数未传时可通过返回的 promise 获取结果。
42
+ * @returns {Promise} Promise 对象。
43
+ */
44
+ queryStop(params, callback) {
45
+ return this._commonTrafficTransferAnalystService.queryStop(params, callback);
46
+ }
47
+
48
+ /**
49
+ * @function TrafficTransferAnalystService.prototype.analysisTransferPath
50
+ * @description 交通换乘线路查询服务。<br>
51
+ * 根据换乘分段内可乘车的路线集合,查询得到某一条乘车路线的详细信息。
52
+ * @param {TransferPathParameters} params - 交通换乘线路查询参数类。
53
+ * @param {RequestCallback} [callback] 回调函数,该参数未传时可通过返回的 promise 获取结果。
54
+ * @returns {Promise} Promise 对象。
55
+ */
56
+ analysisTransferPath(params, callback) {
57
+ params = this._processParams(params);
58
+ return this._commonTrafficTransferAnalystService.analysisTransferPath(params, callback);
59
+ }
60
+
61
+ /**
62
+ * @function TrafficTransferAnalystService.prototype.analysisTransferSolution
63
+ * @description 交通换乘方案查询服务。<br>
64
+ * 根据换乘策略、乘车偏好、避让站点、出行时间等参数查询交通换乘方案,根据换乘方案中的介绍信息可以获取具体的乘车路线。
65
+ * @param {TransferSolutionParameters} params - 交通换乘方案查询参数类。
66
+ * @param {RequestCallback} [callback] 回调函数,该参数未传时可通过返回的 promise 获取结果。
67
+ * @returns {Promise} Promise 对象。
68
+ */
69
+ analysisTransferSolution(params, callback) {
70
+ params = this._processParams(params);
71
+ return this._commonTrafficTransferAnalystService.analysisTransferSolution(params, callback);
72
+ }
73
+
74
+ _processParams(params) {
75
+ if (!params) {
76
+ return {};
77
+ }
78
+ if (params.transferLines && !Util.isArray(params.transferLines)) {
79
+ params.transferLines = [params.transferLines];
80
+ }
81
+ if (params.points && Util.isArray(params.points)) {
82
+ params.points.map(function (point, key) {
83
+ params.points[key] = (point instanceof Point) ? {
84
+ x: point.getCoordinates()[0],
85
+ y: point.getCoordinates()[1]
86
+ } : point;
87
+ return params.points[key];
88
+ });
89
+ }
90
+ return params;
91
+ }
92
+
93
+ }