管道基础大数据平台系统开发-【CS】-ExportMap
1
13693261870
2023-07-30 110685ca201361af20d758fce7cf8a89ab5362b6
ExportMap/Controllers/ConvertController.cs
@@ -11,26 +11,25 @@
{
    public class ConvertController : ApiController
    {
        [HttpGet]
        public string Test()
        {
            string name = "8-瑞丽站0.05m.cpt";
            string cnName = name.Substring(0, name.LastIndexOf("."));
            return cnName;
        }
        /// <summary>
        /// 转换为Tileset
        /// 转换Tileset
        /// </summary>
        [HttpPost]
        public ResponseMsg<string> ToTileset([FromBody]XYZArgs args)
        {
            try
            {
                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("令牌无效");
                }
                ResponseMsg<string> msg = checkArgs(args);
                if (null != msg) return msg;
                List<int> rs = ConvertUtils.Convert(args);
                if (null == rs || rs.Count == 0)
@@ -48,43 +47,17 @@
        }
        /// <summary>
        /// 转换为瓦片
        /// 转换瓦片
        /// </summary>
        [HttpPost]
        public ResponseMsg<string> ToTiles([FromBody]XYZArgs args)
        {
            try
            {
                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 (string.IsNullOrWhiteSpace(args.dircode))
                {
                    return ResponseMsg<string>.fail("单位代码不能为空");
                }
                ResponseMsg<string> msg = checkArgs(args, true);
                if (null != msg) return msg;
                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 (args.noData < 0) args.noData = 0;
                if (args.noData > 255) args.noData = 255;
                checkMinMax(args, true);
                string err = null;
                List<int> rs = XYZUtils.Generate(args, ref err);
@@ -103,29 +76,18 @@
        }
        /// <summary>
        /// 转换为瓦片
        /// 转换瓦片
        /// </summary>
        [HttpPost]
        public ResponseMsg<string> ToSG([FromBody]XYZArgs args)
        {
            try
            {
                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("令牌无效");
                }
                SGUtils utils = new SGUtils();
                ResponseMsg<string> msg = checkArgs(args);
                if (null != msg) return msg;
                string err = null;
                SGUtils utils = new SGUtils();
                List<int> rs = utils.Release(args, ref err);
                if (null == rs || rs.Count == 0)
                {
@@ -140,5 +102,223 @@
                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);
                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("坐标系ID集合与元数据ID集合长度不一致");
                if (args.zs.Count != args.ids.Count) return ResponseMsg<string>.fail("高度偏移量集合与元数据ID集合长度不一致");
                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("高度偏移量集合与元数据ID集合长度不一致");
                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>
        /// 删除文件
        /// </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);
            }
        }
        /// <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("目录代码不能为空");
            }
            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;
            }
        }
    }
}