参考文献
(25条消息) GIS入门——说说坐标系的事儿_巫行云的博客-优快云博客_cgcs2000 gk zone
CGCS2000 / 3-degree Gauss-Kruger CM 84E - EPSG:4537
空间参考系统与WKT解析 - pangbangb - 博客园 (cnblogs.com)
EPSG是什么?WKT是什么?SRID是什么?EPSG、WKT、SRID概念 - 知乎 (zhihu.com)
WKT - JackGIS - 博客园 (cnblogs.com)
(25条消息) ArcGIS中我国常用的坐标系统WKID列表_鱿小鱼儿的博客-优快云博客_arcgis用什么坐标系
(25条消息) EPSG和WKID空间参考之--坐标系简单理解_GIS哼哈哈的博客-优快云博客_epsg
(25条消息) ArcGIS中3度带和6度带投影变换方法及跨带投影问题_巫行云的博客-优快云博客_arcgis3度带转6度带
在ArcGIS中不同坐标系之间的转换 - 知乎 (zhihu.com)
(25条消息) ArcGIS教程:如何为跨带数据投影_地理国情监测云平台的博客-优快云博客
1、wkid
wkid 是AE可以转换成投影坐标系的一种字符串格式。(注意投影坐标系和地理坐标系的不同!)
PROJCS["CGCS2000 / 3-degree Gauss-Kruger CM 75E",
GEOGCS["China Geodetic Coordinate System 2000",
DATUM["China_2000",
SPHEROID["CGCS2000",6378137,298.257222101,
AUTHORITY["EPSG","1024"]],
AUTHORITY["EPSG","1043"]],
PRIMEM["Greenwich",0,
AUTHORITY["EPSG","8901"]],
UNIT["degree",0.0174532925199433,
AUTHORITY["EPSG","9122"]],
AUTHORITY["EPSG","4490"]],
PROJECTION["Transverse_Mercator"],
PARAMETER["latitude_of_origin",0],
PARAMETER["central_meridian",75],
PARAMETER["scale_factor",1],
PARAMETER["false_easting",500000],
PARAMETER["false_northing",0],
UNIT["metre",1,
AUTHORITY["EPSG","9001"]],
AUTHORITY["EPSG","4534"]]
使用上述字符串来定义投影
public static ISpatialReference CreateSpatialRefFromPrjContent(double central_meridian)
{
string prjContent = "PROJCS[\"CGCS2000Gauss-Kruger \"," +
"GEOGCS[\"GCS_China Geodetic Coordinate System 2000\"," +
"DATUM[\"D_China_2000\",SPHEROID[\"CGCS2000\",6378137,298.257222101]]," +
"PRIMEM[\"Greenwich\",0]," +
"UNIT[\"Degree\",0.017453292519943295]]," +
"PROJECTION[\"Gauss_Kruger\"]," +
"PARAMETER[\"latitude_of_origin\",0]," +
"PARAMETER[\"central_meridian\"," +
central_meridian +
"]," +
"PARAMETER[\"scale_factor\",1]," +
"PARAMETER[\"false_easting\",500000]," +
"PARAMETER[\"false_northing\",0]," +
"UNIT[\"Meter\",1]]";
ISpatialReferenceFactory srf = new SpatialReferenceEnvironmentClass();
srf.CreateESRISpatialReference(prjContent, out ISpatialReference spaRef, out int cBytesRead);
return spaRef;
}
2、还可以使用AE自带函数,代码定义投影(不过使用中报错,找不出原因,贴出AE自带的实例代码
#region //创建一个自定义投影坐标系统
public static IProjectedCoordinateSystem CreateCustomProjectedCoordinateSystem()
{
ISpatialReferenceFactory2 pSpatialReferenceFactory = new SpatialReferenceEnvironmentClass();
IProjectionGEN pProjection = pSpatialReferenceFactory.CreateProjection((int)esriSRProjectionType.esriSRProjection_GaussKruger) as IProjectionGEN;
IGeographicCoordinateSystem pGeographicCoordinateSystem = pSpatialReferenceFactory.CreateGeographicCoordinateSystem((int)esriSRGeoCSType.esriSRGeoCS_WGS1984);
ILinearUnit pUnit = pSpatialReferenceFactory.CreateUnit((int)esriSRUnitType.esriSRUnit_Meter) as ILinearUnit;
IParameter[] pParameters = pProjection.GetDefaultParameters();
IProjectedCoordinateSystemEdit pProjectedCoordinateSystemEdit = new ProjectedCoordinateSystemClass();
object pName = "WGS-1984";
object pAlias = "WGS-1984";
object pAbbreviation = "WGS-1984";
object pRemarks = "WGS-1984";
object pUsage = " ";
object pGeographicCoordinateSystemObject = pGeographicCoordinateSystem as object;
object pUnitObject = pUnit as object;
object pProjectionObject = pProjection as object;
object pParametersObject = pParameters as object;
try
{
pProjectedCoordinateSystemEdit.Define(ref pName,
ref pAlias, ref pAbbreviation, ref pRemarks, ref pUsage,
ref pGeographicCoordinateSystemObject, ref pUnitObject,
ref pProjectionObject, ref pParametersObject);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message + ex.InnerException.Message);
}
//设置缩放比和偏移
IProjectedCoordinateSystem5 pProjectedCoordinateSystem = pProjectedCoordinateSystemEdit as IProjectedCoordinateSystem5;
pProjectedCoordinateSystem.FalseEasting = 500000;
pProjectedCoordinateSystem.LatitudeOfOrigin = 0;
pProjectedCoordinateSystem.set_CentralMeridian(true, 69);
pProjectedCoordinateSystem.ScaleFactor = 2;
pProjectedCoordinateSystem.FalseNorthing = 0;
return pProjectedCoordinateSystem;
}
#endregion