maxiaoxiao 10 mēneši atpakaļ
vecāks
revīzija
0722af051e
2 mainītis faili ar 27 papildinājumiem un 2 dzēšanām
  1. 14 0
      src/utils/MapHelper/help.js
  2. 13 2
      src/views/modelStretch/index.vue

+ 14 - 0
src/utils/MapHelper/help.js

@@ -0,0 +1,14 @@
+import * as turf from "@turf/turf";
+export function getCentroid(geojson, eindex) {
+    if (turf.getType(geojson) === "Feature") {
+        geojson = geojson.geometry;
+    }
+    if (turf.getType(geojson) === "Polygon") {
+        return turf.centroid(geojson).geometry.coordinates;
+    } else if (turf.getType(geojson) === "MultiPolygon") {
+        let polygon = turf.polygon(geojson.coordinates[eindex]);
+        return turf.centroid(polygon).geometry.coordinates;
+    } else {
+        throw new Error("Unsupported geometry type");
+    }
+}

+ 13 - 2
src/views/modelStretch/index.vue

@@ -78,6 +78,7 @@
 import range from "@/components/mapview/range.vue"; ///mapview/range
 import {} from "@/api/map";
 import parse from "wellknown";
+import { getCentroid } from "@/utils/MapHelper/help.js";
 let polygonids = [];
 let dataSources = {};
 export default {
@@ -109,7 +110,7 @@ export default {
         entities.forEach((entity, ei) => {
           if (height && entity.polygon) {
             entity.polygon.extrudedHeight = height;
-            let center = this.getCentroid(parse(item.geom), ei);
+            let center = getCentroid(parse(item.geom), ei);
             entity.position = Cesium.Cartesian3.fromDegrees(
               center[0],
               center[1],
@@ -165,7 +166,7 @@ export default {
                 entity.polygon.outlineColor = Cesium.Color.BLACK;
                 entity.polygon.outlineWidth = 1.0;
                 // if (!addlabel) {
-                let center = this.getCentroid(geojson, ei);
+                let center = getCentroid(geojson, ei);
 
                 var polycenter = Cesium.Cartesian3.fromDegrees(
                   center[0],
@@ -222,6 +223,16 @@ export default {
       // const element = that.loutiInfo;
       // //基础高度(地形高度)加入地形后可删除
       let jcgd = 0;
+      // sampleTerrainMostDetailed
+      let center = getCentroid(geojson, 0);
+      console.log(center, "-center");
+      var polycenter = [Cesium.Cartographic.fromDegrees(center[0], center[1])];
+      Cesium.sampleTerrain(viewer.terrainProvider, 11, polycenter).then(
+        (updatedPositions) => {
+          jcgd = updatedPositions[0].height;
+          console.log("))", jcgd);
+        }
+      );
       // //地块编码
       // let bm = element.data.find((c) => c.label == "LANDNO");
       // if (bm && bm.value) {