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

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

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

1.创建空间参考

[csharp] view plain copy

print?

  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. }

[csharp] view plain copy

print?

  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. }

[csharp] view plain copy

print?

  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. }

[csharp] view plain copy

print?

  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.获取空间参考

[csharp] view plain copy

print?

  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. }

[csharp] view plain copy

print?

  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. }

[csharp] view plain copy

print?

  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.修改空间参考

[csharp] view plain copy

print?

  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. }

[csharp] view plain copy

print?

  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. }
时间: 2024-10-10 16:39:47

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

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

1.创建空间参考 [csharp] view plaincopyprint? /// <summary> /// 根据prj文件创建空间参考 /// </summary> /// <param name="strProFile">空间参照文件</param> /// <returns></returns> public static ISpatialReference CreateSpatialReference(

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

数据是GIS的基础, 访问数据也是进行任何复杂的空间分析及空间可视化表达的前提.ArcGIS支持的数据格式比较丰富,对不同的数据格式支持的程度也有很大差异.本文主要介绍一下以下八种数据格式在ArcGIS Engine中如何访问.对ArcGIS桌面应用有一定了解的读者更适合阅读本文.本文的示例代码是用C#编写. 1.Shapefile 2.Coverage 3.Personal Geodatabase 4.Enterprise Geodatabase 5.Tin 6.Raster 7.CAD 8.

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

ArcGIS Engine 中的多线程使用 原文链接 http://anshien.blog.163.com/blog/static/169966308201082441114173/   一直都想写写AE中多线程的使用,但一直苦于没有时间,终于在中秋假期闲了下来.呵呵,闲话不说了,进入正题! 大家都了解到ArcGIS中处理大数据量时速度是相当的慢,这时如果你的程序是单线程的,那可就让人着急坏了,不知道处理到什么地步,不能操作其他的功能,无奈~~如果在这时你能够想到用多线程技术,那就来试试该如何

ArcGIS Engine中的重点类库介绍

转自原文ArcGIS Engine中的重点类库介绍 System类库 System类库是ArcGIS体系结构中最底层的类库.System类库包含给构成ArcGIS的其他类库提供服务的组件.System类库中定义了大量开发者可以实现的接口.AoInitializer对象就是在System类库中定义的,所有的开发者必须使用这个对象来初始化ArcGISEngine和解除ArcGIS Engine的初始化.开发者不能扩展这个类库,但可以通过实现这个类库中包含的接口来扩展ArcGIS系统. SystemU

ArcGIS Engine中的设计模式——工厂模式

在使用AE打开或者加载数据的第一步就是 通过工作空间工厂(IWorkspaceFactory)获取工作空间(IWorkspace),然后从工作空间中获取数据集(DataSet).要素类(FeatureClass).表(Table)等数据. 对于不同类型的空间数据库,对应着不同的工作空间类,这些类都继承了接口IWorkspaceFactory,然后通过IWorkspaceFactory接口的不同的方法如Create.Open.OpenFromFile产生不用类型的工作空间(IWorkspace).

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

转自原文 ArcGIS engine中Display类库 (局部刷新) Display类库包括了用于显示GIS数据的对象.除了负责实际输出图像的主要显示对象(display object)外,这个类库还包含了表示符号和颜色的对象,用于控制在显示(display)中绘制时实体的属性.这个类库也包含了用户与显示(display)交互时的可视化反馈的对象.完成这些功能的对象被归并到一组类库子系统中. 这些类库子系统是: n         Display n         Dynamic Displ

ArcGIS engine中Display类库——Display

转自原文  ArcGIS engine中Display类库——Display Display类库包括了用于显示GIS数据的对象.除了负责实际输出图像的主要显示对象(display object)外,这个类库还包含了表示符号和颜色的对象,用于控制在显示(display)中绘制时实体的属性.这个类库也包含了用户与显示(display)交互时的可视化反馈的对象.完成这些功能的对象被归并到一组类库子系统中. 这些类库子系统是: n         Display n         Dynamic Di

ArcGIS Engine中正确释放打开资源

转自原文 ArcGIS Engine中正确释放打开资源 AE中对MDB,SDE等数据库操作时,打开后却往往不能及时释放资源,导致别人操作提示对象被锁定. 很多帖子说了很多原理,看的也烦且不实用,比如一句话概括的用System.Runtime.InteropServices.Marshal.ReleaseComObject(object o)释放,说的很不清楚,很多人试过觉的释放不掉. 事实上,的确是用该方法,但释放的技巧在于,新建几个AE对象就要逐步释放几个,例如: IWorkspaceFact

ArcGIS Engine中数据的加载 (转)

1.加载Shapefile数据 1 IWorkspaceFactory pWorkspaceFactory; 2 IFeatureWorkspace pFeatureWorkspace; 3 IFeatureLayer pFeatureLayer; 4 5 //获取当前路径和文件名 6 OpenFileDialog dlg = new OpenFileDialog(); 7 dlg.Filter = "Shape(*.shp)|*.shp|All Files(*.*)|*.*"; 8