ArcEngine GP 环境变量的疑惑

ArcEngine版本:10.2.2
GP工具:ESRI.ArcGIS.ConversionTools.PolygonToRaster
问题描述:我在用面转栅格工具输出【Grid格式】的栅格数据,设置了GP工具的环境变量“输出坐标系统”(outputCoordinateSystem),但是运行GP工具后的数据坐标系变成了自定义,这块请看下面的补充的截图。
用到的代码:
代码段1:
        /// <summary>
/// 获取坐标系信息字符串
/// </summary>
/// <param name="pSpatialReference">输入坐标系</param>
/// <returns>坐标系信息字符串</returns>
public static string GetSpatialReferenceStr(ISpatialReference pSpatialReference)
{
string spatialReferenceStr = string.Empty;
if (pSpatialReference.Name == "Unknown")
{
spatialReferenceStr = "none";
}
else
{
IESRISpatialReferenceGEN esriSpatialReference = new GeographicCoordinateSystemClass();
esriSpatialReference = pSpatialReference as IESRISpatialReferenceGEN;
string coordSysStr = string.Empty;
int cBytesWrote;
esriSpatialReference.ExportToESRISpatialReference(out coordSysStr, out cBytesWrote);
spatialReferenceStr = coordSysStr;
}
return spatialReferenceStr;
}


if (sMillionTfh.Equals("J50", StringComparison.CurrentCultureIgnoreCase) ||
sMillionTfh.Equals("K50", StringComparison.CurrentCultureIgnoreCase))
{
pSpatialReference = pSpatialReferenceFactory.CreateProjectedCoordinateSystem(4509);
}
else
{
pSpatialReference = pSpatialReferenceFactory.CreateProjectedCoordinateSystem(4510);
}
string sPrjInfo = PS.Plot.Common.EngineAPI.GetSpatialReferenceStr(pSpatialReference);
GpOperate.instance.geoProcessor.SetEnvironmentValue("outputCoordinateSystem", sPrjInfo);
代码段2:
ISpatialReferenceFactory3 spatialrefFactory = new SpatialReferenceEnvironmentClass();
spatialrefFactory.ExportESRISpatialReferenceInfoToPRJFile(@"D:\1.prj", pSpatialReference);
GpOperate.instance.geoProcessor.SetEnvironmentValue("outputCoordinateSystem", @"D:\1.prj");
两种方法效果是一样的,最终的结果坐标系都是自定义的,我用arcmap操作同样的的工具设置输出坐标系,结果坐标系就不是自定义的,这块我不知道我哪儿一步操作错了??
我的问题简单的说就是:我想让工具输出的坐标系和我outputCoordinateSystem设置的坐标系是一致的,但是现在不一致,输出后坐标系变成自定义的了

这两张图片都是代码输出的数据的坐标系,一个是设置的2000地理坐标系,一个是设置的2000 的高斯投影坐标系。

1.png


2.png


1.png


3.png


5.png

 
已邀请:

刘峥 - ArcGIS多面手

赞同来自:

1. set以后get,设置成功了吗?
2. 直接用.prj文件里的字符串试试?

gp.SetEnvironmentValue("outputCoordinateSystem", "PROJCS['NAD_1983_UTM_Zone_11N',GEOGCS['GCS_North_American_1983',DATUM['D_North_American_1983',SPHEROID['GRS_1980',6378137.0,298.257222101]],PRIMEM['Greenwich',0.0],UNIT['Degree',0.0174532925199433]],PROJECTION['Transverse_Mercator'],PARAMETER['False_Easting',500000.0],PARAMETER['False_Northing',0.0],PARAMETER['Central_Meridian',-117.0],PARAMETER['Scale_Factor',0.9996],PARAMETER['Latitude_Of_Origin',0.0],UNIT['Meter',1.0]]")
 

YoungHappy

赞同来自:

这个是1.prj文件的内容
 PROJCS["CGCS2000_GK_CM_117E",GEOGCS["GCS_China_Geodetic_Coordinate_System_2000",DATUM["D_China_2000",SPHEROID["CGCS2000",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",117.0],PARAMETER["Scale_Factor",1.0],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0],AUTHORITY["EPSG",4509]]
 

4.png

这个是代码断点的内容,最终的结果还是不对 显示的不对,看位置没问题

石羽

赞同来自:

首先GRID格式不推荐,能不用就别用。
其次,prj不要随便用,prj不要随便用,prj不要随便用
这么多字符能保证完全一样么?不能差不多,最好从ArcMap中导出一个来用

要回复问题请先登录注册