ArcGIS Engine提供了一系列對象供開發者管理GIS系統的坐標系統。
對大部分開發者而言了解ProjectedCoordinateSyste
SpatialReference Environment這三個組件類是非常有必要的,
對於高級開發者而言,可能需要自定義坐標系統可以使用
這些對象Projection,Datum,AngularUnit,Spheriod,PrimeMeridian和
GeoTransformation等。
1、ISpatialReference地理坐標系對象
(空間參考的設置重要是指地理坐標系對象,設置好它后然后將它賦值給需要的對象)
//創建地理坐標系對象
ISpatialReferenceFactory
ISpatialReference spatialReference = spatialReferenceFactory.CreateGeographicCoordina
2、改變空間參考
IGeoDatasetSchemaEdit接口的AlterSpatialReference方法可以改變空間參考,在改變前先用CanAlterSpatialReference
pGeoDatasetSchemaEdit.AlterSpatialReference(pSpatialReference);
實例:
/// <summary>
/// 改變圖層的空間參考
/// </summary>
/// <param name="pFeatureLayer">圖層</param>
/// <param name="pGeoType">空間參考類型</param>
private void ChangeLayerRef(IFeatureLayer pFeatureLayer, int gcsType)
{
try
{
IFeatureClass pFeatureClass = pFeatureLayer.FeatureClass;
//QI到IGeoDataset
IGeoDataset pGeoDataset = pFeatureClass as IGeoDataset;
//QI到IGeoDatasetSchemaEdit
IGeoDatasetSchemaEdit pGeoDatasetSchemaEdit = pGeoDataset as IGeoDatasetSchemaEdit;
if (pGeoDatasetSchemaEdit.CanAlterSpatialReference
{
//創建SpatialReferenceEnvironm
ISpatialReferenceFactory
//創建地理坐標系對象
IGeographicCoordinateSys
pGeoDatasetSchemaEdit.AlterSpatialReference(pNewGeoSys);
}
}
catch (Exception Err)
{
MessageBox.Show(Err.Message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
3、空間坐標枚舉
esriSRGeoCSType
esriSRProjCSType
用ArcMap定義好坐標系后導出成prj文件,再用ISpatialReferenceFactory.CreateESRISpatialReferenceFromPRJFile方法創建坐標系,可以正確使用。