kernelDensityJobService.html 12 KB

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