Arcengine设置坐标系
转自原文 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方法创建坐标系,可以正确使用。
最新文章
- python-pickle模块使用实例
- Django(4)html模板继承、模板导入、分页实现
- 有关TabBar的一些性质
- ITEM M6 自增(INCREMENT)、自减(DECREMENT)操作符前缀形式与后缀形式的区别
- JSR 303标准
- MySQL 及 SQL 注入
- 【POJ】2155 Matrix
- hdu 1869
- C++临时对象销毁时间
- net 面向接口框架
- 使用注解实现 bean 转 csv
- Python系列之Collections内置模块(2)
- oracle server config
- PAT1040:Longest Symmetric String
- LimeSDR 上手指南
- 对TSNU网站的初步分析
- (Set){A} + {B} hdu1412
- 使用parted创建gpt大分区例子
- C++学习4-面向对象编程基础(面向对象概念,定义类,定义对象)
- mysql获取某个表的所有属性名及其数据
热门文章
- [BZOJ 1718] Redundant Paths
- bzoj2595 [Wc2008]游览计划——斯坦纳树
- 一个对象toString()方法如果没有被重写,那么默认调用它的父类Object的toString()方法,而Object的toString()方法是打印该对象的hashCode,一般hashCode就是此对象的内存地址
- web 应用
- Struts2 在拦截器中向Action传参
- 初学Hibernate杂乱总结
- Application windows are expected to have a root view controller at the end of application launch
- SQL Server中,with as使用介绍
- Apex语言(六)数组
- 团体程序设计天梯赛-练习集-L1-046. 整除光棍