analysis_interpolationAnalystByGeometry.html 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367
  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_interpolationAnalystByGeo"></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. width: 300px;
  27. text-align: center;
  28. z-index: 100;
  29. border-radius: 4px;
  30. }
  31. </style>
  32. </head>
  33. <body>
  34. <div id="toolbar" class="panel panel-primary">
  35. <div class='panel-heading'>
  36. <h5 class='panel-title text-center' data-i18n="resources.text_interpolationAnalystByGeo"></h5></div>
  37. <div class='panel-body content'>
  38. <div class='panel'>
  39. <div class='input-group'>
  40. <span class='input-group-addon' data-i18n="resources.text_min"></span>
  41. <input type='number' class='form-control' id='zMin' value='-5'/>
  42. </div>
  43. </div>
  44. <div class='panel'>
  45. <div class='input-group'>
  46. <span class='input-group-addon' data-i18n="resources.text_max"></span>
  47. <input type='number' class='form-control' id='zMax' value='28'/>
  48. </div>
  49. </div>
  50. <input type="button" class="btn btn-default" data-i18n="[value]resources.text_input_value_byGeo" onclick="cretePointsAnalyst()"/>&nbsp;
  51. <input type="button" class="btn btn-default" data-i18n="[value]resources.text_input_value_delete" onclick="removeInterpolation()"/>
  52. </div>
  53. </div>
  54. <div id="map"></div>
  55. <script type="text/javascript" include="bootstrap,widgets.alert" src="../js/include-web.js"></script>
  56. <script type="text/javascript" exclude="iclient-classic" src="../../dist/classic/include-classic.js"></script>
  57. <script>
  58. var host = window.isLocal ? window.server : "https://iserver.supermap.io",
  59. url = host + "/iserver/services/map-temperature/rest/maps/全国温度变化图",
  60. url2 = host + "/iserver/services/spatialanalyst-sample/restjsr/spatialanalyst";
  61. var map, baseLayer, themeLayer, points = [];
  62. init();
  63. function init() {
  64. map = new SuperMap.Map("map", {
  65. controls: [
  66. new SuperMap.Control.ScaleLine(),
  67. new SuperMap.Control.Zoom(),
  68. new SuperMap.Control.Navigation({
  69. dragPanOptions: {
  70. enableKinetic: true
  71. }
  72. })], units: "m"
  73. });
  74. map.addControl(new SuperMap.Control.LayerSwitcher(), new SuperMap.Pixel(42, 80));
  75. map.allOverlays = true;
  76. baseLayer = new SuperMap.Layer.TiledDynamicRESTLayer("全国温度变化图", url, {
  77. transparent: true,
  78. cacheEnabled: true
  79. }, {maxResolution: "auto"});
  80. baseLayer.params.layersID = "[0,1,2]";
  81. baseLayer.events.on({"layerInitialized": addLayer});
  82. }
  83. function addLayer() {
  84. map.addLayer(baseLayer);
  85. map.setCenter(new SuperMap.LonLat(531762, 3895330), 0);
  86. }
  87. //离散点插值分析
  88. function cretePointsAnalyst() {
  89. widgets.alert.clearAlert();
  90. removeInterpolation();
  91. //查询,以得到用于插值分析的geometry
  92. var queryParam, queryBySQLParams, queryBySQLService;
  93. queryParam = new SuperMap.REST.FilterParameter({
  94. name: "SamplesP@Interpolation",
  95. attributeFilter: "SMID>0"
  96. });
  97. queryBySQLParams = new SuperMap.REST.QueryBySQLParameters({
  98. queryParams: [queryParam]
  99. });
  100. queryBySQLService = new SuperMap.REST.QueryBySQLService(url, {
  101. eventListeners: {"processCompleted": sqlService_ProcessCompleted, "processFailed": processFailed}
  102. });
  103. queryBySQLService.processAsync(queryBySQLParams);
  104. }
  105. function sqlService_ProcessCompleted(queryEventArgs) {
  106. var feature, recordsets = queryEventArgs.result.recordsets;
  107. var z, zMin = parseFloat(document.getElementById("zMin").value),
  108. zMax = parseFloat(document.getElementById("zMax").value);
  109. if (recordsets) {
  110. for (var i = 0; i < recordsets[0].features.length; i++) {
  111. gp = recordsets[0].features[i].geometry;
  112. var point = new SuperMap.Geometry.Point(gp.x, gp.y);
  113. //每个插值点在插值过程中的权重值
  114. z = Math.random() * (zMax - zMin) + zMin;
  115. point.tag = z;
  116. points.push(point);
  117. }
  118. }
  119. //IDW插值法
  120. var interpolationParams = new SuperMap.REST.InterpolationIDWAnalystParameters({
  121. //插值分析类型
  122. InterpolationAnalystType: "geometry",
  123. //插值分析结果数据集的名称
  124. outputDatasetName: "IDWcretePoints_result",
  125. //插值分析结果数据源的名称
  126. outputDatasourceName: "Interpolation",
  127. //结果栅格数据集存储的像素格式
  128. pixelFormat: SuperMap.REST.PixelFormat.double,
  129. //用于做插值分析的离散点集合
  130. inputPoints: points,
  131. // 属性过滤条件
  132. filterQueryParameter: {
  133. attributeFilter: ""
  134. },
  135. //采取定长查找参与运算点的方式
  136. searchMode: "KDTREE_FIXED_RADIUS",
  137. // 查找半径,与点数据单位相同
  138. searchRadius: 200,
  139. resolution: 9000,
  140. bounds: new SuperMap.Bounds(-2640403.6321084504, 1873792.1034850003, 3247669.390292245, 5921501.395578556)
  141. });
  142. var interpolationService = new SuperMap.REST.InterpolationAnalystService(url2, {
  143. eventListeners: {
  144. "processCompleted": processCompleted,
  145. "processFailed": processFailed
  146. }
  147. });
  148. interpolationService.processAsync(interpolationParams);
  149. }
  150. //插值分析成功后,使用栅格分段专题图显示
  151. function processCompleted(InterpolationAnalystEventArgs) {
  152. var color1 = new SuperMap.REST.ServerColor(170, 240, 233),
  153. color2 = new SuperMap.REST.ServerColor(176, 244, 188),
  154. color3 = new SuperMap.REST.ServerColor(218, 251, 178),
  155. color4 = new SuperMap.REST.ServerColor(220, 236, 145),
  156. color5 = new SuperMap.REST.ServerColor(96, 198, 66),
  157. color6 = new SuperMap.REST.ServerColor(20, 142, 53),
  158. color7 = new SuperMap.REST.ServerColor(85, 144, 55),
  159. color8 = new SuperMap.REST.ServerColor(171, 168, 38),
  160. color9 = new SuperMap.REST.ServerColor(235, 165, 9),
  161. color10 = new SuperMap.REST.ServerColor(203, 89, 2),
  162. color11 = new SuperMap.REST.ServerColor(157, 25, 1),
  163. color12 = new SuperMap.REST.ServerColor(118, 15, 3),
  164. color13 = new SuperMap.REST.ServerColor(112, 32, 7),
  165. color14 = new SuperMap.REST.ServerColor(106, 45, 12),
  166. color15 = new SuperMap.REST.ServerColor(129, 80, 50),
  167. color16 = new SuperMap.REST.ServerColor(160, 154, 146),
  168. color17 = new SuperMap.REST.ServerColor(107, 47, 14),
  169. color18 = new SuperMap.REST.ServerColor(125, 75, 44),
  170. color19 = new SuperMap.REST.ServerColor(146, 110, 88),
  171. color20 = new SuperMap.REST.ServerColor(166, 153, 146),
  172. themeGridRangeIteme1 = new SuperMap.REST.ThemeGridRangeItem({
  173. start: -5,
  174. end: -3.4,
  175. color: color1
  176. }),
  177. themeGridRangeIteme2 = new SuperMap.REST.ThemeGridRangeItem({
  178. start: -3.4,
  179. end: -1.8,
  180. color: color2
  181. }),
  182. themeGridRangeIteme3 = new SuperMap.REST.ThemeGridRangeItem({
  183. start: -1.8,
  184. end: -0.2,
  185. color: color3
  186. }),
  187. themeGridRangeIteme4 = new SuperMap.REST.ThemeGridRangeItem({
  188. start: -0.2,
  189. end: 1.4,
  190. color: color4
  191. }),
  192. themeGridRangeIteme5 = new SuperMap.REST.ThemeGridRangeItem({
  193. start: 1.4,
  194. end: 3,
  195. color: color5
  196. }),
  197. themeGridRangeIteme6 = new SuperMap.REST.ThemeGridRangeItem({
  198. start: 3,
  199. end: 4.6,
  200. color: color6
  201. }),
  202. themeGridRangeIteme7 = new SuperMap.REST.ThemeGridRangeItem({
  203. start: 4.6,
  204. end: 6.2,
  205. color: color7
  206. }),
  207. themeGridRangeIteme8 = new SuperMap.REST.ThemeGridRangeItem({
  208. start: 6.2,
  209. end: 7.8,
  210. color: color8
  211. }),
  212. themeGridRangeIteme9 = new SuperMap.REST.ThemeGridRangeItem({
  213. start: 7.8,
  214. end: 9.4,
  215. color: color9
  216. }),
  217. themeGridRangeIteme10 = new SuperMap.REST.ThemeGridRangeItem({
  218. start: 9.4,
  219. end: 11,
  220. color: color10
  221. }),
  222. themeGridRangeIteme11 = new SuperMap.REST.ThemeGridRangeItem({
  223. start: 11,
  224. end: 12.6,
  225. color: color11
  226. }),
  227. themeGridRangeIteme12 = new SuperMap.REST.ThemeGridRangeItem({
  228. start: 12.6,
  229. end: 14.2,
  230. color: color12
  231. }),
  232. themeGridRangeIteme13 = new SuperMap.REST.ThemeGridRangeItem({
  233. start: 14.2,
  234. end: 15.8,
  235. color: color13
  236. }),
  237. themeGridRangeIteme14 = new SuperMap.REST.ThemeGridRangeItem({
  238. start: 15.8,
  239. end: 17.4,
  240. color: color14
  241. }),
  242. themeGridRangeIteme15 = new SuperMap.REST.ThemeGridRangeItem({
  243. start: 17.4,
  244. end: 19,
  245. color: color15
  246. }),
  247. themeGridRangeIteme16 = new SuperMap.REST.ThemeGridRangeItem({
  248. start: 19,
  249. end: 20.6,
  250. color: color16
  251. }),
  252. themeGridRangeIteme17 = new SuperMap.REST.ThemeGridRangeItem({
  253. start: 20.6,
  254. end: 22.2,
  255. color: color17
  256. }),
  257. themeGridRangeIteme18 = new SuperMap.REST.ThemeGridRangeItem({
  258. start: 22.2,
  259. end: 23.8,
  260. color: color18
  261. }),
  262. themeGridRangeIteme19 = new SuperMap.REST.ThemeGridRangeItem({
  263. start: 23.8,
  264. end: 25.4,
  265. color: color19
  266. }),
  267. themeGridRangeIteme20 = new SuperMap.REST.ThemeGridRangeItem({
  268. start: 25.4,
  269. end: 27,
  270. color: color20
  271. }),
  272. themeGridRange = new SuperMap.REST.ThemeGridRange({
  273. reverseColor: false,
  274. rangeMode: SuperMap.REST.RangeMode.EQUALINTERVAL,
  275. //栅格分段专题图子项数组
  276. items: [themeGridRangeIteme1,
  277. themeGridRangeIteme2,
  278. themeGridRangeIteme3,
  279. themeGridRangeIteme4,
  280. themeGridRangeIteme5,
  281. themeGridRangeIteme6,
  282. themeGridRangeIteme7,
  283. themeGridRangeIteme8,
  284. themeGridRangeIteme9,
  285. themeGridRangeIteme10,
  286. themeGridRangeIteme11,
  287. themeGridRangeIteme12,
  288. themeGridRangeIteme13,
  289. themeGridRangeIteme14,
  290. themeGridRangeIteme15,
  291. themeGridRangeIteme16,
  292. themeGridRangeIteme17,
  293. themeGridRangeIteme18,
  294. themeGridRangeIteme19,
  295. themeGridRangeIteme20
  296. ]
  297. }),
  298. themeParameters = new SuperMap.REST.ThemeParameters({
  299. //制作专题图的数据集数组
  300. datasetNames: [InterpolationAnalystEventArgs.result.dataset.split('@')[0]],
  301. // 制作专题图的数据集所在的数据源数组
  302. dataSourceNames: ["Interpolation"],
  303. joinItems: null,
  304. //专题图对象列表
  305. themes: [themeGridRange],
  306. types: ['REGION']
  307. });
  308. var themeService = new SuperMap.REST.ThemeService(url, {
  309. eventListeners: {
  310. "processCompleted": themeCompleted,
  311. "processFailed": themeFailed
  312. }
  313. });
  314. themeService.processAsync(themeParameters);
  315. }
  316. function themeCompleted(themeEventArgs) {
  317. if (themeEventArgs.result.resourceInfo.id) {
  318. themeLayer = new SuperMap.Layer.TiledDynamicRESTLayer("插值分析结果图", url, {
  319. cacheEnabled: true,
  320. transparent: true,
  321. layersID: themeEventArgs.result.resourceInfo.id
  322. }, {"maxResolution": "auto"});
  323. themeLayer.events.on({"layerInitialized": addThemelayer});
  324. }
  325. }
  326. function addThemelayer() {
  327. map.addLayer(themeLayer);
  328. }
  329. function processFailed(ServiceFailedEventArgs) {
  330. widgets.alert.showAlert(ServiceFailedEventArgs.error.errorMsg,false);
  331. }
  332. function themeFailed(serviceFailedEventArgs) {
  333. widgets.alert.showAlert(serviceFailedEventArgs.error.errorMsg,false);
  334. }
  335. function removeInterpolation() {
  336. widgets.alert.clearAlert();
  337. if (map.layers.length > 1) {
  338. map.removeLayer(themeLayer, true);
  339. }
  340. }
  341. </script>
  342. </body>
  343. </html>