From c7d2ead2a09345cdf83a7036418b96f90a11fa86 Mon Sep 17 00:00:00 2001
From: 13693261870 <252740454@qq.com>
Date: 星期一, 22 一月 2024 16:15:45 +0800
Subject: [PATCH] 集成osgblab

---
 TEWin/FrmWin.cs                                   |   33 +++--
 TEWin/Resources/SpatialQuery/SpaceStatistics.html |  286 +++++++++++++++++++++++++++++++++++++++++++++++
 TEWin/app.config                                  |    3 
 JiangSu/App_Data/js.db                            |    0 
 4 files changed, 307 insertions(+), 15 deletions(-)

diff --git a/JiangSu/App_Data/js.db b/JiangSu/App_Data/js.db
index 695369f..163b266 100644
--- a/JiangSu/App_Data/js.db
+++ b/JiangSu/App_Data/js.db
Binary files differ
diff --git a/TEWin/FrmWin.cs b/TEWin/FrmWin.cs
index 67f675e..6f74974 100644
--- a/TEWin/FrmWin.cs
+++ b/TEWin/FrmWin.cs
@@ -24,21 +24,21 @@
 
         FrmTool tool;
 
-        string mainUrl;
+        bool isAngle;
+
+        int angleCount;
+
+        double angleSize;
 
         public SGWorld71 SG;
 
-        private bool isAngle;
+        ITerrainLabel71 angleLabel;
 
-        private int angleCount;
+        ITerrainPolyline71 angleLine;
 
-        private double angleSize;
+        string angleGroupName = "瑙掗噺绠�";
 
-        private ITerrainLabel71 angleLabel;
-
-        private ITerrainPolyline71 angleLine;
-
-        private string angleGroupName = "瑙掗噺绠�";
+        string mainUrl = Application.StartupPath;
 
         public FrmWin()
         {
@@ -52,10 +52,8 @@
             try
             {
                 LogOut.Info("寮�濮嬭繍琛�..");
-                mainUrl = Application.StartupPath;
                 bool isTest = "1" == ConfigurationManager.AppSettings["isTest"];
 
-                //this.fly = isTest ? ConfigurationManager.AppSettings["testFly"] : Path.Combine(Application.StartupPath, "Resources\\sample.fly");
                 this.fly = ConfigurationManager.AppSettings["fly"] ?? ConfigurationManager.AppSettings["testFly"];
                 if (!this.fly.Contains(":\\")) this.fly = Path.Combine(Application.StartupPath, this.fly);
                 if (!File.Exists(this.fly))
@@ -286,7 +284,7 @@
             return str;
         }
 
-        #region 瑙掗噺绠�+绌洪棿缁熻+绌洪棿鍒嗘瀽+osgblab
+        #region 瑙掗噺绠�
         private void AngleMeasurement()
         {
             if (isAngle)
@@ -470,6 +468,14 @@
 
             return true;
         }
+        #endregion
+
+        private string GetAbsolutePath(string key)
+        {
+            string str = ConfigurationManager.AppSettings[key];
+
+            return str.Contains(":\\") ? str : Path.Combine(Application.StartupPath, str);
+        }
 
         private void SpaceStatistics()
         {
@@ -484,8 +490,7 @@
         private void InvokeOsgbLab()
         {
             ExecCmd(new List<string> { "taskkill /f /t /im OSGBLab.exe" });
-            RunExe(ConfigurationManager.AppSettings["osgblabPath"], null, false);
+            RunExe(GetAbsolutePath("osgblabPath"), null, false);
         }
-        #endregion
     }
 }
