投影转换
来源:互联网 发布:玛嘉.莎塔碧 知乎 编辑:程序博客网 时间:2024/05/29 07:53
/// <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
- 投影转换
- arcengine 投影转换
- arcgis中的投影转换。
- GDAL影像投影转换
- Openlayers之投影转换
- 投影转换GP工具
- 定义投影,投影转换,空间校正
- UTM投影分带标准及投影转换
- GDAL的点投影转换
- arcgis创建投影转换方式
- 常用投影及转换介绍
- 坐标、投影及坐标转换
- 等高线如何转换投影坐标系
- CGCS2000坐标系投影转换教程
- ArcGIS教程:ArcGIS中图层添加投影及投影转换
- 关于投影和坐标转换的文章
- ArcGIS中的投影和坐标转换
- ArcCatalog对空间数据进行投影转换
- SQLMAP 实例COOKBOOK
- 一例千万级pv高性能高并发网站架构
- Arcgis属性表去除小班字段左边第一个0
- windows 2003 修改远程桌面连接数详细方法
- 在kettle6.0中集成插件报错:The type........It is indirectly referenced from required .class files
- 投影转换
- android 5.0 ,zbar扫描java.lang.UnsatisfiedLinkError,找不到so文件
- 本地化和国际化
- JDBC数据库连接池----JNDI的使用
- jQuery EasyUI使用教程之在面板中创建复杂布局
- php数组和字符串的相互转换
- IntelliJ IDEA14中svn配置问题
- R语言连接Mysql数据库的步骤及简单使用(学习笔记)
- OpenStack Liberty 版本 All-In-One 一键安装ISO 及安装指导