投影转换

    /// <summary>
    /// 定义单位与投影转换类
    /// </summary>
    public class UnitAndPrjConvert
    {
        /// <summary>
        /// 米转换成为度
        /// </summary>
        /// <param name="Meter"></param>
        /// <returns></returns>
        public static double CovertMeterToDegree(double Meter)
        {
            double intDegree = -1;
            try
            {
                intDegree = Meter * 0.000011634222179609;
            }
            catch (Exception ee)
            {
                intDegree = 0;
            }
            return intDegree;
        }

        /// <summary>
        /// 度转换为米
        /// </summary>
        /// <param name="Meter"></param>
        /// <returns></returns>
        public static double CovertDegreeToMeter(double Degree)
        {
            double intMeter = 0;
            try
            {
                intMeter = Degree / 0.000011634222179609;
            }
            catch (Exception ee)
            {
                intMeter = 0;
            }
            return intMeter;
        }


        /// <summary>
        /// 转换面积
        /// </summary>
        /// <param name="pPolygon"></param>
        /// <returns></returns>
        public static double CovertArea(IPolygon pPolygon, SpatialInfoType pSpatialInfoType, int pDaiHao, DaiHaoType pDHType)
        {
            if (pPolygon == null) return 0;
            ForeStar.GIS.SpatialReference.CoordinateCreateParams coordinateCreateParams = new ForeStar.GIS.SpatialReference.CoordinateCreateParams();
            coordinateCreateParams.DaiHao = pDaiHao;
            coordinateCreateParams.DaiHaoType = pDHType;
            //coordinateCreateParams.SpatialInfoType = ForeStar.GIS.SpatialReference.SpatialInfoType.SpatialInfo80;
            coordinateCreateParams.SpatialInfoType = pSpatialInfoType;
            coordinateCreateParams.Name = "test";
            coordinateCreateParams.AddDiaHao = true;
            coordinateCreateParams.CoordianteType = ForeStar.GIS.SpatialReference.CoordianteType.ProjectCoordiante;
            ICoordinateSystem project = ForeStar.GISUI.Utils.SpatialReferenceUtils.GetSelectSpatialReference(coordinateCreateParams);
            pPolygon.Project(project);


            double area = pPolygon.GetArea();
            //area = Math.Round(area / 10000*15, 2);
            area = Math.Round(area / 10000 * 15, 1);//TODO YCL  
            return area;
        }
        /// <summary>
        /// 转换线长度
        /// </summary>
        /// <param name="pLine"></param>
        /// <returns></returns>
        public static double ConvertLength(IPolyline pLine, SpatialInfoType pSpatialInfoType, int pDaiHao, DaiHaoType pDHType)
        {
            if (pLine == null) return 0;
            ForeStar.GIS.SpatialReference.CoordinateCreateParams coordinateCreateParams = new ForeStar.GIS.SpatialReference.CoordinateCreateParams();
            coordinateCreateParams.DaiHao = pDaiHao;
            coordinateCreateParams.DaiHaoType = pDHType;
            coordinateCreateParams.SpatialInfoType = pSpatialInfoType;
            coordinateCreateParams.Name = "test";
            coordinateCreateParams.AddDiaHao = true;
            coordinateCreateParams.CoordianteType = ForeStar.GIS.SpatialReference.CoordianteType.ProjectCoordiante;
            ICoordinateSystem project = ForeStar.GISUI.Utils.SpatialReferenceUtils.GetSelectSpatialReference(coordinateCreateParams);
            pLine.Project(project);

            double dLength = pLine.Lenght;
            dLength = Math.Round(dLength, 4);
            if (dLength == null) return 0;
            return dLength;
        }
        /// <summary>
        /// 点坐标转换
        /// </summary>
        /// <param name="pPolygon"></param>
        /// <returns></returns>
        public static void CovertPointZB(ref IPoint pPoint, SpatialInfoType pSpatialInfoType, int pDaiHao, DaiHaoType pDHType)
        {
            ForeStar.GIS.SpatialReference.CoordinateCreateParams coordinateCreateParams = new ForeStar.GIS.SpatialReference.CoordinateCreateParams();
            coordinateCreateParams.DaiHao = pDaiHao;
            coordinateCreateParams.DaiHaoType = pDHType;
            coordinateCreateParams.SpatialInfoType = pSpatialInfoType;
            coordinateCreateParams.Name = "PointConvert";
            coordinateCreateParams.AddDiaHao = true;
            coordinateCreateParams.CoordianteType = ForeStar.GIS.SpatialReference.CoordianteType.ProjectCoordiante;
            ICoordinateSystem project = ForeStar.GISUI.Utils.SpatialReferenceUtils.GetSelectSpatialReference(coordinateCreateParams);
            pPoint.Project(project);
        }
        public static void ConvertPointZB2(ref IPoint pPoint, int iDaiHao, SpatialInfoType pSpatialInfoType, DaiHaoType pDHType)
        {
            ForeStar.GIS.SpatialReference.CoordinateCreateParams coordinateCreateParams = new ForeStar.GIS.SpatialReference.CoordinateCreateParams();
            coordinateCreateParams.DaiHao = iDaiHao;
            coordinateCreateParams.DaiHaoType = pDHType;
            coordinateCreateParams.SpatialInfoType = pSpatialInfoType;
            coordinateCreateParams.Name = "PointConvert";
            coordinateCreateParams.AddDiaHao = true;
            coordinateCreateParams.CoordianteType = ForeStar.GIS.SpatialReference.CoordianteType.ProjectCoordiante;
            ICoordinateSystem project = ForeStar.GISUI.Utils.SpatialReferenceUtils.GetSelectSpatialReference(coordinateCreateParams);
            pPoint.Project(project);
        }
        public static void ConvertGeometryZB(ref IGeometry geometry, int iDaiHao, SpatialInfoType pSpatialInfoType, DaiHaoType pDHType)
        {
            if (geometry == null) return;
            ForeStar.GIS.SpatialReference.CoordinateCreateParams coordinateCreateParams = new ForeStar.GIS.SpatialReference.CoordinateCreateParams();
            coordinateCreateParams.DaiHao = iDaiHao;
            coordinateCreateParams.DaiHaoType = pDHType;
            coordinateCreateParams.SpatialInfoType = pSpatialInfoType;
            coordinateCreateParams.Name = "GeometryConvert";
            coordinateCreateParams.AddDiaHao = false;
            coordinateCreateParams.CoordianteType = ForeStar.GIS.SpatialReference.CoordianteType.ProjectCoordiante;
            ICoordinateSystem project = ForeStar.GISUI.Utils.SpatialReferenceUtils.GetSelectSpatialReference(coordinateCreateParams);
            geometry.Project(project);
        }
        /// <summary>
        /// 获取米转度参数
        /// </summary>
        /// <param name="X">横坐标转换参数</param>
        /// <param name="Y">纵坐标转换参数</param>
        /// <param name="RateX"></param>
        /// <param name="RateY"></param>
        /// <returns></returns>
        public static bool MeterToDegreeRate(double X, double Y, out double RateX, out double RateY, SpatialInfoType pSpatialInfoType, DaiHaoType pDHType)
        {
            try
            {

                ForeStar.GIS.SpatialReference.CoordinateCreateParams coordinateCreateParams1 = new ForeStar.GIS.SpatialReference.CoordinateCreateParams();
                coordinateCreateParams1.SpatialInfoType = pSpatialInfoType;
                coordinateCreateParams1.Name = "PointConvert";
                coordinateCreateParams1.CoordianteType = ForeStar.GIS.SpatialReference.CoordianteType.GeoCoordinate;
                ICoordinateSystem project1 = ForeStar.GISUI.Utils.SpatialReferenceUtils.GetSelectSpatialReference(coordinateCreateParams1);
                int iDaiHao = MapSpatialReferenceUtils.GetDaihao(X, false);

                IPoint Point1 = new PointClass();
                Point1.X = X;
                Point1.Y = Y;
                Point1.CoordinateSystem = project1;
                ConvertPointZB2(ref Point1, iDaiHao, pSpatialInfoType, pDHType);
                //IPoint Point2 = new PointClass();
                Point1.X = Point1.X + 10;
                Point1.Y = Point1.Y + 10;
                //Point2.CoordinateSystem = project2;
                //CommonClass.ConvertPointZB3(ref Point2, iDaiHao);
                ConvertPointZB3(ref Point1, iDaiHao, pSpatialInfoType, pDHType);
                RateX = (Point1.X - X) / 10;
                RateY = (Point1.Y - Y) / 10;

                return true;
            }
            catch (Exception e)
            {
                LogManage.WriteLog("平面坐标到经纬度坐标转换失败" + e.Message);
                RateX = 0.000011634222179609;
                RateY = 0.000011634222179609;
                return false;
            }

        }

        /// <summary>
        /// 动态投影度转米比例
        /// </summary>
        /// <param name="X"></param>
        /// <param name="Y"></param>
        /// <param name="RateX"></param>
        /// <param name="RateY"></param>
        /// <returns></returns>
        public static bool DegreerToMetreRate(double X, double Y, out double RateX, out double RateY, SpatialInfoType pSpatialInfoType, DaiHaoType pDHType)
        {
            try
            {

                ForeStar.GIS.SpatialReference.CoordinateCreateParams coordinateCreateParams1 = new ForeStar.GIS.SpatialReference.CoordinateCreateParams();
                coordinateCreateParams1.SpatialInfoType = pSpatialInfoType;
                coordinateCreateParams1.Name = "PointConvert";
                coordinateCreateParams1.CoordianteType = ForeStar.GIS.SpatialReference.CoordianteType.GeoCoordinate;
                ICoordinateSystem project1 = ForeStar.GISUI.Utils.SpatialReferenceUtils.GetSelectSpatialReference(coordinateCreateParams1);
                int iDaiHao = MapSpatialReferenceUtils.GetDaihao(X, false);

                IPoint Point1 = new PointClass();
                Point1.X = X;
                Point1.Y = Y;
                Point1.CoordinateSystem = project1;
                ConvertPointZB2(ref Point1, iDaiHao, pSpatialInfoType, pDHType);
                //IPoint Point2 = new PointClass();
                Point1.X = Point1.X + 10;
                Point1.Y = Point1.Y + 10;
                //Point2.CoordinateSystem = project2;
                //CommonClass.ConvertPointZB3(ref Point2, iDaiHao);
                ConvertPointZB3(ref Point1, iDaiHao, pSpatialInfoType, pDHType);
                RateX = 10 / (Point1.X - X);
                RateY = 10 / (Point1.Y - Y);

                return true;
            }
            catch (Exception e)
            {
                LogManage.WriteLog("经纬度坐标到地理坐标转换失败" + e.Message);
                RateX = 1 / 0.000011634222179609;
                RateY = 1 / 0.000011634222179609;
                return false;
            }
        }
        /// <summary>
        /// 平面坐标到经纬度转换
        /// </summary>
        /// <param name="pPoint"></param>
        /// <param name="iDaiHao"></param>
        public static void ConvertPointZB3(ref IPoint pPoint, int iDaiHao, SpatialInfoType pSpatialInfoType, DaiHaoType pDHType)
        {
            if (pPoint == null) return;
            ForeStar.GIS.SpatialReference.CoordinateCreateParams coordinateCreateParams = new ForeStar.GIS.SpatialReference.CoordinateCreateParams();
            coordinateCreateParams.DaiHao = iDaiHao;
            coordinateCreateParams.DaiHaoType = pDHType;
            coordinateCreateParams.SpatialInfoType = pSpatialInfoType;
            coordinateCreateParams.Name = "PointConvert";
            coordinateCreateParams.AddDiaHao = true;
            coordinateCreateParams.CoordianteType = ForeStar.GIS.SpatialReference.CoordianteType.GeoCoordinate;
            ICoordinateSystem project = ForeStar.GISUI.Utils.SpatialReferenceUtils.GetSelectSpatialReference(coordinateCreateParams);
            pPoint.Project(project);
        }
        /// <summary>
        /// 经纬度到平面
        /// </summary>
        /// <param name="geometry"></param>
        /// <param name="DaiHao"></param>
        /// <param name="addDaiHao"></param>
        public static void ConvertGeometryZB(ref IGeometry geometry, int DaiHao, bool addDaiHao, SpatialInfoType pSpatialInfoType, DaiHaoType pDHType)
        {
            if (geometry == null) return;
            ForeStar.GIS.SpatialReference.CoordinateCreateParams coordinateCreateParams = new ForeStar.GIS.SpatialReference.CoordinateCreateParams();
            coordinateCreateParams.DaiHao = DaiHao;
            coordinateCreateParams.DaiHaoType = pDHType;
            coordinateCreateParams.SpatialInfoType = pSpatialInfoType;
            coordinateCreateParams.Name = "ProjectConvert";
            coordinateCreateParams.AddDiaHao = addDaiHao;
            coordinateCreateParams.CoordianteType = ForeStar.GIS.SpatialReference.CoordianteType.ProjectCoordiante;
            ICoordinateSystem project = ForeStar.GISUI.Utils.SpatialReferenceUtils.GetSelectSpatialReference(coordinateCreateParams);
            geometry.Project(project);
        }
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
兰伯特投影F、空港中心城 黄陂区盘龙城巨龙大道157号 黄陂区 3室2厅 93.00 低层(共28层) 2014年建造 朱华俊 127.00 13655.00 30.71555319 114.2654696 114.375743 30.882557 F、阳光城 黄陂区盘龙城巨龙大道特8号 黄陂区 2室2厅 71.00 中层(共16层) 2004年建造 殷灵灵 90.00 12676.00 30.71930515 114.266783 114.375743 30.882557 F、阳光城 黄陂区盘龙城巨龙大道特8号 黄陂区 2室2厅 90.00 低层(共18层) 2011年建造 汤志武 110.00 12127.00 30.71930515 114.266783 114.375743 30.882557 F、雅园 黄陂区盘龙城巨龙大道27号 黄陂区 2室2厅 85.00 层(共11层) 2012年建造 戴铁 106.00 12470.00 30.70407908 114.3024232 114.375743 30.882557 F绿岛 黄陂区盘龙城腾龙大道 黄陂区 3室2厅 108.00 中层(共19层) 2010年建造 沈博文 130.00 11989.00 30.71930515 114.266783 114.375743 30.882557 F绿岛 黄陂区盘龙城腾龙大道 黄陂区 3室2厅 108.00 层(共15层) 2014年建造 王鹏程 130.00 12037.00 30.71930515 114.266783 114.375743 30.882557 F绿岛 黄陂区盘龙城腾龙大道 黄陂区 3室2厅 108.00 层(共15层) 2015年建造 耿承艳 130.00 12037.00 30.71930515 114.266783 114.375743 30.882557 F绿岛 黄陂区盘龙城腾龙大道 黄陂区 3室2厅 108.00 层(共16层) 2014年建造 王学洪 127.00 11759.00 30.71930515 114.266783 114.375743 30.882557 F绿岛 黄陂区盘龙城腾龙大道 黄陂区 3室2厅 110.00 层(共15层) 2015年建造 程红霞 130.00 11818.00 30.71930515 114.266783 114.375743 30.882557 ICC铂庭 江汉区武广松园青年路59号 江汉区 1室1厅 80.00 中层(共27层) 2016年建造 杨毅 262.00 32750.00 30.59664194 114.2691026 114.270871 30.60143
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值