| | |
| | | /ExportMap/Sources/log.txt |
| | | /ExportMap/Sources/shps |
| | | /ExportMap/App_Data |
| | | /ExportMap/temp |
| | |
| | | { |
| | | public class ConvertController : ApiController |
| | | { |
| | | /// <summary> |
| | | /// 转换为Tileset |
| | | /// </summary> |
| | | [HttpPost] |
| | | public ResponseMsg<int> ToTileset([FromBody]XYZArgs args) |
| | | { |
| | |
| | | { |
| | | 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); |
| | |
| | | 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); |
| | | } |
| | | } |
| | | } |
| | | } |
| | |
| | | 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"); |
| | | |
| | |
| | | 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); |
| | |
| | | /// </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> |
| | |
| | | |
| | | 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"); |
| | | |
| | |
| | | { |
| | | public class XYZUtils |
| | | { |
| | | |
| | | private static string pyFile; |
| | | |
| | | /// <summary> |
| | |
| | | /// <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> |
| | |
| | | |
| | | 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); |
| | | } |
| | | } |
| | | } |
| | |
| | | }); |
| | | } |
| | | |
| | | // 测试切图 |
| | | 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] }; |
| | |
| | | <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();" /> |