public static TFHObject GetTFHObject(string tfh) { TFHObject result = new TFHObject(); result.TFH = tfh; MapScaleObject mapscaleObj = null; double ltl, rbl, rbb, ltb; GetLTRBPoints(result.TFH, out mapscaleObj, out ltl, out ltb, out rbl, out rbb); string extent = string.Format("{0},{1},{2},{3}", ltl, ltb, rbl, rbb); result.Extent = extent; return(result); }
public static TFHObject GetTFHObject(int h, int l, string scaleKey, int h1, int l1) { TFHObject result = null; string tfh = string.Empty; if (string.IsNullOrEmpty(scaleKey)) { tfh = string.Format("{0}{1}", ((Scale100w)h).ToString(), string.Format("{0:##00}", l)); } else { tfh = string.Format("{0}{1}{2}{3}{4}" , ((Scale100w)h).ToString() , string.Format("{0:##00}", l) , scaleKey , string.Format("{0:###000}", h1) , string.Format("{0:###000}", l1)); } result = GetTFHObject(tfh); return(result); }
public static List <TFHObject> GetTFHList(string startTFH, string endTFH, out string msg) { List <TFHObject> result = new List <TFHObject>(); msg = string.Empty; if (startTFH.Length == endTFH.Length) { if (startTFH.Length == 3 || startTFH.Length == 10) { if (startTFH.ToUpper().Equals(endTFH.ToUpper())) { TFHObject obj = GetTFHObject(startTFH); result.Add(obj); } else { string hStr100wStart = startTFH.Substring(0, 1); string hStr100wEnd = endTFH.Substring(0, 1); string lStr100wStart = startTFH.Substring(1, 2); string lStr100wEnd = endTFH.Substring(1, 2); int hstart = (int)(Enum.Parse(typeof(Scale100w), hStr100wStart)); int hend = (int)(Enum.Parse(typeof(Scale100w), hStr100wEnd)); int lstart = int.Parse(lStr100wStart); int lend = int.Parse(lStr100wEnd); if (startTFH.Length == 3) { for (int i = hend; i <= hstart; i++) { for (int j = lstart; j <= lend; j++) { TFHObject obj = GetTFHObject(i, j, string.Empty, 0, 0); result.Add(obj); } } } else//获取四点的图幅号 左上:hs ls B h1s l1s 左下:he ls B h1e l1s 右上:hs le B h1s l1e 右下:he le B h1e l1e { string startTFHScaleStr = startTFH.Substring(3, 1); string endTFHScaleStr = endTFH.Substring(3, 1); int h1start = int.Parse(startTFH.Substring(4, 3)); int l1start = int.Parse(startTFH.Substring(7, 3)); int h1end = int.Parse(endTFH.Substring(4, 3)); int l1end = int.Parse(endTFH.Substring(7, 3)); if (startTFHScaleStr.ToUpper().Equals(endTFHScaleStr.ToUpper())) { MapScaleObject tmpMapScaleObj = null; foreach (MapScaleObject m in TFHMapScaleList) { if (m.Key.ToUpper().Equals(startTFHScaleStr.ToUpper())) { tmpMapScaleObj = m; break; } } if (tmpMapScaleObj != null) { int tfnumberHorL = (int)Math.Sqrt(tmpMapScaleObj.TFNumber); if (hstart == hend && lstart == lend)//hstart==hend && lstart==lend 百万比例尺:同行同列 { for (int i = h1start; i <= h1end; i++) { for (int j = l1start; j <= l1end; j++) { TFHObject obj = GetTFHObject(hstart, lstart, startTFHScaleStr, i, j); result.Add(obj); } } } else if (hstart == hend && lstart != lend)//hstart==hend && lstart!=lend 百万比例尺:同行不同列 { //获取四点的图幅号 左上:hs ls B h1s l1s 左下:he ls B h1e l1s 右上:hs le B h1s l1e 右下:he le B h1e l1e for (int i = lstart; i <= lend; i++) { if (i == lstart)//第一格 { for (int j = h1start; j <= h1end; j++) { for (int k = l1start; k <= tfnumberHorL; k++) { TFHObject obj = GetTFHObject(hstart, i, startTFHScaleStr, j, k); result.Add(obj); } } } else if (i == lend)//最后一格 { for (int j = h1start; j <= h1end; j++) { for (int k = 1; k <= l1end; k++) { TFHObject obj = GetTFHObject(hstart, i, startTFHScaleStr, j, k); result.Add(obj); } } } else//中间 { for (int j = h1start; j <= h1end; j++) { for (int k = 1; k <= tfnumberHorL; k++) { TFHObject obj = GetTFHObject(hstart, i, startTFHScaleStr, j, k); result.Add(obj); } } } } } else if (hstart != hend && lstart == lend)//hstart!=hend && lstart==lend 百万比例尺:同列不同行 { //获取四点的图幅号 左上:hs ls B h1s l1s 左下:he ls B h1e l1s 右上:hs le B h1s l1e 右下:he le B h1e l1e for (int i = hend; i <= hstart; i++) { if (i == hstart) //在第一格 { for (int j = h1start; j <= tfnumberHorL; j++) //循环行号 { for (int k = l1start; k <= l1end; k++) { TFHObject obj = GetTFHObject(i, lstart, startTFHScaleStr, j, k); result.Add(obj); } } } else if (i == hend)//最后一格 { for (int j = 1; j <= h1end; j++) { for (int k = l1start; k <= l1end; k++) { TFHObject obj = GetTFHObject(i, lstart, startTFHScaleStr, j, k); result.Add(obj); } } } else//中间 { for (int j = 1; j <= tfnumberHorL; j++) { for (int k = l1start; k <= l1end; k++) { TFHObject obj = GetTFHObject(i, lstart, startTFHScaleStr, j, k); result.Add(obj); } } } } } else//hstart!=hend && lstart!=lend 百万比例尺:不同行不同列 { //获取四点的图幅号 左上:hs ls B h1s l1s 左下:he ls B h1e l1s 右上:hs le B h1s l1e 右下:he le B h1e l1e for (int i = hend; i <= hstart; i++) { if (i == hstart) { for (int j = lstart; j <= lend; j++) { if (j == lstart) { for (int k = h1start; k <= tfnumberHorL; k++) { for (int l = l1start; l <= tfnumberHorL; l++) { TFHObject obj = GetTFHObject(i, j, startTFHScaleStr, k, l); result.Add(obj); } } } else if (j == lend) { for (int k = h1start; k <= tfnumberHorL; k++) { for (int l = 1; l <= l1end; l++) { TFHObject obj = GetTFHObject(i, j, startTFHScaleStr, k, l); result.Add(obj); } } } else { for (int k = h1start; k <= tfnumberHorL; k++) { for (int l = 1; l <= tfnumberHorL; l++) { TFHObject obj = GetTFHObject(i, j, startTFHScaleStr, k, l); result.Add(obj); } } } } } else if (i == hend) { for (int j = lstart; j <= lend; j++) { if (j == lstart) { for (int k = 1; k <= h1end; k++) { for (int l = l1start; l <= tfnumberHorL; l++) { TFHObject obj = GetTFHObject(i, j, startTFHScaleStr, k, l); result.Add(obj); } } } else if (j == lend) { for (int k = 1; k <= h1end; k++) { for (int l = 1; l <= l1end; l++) { TFHObject obj = GetTFHObject(i, j, startTFHScaleStr, k, l); result.Add(obj); } } } else { for (int k = 1; k <= h1end; k++) { for (int l = 1; l <= tfnumberHorL; l++) { TFHObject obj = GetTFHObject(i, j, startTFHScaleStr, k, l); result.Add(obj); } } } } } else { for (int j = lstart; j <= lend; j++) { if (j == lstart) { for (int k = 1; k <= tfnumberHorL; k++) { for (int l = l1start; l <= tfnumberHorL; l++) { TFHObject obj = GetTFHObject(i, j, startTFHScaleStr, k, l); result.Add(obj); } } } else if (j == lend) { for (int k = 1; k <= tfnumberHorL; k++) { for (int l = 1; l <= l1end; l++) { TFHObject obj = GetTFHObject(i, j, startTFHScaleStr, k, l); result.Add(obj); } } } else { for (int k = 1; k <= tfnumberHorL; k++) { for (int l = 1; l <= tfnumberHorL; l++) { TFHObject obj = GetTFHObject(i, j, startTFHScaleStr, k, l); result.Add(obj); } } } } } } } } else { msg = string.Format(string.Format("找不到对应比例尺 请检查输入图幅号:{0}——{1}", startTFH, endTFH)); } } else { msg = string.Format(string.Format("图幅号比例尺不对 请检查输入图幅号:{0}——{1}", startTFH, endTFH)); } } } } else { msg = string.Format(string.Format("图幅号长度不对 请检查输入图幅号:{0}——{1}", startTFH, endTFH)); } } else { msg = string.Format(string.Format("图幅号长度不一致 请检查输入图幅号:{0}——{1}", startTFH, endTFH)); } //排序 var orders = from tfh in result orderby tfh.H descending, tfh.H1 ascending, tfh.L ascending, tfh.L1 ascending select tfh; result = orders.ToList <TFHObject>(); return(result); }