| | |
| | | if (null == list || list.Count == 0) return null; |
| | | |
| | | string pyPath = Tools.GetSetting("pythonFolder"); |
| | | string tilerPath = Tools.GetSetting("tilerPath"); |
| | | string uploadFolder = Tools.GetSetting("uploadFolder"); |
| | | |
| | | List<int> ids = new List<int>(); |
| | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 坐标转换 |
| | | /// 坐标转换 * |
| | | /// </summary> |
| | | public static void CsTransform(string epsg, double x, double y, double z = 0) |
| | | { |
| | |
| | | |
| | | //return rs; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 获取las坐标JSON |
| | | /// </summary> |
| | | public static string GetLasGeomJSON(string lasFile, int id) |
| | | { |
| | | try |
| | | { |
| | | string cmd = string.Format("\"{0}\\lasinfo.exe\" \"{1}\"", Tools.GetSetting("tilerPath"), lasFile); |
| | | string rs = Tools.ExecCmd(new List<string> { cmd }); |
| | | if (string.IsNullOrEmpty(rs)) return null; |
| | | |
| | | string[] strs = rs.Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries); |
| | | string epsg = GetEpsgFromStrs(strs); |
| | | string minStr = GetCoordFromStrs(strs, "min x y z:"); |
| | | string maxStr = GetCoordFromStrs(strs, "max x y z:"); |
| | | string scaleStr = GetCoordFromStrs(strs, "scale factor x y z:"); |
| | | if (string.IsNullOrEmpty(epsg) || string.IsNullOrEmpty(minStr) || string.IsNullOrEmpty(maxStr) || string.IsNullOrEmpty(scaleStr)) return null; |
| | | |
| | | string[] minXYZ = minStr.Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries); |
| | | string[] maxXYZ = maxStr.Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries); |
| | | string[] scales = scaleStr.Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries); |
| | | double minX = double.Parse(minXYZ[0]), minY = double.Parse(minXYZ[1]), minZ = double.Parse(minXYZ[2]); |
| | | double maxX = double.Parse(maxXYZ[0]), maxY = double.Parse(maxXYZ[1]), maxZ = double.Parse(maxXYZ[2]); |
| | | double x = (minX + maxX) / 2, y = (minY + maxY) / 2, z = maxZ, scale = Math.Round(1 / double.Parse(scales[0]), 2); |
| | | |
| | | string url = ExportUtil.LFServer + "/publish/selectCsTransform?token=" + Tools.Token + "&x=" + x + "&y=" + y + "&epsg=" + epsg; |
| | | rs = ExportUtil.GetData(url); |
| | | if (string.IsNullOrEmpty(rs)) return null; |
| | | |
| | | strs = rs.Replace("\"", "").Split(new string[] { "," }, StringSplitOptions.None); |
| | | x = double.Parse(strs[0]); |
| | | y = double.Parse(strs[1]); |
| | | |
| | | return string.Format("{{\"lon\":{0},\"lat\":{1},\"height\":{2},\"yaw\":0,\"alpha\":1,\"modelid\":\"DbId\",\"scale\":{3},\"lasId\":{4}}}", x, y, z, scale, id); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | LogOut.Error(ex.StackTrace); |
| | | return null; |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 从字符串数组中获取EPSG |
| | | /// </summary> |
| | | private static string GetEpsgFromStrs(string[] strs) |
| | | { |
| | | foreach (string str in strs) |
| | | { |
| | | if (str.Contains("key 3072 ")) |
| | | { |
| | | int start = str.IndexOf("value_offset") + 12; |
| | | int end = str.IndexOf("-", start); |
| | | |
| | | return str.Substring(start, end - start).Replace(" ", ""); |
| | | } |
| | | } |
| | | |
| | | return null; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 从字符串数组中获取坐标 |
| | | /// </summary> |
| | | private static string GetCoordFromStrs(string[] strs, string key) |
| | | { |
| | | foreach (string str in strs) |
| | | { |
| | | if (str.Contains(key)) |
| | | { |
| | | return str.Replace(key, ""); |
| | | } |
| | | } |
| | | |
| | | return null; |
| | | } |
| | | } |
| | | } |