版权声明: https://blog.csdn.net/qq_33459369/article/details/88089739
最近GIS开发中遇到两个图层坐标系的对比是否相同。在GIS开发中总会接触到坐标系,如:地理坐标系、投影坐标系等,既然用到了,那就在这里记下一笔。那么当然先要了解一下坐标系的基本概念了。
基本概念
地理坐标系是球面坐标,参考平面是椭球面,坐标单位为经纬度。
投影坐标系是平面坐标系,参考平面是水平面,坐标单位为米、千米等。
投影坐标系是由地理坐标系投影转换而来的,即将不规则的地球曲面转换为平面。
地理坐标系的WKID介绍:Geographic Coordinate Systems
投影坐标系的WKID介绍:Projected Coordinate Systems
操作实例
1、从图层中获取坐标系信息
下面是在arcmap中创建的图层,可看到有地理坐标系和投影坐标系
代码:
public void GetCoordinateSystem(IFeatureClass targetFClass)
{
IGeoDataset tgeoDataset = targetFClass as IGeoDataset; //通过IGeoDataset接口获取FeatureClass坐标系统
ISpatialReference tSpatialRef = tgeoDataset.SpatialReference;
if (tSpatialRef is IProjectedCoordinateSystem tProCoordSys) //是否为平面坐标系
{
var name = tProCoordSys.Name; //投影(平面)坐标系名称 CGCS2000_3_Degree_GK_Zone_38
var centerline = tProCoordSys.CentralMeridian[true];//中央子午线 114.00000000000001
//获取线性单位
ILinearUnit linearUnit = tProCoordSys.CoordinateUnit;
var lineardw = linearUnit.Name; //Meter
//获取投影属性的详细信息
IProjection pro = tProCoordSys.Projection;
var proName = pro.Name; //投影名称 Gauss_Kruger
//在投影坐标系中获取地理坐标系
IGeographicCoordinateSystem geographic = tProCoordSys.GeographicCoordinateSystem;
var gname = geographic.Name; //地理坐标系名称 GCS_China_Geodetic_Coordinate_System_2000
}
else if(tSpatialRef is IGeographicCoordinateSystem geographic) //是否为地理坐标系
{
var gname = geographic.Name; //GCS_China_Geodetic_Coordinate_System_2000
//获取角度单位
IAngularUnit angularUnit =geographic.CoordinateUnit;
var angulardw = angularUnit.Name; //Degree
}
}