转自原文 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方法创建坐标系,可以正确使用。

最新文章

  1. python-pickle模块使用实例
  2. Django(4)html模板继承、模板导入、分页实现
  3. 有关TabBar的一些性质
  4. ITEM M6 自增(INCREMENT)、自减(DECREMENT)操作符前缀形式与后缀形式的区别
  5. JSR 303标准
  6. MySQL 及 SQL 注入
  7. 【POJ】2155 Matrix
  8. hdu 1869
  9. C++临时对象销毁时间
  10. net 面向接口框架
  11. 使用注解实现 bean 转 csv
  12. Python系列之Collections内置模块(2)
  13. oracle server config
  14. PAT1040:Longest Symmetric String
  15. LimeSDR 上手指南
  16. 对TSNU网站的初步分析
  17. (Set){A} + {B} hdu1412
  18. 使用parted创建gpt大分区例子
  19. C++学习4-面向对象编程基础(面向对象概念,定义类,定义对象)
  20. mysql获取某个表的所有属性名及其数据

热门文章

  1. [BZOJ 1718] Redundant Paths
  2. bzoj2595 [Wc2008]游览计划——斯坦纳树
  3. 一个对象toString()方法如果没有被重写,那么默认调用它的父类Object的toString()方法,而Object的toString()方法是打印该对象的hashCode,一般hashCode就是此对象的内存地址
  4. web 应用
  5. Struts2 在拦截器中向Action传参
  6. 初学Hibernate杂乱总结
  7. Application windows are expected to have a root view controller at the end of application launch
  8. SQL Server中,with as使用介绍
  9. Apex语言(六)数组
  10. 团体程序设计天梯赛-练习集-L1-046. 整除光棍