02_fieldStatistics.html 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181
  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_fieldStatistics"></title>
  9. <style>
  10. #popup {
  11. position: absolute;
  12. background-color: white;
  13. filter: drop-shadow(0 1px 4px rgba(0, 0, 0, 0.2));
  14. padding: 10px;
  15. border-radius: 5px;
  16. border: 1px solid #cccccc;
  17. bottom: 10px;
  18. left: 10px;
  19. min-width: 280px;
  20. z-index: 1;
  21. }
  22. </style>
  23. </head>
  24. <body style=" margin: 0;overflow: hidden;background: #fff;width: 100%;height:100%;position: absolute;top: 0;">
  25. <div id="map" style="margin:0 auto;width: 100%;height: 100%">
  26. <div id="popup">
  27. <div id="popup-content">
  28. <div style="line-height: 35px;">
  29. <div id="tableName"><strong data-i18n="resources.text_layer"></strong>(continent_T@World)&nbsp;&nbsp;&nbsp;<strong
  30. data-i18n="resources.text_field"></strong></div>
  31. <div>
  32. <div style="line-height: 35px;"><strong data-i18n="resources.text_statisticResult"></strong>
  33. <div>
  34. <table id="trafficRes" class="table table-bordered">
  35. <tbody>
  36. <tr>
  37. <td data-i18n="resources.text_averageValue"></td>
  38. <td data-i18n="resources.text_maxValue"></td>
  39. <td data-i18n="resources.text_minValue"></td>
  40. <td data-i18n="resources.text_standardDeviation"></td>
  41. <td data-i18n="resources.text_sum"></td>
  42. <td data-i18n="resources.text_variance"></td>
  43. </tr>
  44. <tr>
  45. <td id="AVERAGE"></td>
  46. <td id="MAX"></td>
  47. <td id="MIN"></td>
  48. <td id="STDDEVIATION"></td>
  49. <td id="SUM"></td>
  50. <td id="VARIANCE"></td>
  51. </tr>
  52. </tbody>
  53. </table>
  54. </div>
  55. </div>
  56. </div>
  57. </div>
  58. </div>
  59. </div>
  60. </div>
  61. <script type="text/javascript" include="bootstrap-css" src="../js/include-web.js"></script>
  62. <script type="text/javascript" src="../../dist/mapboxgl/include-mapboxgl.js"></script>
  63. <script>
  64. var map, currentData, layersName = [],
  65. baseUrl = (window.isLocal ? window.server : "https://iserver.supermap.io") + "/iserver/services/map-world/rest/maps/World Map",
  66. mapUrl = baseUrl + "/zxyTileImage.png?z={z}&x={x}&y={y}",
  67. dataUrl = (window.isLocal ? window.server : "https://iserver.supermap.io") + "/iserver/services/data-world/rest/data";
  68. var attribution = "<a href='https://www.mapbox.com/about/maps/' target='_blank'>© Mapbox </a>" +
  69. " with <span>© <a href='https://iclient.supermap.io' target='_blank'>SuperMap iClient</a> | </span>" +
  70. " Map Data <span>© <a href='http://support.supermap.com.cn/product/iServer.aspx' target='_blank'>SuperMap iServer</a></span> ";
  71. map = new mapboxgl.Map({
  72. container: 'map',
  73. style: {
  74. "version": 8,
  75. "sources": {
  76. "raster-tiles": {
  77. "attribution": attribution,
  78. "type": "raster",
  79. "tiles": [mapUrl],
  80. "tileSize": 256
  81. }
  82. },
  83. "layers": [{
  84. "id": "simple-tiles",
  85. "type": "raster",
  86. "source": "raster-tiles",
  87. }]
  88. },
  89. center: [0, 0],
  90. zoom: 2
  91. });
  92. map.addControl(new mapboxgl.NavigationControl(), 'top-left');
  93. map.addControl(new mapboxgl.supermap.LogoControl(), 'bottom-right');
  94. showLayersInfo();
  95. //获取子图层信息
  96. function showLayersInfo() {
  97. var subLayer;
  98. new mapboxgl.supermap.LayerInfoService(baseUrl).getLayersInfo(function (serviceResult) {
  99. var layers = serviceResult.result.subLayers.layers;
  100. if (!layers) return;
  101. for (var i = 0, len = layers.length; i < len; i++) {
  102. subLayer = layers[i];
  103. if ("UGC" == subLayer.type) {
  104. //记录数据源,数据集信息供字段查询统计使用
  105. if (subLayer.datasetInfo.name && subLayer.datasetInfo.dataSourceName) {
  106. layersName[i] = {
  107. dataSetName: subLayer.datasetInfo.name,
  108. dataSourceName: subLayer.datasetInfo.dataSourceName,
  109. layerName: subLayer.name
  110. };
  111. }
  112. }
  113. }
  114. getFields();
  115. });
  116. }
  117. function getFields() {
  118. var name = 'continent_T@World';
  119. var dataInfo;
  120. for (var i = 0; i < layersName.length; i++) {
  121. dataInfo = layersName[i];
  122. if (dataInfo.layerName == name) {
  123. //设置数据集,数据源,查询fields信息
  124. currentData = dataInfo;
  125. var param = new SuperMap.FieldParameters({
  126. datasource: dataInfo.dataSourceName,
  127. dataset: dataInfo.dataSetName
  128. });
  129. new mapboxgl.supermap.FieldService(dataUrl).getFields(param, function (serviceResult) {
  130. fieldStatistic();
  131. });
  132. }
  133. }
  134. }
  135. function fieldStatistic() {
  136. var fieldName = 'SmID';
  137. var param = new SuperMap.FieldStatisticsParameters({
  138. datasource: currentData.dataSourceName,
  139. dataset: currentData.dataSetName,
  140. fieldName: fieldName,
  141. statisticMode: [
  142. SuperMap.StatisticMode.MAX,
  143. SuperMap.StatisticMode.MIN,
  144. SuperMap.StatisticMode.SUM,
  145. SuperMap.StatisticMode.AVERAGE,
  146. SuperMap.StatisticMode.STDDEVIATION,
  147. SuperMap.StatisticMode.VARIANCE
  148. ]
  149. });
  150. if (currentData) {
  151. new mapboxgl.supermap.FieldService(dataUrl).getFieldStatisticsInfo(param, function (serviceResult) {
  152. showResult(serviceResult.result);
  153. });
  154. }
  155. }
  156. function showResult(serviceResult) {
  157. if (!serviceResult) {
  158. return;
  159. }
  160. var tableName = document.getElementById("tableName");
  161. tableName.textContent += '(' + serviceResult.fieldName + ')';
  162. var keys = ["AVERAGE", "MAX", "MIN", "STDDEVIATION", "SUM", "VARIANCE"];
  163. document.getElementById("AVERAGE").textContent += serviceResult[keys[0]];
  164. document.getElementById("MAX").textContent += serviceResult[keys[1]];
  165. document.getElementById("MIN").textContent += serviceResult[keys[2]];
  166. document.getElementById("STDDEVIATION").textContent += serviceResult[keys[3]];
  167. document.getElementById("SUM").textContent += serviceResult[keys[4]];
  168. document.getElementById("VARIANCE").textContent += serviceResult[keys[5]];
  169. }
  170. </script>
  171. </body>
  172. </html>