arcgis engine已知图幅号获取比例尺

大家有没有这种需求,已知一张分幅影像的图幅号是XXXXXXX,前提是这个图幅号必须是按照国家标准进行分幅设定的。根据这个图幅号,按要求返回比例尺。代码如何实现呢?

/// <summary>
        /// 通过图幅号获取比例尺字母
        /// </summary>
        /// <param name="newMapnumber"></param>
        /// <returns></returns>
        public int getScaleDenominatorNumberByMapNumber(string newMapnumber)
        {
            string[] newMapnumberInfo = GetInfoFromNewMapnumber(newMapnumber);
            if (newMapnumberInfo == null)
            {
                return -1;
            }
            string nScaleStr = newMapnumberInfo[2];
            int scaleNumber = NewMapnumber_GetScaleDenominatorNumberByScaleStr(nScaleStr);
            if (scaleNumber == -1)
            {
                return -1;
            }
            return scaleNumber;
        }
/// <summary>
        /// Get 100W Row/100W Column/ScaleStr/Rownum/Columnnum from new  mapnumber
        /// 从新图号获得比例尺、行列号信息([0]:百万行;[1]:百万咧;[2]:比例尺代码;[3]:行号;[4]:列号)
        /// </summary>
        /// <param name="newMapnumber"></param>
        /// <returns></returns>
        public string[] GetInfoFromNewMapnumber(string newMapnumber)
        {
            try
            {
                string[] strs = new string[5];
                if (!NewMapnumber_Check(newMapnumber))
                {
                    return null;
                }
                int length = newMapnumber.Length;
                string n100WR = "";
                string n100WC = "";
                string nScaleStr = "";
                string nR = "";
                string nC = "";
                if (length == 3)
                {
                    n100WR = newMapnumber.Substring(0, 1);
                    n100WC = newMapnumber.Substring(1, 2);
                }
                else
                {
                    n100WR = newMapnumber.Substring(0, 1);
                    n100WC = newMapnumber.Substring(1, 2);
                    nScaleStr = newMapnumber.Substring(3, 1);
                    if (length == 10)
                    {
                        nR = newMapnumber.Substring(4, 3);
                        nC = newMapnumber.Substring(7, 3);
                    }
                    else
                    {
                        nR = newMapnumber.Substring(4, 4);
                        nC = newMapnumber.Substring(8, 4);
                    }
                }
                if (!string.IsNullOrEmpty(n100WR) && !string.IsNullOrEmpty(n100WC))
                {
                    strs[0] = n100WR;
                    strs[1] = n100WC;
                    strs[2] = nScaleStr;
                    strs[3] = nR;
                    strs[4] = nC;
                    return strs;
                }
                return null;
            }
            catch
            {
                throw;
            }
        }



 /// <summary>
        /// Newmapnumber get scale denominator number by scale string
        /// 通过比例尺字符串获取新图幅号的比例分母数
        /// </summary>
        /// <param name="scaleStr"></param>
        /// <returns></returns>
        private int NewMapnumber_GetScaleDenominatorNumberByScaleStr(string scaleStr)
        {
            switch (scaleStr)
            {
                case "":
                    return 1000000;
                case null:
                    return 1000000;
                case "B":
                    return 500000;
                case "C":
                    return 250000;
                case "D":
                    return 100000;
                case "E":
                    return 50000;
                case "F":
                    return 25000;
                case "G":
                    return 10000;
                case "H":
                    return 5000;
                case "I":
                    return 2000;
                case "J":
                    return 1000;
                case "K":
                    return 500;
                default:
                    return -1;
            }
        }
发布了14 篇原创文章 · 获赞 15 · 访问量 335

猜你喜欢

转载自blog.csdn.net/weixin_42970847/article/details/102992611