管道基础大数据平台系统开发-【CS】-ExportMap
1
13693261870
2023-03-15 54d918939c9f05e7588beb571cb49675433fc93d
1
已修改7个文件
123 ■■■■ 文件已修改
.gitignore 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ExportMap/Controllers/ConvertController.cs 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ExportMap/cs/ConvertUtils.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ExportMap/cs/ExportUtil.cs 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ExportMap/cs/Tool.cs 21 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ExportMap/cs/XYZUtils.cs 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ExportMap/export.html 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.gitignore
@@ -21,3 +21,4 @@
/ExportMap/Sources/log.txt
/ExportMap/Sources/shps
/ExportMap/App_Data
/ExportMap/temp
ExportMap/Controllers/ConvertController.cs
@@ -11,6 +11,9 @@
{
    public class ConvertController : ApiController
    {
        /// <summary>
        /// 转换为Tileset
        /// </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);
            }
        }
    }
}
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");
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);
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");
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);
        }
    }
}
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();" />