管道基础大数据平台系统开发-【CS】-ExportMap
1
13693261870
2023-08-29 f0586817d86bb5b86efce42230e872fd9a254d69
ExportMap/cs/Tools.cs
@@ -6,6 +6,7 @@
using System.Configuration;
using System.Data.Common;
using System.Diagnostics;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Net;
@@ -16,7 +17,7 @@
using System.Runtime.Serialization.Formatters.Binary;
using System.Security.AccessControl;
using System.Security.Principal;
using System.Web;
using System.Web.WebSockets;
namespace ExportMap.cs
{
@@ -197,7 +198,7 @@
        /// <returns>执行结果或出错信息</returns>
        public static string ExecCmd(SysTask task, List<string> list, bool isOut = false)
        {
            string str = null;
            string str;
            try
            {
                Process p = new Process();
@@ -304,7 +305,58 @@
                if (p != null)
                {
                    p.Close();
                    p = null;
                }
            }
            return str;
        }
        /// <summary>
        /// 执行命令
        /// </summary>
        public static string ExecCmd(List<string> list, ref string rs)
        {
            string str = null;
            Process p = null;
            try
            {
                p = new Process();
                p.StartInfo.FileName = "cmd.exe";
                p.StartInfo.UseShellExecute = false;
                p.StartInfo.CreateNoWindow = true;
                p.StartInfo.RedirectStandardInput = true;
                p.StartInfo.RedirectStandardOutput = true;
                p.StartInfo.RedirectStandardError = true;
                p.Start();
                StreamWriter si = p.StandardInput;
                StreamReader so = p.StandardOutput;
                StreamReader se = p.StandardError;
                LogOut.Info("cmd = " + string.Join(",", list));
                si.AutoFlush = true;
                foreach (string cmd in list)
                {
                    si.WriteLine(cmd);
                }
                si.WriteLine("exit");
                rs = so.ReadToEnd();
                str = se.ReadToEnd();
                se.Close();
                so.Close();
                si.Close();
            }
            catch (Exception ex)
            {
                LogOut.Error(ex.Message + "\r\n" + ex.StackTrace);
                str = ex.Message;
            }
            finally
            {
                if (p != null)
                {
                    p.Close();
                }
            }
            return str;
@@ -345,6 +397,30 @@
        }
        /// <summary>
        /// 获取EPSG代码
        /// </summary>
        public static string GetEPSG(string file)
        {
            string gdalPath = GetSetting("gdalPath");
            string cmd = string.Format("{0}\\gdalsrsinfo.exe \"{1}\" -o epsg", gdalPath, file);
            string rs = null;
            string ostr = ExecCmd(new List<string> { cmd }, ref rs);
            if (string.IsNullOrEmpty(rs)) return null;
            string[] strs = rs.Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries);
            foreach (string str in strs)
            {
                if (str.Contains("EPSG:"))
                {
                    return str;
                }
            }
            return null;
        }
        /// <summary>
        /// 设置单体模型参数
        /// </summary>
        public static void SetIsModel(XYZArgs args, List<SysMeta> list)