using ExportMap.cs;
|
using ExportMap.Models;
|
using System;
|
using System.Collections.Generic;
|
using System.Linq;
|
using System.Net;
|
using System.Net.Http;
|
using System.Web.Http;
|
|
namespace ExportMap.Controllers
|
{
|
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
|
/// </summary>
|
[HttpPost]
|
public ResponseMsg<string> ToTileset([FromBody]XYZArgs args)
|
{
|
try
|
{
|
ResponseMsg<string> msg = checkArgs(args);
|
if (null != msg) return msg;
|
|
List<int> rs = ConvertUtils.Convert(args);
|
if (null == rs || rs.Count == 0)
|
{
|
return ResponseMsg<string>.fail("失败");
|
}
|
|
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> ToTiles([FromBody]XYZArgs args)
|
{
|
try
|
{
|
ResponseMsg<string> msg = checkArgs(args, true);
|
if (null != msg) return msg;
|
|
checkMinMax(args, true);
|
|
string err = null;
|
List<int> rs = XYZUtils.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> ToSG([FromBody]XYZArgs args)
|
{
|
try
|
{
|
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)
|
{
|
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> 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;
|
|
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;
|
|
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>
|
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;
|
}
|
}
|
}
|
}
|