kernelDensityJobService.html 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223
  1. <!--********************************************************************
  2. * Copyright© 2000 - 2021 SuperMap Software Co.Ltd. All rights reserved.
  3. *********************************************************************-->
  4. <!DOCTYPE html>
  5. <html lang="en">
  6. <head>
  7. <meta charset="UTF-8">
  8. <title data-i18n="resources.title_kernelDensityJobService"></title>
  9. <script type="text/javascript" src="../../dist/mapboxgl/include-mapboxgl.js"></script>
  10. <style>
  11. body, #map {
  12. position: absolute;
  13. width: 100%;
  14. height: 100%
  15. }
  16. .panel-default {
  17. width: 300px;
  18. float: right;
  19. margin: 15px 15px 0 0;
  20. position: relative;
  21. }
  22. .input-group {
  23. margin-bottom: 15px;
  24. }
  25. </style>
  26. </head>
  27. <body>
  28. <div id="map"></div>
  29. <div class='panel panel-default'>
  30. <div class='panel-heading'>
  31. <h3 class='panel-title' data-i18n="resources.text_kernelDensityJobService"></h3>
  32. </div>
  33. <div class='panel-body'>
  34. <div class='input-group'>
  35. <span class='input-group-addon'><span data-i18n="resources.text_inputData"></span>
  36. <span data-i18n="[title]resources.text_requiredField" style='color: red;'>*</span>  </span>
  37. <input id='datasetName' type='text' class='form-control' value='samples_newyork_taxi_2013-01_14k' /></div>
  38. <div class='input-group'>
  39. <span class='input-group-addon'><span data-i18n="resources.text_analysisMethod"></span>
  40. <span data-i18n="[title]resources.text_requiredField" style='color: red;'>*</span>  </span>
  41. <div>
  42. <select class='form-control' id='method' name='clientType'>
  43. <option value='0' selected='selected' data-i18n="resources.text_simpleDenAnalyst"></option>
  44. <option value='1' data-i18n="resources.text_input_value_densityAnalyst"></option>
  45. </select>
  46. </div>
  47. </div>
  48. <div class='input-group'>
  49. <span class='input-group-addon'><span data-i18n="resources.text_meshSurfaceType"></span>
  50. <span data-i18n="[title]resources.text_requiredField" style='color: red;'>*</span></span>
  51. <select class='form-control' id='meshType' name='clientType'>
  52. <option value='0' selected='selected' data-i18n="resources.text_4grid"></option>
  53. <option value='1' data-i18n="resources.text_6grid"></option>
  54. </select></div>
  55. <div class='input-group'>
  56. <span class='input-group-addon' data-i18n="resources.text_weightField"></span>
  57. <input id='fields' type='text' class='form-control' value='col7,col8' /></div>
  58. <div class='input-group'>
  59. <span class='input-group-addon' data-i18n="resources.text_analysisRange"></span>
  60. <input id='query' type='text' class='form-control' value='-74.150, 40.550, -73.750, 40.950' /></div>
  61. <div class='input-group'>
  62. <span class='input-group-addon'><span data-i18n="resources.text_gridSize"></span>
  63. <span data-i18n="[title]resources.text_requiredField" style='color: red;'>*</span>  </span>
  64. <input id='resolution' type='text' class='form-control' value='80' /></div>
  65. <div class='input-group'>
  66. <span class='input-group-addon' data-i18n="resources.text_gridSizeUnit"></span>
  67. <select class='form-control' id='meshSizeUnit' name='clientType'>
  68. <option value='Meter' selected='selected'>Meter</option>
  69. <option value='Kilometer'>Kilometer</option>
  70. <option value='Yard'>Yard</option>
  71. <option value='Foot'>Foot</option>
  72. <option value='Mile'>Mile</option>
  73. </select></div>
  74. <div class='input-group'>
  75. <span class='input-group-addon'><span data-i18n="resources.text_searchRadius"></span>
  76. <span data-i18n="[title]resources.text_requiredField" style='color: red;'>*</span>  </span>
  77. <input id='radius' type='text' class='form-control' value='300' /></div>
  78. <div class='input-group'>
  79. <span class='input-group-addon' data-i18n="resources.text_searchRadiusUnit"></span>
  80. <select class='form-control' id='radiusUnit' name='clientType'>
  81. <option value='Meter' selected='selected'>Meter</option>
  82. <option value='Kilometer'>Kilometer</option>
  83. <option value='Yard'>Yard</option>
  84. <option value='Foot'>Foot</option>
  85. <option value='Mile'>Mile</option>
  86. </select></div>
  87. <div class='input-group'>
  88. <span class='input-group-addon' data-i18n="resources.text_areaUnit"></span>
  89. <select class='form-control' id='areaUnit' name='clientType'>
  90. <option value='SquareMeter'>SquareMeter</option>
  91. <option value='Hectare'>Hectare</option>
  92. <option value='Are'>Are</option>
  93. <option value='Acre'>Acre</option>
  94. <option value='SquareFoot'>SquareFoot</option>
  95. <option value='SquareYard'>SquareYard</option>
  96. <option value='SquareMile' selected='selected'>SquareMile</option>
  97. </select></div>
  98. <div align='right'>
  99. <input type='button' id='btn' class='btn btn-primary' data-i18n="[value]resources.text_analyst" />
  100. </div>
  101. </div>
  102. </div>
  103. <script type="text/javascript" include="jquery,bootstrap,widgets" src="../js/include-web.js"></script>
  104. <script type="text/javascript">
  105. var host = window.isLocal ? window.server : "https://iserver.supermap.io";
  106. var attribution = "<a href='https://www.mapbox.com/about/maps/' target='_blank'>© Mapbox </a>" +
  107. " with <span>© <a href='https://iclient.supermap.io' target='_blank'>SuperMap iClient</a> | </span>" +
  108. "Map Data <span>© <a href='http://support.supermap.com.cn/product/iServer.aspx' target='_blank'>SuperMap iServer</a></span> ",
  109. processingUrl = host + "/iserver/services/distributedanalyst/rest/v1/jobs";
  110. var map = new mapboxgl.Map({
  111. container: 'map', // container id
  112. style: {
  113. "version": 8,
  114. "sources": {
  115. "raster-tiles": {
  116. "attribution": attribution,
  117. "type": "raster",
  118. "tiles": [host +
  119. '/iserver/services/map-china400/rest/maps/China/zxyTileImage.png?z={z}&x={x}&y={y}'
  120. ],
  121. "tileSize": 256
  122. }
  123. },
  124. "layers": [{
  125. "id": "simple-tiles",
  126. "type": "raster",
  127. "source": "raster-tiles",
  128. "maxzoom": 18,
  129. "minzoom": 2,
  130. }]
  131. },
  132. center: [-73.9, 40.74],
  133. zoom: 11
  134. });
  135. map.addControl(new mapboxgl.NavigationControl(), 'top-left');
  136. map.addControl(new mapboxgl.supermap.LogoControl(), 'bottom-right');
  137. SuperMap.SecurityManager.registerToken(processingUrl, window.exampleToken);
  138. function getQuery() {
  139. if ($('#query').val() === "") {
  140. return "";
  141. }
  142. var query = [];
  143. $('#query').val().split(',').map(function (el) {
  144. query.push(parseFloat(el));
  145. });
  146. var sw = new mapboxgl.LngLat(query[0], query[1]);
  147. var ne = new mapboxgl.LngLat(query[2], query[3]);
  148. return new mapboxgl.LngLatBounds(sw, ne);
  149. }
  150. $('#btn').on('click', function () {
  151. if ($('#msg_container')[0]) {
  152. $('#msg_container').remove();
  153. }
  154. widgets.loader.showLoader();
  155. if (map && map.getLayer("kernerlLayer")) {
  156. map.removeLayer("kernerlLayer")
  157. map.removeSource("kernerlSource");
  158. }
  159. var kernelDensityJobParameter = new SuperMap.KernelDensityJobParameter({
  160. datasetName: $('#datasetName').val(),
  161. resolution: $('#resolution').val(),
  162. method: $('#method option:selected').attr('value'),
  163. meshType: $('#meshType option:selected').attr('value'),
  164. fields: $('#fields').val(),
  165. query: getQuery(),
  166. radius: $('#radius').val(),
  167. meshSizeUnit: $('#meshSizeUnit option:selected').attr('value'),
  168. radiusUnit: $('#radiusUnit option:selected').attr('value'),
  169. areaUnit: $('#areaUnit option:selected').attr('value'),
  170. });
  171. new mapboxgl.supermap.ProcessingService(processingUrl, {
  172. withCredentials: window.isLocal
  173. }).addKernelDensityJob(kernelDensityJobParameter, function (serviceResult) {
  174. if (serviceResult.error) {
  175. widgets.loader.removeLoader();
  176. var errorMsg = serviceResult.error.errorMsg || "code: " + serviceResult.error.code;
  177. widgets.alert.showAlert(resources.msg_createFailed + "<br>" + errorMsg, false);
  178. return;
  179. }
  180. serviceResult.result.setting.serviceInfo.targetServiceInfos.map(function (info) {
  181. if (info.serviceType === 'RESTMAP') {
  182. SuperMap.FetchRequest.get(info.serviceAddress + '/maps').then(function (
  183. response) {
  184. return response.json();
  185. }).then(function (result) {
  186. var mapUrl = result[0].path +
  187. "/zxyTileImage.png?z={z}&x={x}&y={y}&width=256&height=256&transparent=true";
  188. map.addSource("kernerlSource", {
  189. "type": "raster",
  190. "tiles": [mapUrl],
  191. "tileSize": 256
  192. });
  193. map.addLayer({
  194. "id": "kernerlLayer",
  195. "type": "raster",
  196. "source": "kernerlSource",
  197. "minzoom": 0,
  198. "maxzoom": 22
  199. });
  200. widgets.loader.removeLoader();
  201. });
  202. }
  203. });
  204. });
  205. });
  206. </script>
  207. </body>
  208. </html>