From fde8e3bedaf5f883f38c3a0ec33d3c6a8748d1c9 Mon Sep 17 00:00:00 2001
From: suerprisePlus <15810472099@163.com>
Date: 星期五, 21 六月 2024 18:02:44 +0800
Subject: [PATCH] wfs 范围查询

---
 src/assets/js/map/mapView.js |  167 +++++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 160 insertions(+), 7 deletions(-)

diff --git a/src/assets/js/map/mapView.js b/src/assets/js/map/mapView.js
index a73a0d2..cb1b052 100644
--- a/src/assets/js/map/mapView.js
+++ b/src/assets/js/map/mapView.js
@@ -1,6 +1,12 @@
+import axios from "axios";
+import mapConfig from "./mapConfig";
 import mapServer from "./mapServer";
+import modelLayer from "./modelLayer";
+import wfsConfig from "./wfsConfig";
+import mapInfo from "./mapInfo";
 
 const mapViewer = {
+  configTooles: null,
   initMap() {
     window.earthCtrl = new SmartEarth.EarthCtrl("sdkContainer", {
       // 闅愯棌榛樿搴曞浘
@@ -14,18 +20,165 @@
     Viewer.scene.globe.baseColor = Cesium.Color.fromCssColorString("#A9A9A9"); //璁剧疆鍦扮悆棰滆壊
     // 娓呯┖榛樿搴曞浘
     Viewer.imageryLayers.removeAll();
-   
+
     mapServer.addServer({
       sourceType: "arcgis",
       url: "https://services.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer"
     });
-   
-    
-    // mapServer.addServer({
-    //   sourceType: "geoserver",
-    //   url: "https://cim.smartearth.cn/geoserver/PolygonFeature/ows",
-    //   layer: "PolygonFeature:GeoEntity"
+    // earthCtrl.factory.createTerrainLayer({
+    //   sourceType: "ctb",
+    //   url: "https://tiles1.geovisearth.com/base/v1/terrain?token=486dac3bec56d7d7c2a581c150be2bd937462f1e8f3bc9c78b5658b396122405"
     // });
+
+    mapServer.addServer({
+      sourceType: "tms",
+      url: "http://192.168.11.41:9001/gisserver/tmsserver/SubicBayArea"
+    });
+    mapInfo.setEntityQueryInput();
+
+    const url =
+      "http://103.135.160.14:9038/gisserver/wfsserver/SubicBayAreaVector_wfs?version=1.1.0&request=GetFeature&format=json&typename=GeoEntity";
+    const areaBox =
+      "120.28915940000012 14.809144082000034 120.28915940000012 14.837205054000039 120.31165600000003 14.837205054000039 120.31165600000003 14.809144082000034 120.28915940000012 14.809144082000034";
+
+    Cesium.GeoJsonDataSource.load(url, {
+      stroke: Cesium.Color.fromCssColorString("#FFF0F5"), //澶氳竟褰㈡垨绾跨殑棰滆壊
+      fill: Cesium.Color.fromCssColorString("#FFF0F5"), //澶氳竟褰㈡垨绾跨殑棰滆壊
+      strokeWidth: 1, //澶氳竟褰㈡垨绾� 瀹藉害
+      clampToGround: true //澶氳竟褰㈡垨绾� 鍥哄畾鍦ㄥ湴闈笂true/false
+    }).then((dataSource) => {
+      const entities = dataSource.entities.values;
+      entities.map((item) => {
+        item.polygon.heightReference =
+          Cesium.HeightReference.RELATIVE_TO_GROUND; // 璐村湴
+        item.polygon.height = 0; // 璺濆湴楂樺害0绫�
+        item.polygon.extrudedHeightReference =
+          Cesium.HeightReference.RELATIVE_TO_GROUND; //鎷変几
+        item.polygon.extrudedHeight = item.properties["ELEVATION"]; // 鎷変几楂樺害
+
+        var polyPositions = item.polygon.hierarchy.getValue().positions;
+        var polyCenter = Cesium.BoundingSphere.fromPoints(polyPositions).center; //涓績鐐�
+        polyCenter = Cesium.Ellipsoid.WGS84.scaleToGeodeticSurface(polyCenter);
+        item.position = polyCenter;
+
+        item.label = {
+          //鏂囧瓧鏍囩
+          text: "",
+          font: "500 20px Helvetica", // 15pt monospace
+          scale: 1,
+          style: Cesium.LabelStyle.FILL,
+          fillColor: Cesium.Color.WHITE,
+
+          eyeOffset: new Cesium.Cartesian3(
+            0.0,
+            item.polygon.extrudedHeight + 1,
+            -(item.polygon.extrudedHeight + 1)
+          ),
+
+          verticalOrigin: Cesium.VerticalOrigin.BOTTOM,
+          showBackground: true,
+          distanceDisplayCondition: new Cesium.DistanceDisplayCondition(50.0, 500.0),
+          // heightReference: Cesium.HeightReference.CLAMP_TO_GROUND,
+          // disableDepthTestDistance: Number.POSITIVE_INFINITY,
+         backgroundColor: new Cesium.Color(26 / 255, 196 / 255, 228 / 255, 1.0)   //鑳屾櫙椤旇壊
+        };
+      });
+      Viewer.dataSources.add(dataSource);
+      this.setQueryProperty(dataSource, "鍐涗簨鐩爣");
+      this.getQuery(url, areaBox, dataSource);
+    });
+  },
+  setQueryProperty(layer, property) {
+    const entity = layer.entities.values;
+    entity.filter((rs) => {
+      if (rs.properties["TargetType"]._value == property) {
+        rs.polygon.material = Cesium.Color.RED;
+        // 鏄剧ず鏂囧瓧鏍囩
+        rs.label.text = rs.properties["TYPE"];
+      }
+    });
+  },
+  getQuery(url, area, layer) {
+    axios
+      .get(url, {
+        params: {
+          version: "1.3.0",
+          request: "GetFeature",
+          typename: "GeoEntity",
+          propertyname: "*",
+          format: "json",
+          filter: `<ogc:Filter xmlns:ogc="http://www.opengis.net/ogc"><ogc:Intersects><ogc:PropertyName /><gml:Polygon xmlns:gml="http://www.opengis.net/gml" srsName="EPSG:4326"><gml:exterior><gml:LinearRing><gml:posList>${area}</gml:posList></gml:LinearRing></gml:exterior></gml:Polygon></ogc:Intersects></ogc:Filter>`
+        }
+      })
+      .then((res) => {
+        const obj = res.data.features;
+
+        // const dataSource = Viewer.dataSources._dataSources.filter((item) => {
+        //   if (item.name == layer) {
+        //     return item;
+        //   }
+        // });
+        const entity = layer.entities.values;
+        // const entity = dataSource[0].entities.values;
+        obj.filter((item) => {
+          entity.filter((rs) => {
+            if (item.id == rs.id) {
+              rs.polygon.material = Cesium.Color.CORNFLOWERBLUE;
+            }
+          });
+        });
+      });
+  },
+  getLayerModelCount(res) {
+    axios
+      .post(
+        res.url,
+        {
+          dbid: res.dbid,
+          geometry: res.geometry,
+          layerid: res.layerid,
+          returnCountOnly: res.containCount,
+          token: res.token
+        },
+        {
+          headers: {
+            Authorization: res.token,
+            "Content-Type": res.contentType
+          }
+        }
+      )
+      .then((response) => {
+        if (response.status === 200) {
+          this.getLayerModelList(res, response.data.data);
+        } else {
+          this.getLayerModelList(res, 200);
+        }
+      });
+  },
+  getLayerModelList(res, count) {
+    axios
+      .post(
+        res.url,
+        {
+          dbid: res.dbid,
+          geometry: res.geometry,
+          layerid: res.layerid,
+          containCount: res.containCount,
+          token: res.token,
+          count: count,
+          start: 1,
+          outfields: res.outfields
+        },
+        {
+          headers: {
+            Authorization: res.token,
+            "Content-Type": res.contentType
+          }
+        }
+      )
+      .then((response) => {
+        console.log("List", response);
+      });
   }
 };
 export default mapViewer;

--
Gitblit v1.9.3