diff --git a/TEWin/Resources/SpatialQuery/SpaceStatistics.html b/TEWin/Resources/SpatialQuery/SpaceStatistics.html
new file mode 100644
index 0000000..427cb62
--- /dev/null
+++ b/TEWin/Resources/SpatialQuery/SpaceStatistics.html
@@ -0,0 +1,286 @@
+锘�<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+  <title>绌洪棿缁熻</title>
+  <meta http-equiv="Expires" content="0" />
+  <meta http-equiv="Cache" content="no-cache" />
+  <meta http-equiv="Pragma" content="no-cache" />
+  <meta http-equiv="Cache-control" content="no-cache" />
+  <!--<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />-->
+  <meta http-equiv="X-UA-Compatible" content="IE=9" />
+  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+  <script src="../Jquery/jquery.min.js"></script>
+  <script src="../ToolsCommon71.js"></script>
+  <link href="../Style.css" rel="StyleSheet" type="text/css" />
+  <style>
+    html, body {
+      margin: 0;
+      padding: 0;
+      height: 100%;
+      width: 100%;
+    }
+  </style>
+  <script>
+    var gAsync = true;
+    var gDebug = false;
+    var groupName = "绌洪棿缁熻";
+    var layerName = "JMD_1002";
+
+    var rs = {
+      count: 0, // 瑕佺礌鎬讳釜鏁�
+
+      lineLen: 0, // 绾垮璞¢暱搴�
+
+      polyArea: 0, // 澶氳竟褰㈤潰绉�
+
+      volume: 0, // 涓夌淮浣撲綋绉�
+
+      minHeight: 0, // 涓夌淮浣撴渶浣庨珮搴�
+
+      maxHeight: 0, // 涓夌淮浣撴渶楂橀珮搴�
+
+      reset: function () {
+        //SGWorld.ProjectTree.EnableRedraw(0);
+        var layers = getFeatureLayers();
+        for (var i in layers) {
+          try{
+            SGWorld.ProjectTree.GetObject(layers[i]).Refresh();
+          } catch (e) {
+            console.log(e);
+          }
+        }
+        //SGWorld.ProjectTree.EnableRedraw(1);
+
+        this.count = 0;
+        this.lineLen = 0;
+        this.polyArea = 0;
+        this.volume = 0;
+        this.minHeight = 0;
+        this.maxHeight = 0;
+
+        return this;
+      },
+
+      format: function () {
+        this.lineLen = parseFloat(this.lineLen.toFixed(2));
+        this.polyArea = parseFloat(this.polyArea.toFixed(2));
+        this.volume = parseFloat(this.volume.toFixed(2));
+        this.minHeight = parseFloat(this.minHeight.toFixed(2));
+        this.maxHeight = parseFloat(this.maxHeight.toFixed(2));
+
+        return this;
+      },
+
+      setVal: function () {
+        $("#totalNum").html("" + this.count);
+        $("#lineLen").html("" + this.lineLen);
+        $("#polyArea").html("" + this.polyArea);
+        $("#volume").html("" + this.volume);
+        $("#minHeight").html("" + this.minHeight);
+        $("#maxHeight").html("" + this.maxHeight);
+      }
+    };
+
+    $(function () {
+      init();
+    });
+
+    function init() {
+      window.ondragstart = function () { return false; }
+    }
+
+    function getGroupId() {
+      var gid = SGWorld.ProjectTree.FindItem(groupName);
+      if (gid) return gid;
+
+      return SGWorld.ProjectTree.CreateLockedGroup(groupName);
+    }
+
+    function delGroup() {
+      try {
+        var gid = SGWorld.ProjectTree.FindItem(groupName);
+        if (gid) SGWorld.ProjectTree.DeleteItem(gid);
+      }
+      catch (e) { }
+    }
+
+    function getFeatureLayers() {
+      var layers = [];
+      BuildObjectsList(SGWorld.ProjectTree.RootID, layers, 36);
+
+      return layers;
+    }
+
+    function clear(e) {
+      rs.reset();
+      rs.setVal();
+      delGroup();
+    }
+
+    function startQuery(e) {
+      this.clear();
+      if (drawing.drawingEditMode != -1) {
+        drawing.abort();
+        return;
+      }
+
+      SGWorld.Window.ShowMessageBarText("鎸� Esc 閿��鍑�");
+      drawing.drawPolygon({
+        style: {
+          lineColor: "#ff0000",
+          lineWidth: 3,
+        },
+        altitudeMethod: 2, // use 2 of "OnTerrain" and 3 for "Absolute" (above mean sea level)
+        deleteWhenExit: false, // 
+        parentGoupID: getGroupId(),
+        saveOnExit: true, // save the polyline/polygon when exiting the project. Default = false
+        onFinish: DrawPoly,
+        onAbort: ResetAsync
+      });
+    }
+
+    function DrawPoly(geometry, type, altitudeType) {
+      var layers = getFeatureLayers();
+      for (var i in layers) {
+        try {
+          var layer = SGWorld.ProjectTree.GetObject(layers[i]);
+          var fs = layer.ExecuteSpatialQuery(geometry, 1); // 1-IT_INTERSECT, 2-IT_WITHIN
+          if (fs.Count == 0) continue;
+
+          rs.count += fs.Count;
+          if (layer.GeometryType == 1) { // LGT_POLYLINE
+            for (var j = 0; j < fs.Count; j++) {
+              var f = fs.Item(j);
+              rs.lineLen += f.Geometry.Length;
+            }
+          }
+          if (layer.GeometryType == 2) { // LGT_POLYGON
+            var flag = layerName == layer.TreeItem.Name;
+            for (var j = 0; j < fs.Count; j++) {
+              var f = fs.Item(j);
+              rs.polyArea += f.Geometry.Area;
+
+              if (flag) {
+                var maxHeight = f.FeatureAttributes.GetFeatureAttribute("MaxHeight").Value;
+                var minHeight = f.FeatureAttributes.GetFeatureAttribute("MinHeight").Value;
+                var height = maxHeight - minHeight;
+
+                rs.volume += f.Geometry.Area * height;
+                if (rs.maxHeight < height) rs.maxHeight = height;
+                if (!rs.minHeight || rs.minHeight > height) rs.minHeight = height;
+              }
+            }
+          }
+          for (var j = 0; j < fs.Count; j++) {
+            fs.Item(j).Tint.abgrColor = 0xff800080;
+          }
+        } catch (e) {
+          console.log(e);
+          //layers.splice(i, 1);
+        }
+      }
+
+      rs.format();
+      rs.setVal();
+    }
+
+    function ResetAsync(FirstTime, FromMouseInputMode) {
+      if (gAsync)
+        setTimeout(function () { Reset(FirstTime, FromMouseInputMode); }, 100);
+      else
+        Reset(FirstTime, FromMouseInputMode);
+    }
+
+    function Reset(FirstTime, FromMouseInputMode) {
+      try {
+        if (gPolyObj != null) SGWorld.Creator.DeleteObject(gPolyObj.ID);
+      } catch (e) { }
+
+      gPolyObj = null;
+      SGWorld.ProjectTree.EnableRedraw(1);
+      SGWorld.Window.HideMessageBarText();
+      bInEdit = false;
+
+      if (FirstTime != 1 && FromMouseInputMode == 0) SGWorld.Window.SetInputMode(0);
+    }
+  </script>
+</head>
+<body class="hideUntillTranslated">
+  <table style="width: 100%; border: 0;" cellspacing="0" cellpadding="2">
+    <tr>
+      <td class="ToolTopArea" id="TopAreaTD" width="100%" valign="middle">
+        <table border="0" width="100%" cellspacing="0" cellpadding="0">
+          <tr>
+            <td width="55px">
+              <img style="margin-left: 5px;" src="img/ToolIcon.png" alt="" /></td>
+            <td id="TitleTD" align="center" class="s12w i18n">绌洪棿缁熻</td>
+            <td align="right" id="CloseHelpTd">
+              <img style="margin-right: 5px; cursor: pointer;" alt="" src="../CommonImg/help.png" border="0" class="i18n" alt="help" title="甯姪" onclick="DisplayHelpPopup6(SGLang.i18nFile('help.html'),SGLang.i18n('help'))" /></td>
+          </tr>
+        </table>
+      </td>
+    </tr>
+    <tr>
+      <td class="ToolTopSeperator"></td>
+    </tr>
+    <tr class="s8">
+      <td>
+        <table class="PropertiesSheet" cellspacing="0" cellpadding="2">
+          <tr class='TableOtherLine'>
+            <td class="s8b">
+              <label for="Mode" class="i18n">瑕佺礌鎬讳釜鏁�</label>
+            </td>
+            <td>&nbsp;<span id="totalNum">0</span> 涓�
+            </td>
+          </tr>
+          <tr>
+            <td class="s8b">
+              <label for="Mode" class="i18n">绾垮璞¢暱搴�</label>
+            </td>
+            <td>&nbsp;<span id="lineLen">0</span> 绫�
+            </td>
+          </tr>
+          <tr>
+            <td class="s8b">
+              <label for="Mode" class="i18n">澶氳竟褰㈤潰绉�</label>
+            </td>
+            <td>&nbsp;<span id="polyArea">0</span> 骞虫柟绫�
+            </td>
+          </tr>
+          <tr>
+            <td class="s8b">
+              <label for="Mode" class="i18n">涓夌淮浣撲綋绉�</label>
+            </td>
+            <td>&nbsp;<span id="volume">0</span> 绔嬫柟绫�
+            </td>
+          </tr>
+          <tr>
+            <td class="s8b">
+              <label for="Mode" class="i18n">涓夌淮浣撻珮搴�</label>
+            </td>
+            <td>&nbsp;鏈�浣� <span id="minHeight">0</span> 绫筹紝鏈�楂� <span id="maxHeight">0</span> 绫�
+            </td>
+          </tr>
+        </table>
+      </td>
+    </tr>
+    <tr class="s8">
+      <td align="center" class="ToolButtonsArea">
+        <div id="SurfaceDiv">
+          <button id="clipboardButton" class="MenuButton" onclick="clear(this);" style="cursor: pointer;">
+            <img src="img/delete.png" /><br />
+            <span class="i18n">娓� 闄�</span></button>
+          <button id="DrawPlaneBtn" class="MenuButton MenuButtonLast" onclick="startQuery(this);" style="cursor: pointer;">
+            <img src="../commonImg/polygon.png" /><br />
+            <span class="i18n">寮�濮嬬粺璁�</span></button>
+        </div>
+      </td>
+    </tr>
+    <tr>
+      <td>
+        <object id="SGWorld" style="display:none" classid="CLSID:3a4f9199-65a8-11d5-85c1-0001023952c1"></object>
+      </td>
+    </tr>
+  </table>
+</body>
+</html>
diff --git a/TEWin/app.config b/TEWin/app.config
index 791c1b4..0403c18 100644
--- a/TEWin/app.config
+++ b/TEWin/app.config
@@ -6,7 +6,8 @@
     <add key="testFly" value="E:\data\opting\2022.fly"/>
     <!--<add key="tePath" value="C:\Program Files\Skyline\TerraExplorer Pro"/>-->
     <add key="tePath" value="C:\Program Files\SmartEarth\TerraExplorer Pro"/>
-    <add key="osgblabPath" value="C:\Program Files\OSGBLab\Trial\OSGBLab.exe"/>
+    <!--<add key="osgblabPath" value="C:\Program Files\OSGBLab\Trial\OSGBLab.exe"/>-->
+    <add key="osgblabPath" value="OSGBLab\Trial\OSGBLab.exe"/>
   </appSettings>
   <startup>
     <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>

--
Gitblit v1.9.3