ArcGIS Engine中空间参照(地理坐标)相关方法总结

来自:http://blog.csdn.net/u011170962/article/details/38776101

1.创建空间参考

  1. /// <summary>
  2. /// 根据prj文件创建空间参考
  3. /// </summary>
  4. /// <param name="strProFile">空间参照文件</param>
  5. /// <returns></returns>
  6. public static ISpatialReference CreateSpatialReference(string strProFile)
  7. {
  8. ISpatialReferenceFactory pSpatialReferenceFactory = new SpatialReferenceEnvironmentClass();
  9. ISpatialReference pSpatialReference = pSpatialReferenceFactory.CreateESRISpatialReferenceFromPRJFile(strProFile);
  10. return pSpatialReference;
  11. }
  1. /// <summary>
  2. /// 创建地理坐标系
  3. /// </summary>
  4. /// <param name="gcType">esriSRProjCS4Type</param>
  5. /// <returns></returns>
  6. public static ISpatialReference CreateGeographicCoordinate(esriSRProjCS4Type gcsType)
  7. {
  8. ISpatialReferenceFactory pSpatialReferenceFactory = new SpatialReferenceEnvironmentClass();
  9. ISpatialReference pSpatialReference = pSpatialReferenceFactory.CreateGeographicCoordinateSystem((int)gcsType);
  10. return pSpatialReference;
  11. }
  1. /// <summary>
  2. /// 创建投影坐标系
  3. /// </summary>
  4. /// <param name="pcType">esriSRProjCS4Type</param>
  5. /// <returns></returns>
  6. public static ISpatialReference CreateProjectedCoordinate(esriSRProjCS4Type pcsType)
  7. {
  8. ISpatialReferenceFactory2 pSpatialReferenceFactory = new SpatialReferenceEnvironmentClass();
  9. ISpatialReference pSpatialReference = pSpatialReferenceFactory.CreateProjectedCoordinateSystem((int)pcsType);
  10. return pSpatialReference;
  11. }
  1. /// <summary>
  2. /// 获取空投影
  3. /// </summary>
  4. /// <returns></returns>
  5. public static ISpatialReference CreateUnKnownSpatialReference()
  6. {
  7. ISpatialReference pSpatialReference = new UnknownCoordinateSystemClass();
  8. pSpatialReference.SetDomain(0, 99999999, 0, 99999999);//设置空间范围
  9. return pSpatialReference;
  10. }

2.获取空间参考

  1. /// <summary>
  2. /// 获取要素集空间参考
  3. /// </summary>
  4. /// <param name="pFeatureDataset">要素集</param>
  5. /// <returns></returns>
  6. public static ISpatialReference GetSpatialReference(IFeatureDataset pFeatureDataset)
  7. {
  8. IGeoDataset pGeoDataset = pFeatureDataset as IGeoDataset;
  9. ISpatialReference pSpatialReference = pGeoDataset.SpatialReference;
  10. return pSpatialReference;
  11. }
  1. /// <summary>
  2. /// 获取要素层空间参考
  3. /// </summary>
  4. /// <param name="pFeatureLayer">要素层</param>
  5. /// <returns></returns>
  6. public static ISpatialReference GetSpatialReferenc(IFeatureLayer pFeatureLayer)
  7. {IFeatureClass pFeatureClass = pFeatureLayer.FeatureClass;
  8. IGeoDataset pGeoDataset = pFeatureClass as IGeoDataset;
  9. ISpatialReference pSpatialReference = pGeoDataset.SpatialReference;
  10. return pSpatialReference;
  11. }
  1. /// <summary>
  2. /// 获取要素类空间参考
  3. /// </summary>
  4. /// <param name="pFeatureClass">要素类</param>
  5. /// <returns></returns>
  6. public static ISpatialReference GetSpatialReference(IFeatureClass pFeatureClass)
  7. {
  8. IGeoDataset pGeoDataset = pFeatureClass as IGeoDataset;
  9. ISpatialReference pSpatialReference = pGeoDataset.SpatialReference;
  10. return pSpatialReference;
  11. }

3.修改空间参考

  1. /// <summary>
  2. /// 修改要素集空间参考
  3. /// </summary>
  4. /// <param name="pFeatureDataset">要素集</param>
  5. /// <param name="pSpatialReference">新空间参考</param>
  6. public static void AlterSpatialReference(IFeatureDataset pFeatureDataset, ISpatialReference pSpatialReference)
  7. {
  8. IGeoDataset pGeoDataset = pFeatureDataset as IGeoDataset;
  9. IGeoDatasetSchemaEdit pGeoDatasetSchemaEdit = pGeoDataset as IGeoDatasetSchemaEdit;
  10. if (pGeoDatasetSchemaEdit.CanAlterSpatialReference == true)
  11. pGeoDatasetSchemaEdit.AlterSpatialReference(pSpatialReference);
  12. }
  1. /// <summary>
  2. /// 修改要素类空间参考
  3. /// </summary>
  4. /// <param name="pFeatureClass">要素类</param>
  5. /// <param name="pSpatialReference">新空间参考</param>
  6. public static void AlterSpatialReference(IFeatureClass pFeatureClass, ISpatialReference pSpatialReference)
  7. {
  8. IGeoDataset pGeoDataset = pFeatureClass as IGeoDataset;
  9. IGeoDatasetSchemaEdit pGeoDatasetSchemaEdit = pGeoDataset as IGeoDatasetSchemaEdit;
  10. if (pGeoDatasetSchemaEdit.CanAlterSpatialReference == true)
  11. pGeoDatasetSchemaEdit.AlterSpatialReference(pSpatialReference);
  12. }

