kernelDensityJobService.html 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228
  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_kernelDensityJobService"></title>
  9. <script type="text/javascript" include="jquery,bootstrap,widgets" src="../js/include-web.js"></script>
  10. <style>
  11. .control {
  12. position: absolute;
  13. top: 50px;
  14. right: 10px;
  15. }
  16. #map {
  17. position: absolute;
  18. }
  19. </style>
  20. </head>
  21. <body style=" margin: 0;overflow: hidden;background: #fff;width: 100%;height:100%;position: absolute;top: 0;">
  22. <div id="map" style="width: 100%;height:100%"></div>
  23. <div id="control" class="control" style='width:300px'>
  24. <div class="panel panel-default">
  25. <div class="panel-heading">
  26. <h3 class="panel-title" data-i18n="resources.text_kernelDensityJobService"></h3>
  27. </div>
  28. <div class="panel-body">
  29. <div class="input-group">
  30. <span class="input-group-addon"><span data-i18n="resources.text_inputData"></span><span data-i18n="[title]resources.text_requiredField"
  31. style='color: red;'> * </span> </span>
  32. <input id="datasetName" type="text" class="form-control" value="samples_newyork_taxi_2013-01_14k" />
  33. </div>
  34. <p>
  35. <div class="input-group">
  36. <span class="input-group-addon"><span data-i18n="resources.text_analysisMethod"></span><span
  37. data-i18n="[title]resources.text_requiredField" style='color: red;'> * </span> </span>
  38. <div>
  39. <select class="form-control" id="method" name="clientType">
  40. <option value="0" selected="selected" data-i18n="resources.text_simpleDenAnalyst">
  41. </option>
  42. <option value="1" data-i18n="resources.title_densityAnalystService"></option>
  43. </select>
  44. </div>
  45. </div>
  46. <p>
  47. <div class="input-group">
  48. <span class="input-group-addon"><span data-i18n="resources.text_meshSurfaceType"></span><span
  49. data-i18n="[title]resources.text_requiredField" style='color: red;'> * </span></span>
  50. <select class="form-control" id="meshType" name="clientType">
  51. <option value="0" selected="selected" data-i18n="resources.text_4grid"></option>
  52. <option value="1" data-i18n="resources.text_6grid"></option>
  53. </select>
  54. </div>
  55. <p>
  56. <div class="input-group">
  57. <span class="input-group-addon" data-i18n="resources.text_weightField"></span>
  58. <input id="fields" type="text" class="form-control" value="col7,col8" />
  59. </div>
  60. <p>
  61. <div class="input-group">
  62. <span class="input-group-addon" data-i18n="resources.text_analysisRange"></span>
  63. <input id="query" type="text" class="form-control" value="-74.150, 40.550, -73.750, 40.950" />
  64. </div>
  65. <p>
  66. <div class="input-group">
  67. <span class="input-group-addon"><span data-i18n="resources.text_gridSize"></span><span
  68. data-i18n="[title]resources.text_requiredField" style='color: red;'> *
  69. </span> </span>
  70. <input id="resolution" type="text" class="form-control" value="80" />
  71. </div>
  72. <p>
  73. <div class="input-group">
  74. <span class="input-group-addon" data-i18n="resources.text_gridSizeUnit"></span>
  75. <select class="form-control" id="meshSizeUnit" name="clientType">
  76. <option value="Meter" selected="selected">Meter</option>
  77. <option value="Kilometer">Kilometer</option>
  78. <option value="Yard">Yard</option>
  79. <option value="Foot">Foot</option>
  80. <option value="Mile">Mile</option>
  81. </select>
  82. </div>
  83. <p>
  84. <div class="input-group">
  85. <span class="input-group-addon"><span data-i18n="resources.text_searchRadius"></span><span
  86. data-i18n="[title]resources.text_requiredField" style='color: red;'>
  87. * </span> </span>
  88. <input id="radius" type="text" class="form-control" value="300" />
  89. </div>
  90. <p>
  91. <div class="input-group">
  92. <span class="input-group-addon" data-i18n="resources.text_searchRadiusUnit"></span>
  93. <select class="form-control" id="radiusUnit" name="clientType">
  94. <option value="Meter" selected="selected">Meter</option>
  95. <option value="Kilometer">Kilometer</option>
  96. <option value="Yard">Yard</option>
  97. <option value="Foot">Foot</option>
  98. <option value="Mile">Mile</option>
  99. </select>
  100. </div>
  101. <p>
  102. <div class="input-group">
  103. <span class="input-group-addon" data-i18n="resources.text_areaUnit"></span>
  104. <select class="form-control" id="areaUnit" name="clientType">
  105. <option value="SquareMile" selected="selected">SquareMile</option>
  106. <option value="Hectare">Hectare</option>
  107. <option value="Are">Are</option>
  108. <option value="Acre">Acre</option>
  109. <option value="SquareFoot">SquareFoot</option>
  110. <option value="SquareYard">SquareYard</option>
  111. <option value="SquareMeter">SquareMeter</option>
  112. </select>
  113. </div>
  114. <p>
  115. <div align="right">
  116. <input type="button" id='btn' class="btn btn-primary"
  117. data-i18n="[value]resources.text_analyst" />
  118. </div>
  119. </div>
  120. </div>
  121. </div>
  122. <script type="text/javascript" src="../../dist/classic/include-classic.js"></script>
  123. <script type="text/javascript">
  124. var host = window.isLocal ? window.server : "https://iserver.supermap.io";
  125. var resultLayer,
  126. processingsUrl = host + "/iserver/services/distributedanalyst/rest/v1/jobs",
  127. mapURL = host + "/iserver/services/map-world/rest/maps/World",
  128. map = new SuperMap.Map("map", {
  129. controls: [
  130. new SuperMap.Control.Navigation(),
  131. new SuperMap.Control.Zoom(),
  132. new SuperMap.Control.LayerSwitcher()
  133. ],
  134. allOverlays: true
  135. });
  136. map.addControl(new SuperMap.Control.MousePosition());
  137. var layer = new SuperMap.Layer.TiledDynamicRESTLayer("World", mapURL, null, {
  138. maxResolution: "auto"
  139. });
  140. layer.events.on({
  141. "layerInitialized": addLayer
  142. });
  143. function addLayer() {
  144. map.addLayers([layer]);
  145. map.setCenter(new SuperMap.LonLat(-73.95, 40.75), 12);
  146. }
  147. var processingService = new SuperMap.REST.ProcessingService(processingsUrl, {
  148. withCredentials: window.isLocal
  149. });
  150. SuperMap.SecurityManager.registerToken(processingsUrl, window.exampleToken);
  151. function getQuery() {
  152. if ($('#query').val() === "") {
  153. return "";
  154. }
  155. var query = [];
  156. $('#query').val().split(',').map(function (el) {
  157. query.push(parseFloat(el));
  158. });
  159. return new SuperMap.Bounds(
  160. query[0],
  161. query[1],
  162. query[2],
  163. query[3]
  164. );
  165. }
  166. $('#btn').on('click', function () {
  167. if ($('#msg_container')[0]) {
  168. $('#msg_container').remove();
  169. }
  170. widgets.loader.showLoader();
  171. if (map && resultLayer) {
  172. map.removeLayer(resultLayer);
  173. }
  174. var kernelDensityJobParameter = new SuperMap.KernelDensityJobParameter({
  175. datasetName: $('#datasetName').val(),
  176. resolution: $('#resolution').val(),
  177. method: $('#method option:selected').attr('value'),
  178. meshType: $('#meshType option:selected').attr('value'),
  179. fields: $('#fields').val(),
  180. query: getQuery(),
  181. radius: $('#radius').val(),
  182. meshSizeUnit: $('#meshSizeUnit option:selected').attr('value'),
  183. radiusUnit: $('#radiusUnit option:selected').attr('value'),
  184. areaUnit: $('#areaUnit option:selected').attr('value'),
  185. });
  186. processingService.addKernelDensityJob(kernelDensityJobParameter, function (serviceResult) {
  187. if (serviceResult.error) {
  188. widgets.loader.removeLoader();
  189. var errorMsg = serviceResult.error.errorMsg || "code: " + serviceResult.error.code;
  190. widgets.alert.showAlert(resources.msg_createFailed + "<br>" + errorMsg, false);
  191. return;
  192. }
  193. serviceResult.result.setting.serviceInfo.targetServiceInfos.map(function (info) {
  194. if (info.serviceType === 'RESTMAP') {
  195. SuperMap.FetchRequest.get(info.serviceAddress + '/maps').then(function (
  196. response) {
  197. return response.json();
  198. }).then(function (result) {
  199. var mapUrl = result[0].path;
  200. resultLayer = new SuperMap.Layer.TiledDynamicRESTLayer(
  201. "resultLayer", mapUrl, {
  202. transparent: true
  203. });
  204. resultLayer.events.on({
  205. "layerInitialized": addLayer
  206. });
  207. function addLayer() {
  208. map.addLayer(resultLayer);
  209. widgets.loader.removeLoader();
  210. }
  211. });
  212. }
  213. });
  214. });
  215. });
  216. </script>
  217. </body>
  218. </html>