转自原文 ArcGIS Engine中空间参照(地理坐标)相关方法总结

1.创建空间参考

/// <summary>
/// 根据prj文件创建空间参考
/// </summary>
/// <param name="strProFile">空间参照文件</param>
/// <returns></returns>
public static ISpatialReference CreateSpatialReference(string strProFile)
{
ISpatialReferenceFactory pSpatialReferenceFactory = new SpatialReferenceEnvironmentClass();
ISpatialReference pSpatialReference = pSpatialReferenceFactory.CreateESRISpatialReferenceFromPRJFile(strProFile);
return pSpatialReference;
} /// <summary>
/// 创建地理坐标系
/// </summary>
/// <param name="gcType">esriSRProjCS4Type</param>
/// <returns></returns>
public static ISpatialReference CreateGeographicCoordinate(esriSRProjCS4Type gcsType)
{
ISpatialReferenceFactory pSpatialReferenceFactory = new SpatialReferenceEnvironmentClass();
ISpatialReference pSpatialReference = pSpatialReferenceFactory.CreateGeographicCoordinateSystem((int)gcsType);
return pSpatialReference;
} /// <summary>
/// 创建投影坐标系
/// </summary>
/// <param name="pcType">esriSRProjCS4Type</param>
/// <returns></returns>
public static ISpatialReference CreateProjectedCoordinate(esriSRProjCS4Type pcsType)
{
ISpatialReferenceFactory2 pSpatialReferenceFactory = new SpatialReferenceEnvironmentClass();
ISpatialReference pSpatialReference = pSpatialReferenceFactory.CreateProjectedCoordinateSystem((int)pcsType);
return pSpatialReference;
} /// <summary>
/// 获取空投影
/// </summary>
/// <returns></returns>
public static ISpatialReference CreateUnKnownSpatialReference()
{
ISpatialReference pSpatialReference = new UnknownCoordinateSystemClass();
pSpatialReference.SetDomain(, , , );//设置空间范围
return pSpatialReference;
} .获取空间参考 /// <summary>
/// 获取要素集空间参考
/// </summary>
/// <param name="pFeatureDataset">要素集</param>
/// <returns></returns>
public static ISpatialReference GetSpatialReference(IFeatureDataset pFeatureDataset)
{
IGeoDataset pGeoDataset = pFeatureDataset as IGeoDataset;
ISpatialReference pSpatialReference = pGeoDataset.SpatialReference;
return pSpatialReference;
} /// <summary>
/// 获取要素层空间参考
/// </summary>
/// <param name="pFeatureLayer">要素层</param>
/// <returns></returns>
public static ISpatialReference GetSpatialReferenc(IFeatureLayer pFeatureLayer)
{IFeatureClass pFeatureClass = pFeatureLayer.FeatureClass;
IGeoDataset pGeoDataset = pFeatureClass as IGeoDataset;
ISpatialReference pSpatialReference = pGeoDataset.SpatialReference;
return pSpatialReference;
} /// <summary>
/// 获取要素类空间参考
/// </summary>
/// <param name="pFeatureClass">要素类</param>
/// <returns></returns>
public static ISpatialReference GetSpatialReference(IFeatureClass pFeatureClass)
{
IGeoDataset pGeoDataset = pFeatureClass as IGeoDataset;
ISpatialReference pSpatialReference = pGeoDataset.SpatialReference;
return pSpatialReference;
} .修改空间参考 /// <summary>
/// 修改要素集空间参考
/// </summary>
/// <param name="pFeatureDataset">要素集</param>
/// <param name="pSpatialReference">新空间参考</param>
public static void AlterSpatialReference(IFeatureDataset pFeatureDataset, ISpatialReference pSpatialReference)
{
IGeoDataset pGeoDataset = pFeatureDataset as IGeoDataset;
IGeoDatasetSchemaEdit pGeoDatasetSchemaEdit = pGeoDataset as IGeoDatasetSchemaEdit;
if (pGeoDatasetSchemaEdit.CanAlterSpatialReference == true)
pGeoDatasetSchemaEdit.AlterSpatialReference(pSpatialReference);
} /// <summary>
/// 修改要素类空间参考
/// </summary>
/// <param name="pFeatureClass">要素类</param>
/// <param name="pSpatialReference">新空间参考</param>
public static void AlterSpatialReference(IFeatureClass pFeatureClass, ISpatialReference pSpatialReference)
{
IGeoDataset pGeoDataset = pFeatureClass as IGeoDataset;
IGeoDatasetSchemaEdit pGeoDatasetSchemaEdit = pGeoDataset as IGeoDatasetSchemaEdit;
if (pGeoDatasetSchemaEdit.CanAlterSpatialReference == true)
pGeoDatasetSchemaEdit.AlterSpatialReference(pSpatialReference);
}
05-04 06:22