作者:爱心永溢真情永远 | 来源:互联网 | 2023-10-11 14:28
篇首语:本文由编程笔记#小编为大家整理,主要介绍了ArcGIS Engine——坐标系相关相关的知识,希望对你有一定的参考价值。
public class SpatialReferenceHelpers
{
///
/// 创建地理坐标系
///
///
///
public ISpatialReference CreateGeographicSpatialReference(ESRI.ArcGIS.Geometry.esriSRGeoCSType FactoryCode)
{
return CreateGeographicSpatialReference((int)FactoryCode);
}
public ISpatialReference CreateGeographicSpatialReference(int FactoryCode)
{
ISpatialReferenceFactory2 oSpatialReferenceFactory;
ISpatialReference oCS;
try
{
Type t = Type.GetTypeFromProgID("esriGeometry.SpatialReferenceEnvironment");
oSpatialReferenceFactory = (ISpatialReferenceFactory2)Activator.CreateInstance(t);
oCS = oSpatialReferenceFactory.CreateSpatialReference(FactoryCode);
return oCS;
}
catch
{
return null;
}
}
///
/// 创建投影坐标系
///
///
///
public ISpatialReference CreateProjectSpatialReference(esriSRProjCS4Type pcsType)
{
return CreateProjectSpatialReference((int)pcsType);
}
public ISpatialReference CreateProjectSpatialReference(int FactoryCode)
{
ISpatialReferenceFactory2 oSpatialReferenceFactory;
ISpatialReference oCS;
try
{
Type t = Type.GetTypeFromProgID("esriGeometry.SpatialReferenceEnvironment");
oSpatialReferenceFactory = (ISpatialReferenceFactory2)Activator.CreateInstance(t);
oCS = oSpatialReferenceFactory.CreateProjectedCoordinateSystem(FactoryCode);
return oCS;
}
catch
{
return null;
}
}
///
/// 图形坐标系变换
///
///
///
///
///
public IGeometry TransformShapeCS(IGeometry pGeometry, ISpatialReference pInputSR, ISpatialReference pOutputSR)
{
IGeometry oGeometry;
try
{
oGeometry = pGeometry;
oGeometry.SpatialReference = pInputSR;
oGeometry.Project(pOutputSR);
return oGeometry;
}
catch
{
return pGeometry;
}
}
///
/// 修改要素集空间参考
///
/// 要素集
/// 新空间参考
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);
}
///
/// 获取要素集空间参考
///
/// 要素集
///
public static ISpatialReference GetSpatialReference(IGeoDataset pGeoDataset)
{
return pGeoDataset.SpatialReference;
}
public static ISpatialReference GetSpatialReference(IFeatureDataset pFeatureDataset)
{
return GetSpatialReference(pFeatureDataset as IGeoDataset);
}
public static ISpatialReference GetSpatialReference(IFeatureLayer pFeatureLayer)
{
return GetSpatialReference(pFeatureLayer.FeatureClass);
}
public static ISpatialReference GetSpatialReference(IFeatureClass pFeatureClass)
{
return GetSpatialReference(pFeatureClass as IGeoDataset);
}
}