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