From 54d918939c9f05e7588beb571cb49675433fc93d Mon Sep 17 00:00:00 2001
From: 13693261870 <252740454@qq.com>
Date: 星期三, 15 三月 2023 17:04:19 +0800
Subject: [PATCH] 1

---
 ExportMap/cs/ExportUtil.cs                 |    7 -
 .gitignore                                 |    1 
 ExportMap/cs/XYZUtils.cs                   |   42 ++++++++-----
 ExportMap/Controllers/ConvertController.cs |   38 ++++++++++++
 ExportMap/cs/ConvertUtils.cs               |    2 
 ExportMap/cs/Tool.cs                       |   21 +++++-
 ExportMap/export.html                      |   12 +++
 7 files changed, 95 insertions(+), 28 deletions(-)

diff --git a/.gitignore b/.gitignore
index a70cb26..36676db 100644
--- a/.gitignore
+++ b/.gitignore
@@ -21,3 +21,4 @@
 /ExportMap/Sources/log.txt
 /ExportMap/Sources/shps
 /ExportMap/App_Data
+/ExportMap/temp
diff --git a/ExportMap/Controllers/ConvertController.cs b/ExportMap/Controllers/ConvertController.cs
index fecb90e..bf239e8 100644
--- a/ExportMap/Controllers/ConvertController.cs
+++ b/ExportMap/Controllers/ConvertController.cs
@@ -11,6 +11,9 @@
 {
     public class ConvertController : ApiController
     {
+        /// <summary>
+        /// 杞崲涓篢ileset
+        /// </summary>
         [HttpPost]
         public ResponseMsg<int> ToTileset([FromBody]XYZArgs args)
         {
@@ -18,7 +21,7 @@
             {
                 if (null == args || null == args.ids || args.ids.Count == 0)
                 {
-                    return ResponseMsg<int>.fail("璇疯緭鍏ュ厓鏁版嵁id");
+                    return ResponseMsg<int>.fail("璇疯緭鍏ュ厓鏁版嵁ID");
                 }
 
                 int count = ConvertUtils.Convert(args.ids);
@@ -31,5 +34,38 @@
                 return ResponseMsg<int>.fail(ex.Message);
             }
         }
+
+        /// <summary>
+        /// 杞崲涓虹摝鐗�
+        /// </summary>
+        [HttpPost]
+        public ResponseMsg<int> ToTiles([FromBody]XYZArgs args)
+        {
+            try
+            {
+                if (null == args || null == args.ids || args.ids.Count == 0)
+                {
+                    return ResponseMsg<int>.fail("璇疯緭鍏ュ厓鏁版嵁ID");
+                }
+                if (args.min < 0 || args.max > 20 || string.IsNullOrWhiteSpace(args.dircode))
+                {
+                    return ResponseMsg<int>.fail("杈撳叆鐨勫弬鏁版湁璇�");
+                }
+
+                string err = null;
+                int count = XYZUtils.Generate(args, ref err);
+                if (0 == count)
+                {
+                    return ResponseMsg<int>.fail(null == err ? "鐢熸垚澶辫触" : err);
+                }
+
+                return ResponseMsg<int>.success("鎴愬姛", count);
+            }
+            catch (Exception ex)
+            {
+                LogOut.Error(ex.StackTrace);
+                return ResponseMsg<int>.fail(ex.Message);
+            }
+        }
     }
 }
diff --git a/ExportMap/cs/ConvertUtils.cs b/ExportMap/cs/ConvertUtils.cs
index 4812990..4bfd0a6 100644
--- a/ExportMap/cs/ConvertUtils.cs
+++ b/ExportMap/cs/ConvertUtils.cs
@@ -40,7 +40,7 @@
                 string modelFile = Path.Combine(uploadFolder, meta.path);
                 if (!File.Exists(modelFile)) continue;
 
-                string configFile = Path.Combine(Tool.BaseDir, ExportUtil.DateStr + ".json");
+                string configFile = Path.Combine(Tool.TempDir, ExportUtil.DateStr + ".json");
                 string outPath = Path.Combine(tilesFolder, meta.type, meta.id.ToString());
                 string jsonFile = Path.Combine(outPath, "tileset.json");
 
diff --git a/ExportMap/cs/ExportUtil.cs b/ExportMap/cs/ExportUtil.cs
index d8a6bac..1663669 100644
--- a/ExportMap/cs/ExportUtil.cs
+++ b/ExportMap/cs/ExportUtil.cs
@@ -141,14 +141,11 @@
             args.SetDefault();
             CreateTemplate(args);
 
-            string cmd = string.Format("python {0} -qgz {1} -qpt {2}", PyFile, qgz, args.qpt);
+            string cmd = string.Format("python \"{0}\" -qgz {1} -qpt {2}", PyFile, qgz, args.qpt);
             err = Tool.ExecCmd(cmd, true);
 
             string qptFile = Path.Combine(SourcesPath, args.qpt);
-            if (File.Exists(qptFile))
-            {
-                File.Delete(qptFile);
-            }
+            if (File.Exists(qptFile)) File.Delete(qptFile);
 
             string imgPath = Path.Combine(DownloadFolder, args.imgPath);
             bool flag = File.Exists(imgPath);
diff --git a/ExportMap/cs/Tool.cs b/ExportMap/cs/Tool.cs
index d997eb5..a365eea 100644
--- a/ExportMap/cs/Tool.cs
+++ b/ExportMap/cs/Tool.cs
@@ -23,6 +23,22 @@
         /// </summary>
         public static readonly string BaseDir = AppDomain.CurrentDomain.BaseDirectory;
 