ArcGIS Engine中空间参照(地理坐标)相关方法总结转的更多相关文章

  1. ArcGIS Engine中空间参照(地理坐标)相关方法总结

    转自原文 ArcGIS Engine中空间参照(地理坐标)相关方法总结 1.创建空间参考 /// <summary> /// 根据prj文件创建空间参考 /// </summary& ...

  2. ArcGIS Engine中的8种数据访问 (转)

    数据是GIS的基础, 访问数据也是进行任何复杂的空间分析及空间可视化表达的前提.ArcGIS支持的数据格式比较丰富,对不同的数据格式支持的程度也有很大差异.本文主要介绍一下以下八种数据格式在ArcGI ...

  3. ArcGIS Engine中的数据访问

    ArcGIS Engine中的数据访问 数据是GIS的基础, 访问数据也是进行任何复杂的空间分析及空间可视化表达的前提.ArcGIS支持的数据格式比较丰富,对不同的数据格式支持的程度也有很大差异.本文 ...

  4. [转载]ArcGIS Engine 中的多线程使用

    ArcGIS Engine 中的多线程使用 原文链接 http://anshien.blog.163.com/blog/static/169966308201082441114173/   一直都想写 ...

  5. ArcGIS Engine中的8种数据访问

    数据是GIS的基础, 访问数据也是进行任何复杂的空间分析及空间可视化表达的前提.ArcGIS支持的数据格式比较丰富,对不同的数据格式支持的程度也有很大差异.本文主要介绍一下以下八种数据格式在ArcGI ...

  6. ArcGIS engine中Display类库——Display

    转自原文  ArcGIS engine中Display类库——Display Display类库包括了用于显示GIS数据的对象.除了负责实际输出图像的主要显示对象(display object)外,这 ...

  7. ArcGIS Engine 中的多线程使用

    转自原文ArcGIS Engine 中的多线程使用 一直都想写写AE中多线程的使用,但一直苦于没有时间,终于在中秋假期闲了下来.呵呵,闲话不说了,进入正题! 大家都了解到ArcGIS中处理大数据量时速 ...

  8. ArcGIS engine中Display类库 (局部刷新)

    转自原文 ArcGIS engine中Display类库 (局部刷新) Display类库包括了用于显示GIS数据的对象.除了负责实际输出图像的主要显示对象(display object)外,这个类库 ...

  9. ArcGIS Engine中的重点类库介绍

    转自原文ArcGIS Engine中的重点类库介绍 System类库 System类库是ArcGIS体系结构中最底层的类库.System类库包含给构成ArcGIS的其他类库提供服务的组件.System ...

随机推荐

  1. hdu 5833(欧拉路)

    The Best Path Time Limit: 9000/3000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Tot ...

  2. Remove Duplicates from Sorted List II——简单的指针问题

    Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct numb ...

  3. vue 条件渲染与列表渲染

    本文是对官方文档的整理 因为 v-if 是一个指令,所以必须将它添加到一个元素上.但是如果想切换多个元素呢?此时可以把一个 <template> 元素当做不可见的包裹元素,并在上面使用 v ...

  4. MySQL的表管理

    首先,先选择数据库(极其特别重要,如果不选择,将默认为第一个数据库) mysql > use db_name; 查看所有表 mysql > show tables; 1.创建表 creat ...

  5. MFC+WinPcap编写一个嗅探器之零(目录)

    零零散散写了三天,完成了编写嗅探器的文章,旨在让自己加深印象,是初学者少走一些弯路.因为先前未接触MFC,之后也不打算精通,完全是0基础,所以文章技术含量不高,但难点基本上都都包括了,凑合这看吧,接下 ...

  6. 基于Ubuntu系统搭建以太坊go-ethereum源码的开发环境

    第一.先安装geth的CLI环境sudo apt-get install geth,这个很重要 第二.下载源代码 git clone https://github.com/ethereum/go-et ...

  7. 转:VMMAP内存查看工具

    转:http://blog.csdn.net/woddle/article/details/45337767 下面我根据VMMap来详细介绍一下内存的分类. 内存是一个很复杂的系统,其中的paging ...

  8. 洛谷P3052 [USACO12MAR]摩天大楼里的奶牛 [迭代加深搜索]

    题目传送门 摩天大楼里的奶牛 题目描述 A little known fact about Bessie and friends is that they love stair climbing ra ...

  9. Python类总结-析构函数和__call__方法

    class Foo: def __init__(self): pass #析构函数 def __del__(self): print('解释器要销毁我了,我要做最后一次呐喊') def __call_ ...

  10. mysql树形结构递归查询

    之前一直用的是Oracle,对于树形查询可以使用start with ... connect by ' connect by id = prior parent_id; 没错,这是Oracle所支持的 ...