ExportMap/cs/SGUtils.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ExportMap/cs/Tool.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
ExportMap/cs/SGUtils.cs
@@ -4,8 +4,10 @@ using System.Collections.Generic; using System.Configuration; using System.Data; using System.Diagnostics; using System.IO; using System.Linq; using System.Threading; using System.Web; namespace ExportMap.cs @@ -68,12 +70,19 @@ int maxId = GetMaxId(); RomoveNoneFiles(list); if (list.Count == 0) return 0; LinkFiles(list); for (int i = 0; i < 25; i++) { Thread.Sleep(3000); List<SpatialItem> items = SelectItems(maxId); if (null == items || items.Count == 0) continue; List<SpatialItem> items = SelectItems(maxId); if (null == items || items.Count == 0) return 0; // } return 0; } @@ -135,5 +144,42 @@ i++; } } /// <summary> /// 链接文件 /// </summary> private string LinkFiles(List<SysMeta> metas) { string uploadFolder = Tool.GetSetting("uploadFolder"); List<string> list = new List<string>(); foreach (SysMeta meta in metas) { switch (meta.type) { case "3dml": string d3ml = Path.Combine(uploadFolder, meta.path); break; case "mpt": string mpt = Path.Combine(uploadFolder, meta.path); string midx = Path.Combine(uploadFolder, meta.path.Replace(".mpt", ".midx")); string strmi = Path.Combine(uploadFolder, meta.path.Replace(".mpt", ".strmi")); break; } } //foreach (string file in list) //{ // string fileName = Path.GetFileName(file); // string path = Path.Combine(target, fileName); // string text = string.Format("mklink \"{0}\" \"{1}\"", path, file); // /H // p.StandardInput.WriteLine(text); //} string str = Tool.ExecCmd(list); return str; } } } ExportMap/cs/Tool.cs
@@ -160,6 +160,28 @@ /// <returns>执行结果或出错信息</returns> public static String ExecCmd(string cmd, bool isPy = false) { List<string> list = new List<string>(); if (isPy) { list.Add("cd \"C:\\Program Files\\QGIS 3.16\\apps\\Python37\""); list.Add("\"C:\\Program Files\\QGIS 3.16\\bin\\qgis_process-qgis-ltr.bat\""); //list.Add("\"C:\\Program Files\\QGIS 3.16\\bin\\python-qgis-ltr.bat\""); //list.Add("exit()"); } list.Add(cmd); string str = ExecCmd(list); return str; } /// <summary> /// 执行CMD /// </summary> /// <param name="list">命令集合</param> /// <returns>执行结果或出错信息</returns> public static string ExecCmd(List<string> list) { string str = null; try { @@ -167,6 +189,7 @@ p.StartInfo.FileName = "cmd.exe"; p.StartInfo.UseShellExecute = false; p.StartInfo.CreateNoWindow = true; //p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; p.StartInfo.RedirectStandardInput = true; p.StartInfo.RedirectStandardOutput = true; p.StartInfo.RedirectStandardError = true; @@ -176,16 +199,12 @@ StreamReader so = p.StandardOutput; // 标准输出流 StreamReader se = p.StandardError; // 标准错误流 LogOut.Info("cmd = " + cmd); LogOut.Info("cmd = " + string.Join(",", list)); si.AutoFlush = true; if (isPy) foreach (string cmd in list) { si.WriteLine("cd \"C:\\Program Files\\QGIS 3.16\\apps\\Python37\""); si.WriteLine("\"C:\\Program Files\\QGIS 3.16\\bin\\qgis_process-qgis-ltr.bat\""); //si.WriteLine("\"C:\\Program Files\\QGIS 3.16\\bin\\python-qgis-ltr.bat\""); //si.WriteLine("exit()"); si.WriteLine(cmd); } si.WriteLine(cmd); si.WriteLine("exit"); string info = so.ReadToEnd();