且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

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

更新时间:2022-08-20 15:33:04

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

 

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);  
 
没有整理与归纳的知识,一文不值!高度概括与梳理的知识,才是自己真正的知识与技能。 永远不要让自己的***、好奇、充满创造力的想法被现实的框架所束缚,让创造力***成长吧! 多花时间,关心他(她)人,正如别人所关心你的。理想的腾飞与实现,没有别人的支持与帮助,是万万不能的。



    本文转自wenglabs博客园博客,原文链接:http://www.cnblogs.com/arxive/p/6305413.html,如需转载请自行联系原作者