Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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);
        }