Engine中如何判断两个要素类的空间参考是否是同一个?

Engine中如何判断两个要素类的空间参考是否是同一个?如果是自定义坐标系出现名称一样,但内容不一样的情况怎么判断呢?
已邀请:

朱新颖

赞同来自: ArcGIS知乎 Lazy

【解决办法】:
1,系统自带的空间参考可以通过ISpatialReference.Name进行判断,不会有重名现象。

标准的3度带和6度带有一部分中央经线是重合的,对于不重合的部分肯定是3度带,但是重合的部分是不好判断的,比如如下例子。

比如系统自带的Xian 1980 3 Degree GK CM 117E.prj和Xian 1980 GK CM 117E.prj两个坐标系,字符串中的信息是相同的,那么如果不是根据文件名称是无法判断到底是哪一个,如下是字符串信息:

PROJCS[xxx,GEOGCS[GCS_Xian_1980,DATUM[D_Xian_1980,SPHEROID[Xian_1980,6378140.0,298.257]],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]]

2,自定义坐标系如果名称一样,内容不一样,Engine中如何获取上面字符串呢?可以使用IESRISpatialReferenceGEN2.ExportToESRISpatialReference2方法获取字符串,然后比较两个字符串是否相同。

该接口AO中帮助有示例代码:
http://resources.arcgis.com/en ... 0000/

赞同来自: 请叫我红领巾。 Lazy

  IPRJSpatialReferenceGEN gen1 = (IPRJSpatialReferenceGEN)((IGeoDataset)inputFeatureClass).SpatialReference;
                IPRJSpatialReferenceGEN gen2 = (IPRJSpatialReferenceGEN)((IGeoDataset)targetFeatureClass).SpatialReference;
                string str1, str2;
                int int1, int2;
                gen1.ExportSpatialReferenceToPRJ(out str1, out int1);
                gen2.ExportSpatialReferenceToPRJ(out str2, out int2);
                if (str1.Trim() == str2.Trim())
                {
                    res = true;
                }
楼上说的第二种方法

要回复问题请先登录注册