管道基础大数据平台系统开发-【CS】-ExportMap
1
13693261870
2023-03-13 2f38d9ee5f607a1078258a8575acf9600b9e8595
1
已修改4个文件
156 ■■■■■ 文件已修改
ExportMap/Sources/说明.txt 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ExportMap/Web.config 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ExportMap/cs/ExportUtil.cs 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ExportMap/cs/Tool.cs 72 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ExportMap/Sources/˵Ã÷.txt
@@ -1,6 +1,9 @@
<qgis._core.QgsLayoutItemManualTable object at 0x000002B94F08C948>
<qgis._core.QgsLayout object at 0x000002271A92A678>
<qgis._core.QgsLayoutItemMap object at 0x000002342B4BE828>
================================================================================ SG帮助
http://127.0.0.1/SG/WebHelp/index.htm#t=Loading_3DML_Exposed_as_3D_Tiles_in_Cesium_Clients.htm
http://www.skylineglobe.com/SG/b3dm/1726297/tileset.json
http://www.skylineglobe.com/SG/Imagery
http://www.skylineglobe.com/SG/Elevation
================================================================================ QGIS环境配置
https://blog.csdn.net/Scarlett2025/article/details/128967607
ExportMap/Web.config
@@ -1,9 +1,19 @@
<?xml version="1.0"?>
<configuration>
  <appSettings>
    <!-- 192.168.20.39,127.0.0.1 -->
    <!-- å»ŠåŠæœåŠ¡ -->
    <add key="lfServer" value="http://127.0.0.1:12316/server"/>
    <!-- ä¸‹è½½ç›®å½• -->
    <add key="downloadFolder" value="D:\LF\download"/>
    <!-- å‘布Mpt目录 -->
    <add key="mptFolder" value="D:\LF\publishMpt"/>
    <!-- å‘布3dml目录 -->
    <add key="3dmlFolder" value="D:\LF\publish3dml"/>
    <!-- å»ŠåŠæ•°æ®ç›®å½• -->
    <add key="lfData" value="E:\data\99.public\soft\LFData"/>
    <!-- SG的DB库 -->
    <add key="sgDB" value="E:\soft\SGConfig\catalog.db"/>
    <!-- PG连接 -->
    <add key="pgConn" value="Server=127.0.0.1;Port=5433;Database=langfang;User Id=postgres;Password=postgres;"/>
    <add key="webpages:Version" value="3.0.0.0"/>
    <add key="webpages:Enabled" value="false"/>
ExportMap/cs/ExportUtil.cs
@@ -129,65 +129,6 @@
        }
        /// <summary>
        /// æ‰§è¡ŒPython
        /// </summary>
        /// <param name="py">Python文件</param>
        /// <param name="qgz">QGIS工程</param>
        /// <param name="qpt">QGIS模板</param>
        /// <returns>执行结果</returns>
        public static string ExecPython(string py, string qgz, string qpt)
        {
            string str = null;
            try
            {
                string cmdText = string.Format("python {0} -qgz {1} -qpt {2}", py, qgz, qpt);
                LogOut.Info("cmd = " + cmdText);
                Process 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; // æ ‡å‡†é”™è¯¯æµ
                si.AutoFlush = true;
                //si.WriteLine("cd \"C:\\Program Files\\QGIS 3.16\\apps\\Python37\"");
                //si.WriteLine("set PYTHONHOME=\"C:\\Program Files\\QGIS 3.16\\apps\\Python37\"");
                //si.WriteLine("set PYTHONPATH=\"C:\\Program Files\\QGIS 3.16\\apps\\qgis-ltr\\python;C:\\Program Files\\QGIS 3.16\\apps\\qgis-ltr\\bin;C:\\Program Files\\QGIS 3.16\\apps\\qgis-ltr\\python\\qgis;C:\\Program Files\\QGIS 3.16\\apps\\Python37\\Lib;C:\\Program Files\\QGIS 3.16\\apps\\Python37\\Lib\\site-packages;C:\\Program Files\\QGIS 3.16\\apps\\Python37\\DLLs;C:\\Program Files\\QGIS 3.16\\apps\\Python37\\Scripts;\"");
                //si.WriteLine("set Path=\"C:\\Program Files\\QGIS 3.16\\apps\\Python37;C:\\Program Files\\QGIS 3.16\\bin;C:\\Program Files\\QGIS 3.16\\apps\\qgis-ltr\\\\bin\";%Path%");
                //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(cmdText);
                si.WriteLine("exit");
                string info = so.ReadToEnd();
                str = se.ReadToEnd();
                if (!string.IsNullOrEmpty(info)) LogOut.Debug(info);
                if (!string.IsNullOrEmpty(str)) LogOut.Error(str);
                if (p.HasExited == false) p.Kill();
                si.Close();
                so.Close();
                se.Close();
                p.Close();
            }
            catch (Exception ex)
            {
                LogOut.Error(ex.StackTrace);
                str = ex.Message;
            }
            return str;
        }
        /// <summary>
        /// ç”Ÿæˆ
        /// </summary>
        /// <param name="args">出图参数</param>
