analysis_interpolationAnalystByKriging.html 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472
  1. <!--********************************************************************
  2. * Copyright© 2000 - 2021 SuperMap Software Co.Ltd. All rights reserved.
  3. *********************************************************************-->
  4. <!DOCTYPE html>
  5. <html>
  6. <head>
  7. <meta charset="utf-8" />
  8. <title data-i18n="resources.title_interpolationAnalystByKriging"></title>
  9. <style type="text/css">
  10. body {
  11. margin: 0;
  12. overflow: hidden;
  13. background: #fff;
  14. width: 100%;
  15. height: 100%;
  16. }
  17. #map {
  18. position: absolute;
  19. width: 100%;
  20. height: 100%;
  21. }
  22. #toolbar {
  23. position: absolute;
  24. top: 50px;
  25. right: 10px;
  26. text-align: center;
  27. z-index: 100;
  28. border-radius: 4px;
  29. }
  30. </style>
  31. </head>
  32. <body>
  33. <div id="toolbar" class="panel panel-primary">
  34. <div class="panel-heading">
  35. <h5 class="panel-title text-center" data-i18n="resources.text_interpolationAnalystByKriging"></h5>
  36. </div>
  37. <div class="panel-body content">
  38. <input
  39. type="button"
  40. class="btn btn-default"
  41. data-i18n="[value]resources.text_simple"
  42. onclick="interpolationSimpleKriging()"
  43. />
  44. <input
  45. type="button"
  46. class="btn btn-default"
  47. data-i18n="[value]resources.text_ordinary"
  48. onclick="interpolationKriging()"
  49. />
  50. <input
  51. type="button"
  52. class="btn btn-default"
  53. data-i18n="[value]resources.text_extensive"
  54. onclick="interpolationUniversalKriging()"
  55. />
  56. <input
  57. type="button"
  58. class="btn btn-default"
  59. data-i18n="[value]resources.text_input_value_clear"
  60. onclick="removeInterpolation()"
  61. />
  62. </div>
  63. </div>
  64. <div id="map"></div>
  65. <script type="text/javascript" include="bootstrap,widgets.alert" src="../js/include-web.js"></script>
  66. <script type="text/javascript" src="../../dist/classic/include-classic.js"></script>
  67. <script>
  68. var host = window.isLocal ? window.server : "https://iserver.supermap.io",
  69. url = host + '/iserver/services/map-temperature/rest/maps/全国温度变化图',
  70. url2 = host + '/iserver/services/spatialanalyst-sample/restjsr/spatialanalyst';
  71. var map, baseLayer, themeLayer;
  72. init();
  73. function init() {
  74. map = new SuperMap.Map('map', {
  75. controls: [
  76. new SuperMap.Control.ScaleLine(),
  77. new SuperMap.Control.Zoom(),
  78. new SuperMap.Control.Navigation({
  79. dragPanOptions: {
  80. enableKinetic: true,
  81. },
  82. }),
  83. ],
  84. units: 'm',
  85. });
  86. map.addControl(new SuperMap.Control.LayerSwitcher(), new SuperMap.Pixel(42, 80));
  87. map.allOverlays = true;
  88. baseLayer = new SuperMap.Layer.TiledDynamicRESTLayer(
  89. '全国温度变化图',
  90. url,
  91. {
  92. transparent: true,
  93. cacheEnabled: true,
  94. },
  95. { maxResolution: 'auto' }
  96. );
  97. baseLayer.params.layersID = '[0,1,2]';
  98. baseLayer.events.on({ layerInitialized: addLayer });
  99. }
  100. function addLayer() {
  101. map.addLayer(baseLayer);
  102. map.setCenter(new SuperMap.LonLat(531762, 3895330), 0);
  103. }
  104. // var points = [
  105. // new SuperMap.Geometry.Point(111.4687675858, 353.85481148),
  106. // new SuperMap.Geometry.Point(111.4687675858, 408.1485649972),
  107. // new SuperMap.Geometry.Point(208.9814293754, 408.1485649972),
  108. // new SuperMap.Geometry.Point(208.9814293754, 353.85481148),
  109. // ];
  110. var points = new SuperMap.Geometry.LinearRing([
  111. new SuperMap.Geometry.Point(0, 4010338),
  112. new SuperMap.Geometry.Point(1063524, 4010338),
  113. new SuperMap.Geometry.Point(1063524, 3150322),
  114. new SuperMap.Geometry.Point(0, 3150322),
  115. ]);
  116. var region = new SuperMap.Geometry.Polygon([points]);
  117. var clipParam = new SuperMap.REST.ClipParameter({
  118. // clipRegion: new SuperMap.Geometry.Polygon(new SuperMap.Geometry.LinearRing(points)),
  119. clipRegion: region,
  120. isClipInRegion: true,
  121. isExactClip: true,
  122. });
  123. console.log(clipParam);
  124. //简单克吕金插值法
  125. function interpolationSimpleKriging() {
  126. widgets.alert.clearAlert();
  127. removeInterpolation();
  128. console.log(clipParam);
  129. var interpolationParams = new SuperMap.REST.InterpolationKrigingAnalystParameters({
  130. //用于做插值分析的数据源中数据集的名称
  131. dataset: 'SamplesP@Interpolation',
  132. //插值分析结果数据集的名称
  133. outputDatasetName: 'SimpleKriging_Result',
  134. //插值分析结果数据源的名称
  135. outputDatasourceName: 'Interpolation',
  136. //结果栅格数据集存储的像素格式
  137. pixelFormat: SuperMap.REST.PixelFormat.double,
  138. // 属性过滤条件
  139. // filterQueryParameter: {
  140. // attributeFilter: ""
  141. // },
  142. //存储用于进行插值分析的字段名称
  143. clipParam: clipParam,
  144. zValueFieldName: 'AVG_TMP',
  145. //克吕金插值的类型
  146. type: 'SimpleKriging',
  147. //简单克吕金类型下,插值字段的平均值。
  148. mean: 11.6005,
  149. searchMode: 'KDTREE_FIXED_COUNT',
  150. bounds: new SuperMap.Bounds(
  151. -2640403.6321084504,
  152. 1873792.1034850003,
  153. 3247669.390292245,
  154. 5921501.395578556
  155. ),
  156. });
  157. var interpolationService = new SuperMap.REST.InterpolationAnalystService(url2, {
  158. eventListeners: {
  159. processCompleted: processCompleted,
  160. processFailed: processFailed,
  161. },
  162. isInTheSameDomain:true
  163. });
  164. interpolationService.processAsync(interpolationParams);
  165. }
  166. //普通克吕金插值法
  167. function interpolationKriging() {
  168. widgets.alert.clearAlert();
  169. removeInterpolation();
  170. var interpolationParams = new SuperMap.REST.InterpolationKrigingAnalystParameters({
  171. //用于做插值分析的数据源中数据集的名称
  172. dataset: 'SamplesP@Interpolation',
  173. //插值分析结果数据集的名称
  174. outputDatasetName: 'Kriging_Result',
  175. //插值分析结果数据源的名称
  176. outputDatasourceName: 'Interpolation',
  177. //结果栅格数据集存储的像素格式
  178. pixelFormat: SuperMap.REST.PixelFormat.double,
  179. // 属性过滤条件
  180. filterQueryParameter: {
  181. attributeFilter: '',
  182. },
  183. //存储用于进行插值分析的字段名称
  184. zValueFieldName: 'AVG_TMP',
  185. searchRadius: '0',
  186. //克吕金插值的类型
  187. type: 'KRIGING',
  188. clipParam: clipParam,
  189. searchMode: 'KDTREE_FIXED_COUNT',
  190. bounds: new SuperMap.Bounds(
  191. -2640403.6321084504,
  192. 1873792.1034850003,
  193. 3247669.390292245,
  194. 5921501.395578556
  195. ),
  196. });
  197. var interpolationService = new SuperMap.REST.InterpolationAnalystService(url2, {
  198. eventListeners: {
  199. processCompleted: processCompleted,
  200. processFailed: processFailed,
  201. },
  202. });
  203. interpolationService.processAsync(interpolationParams);
  204. }
  205. // 泛克吕金插值法
  206. function interpolationUniversalKriging() {
  207. widgets.alert.clearAlert();
  208. removeInterpolation();
  209. var interpolationParams = new SuperMap.REST.InterpolationKrigingAnalystParameters({
  210. //用于做插值分析的数据源中数据集的名称
  211. dataset: 'SamplesP@Interpolation',
  212. //插值分析结果数据集的名称
  213. outputDatasetName: 'UniversalKriging_Result',
  214. //插值分析结果数据源的名称
  215. outputDatasourceName: 'Interpolation',
  216. //结果栅格数据集存储的像素格式
  217. pixelFormat: SuperMap.REST.PixelFormat.double,
  218. // 属性过滤条件
  219. filterQueryParameter: {
  220. attributeFilter: '',
  221. },
  222. //存储用于进行插值分析的字段名称
  223. zValueFieldName: 'AVG_TMP',
  224. searchRadius: '0',
  225. //克吕金插值的类型
  226. type: 'UniversalKriging',
  227. //克吕金类型中旋转角度值
  228. clipParam: clipParam,
  229. angle: 0,
  230. //克吕金类型中块金效应值
  231. nugget: 0,
  232. //克吕金类型中自相关阈值,单位与原数据集单位相同
  233. range: 0,
  234. //克吕金类型中基台值
  235. sill: 0,
  236. //克吕金插值时的半变函数类型
  237. variogramMode: 'SPHERICAL',
  238. searchMode: 'KDTREE_FIXED_COUNT',
  239. bounds: new SuperMap.Bounds(
  240. -2640403.6321084504,
  241. 1873792.1034850003,
  242. 3247669.390292245,
  243. 5921501.395578556
  244. ),
  245. });
  246. var interpolationService = new SuperMap.REST.InterpolationAnalystService(url2, {
  247. eventListeners: {
  248. processCompleted: processCompleted,
  249. processFailed: processFailed,
  250. },
  251. });
  252. interpolationService.processAsync(interpolationParams);
  253. }
  254. //插值分析成功后,使用栅格分段专题图展示
  255. function processCompleted(InterpolationAnalystEventArgs) {
  256. var color1 = new SuperMap.REST.ServerColor(170, 240, 233),
  257. color2 = new SuperMap.REST.ServerColor(176, 244, 188),
  258. color3 = new SuperMap.REST.ServerColor(218, 251, 178),
  259. color4 = new SuperMap.REST.ServerColor(220, 236, 145),
  260. color5 = new SuperMap.REST.ServerColor(96, 198, 66),
  261. color6 = new SuperMap.REST.ServerColor(20, 142, 53),
  262. color7 = new SuperMap.REST.ServerColor(85, 144, 55),
  263. color8 = new SuperMap.REST.ServerColor(171, 168, 38),
  264. color9 = new SuperMap.REST.ServerColor(235, 165, 9),
  265. color10 = new SuperMap.REST.ServerColor(203, 89, 2),
  266. color11 = new SuperMap.REST.ServerColor(157, 25, 1),
  267. color12 = new SuperMap.REST.ServerColor(118, 15, 3),
  268. color13 = new SuperMap.REST.ServerColor(112, 32, 7),
  269. color14 = new SuperMap.REST.ServerColor(106, 45, 12),
  270. color15 = new SuperMap.REST.ServerColor(129, 80, 50),
  271. color16 = new SuperMap.REST.ServerColor(160, 154, 146),
  272. color17 = new SuperMap.REST.ServerColor(107, 47, 14),
  273. color18 = new SuperMap.REST.ServerColor(125, 75, 44),
  274. color19 = new SuperMap.REST.ServerColor(146, 110, 88),
  275. color20 = new SuperMap.REST.ServerColor(166, 153, 146),
  276. themeGridRangeIteme1 = new SuperMap.REST.ThemeGridRangeItem({
  277. start: -5,
  278. end: -3.4,
  279. color: color1,
  280. }),
  281. themeGridRangeIteme2 = new SuperMap.REST.ThemeGridRangeItem({
  282. start: -3.4,
  283. end: -1.8,
  284. color: color2,
  285. }),
  286. themeGridRangeIteme3 = new SuperMap.REST.ThemeGridRangeItem({
  287. start: -1.8,
  288. end: -0.2,
  289. color: color3,
  290. }),
  291. themeGridRangeIteme4 = new SuperMap.REST.ThemeGridRangeItem({
  292. start: -0.2,
  293. end: 1.4,
  294. color: color4,
  295. }),
  296. themeGridRangeIteme5 = new SuperMap.REST.ThemeGridRangeItem({
  297. start: 1.4,
  298. end: 3,
  299. color: color5,
  300. }),
  301. themeGridRangeIteme6 = new SuperMap.REST.ThemeGridRangeItem({
  302. start: 3,
  303. end: 4.6,
  304. color: color6,
  305. }),
  306. themeGridRangeIteme7 = new SuperMap.REST.ThemeGridRangeItem({
  307. start: 4.6,
  308. end: 6.2,
  309. color: color7,
  310. }),
  311. themeGridRangeIteme8 = new SuperMap.REST.ThemeGridRangeItem({
  312. start: 6.2,
  313. end: 7.8,
  314. color: color8,
  315. }),
  316. themeGridRangeIteme9 = new SuperMap.REST.ThemeGridRangeItem({
  317. start: 7.8,
  318. end: 9.4,
  319. color: color9,
  320. }),
  321. themeGridRangeIteme10 = new SuperMap.REST.ThemeGridRangeItem({
  322. start: 9.4,
  323. end: 11,
  324. color: color10,
  325. }),
  326. themeGridRangeIteme11 = new SuperMap.REST.ThemeGridRangeItem({
  327. start: 11,
  328. end: 12.6,
  329. color: color11,
  330. }),
  331. themeGridRangeIteme12 = new SuperMap.REST.ThemeGridRangeItem({
  332. start: 12.6,
  333. end: 14.2,
  334. color: color12,
  335. }),
  336. themeGridRangeIteme13 = new SuperMap.REST.ThemeGridRangeItem({
  337. start: 14.2,
  338. end: 15.8,
  339. color: color13,
  340. }),
  341. themeGridRangeIteme14 = new SuperMap.REST.ThemeGridRangeItem({
  342. start: 15.8,
  343. end: 17.4,
  344. color: color14,
  345. }),
  346. themeGridRangeIteme15 = new SuperMap.REST.ThemeGridRangeItem({
  347. start: 17.4,
  348. end: 19,
  349. color: color15,
  350. }),
  351. themeGridRangeIteme16 = new SuperMap.REST.ThemeGridRangeItem({
  352. start: 19,
  353. end: 20.6,
  354. color: color16,
  355. }),
  356. themeGridRangeIteme17 = new SuperMap.REST.ThemeGridRangeItem({
  357. start: 20.6,
  358. end: 22.2,
  359. color: color17,
  360. }),
  361. themeGridRangeIteme18 = new SuperMap.REST.ThemeGridRangeItem({
  362. start: 22.2,
  363. end: 23.8,
  364. color: color18,
  365. }),
  366. themeGridRangeIteme19 = new SuperMap.REST.ThemeGridRangeItem({
  367. start: 23.8,
  368. end: 25.4,
  369. color: color19,
  370. }),
  371. themeGridRangeIteme20 = new SuperMap.REST.ThemeGridRangeItem({
  372. start: 25.4,
  373. end: 27,
  374. color: color20,
  375. }),
  376. themeGridRange = new SuperMap.REST.ThemeGridRange({
  377. reverseColor: false,
  378. rangeMode: SuperMap.REST.RangeMode.EQUALINTERVAL,
  379. //栅格分段专题图子项数组
  380. items: [
  381. themeGridRangeIteme1,
  382. themeGridRangeIteme2,
  383. themeGridRangeIteme3,
  384. themeGridRangeIteme4,
  385. themeGridRangeIteme5,
  386. themeGridRangeIteme6,
  387. themeGridRangeIteme7,
  388. themeGridRangeIteme8,
  389. themeGridRangeIteme9,
  390. themeGridRangeIteme10,
  391. themeGridRangeIteme11,
  392. themeGridRangeIteme12,
  393. themeGridRangeIteme13,
  394. themeGridRangeIteme14,
  395. themeGridRangeIteme15,
  396. themeGridRangeIteme16,
  397. themeGridRangeIteme17,
  398. themeGridRangeIteme18,
  399. themeGridRangeIteme19,
  400. themeGridRangeIteme20,
  401. ],
  402. }),
  403. themeParameters = new SuperMap.REST.ThemeParameters({
  404. //制作专题图的数据集数组
  405. datasetNames: [InterpolationAnalystEventArgs.result.dataset.split('@')[0]],
  406. // 制作专题图的数据集所在的数据源数组
  407. dataSourceNames: ['Interpolation'],
  408. joinItems: null,
  409. //专题图对象列表
  410. themes: [themeGridRange],
  411. types: ['REGION'],
  412. });
  413. var themeService = new SuperMap.REST.ThemeService(url, {
  414. eventListeners: {
  415. processCompleted: themeCompleted,
  416. processFailed: themeFailed,
  417. },
  418. });
  419. themeService.processAsync(themeParameters);
  420. }
  421. //服务端成功返回专题图结果时调用
  422. function themeCompleted(themeEventArgs) {
  423. if (themeEventArgs.result.resourceInfo.id) {
  424. themeLayer = new SuperMap.Layer.TiledDynamicRESTLayer(
  425. '插值分析结果图',
  426. url,
  427. {
  428. cacheEnabled: true,
  429. transparent: true,
  430. layersID: themeEventArgs.result.resourceInfo.id,
  431. },
  432. { maxResolution: 'auto' }
  433. );
  434. themeLayer.events.on({ layerInitialized: addThemelayer });
  435. }
  436. }
  437. //添加专题图至map
  438. function addThemelayer() {
  439. map.addLayer(themeLayer);
  440. }
  441. //插值分析失败后调用
  442. function processFailed(ServiceFailedEventArgs) {
  443. widgets.alert.showAlert(ServiceFailedEventArgs.error.errorMsg, false);
  444. }
  445. //服务端返回专题图结果失败时调用
  446. function themeFailed(serviceFailedEventArgs) {
  447. widgets.alert.showAlert(serviceFailedEventArgs.error.errorMsg, false);
  448. }
  449. //清除专题图图层
  450. function removeInterpolation() {
  451. widgets.alert.clearAlert();
  452. if (map.layers.length > 1) {
  453. map.removeLayer(themeLayer, true);
  454. }
  455. }
  456. </script>
  457. </body>
  458. </html>