Arcengine設置坐標系


ArcGIS Engine提供了一系列對象供開發者管理GIS系統的坐標系統。
對大部分開發者而言了解ProjectedCoordinateSystem, GeographicCoordinateSystem, 
SpatialReference Environment這三個組件類是非常有必要的,
對於高級開發者而言,可能需要自定義坐標系統可以使用
這些對象Projection,Datum,AngularUnit,Spheriod,PrimeMeridian和
GeoTransformation等。
1、ISpatialReference地理坐標系對象
(空間參考的設置重要是指地理坐標系對象,設置好它后然后將它賦值給需要的對象)
//創建地理坐標系對象
ISpatialReferenceFactory spatialReferenceFactory = new SpatialReferenceEnvironmentClass();
ISpatialReference spatialReference = spatialReferenceFactory.CreateGeographicCoordinateSystem((int)esriSRGeoCSType.esriSRGeoCS_WGS1984);

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 == true)
{
//創建SpatialReferenceEnvironmentClass對象
ISpatialReferenceFactory2 pSpaRefFactory = new SpatialReferenceEnvironmentClass();
//創建地理坐標系對象
IGeographicCoordinateSystem pNewGeoSys = pSpaRefFactory.CreateGeographicCoordinateSystem(gcsType);//4214代表Beijing1954
pGeoDatasetSchemaEdit.AlterSpatialReference(pNewGeoSys);
}
}
catch (Exception Err)
{
MessageBox.Show(Err.Message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}

3、空間坐標枚舉
esriSRGeoCSType
esriSRProjCSType

4.自定義坐標系

用ArcMap定義好坐標系后導出成prj文件,再用ISpatialReferenceFactory.CreateESRISpatialReferenceFromPRJFile方法創建坐標系,可以正確使用。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM