From 5f80de49c4a00416591054180bf809a12a76d686 Mon Sep 17 00:00:00 2001
From: 13693261870 <252740454@qq.com>
Date: 星期四, 07 十一月 2024 16:40:53 +0800
Subject: [PATCH] 1

---
 ExportMap/Controllers/ConvertController.cs |  384 +++++++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 317 insertions(+), 67 deletions(-)

diff --git a/ExportMap/Controllers/ConvertController.cs b/ExportMap/Controllers/ConvertController.cs
index c0040dc..27320d8 100644
--- a/ExportMap/Controllers/ConvertController.cs
+++ b/ExportMap/Controllers/ConvertController.cs
@@ -1,7 +1,9 @@
 锘縰sing ExportMap.cs;
+using ExportMap.db;
 using ExportMap.Models;
 using System;
 using System.Collections.Generic;
+using System.IO;
 using System.Linq;
 using System.Net;
 using System.Net.Http;
@@ -11,119 +13,367 @@
 {
     public class ConvertController : ApiController
     {
+        [HttpGet]
+        public string Test()
+        {
+            //string cnName = "8-鐟炰附绔�0.05m.cpt".Substring(0, "8-鐟炰附绔�0.05m.cpt".LastIndexOf("."));
+            //return Tools.GetLocalIP();
+            //return Tools.GetEPSG("D:\\Moon\\data\\dem_tif\\ldem.tif");
+            //TerrainUtils.Reproject("D:/xyz/dem/dem/32a.tif", "D:/xyz/dem/dem/32a_4326_.tif", "EPSG:4528", "EPSG:4326");
+            //TerrainUtils.Project("D:/xyz/dem/dem/32a_4326_.tif", "EPSG:4490");
+            //string wkt = TerrainUtils.GetPointZ(new XYZArgs() { dircode = "0B" });
+            //PyLasUtils.CsTransform("EPSG:4528", 400925.079, 2541768.173);
+            //string json = PyLasUtils.GetLasGeomJSON(@"D:\LF\data\las\1_lfz_0.05m.las", 1314);
+            //TerrainUtils.Complement(new XYZArgs() { dircode = "00" });
+
+            ExportArgs args = new ExportArgs() { title = "Test" };
+            SysTask task = TaskDBHelper.CreateTask(ExportUtil.ToXYZArgs(args), "PNG", "鍦ㄧ嚎鍒跺浘(PNG)");
+            Tools.ExecCmd(task, "dir", true, true);
+
+            return DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
+        }
+
         /// <summary>
-        /// 杞崲涓篢ileset
+        /// 杞崲Tileset
         /// </summary>
         [HttpPost]
-        public ResponseMsg<int> ToTileset([FromBody]XYZArgs args)
+        public ResponseMsg<string> ToTileset([FromBody]XYZArgs args)
         {
             try
             {
-                if (null == args || null == args.ids || args.ids.Count == 0)
+                ResponseMsg<string> msg = checkArgs(args);
+                if (null != msg) return msg;
+
+                List<int> rs = ConvertUtils.Convert(args);
+                if (null == rs || rs.Count == 0)
                 {
-                    return ResponseMsg<int>.fail("璇疯緭鍏ュ厓鏁版嵁ID");
-                }
-                if (string.IsNullOrWhiteSpace(args.token))
-                {
-                    return ResponseMsg<int>.fail("娌℃湁浠ょ墝");
-                }
-                if (!ExportUtil.VerifyToken(args.token))
-                {
-                    return ResponseMsg<int>.fail("浠ょ墝鏃犳晥");
+                    return ResponseMsg<string>.fail("澶辫触");
                 }
 
-                int count = ConvertUtils.Convert(args.ids);
-                if (0 == count)
-                {
-                    return ResponseMsg<int>.fail("澶辫触");
-                }
-
-                return ResponseMsg<int>.success("鎴愬姛", count);
+                return ResponseMsg<string>.success("鎴愬姛", string.Join(",", rs), rs.Count);
             }
             catch (Exception ex)
             {
-                LogOut.Error(ex.StackTrace);
-                return ResponseMsg<int>.fail(ex.Message);
+                LogOut.Error(ex.Message + "\r\n" + ex.StackTrace);
+                return ResponseMsg<string>.fail(ex.Message);
             }
         }
 
         /// <summary>
-        /// 杞崲涓虹摝鐗�
+        /// 杞崲鐡︾墖
         /// </summary>
         [HttpPost]
-        public ResponseMsg<int> ToTiles([FromBody]XYZArgs args)
+        public ResponseMsg<string> ToTiles([FromBody]XYZArgs args)
         {
             try
             {
-                if (null == args || null == args.ids || args.ids.Count == 0)
-                {
-                    return ResponseMsg<int>.fail("璇疯緭鍏ュ厓鏁版嵁ID");
-                }
-                if (string.IsNullOrWhiteSpace(args.token))
-                {
-                    return ResponseMsg<int>.fail("娌℃湁浠ょ墝");
-                }
-                if (!ExportUtil.VerifyToken(args.token))
-                {
-                    return ResponseMsg<int>.fail("浠ょ墝鏃犳晥");
-                }
-                if (args.min < 0 || args.max > 20 || string.IsNullOrWhiteSpace(args.dircode))
-                {
-                    return ResponseMsg<int>.fail("杈撳叆鐨勫弬鏁版湁璇�");
-                }
+                ResponseMsg<string> msg = checkArgs(args, true);
+                if (null != msg) return msg;
+
+                checkMinMax(args, true);
 
                 string err = null;
-                int count = XYZUtils.Generate(args, ref err);
-                if (0 == count)
+                List<int> rs = XYZUtils.Generate(args, ref err);
+                if (null == rs || rs.Count == 0)
                 {
-                    return ResponseMsg<int>.fail(null == err ? "澶辫触" : err);
+                    return ResponseMsg<string>.fail(null == err ? "澶辫触" : err);
                 }
 
-                return ResponseMsg<int>.success("鎴愬姛", count);
+                return ResponseMsg<string>.success("鎴愬姛", string.Join(",", rs), rs.Count);
             }
             catch (Exception ex)
             {
-                LogOut.Error(ex.StackTrace);
-                return ResponseMsg<int>.fail(ex.Message);
+                LogOut.Error(ex.Message + "\r\n" + ex.StackTrace);
+                return ResponseMsg<string>.fail(ex.Message);
             }
         }
 
         /// <summary>
-        /// 杞崲涓虹摝鐗�
+        /// 杞崲鐡︾墖
         /// </summary>
         [HttpPost]
-        public ResponseMsg<int> ToSG([FromBody]XYZArgs args)
+        public ResponseMsg<string> ToSG([FromBody]XYZArgs args)
         {
             try
             {
-                if (null == args || null == args.ids || args.ids.Count == 0)
-                {
-                    return ResponseMsg<int>.fail("璇疯緭鍏ュ厓鏁版嵁ID");
-                }
-                if (string.IsNullOrWhiteSpace(args.token))
-                {
-                    return ResponseMsg<int>.fail("娌℃湁浠ょ墝");
-                }
-                if (!ExportUtil.VerifyToken(args.token))
-                {
-                    return ResponseMsg<int>.fail("浠ょ墝鏃犳晥");
-                }
+                ResponseMsg<string> msg = checkArgs(args);
+                if (null != msg) return msg;
 
+                string err = null;
                 SGUtils utils = new SGUtils();
-
-                string err = null;
-                int count = utils.Release(args, ref err);
-                if (0 == count)
+                List<int> rs = utils.Release(args, ref err);
+                if (null == rs || rs.Count == 0)
                 {
-                    return ResponseMsg<int>.fail(null == err ? "澶辫触" : err);
+                    return ResponseMsg<string>.fail(null == err ? "澶辫触" : err);
                 }
 
-                return ResponseMsg<int>.success("鎴愬姛", count);
+                return ResponseMsg<string>.success("鎴愬姛", string.Join(",", rs), rs.Count);
             }
             catch (Exception ex)
             {
-                LogOut.Error(ex.StackTrace);
-                return ResponseMsg<int>.fail(ex.Message);
+                LogOut.Error(ex.Message + "\r\n" + ex.StackTrace);
+                return ResponseMsg<string>.fail(ex.Message);
+            }
+        }
+
+        /// <summary>
+        /// 杞崲鍦板舰
+        /// </summary>
+        [HttpPost]
+        public ResponseMsg<string> ToTerra([FromBody]XYZArgs args)
+        {
+            try
+            {
+                ResponseMsg<string> msg = checkArgs(args, true);
+                if (null != msg) return msg;
+
+                checkMinMax(args);
+
+                string err = null;
+                //List<int> rs = TerraUtils.Generate(args, ref err);
+                List<int> rs = TerrainUtils.Generate(args, ref err);
+                if (null == rs || rs.Count == 0)
+                {
+                    return ResponseMsg<string>.fail(null == err ? "澶辫触" : err);
+                }
+
+                return ResponseMsg<string>.success("鎴愬姛", string.Join(",", rs), rs.Count);
+            }
+            catch (Exception ex)
+            {
+                LogOut.Error(ex.Message + "\r\n" + ex.StackTrace);
+                return ResponseMsg<string>.fail(ex.Message);
+            }
+        }
+
+        /// <summary>
+        /// 杞崲LAS
+        /// </summary>
+        [HttpPost]
+        public ResponseMsg<string> ToLas([FromBody]XYZArgs args)
+        {
+            try
+            {
+                ResponseMsg<string> msg = checkArgs(args);
+                if (null != msg) return msg;
+
+                if (args.srids.Count != args.ids.Count) return ResponseMsg<string>.fail("鍧愭爣绯籌D闆嗗悎涓庡厓鏁版嵁ID闆嗗悎闀垮害涓嶄竴鑷�");
+                if (args.zs.Count != args.ids.Count) return ResponseMsg<string>.fail("楂樺害鍋忕Щ閲忛泦鍚堜笌鍏冩暟鎹甀D闆嗗悎闀垮害涓嶄竴鑷�");
+
+                string err = null;
+                List<int> rs = LasUtils.Generate(args, ref err);
+                if (null == rs || rs.Count == 0)
+                {
+                    return ResponseMsg<string>.fail(null == err ? "澶辫触" : err);
+                }
+
+                return ResponseMsg<string>.success("鎴愬姛", string.Join(",", rs), rs.Count);
+            }
+            catch (Exception ex)
+            {
+                LogOut.Error(ex.Message + "\r\n" + ex.StackTrace);
+                return ResponseMsg<string>.fail(ex.Message);
+            }
+        }
+
+        /// <summary>
+        /// 杞崲OSGB
+        /// </summary>
+        [HttpPost]
+        public ResponseMsg<string> ToOsgb([FromBody]XYZArgs args)
+        {
+            try
+            {
+                ResponseMsg<string> msg = checkArgs(args);
+                if (null != msg) return msg;
+
+                if (args.zs.Count != args.ids.Count) return ResponseMsg<string>.fail("楂樺害鍋忕Щ閲忛泦鍚堜笌鍏冩暟鎹甀D闆嗗悎闀垮害涓嶄竴鑷�");
+
+                string err = null;
+                List<int> rs = OsgbUtils.Generate(args, ref err);
+                if (null == rs || rs.Count == 0)
+                {
+                    return ResponseMsg<string>.fail(null == err ? "澶辫触" : err);
+                }
+
+                return ResponseMsg<string>.success("鎴愬姛", string.Join(",", rs), rs.Count);
+            }
+            catch (Exception ex)
+            {
+                LogOut.Error(ex.Message + "\r\n" + ex.StackTrace);
+                return ResponseMsg<string>.fail(ex.Message);
+            }
+        }
+
+        /// <summary>
+        /// 璇诲彇Las鍧愭爣绯�
+        /// </summary>
+        [HttpPost]
+        public ResponseMsg<string> ReadLasCs([FromBody]XYZArgs args)
+        {
+            try
+            {
+                ResponseMsg<string> msg = checkArgs(args, true);
+                if (null != msg) return msg;
+
+                string err = null;
+                List<int> rs = LasUtils.ReadLasCs(args, ref err);
+                if (null == rs || rs.Count == 0)
+                {
+                    return ResponseMsg<string>.fail(null == err ? "澶辫触" : err);
+                }
+
+                return ResponseMsg<string>.success("鎴愬姛", string.Join(",", rs), rs.Count);
+            }
+            catch (Exception ex)
+            {
+                LogOut.Error(ex.Message + "\r\n" + ex.StackTrace);
+                return ResponseMsg<string>.fail(ex.Message);
+            }
+        }
+
+        /// <summary>
+        /// Py杞崲LAS
+        /// </summary>
+        [HttpPost]
+        public ResponseMsg<string> ToLasByPy([FromBody]XYZArgs args)
+        {
+            try
+            {
+                ResponseMsg<string> msg = checkArgs(args);
+                if (null != msg) return msg;
+
+                //if (args.srids.Count != args.ids.Count) return ResponseMsg<string>.fail("鍧愭爣绯籌D闆嗗悎涓庡厓鏁版嵁ID闆嗗悎闀垮害涓嶄竴鑷�");
+                //if (args.zs.Count != args.ids.Count) return ResponseMsg<string>.fail("楂樺害鍋忕Щ閲忛泦鍚堜笌鍏冩暟鎹甀D闆嗗悎闀垮害涓嶄竴鑷�");
+
+                string err = null;
+                List<int> rs = PyLasUtils.Generate(args, ref err);
+                if (null == rs || rs.Count == 0)
+                {
+                    return ResponseMsg<string>.fail(null == err ? "澶辫触" : err);
+                }
+
+                return ResponseMsg<string>.success("鎴愬姛", string.Join(",", rs), rs.Count);
+            }
+            catch (Exception ex)
+            {
+                LogOut.Error(ex.Message + "\r\n" + ex.StackTrace);
+                return ResponseMsg<string>.fail(ex.Message);
+            }
+        }
+
+        /// <summary>
+        /// 鍒犻櫎鏂囦欢
+        /// </summary>
+        [HttpPost]
+        public ResponseMsg<string> DeleteFiles([FromBody]XYZArgs args)
+        {
+            try
+            {
+                ResponseMsg<string> msg = checkArgs(args, true);
+                if (null != msg) return msg;
+
+                string err = null;
+                List<int> rs = CommonUtils.DeleteFiles(args, ref err);
+                if (null == rs || rs.Count == 0)
+                {
+                    return ResponseMsg<string>.fail(null == err ? "澶辫触" : err);
+                }
+
+                return ResponseMsg<string>.success("鎴愬姛", string.Join(",", rs), rs.Count);
+            }
+            catch (Exception ex)
+            {
+                LogOut.Error(ex.Message + "\r\n" + ex.StackTrace);
+                return ResponseMsg<string>.fail(ex.Message);
+            }
+        }
+
+        /// <summary>
+        /// 鍒犻櫎浠诲姟
+        /// </summary>
+        [HttpPost]
+        public ResponseMsg<string> DeleteTask([FromBody]XYZArgs args)
+        {
+            try
+            {
+                ResponseMsg<string> msg = checkArgs(args, true);
+                if (null != msg) return msg;
+
+                string err = null;
+                List<int> rs = CommonUtils.DeleteTask(args, ref err);
+                if (null == rs || rs.Count == 0)
+                {
+                    return ResponseMsg<string>.fail(null == err ? "澶辫触" : err);
+                }
+
+                return ResponseMsg<string>.success("鎴愬姛", string.Join(",", rs), rs.Count);
+            }
+            catch (Exception ex)
+            {
+                LogOut.Error(ex.Message + "\r\n" + ex.StackTrace);
+                return ResponseMsg<string>.fail(ex.Message);
+            }
+
+        }
+
+        [HttpGet]
+        public string GetRasterEPSG(int id)
+        {
+            SysMeta meta = XYZUtils.SelectMeta(id);
+            if (null == meta || string.IsNullOrEmpty(meta.path)) return null;
+
+            string file = Path.Combine(Tools.GetSetting("uploadFolder"), meta.path);
+            if (!File.Exists(file)) return null;
+
+            return Tools.GetEPSG(file);
+        }
+
+        /// <summary>
+        /// 妫�鏌ュ弬鏁�
+        /// </summary>
+        private ResponseMsg<string> checkArgs(XYZArgs args, bool checkDir = false)
+        {
+            if (null == args || null == args.ids || args.ids.Count == 0)
+            {
+                return ResponseMsg<string>.fail("璇疯緭鍏ュ厓鏁版嵁ID");
+            }
+            if (string.IsNullOrWhiteSpace(args.token))
+            {
+                return ResponseMsg<string>.fail("娌℃湁浠ょ墝");
+            }
+            if (!ExportUtil.VerifyToken(args.token))
+            {
+                return ResponseMsg<string>.fail("浠ょ墝鏃犳晥");
+            }
+            if (checkDir && string.IsNullOrWhiteSpace(args.dircode))
+            {
+                return ResponseMsg<string>.fail("鐩綍浠g爜涓嶈兘涓虹┖");
+            }
+
+            return null;
+        }
+
+        /// <summary>
+        /// 妫�鏌ユ渶澶ф渶灏忓��
+        /// </summary>
+        private void checkMinMax(XYZArgs args, bool checkNoData = false)
+        {
+            if (args.min < 0) args.min = 0;
+            if (args.min > 22) args.min = 22;
+            if (args.max < 0) args.max = 0;
+            if (args.max > 22) args.max = 22;
+            if (args.min > args.max)
+            {
+                int tmp = args.min;
+                args.min = args.max;
+                args.max = tmp;
+            }
+
+            if (checkNoData)
+            {
+                if (args.noData < 0) args.noData = 0;
+                if (args.noData > 255) args.noData = 255;
             }
         }
     }

--
Gitblit v1.9.3