+        private static string tempDir;
+
+        public static string TempDir
+        {
+            get
+            {
+                if (string.IsNullOrWhiteSpace(tempDir))
+                {
+                    tempDir = Path.Combine(BaseDir, "temp");
+                    if (!Directory.Exists(tempDir)) Directory.CreateDirectory(tempDir);
+                }
+
+                return tempDir;
+            }
+        }
+
         private static PostgreHelper _dbHelper;
 
         /// <summary>
@@ -162,10 +178,7 @@
 
                 LogOut.Info("cmd = " + cmd);
                 si.AutoFlush = true;
-                if (isPy)
-                {
-                    si.WriteLine("\"C:\\Program Files\\QGIS 3.16\\bin\\python-qgis-ltr.bat\"");
-                }
+                if (isPy) si.WriteLine("\"C:\\Program Files\\QGIS 3.16\\bin\\python-qgis-ltr.bat\"");
                 si.WriteLine(cmd);
                 si.WriteLine("exit");
 
diff --git a/ExportMap/cs/XYZUtils.cs b/ExportMap/cs/XYZUtils.cs
index e1b7875..e0816c4 100644
--- a/ExportMap/cs/XYZUtils.cs
+++ b/ExportMap/cs/XYZUtils.cs
@@ -11,7 +11,6 @@
 {
     public class XYZUtils
     {
-
         private static string pyFile;
 
         /// <summary>
@@ -49,27 +48,21 @@
         /// <returns>鏁版嵁鍙戝竷ID</returns>
         public static int Generate(XYZArgs args, ref string err)
         {
-            string tifFile = Path.Combine(ExportUtil.SourcesPath, ExportUtil.DateStr + ".txt");
+            string tifFile = Path.Combine(Tool.TempDir, ExportUtil.DateStr + ".txt");
             string xyzPath = Path.Combine(SGUtils.LFData, "2d\\tiles", args.id.ToString());
             if (!Directory.Exists(xyzPath)) Directory.CreateDirectory(xyzPath);
 
-            string cmd = string.Format("python {0} -qgz {1} -file {2} -out {3} -min {4} -max {5}", PyFile, Qgz, tifFile, xyzPath, args.min, args.max);
+            List<SysMeta> list = selectMetas(args.ids, "and type in ('tif', 'tiff', 'img')");
+            if (null == list || list.Count == 0) return 0;
+
+            WriteText(tifFile, list);
+
+            string cmd = string.Format("python \"{0}\" -qgz {1} -file \"{2}\" -out \"{3}\" -min {4} -max {5}", PyFile, Qgz, tifFile, xyzPath, args.min, args.max);
             err = Tool.ExecCmd(cmd, true);
 
+            if (File.Exists(tifFile)) File.Delete(tifFile);
+
             return args.id;
-        }
-
-        /// <summary>
-        /// 鏌ヨ鍏冩暟鎹�
-        /// </summary>
-        public static List<SysMeta> selectMetas(string dircode)
-        {
-            string sql = string.Format("select * from lf.sys_meta where dircode like '{0}%'", dircode);
-
-            DataTable dt = Tool.DBHelper.GetDataTable(sql);
-            List<SysMeta> list = ModelHandler.FillModel<SysMeta>(dt);
-
-            return list;
         }
 
         /// <summary>
@@ -83,5 +76,22 @@
 
             return list;
         }
+
+        /// <summary>
+        /// 鍐欐枃鏈枃浠�
+        /// </summary>
+        private static void WriteText(string file, List<SysMeta> list)
+        {
+            string uploadFolder = Tool.GetSetting("uploadFolder");
+
+            List<string> files = new List<string>();
+            foreach (SysMeta meta in list)
+            {
+                files.Add(Path.Combine(uploadFolder, meta.path));
+            }
+            string str = string.Join("\n", files);
+
+            File.WriteAllText(file, str);
+        }
     }
 }
diff --git a/ExportMap/export.html b/ExportMap/export.html
index c6cd708..36d2cb3 100644
--- a/ExportMap/export.html
+++ b/ExportMap/export.html
@@ -75,6 +75,15 @@
       });
     }
 
+    // 娴嬭瘯鍒囧浘
+    function convertXYZ() {
+      var data = { ids: [1526, 1527], id: 1, min: 8, max: 15, dircode: "000305" };
+      ajax("Convert/ToTiles", "POST", JSON.stringify(data), null, null, function (rs) {
+        alert("code = " + rs.code + ", msg = " + rs.msg + ", result = " + rs.result);
+        console.log(rs);
+      });
+    }
+
     // 娴嬭瘯Rvt
     function convert1() {
       var data = { ids: [1521] };
@@ -115,7 +124,8 @@
   <input type="button" value="鍑哄浘-1" onclick="exportMap1()" />
   <input type="button" value="鍑哄浘-2" onclick="exportMap2()" />
   <br /><br />
-
+  
+  <input type="button" value="娴嬭瘯鍒囧浘" onclick="convertXYZ();" />
   <input type="button" value="娴嬭瘯Rvt" onclick="convert1();" />
   <input type="button" value="娴嬭瘯Fbx" onclick="convert2();" />
   <input type="button" value="娴嬭瘯Ifc" onclick="convert3();" />

--
Gitblit v1.9.3