管道基础大数据平台系统开发-【CS】-ExportMap
1
13693261870
2023-03-17 b00121d9909d4e1d3233fe2161ca7fe1992051d5
1
已修改2个文件
83 ■■■■ 文件已修改
ExportMap/cs/SGUtils.cs 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ExportMap/cs/Tool.cs 33 ●●●● 补丁 | 查看 | 原始文档 | 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();