@@ -204,7 +145,9 @@
            args.SetDefault();
            CreateTemplate(args);
            err = ExecPython(PyFile, qgz, args.qpt);
            string cmd = string.Format("python {0} -qgz {1} -qpt {2}", PyFile, qgz, args.qpt);
            err = Tool.ExecPython(cmd);
            string qptFile = Path.Combine(SourcesPath, args.qpt);
            if (File.Exists(qptFile))
ExportMap/cs/Tool.cs
@@ -3,6 +3,7 @@
using System.Collections.Generic;
using System.Configuration;
using System.Data.Common;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Reflection;
@@ -16,8 +17,14 @@
{
    public class Tool
    {
        /// <summary>
        /// åŸºç¡€ç›®å½•
        /// </summary>
        public static readonly string BaseDir = AppDomain.CurrentDomain.BaseDirectory;
        /// <summary>
        /// å­—节格式化
        /// </summary>
        public static string FormatBytes(long bytes)
        {
            string[] Suffix = { "Byte", "KB", "MB", "GB", "TB" };
@@ -31,11 +38,17 @@
            return String.Format("{0:0.##}{1}", dblSByte, Suffix[i]);
        }
        /// <summary>
        /// èŽ·å–è®¾ç½®
        /// </summary>
        public static string GetSetting(string key)
        {
            return ConfigurationManager.AppSettings[key];
        }
        /// <summary>
        /// èŽ·å–Db参数
        /// </summary>
        public static List<DbParameter> GetParams<T>(string sql, T t)
        {
            List<DbParameter> list = new List<DbParameter>();
@@ -65,6 +78,9 @@
            return list;
        }
        /// <summary>
        /// åˆ›å»ºç›®å½•
        /// </summary>
        public static void CreateDirectory(string dir)
        {
            WindowsIdentity wi = WindowsIdentity.GetCurrent();
@@ -76,6 +92,9 @@
            Directory.CreateDirectory(dir, ds);
        }
        /// <summary>
        /// å…‹éš†å¯¹è±¡
        /// </summary>
        public static T Clone<T>(T source) where T : new()
        {
            if (!typeof(T).IsSerializable)
@@ -98,5 +117,56 @@
                return (T)formatter.Deserialize(stream);
            }
        }
        /// <summary>
        /// æ‰§è¡ŒPython
        /// </summary>
        /// <param name="cmd">命令行</param>
        /// <returns>执行结果或出错信息</returns>
        public static String ExecPython(string cmd)
        {
            string str = null;
            try
            {
                Process 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 = " + cmd);
                si.AutoFlush = true;
                si.WriteLine("\"C:\\Program Files\\QGIS 3.16\\bin\\python-qgis-ltr.bat\"");
                si.WriteLine(cmd);
                si.WriteLine("exit");
                string info = so.ReadToEnd();
                str = se.ReadToEnd();
                if (!string.IsNullOrEmpty(info)) LogOut.Debug(info);
                if (!string.IsNullOrEmpty(str)) LogOut.Error(str);
                if (p.HasExited == false) p.Kill();
                se.Close();
                so.Close();
                si.Close();
                p.Close();
            }
            catch (Exception ex)
            {
                LogOut.Error(ex.StackTrace);
                str = ex.Message;
            }
            return str;
        }
    }
}
}