| 
					
				 | 
			
			
				@@ -18,8 +18,6 @@ import GeometryCollection from 'ol/geom/GeometryCollection.js'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import { ElMessage } from "element-plus"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import { useStore } from "vuex"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import {bboxToFeature} from "../../utils/map"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import TileLayer from 'ol/layer/Tile'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import XYZ from 'ol/source/XYZ.js'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import * as turf from "@turf/turf"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 proj4.defs( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   "EPSG:38572", 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -135,22 +133,10 @@ class AuthenticMap { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       6, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       22 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    this.kmap.initDraw(async (e) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    this.kmap.initDraw((e) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       if (e.type === "drawend") { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         mapData.isEdit = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         mapData.point = e.feature; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  // 计算平面面积 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  const polygon = e.feature.getGeometry(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  const coordinates = polygon.getCoordinates()[0]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  // 获取真实高程数据 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  const planeArea = getArea(polygon); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  const elevationData = await this.fetchElevationData(coordinates); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  // 计算斜面面积 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  const slopeArea = this.calculateSlopeArea(coordinates, elevationData); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  console.log('斜面面积: ${slopeArea.toFixed(2)} 平方米',planeArea, slopeArea) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     this.kmap.modifyDraw((e) => { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -178,68 +164,7 @@ class AuthenticMap { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     this.kmap.addLayer(this.locationLayer.layer); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     this.kmap.addLayer(this.selectPointLayer.layer); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     this.addMapSingerClick(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    const demLayer = new TileLayer({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      source: new XYZ({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        url: 'https://api.maptiler.com/tiles/terrain-rgb/{z}/{x}/{y}.png?key=pk.eyJ1IjoiZ3VvemhlbnNodSIsImEiOiJjbTdyYWVmcmYxNGQ3MmpvaGJyejJiMDZpIn0.NQ-ey98NqQH1zmpe9ky9XQ', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        crossOrigin: 'anonymous' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    this.kmap.addLayer(demLayer); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-// **获取高程数据** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-async fetchElevationData(coordinates) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  const MAPBOX_TOKEN = 'pk.eyJ1IjoiZ3VvemhlbnNodSIsImEiOiJjbTdyYWVmcmYxNGQ3MmpvaGJyejJiMDZpIn0.NQ-ey98NqQH1zmpe9ky9XQ'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  const elevationData = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  for (let i = 0; i < coordinates.length; i++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    const [lon, lat] = coordinates[i]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    // const url = `https://api.mapbox.com/v4/mapbox.terrain-rgb/${lon},${lat}.json?access_token=${MAPBOX_TOKEN}`; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    const url = `https://api.mapbox.com/v4/mapbox.terrain-rgb/tilequery/${-74.5},${40}.json?access_token=${ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      MAPBOX_TOKEN 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    }` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      const response = await fetch(url); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      const data = await response.json(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      if (data.elevation) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        elevationData.push(data.elevation); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        elevationData.push(0); // 失败时默认高程 0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } catch (error) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      console.error("获取高程数据失败:", error); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      elevationData.push(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  return elevationData; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-// **计算斜面面积** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-calculateSlopeArea(coordinates, elevationData) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  let totalArea = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  for (let i = 0; i < coordinates.length - 1; i++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    const p1 = coordinates[i]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    const p2 = coordinates[i + 1]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    const dx = p2[0] - p1[0]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    const dy = p2[1] - p1[1]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    const dz = elevationData[i + 1] - elevationData[i]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    const baseLength = Math.sqrt(dx * dx + dy * dy); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    const slopedLength = Math.sqrt(baseLength * baseLength + dz * dz); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    totalArea += slopedLength * baseLength * 0.5; // 三角形面积 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  return totalArea; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   fit(geometriesWkt){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     let geometries = [] 
			 |