liuwenliang的个人博客分享 http://blog.sciencenet.cn/u/liuwenliang

博文

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

已有 1483 次阅读 2021-5-10 09:40 |个人分类:arcobjects|系统分类:科研笔记|文章来源:转载

原文链接:https://blog.csdn.net/u011170962/article/details/38776101

  1. 创建空间参考


        /// <summary>

        /// 根据prj文件创建空间参考

        /// </summary>

        /// <param name="strProFile">空间参照文件</param>

        /// <returns></returns>

        public static ISpatialReference CreateSpatialReference(string strProFile)

        {

            ISpatialReferenceFactory pSpatialReferenceFactory = new SpatialReferenceEnvironmentClass();

            ISpatialReference pSpatialReference = pSpatialReferenceFactory.CreateESRISpatialReferenceFromPRJFile(strProFile);

            return pSpatialReference;           

        }

        /// <summary>

        /// 创建地理坐标系

        /// </summary>

        /// <param name="gcType">esriSRProjCS4Type</param>

        /// <returns></returns>

        public static ISpatialReference CreateGeographicCoordinate(esriSRProjCS4Type gcsType)

        {

            ISpatialReferenceFactory pSpatialReferenceFactory = new SpatialReferenceEnvironmentClass();

            ISpatialReference pSpatialReference = pSpatialReferenceFactory.CreateGeographicCoordinateSystem((int)gcsType);

            return pSpatialReference;

        }

        /// <summary>

        /// 创建投影坐标系

        /// </summary>

        /// <param name="pcType">esriSRProjCS4Type</param>

        /// <returns></returns>

        public static ISpatialReference CreateProjectedCoordinate(esriSRProjCS4Type pcsType)

        {

            ISpatialReferenceFactory2 pSpatialReferenceFactory = new SpatialReferenceEnvironmentClass();

            ISpatialReference pSpatialReference = pSpatialReferenceFactory.CreateProjectedCoordinateSystem((int)pcsType);

            return pSpatialReference;

        }

        /// <summary>

        /// 获取空投影

        /// </summary>

        /// <returns></returns>

        public static ISpatialReference CreateUnKnownSpatialReference()

        {

            ISpatialReference pSpatialReference = new UnknownCoordinateSystemClass();

            pSpatialReference.SetDomain(0, 99999999, 0, 99999999);//设置空间范围

            return pSpatialReference;

        }

2.获取空间参考


        /// <summary>

        /// 获取要素集空间参考

        /// </summary>

        /// <param name="pFeatureDataset">要素集</param>

        /// <returns></returns>

        public static ISpatialReference GetSpatialReference(IFeatureDataset pFeatureDataset)

        {

            IGeoDataset pGeoDataset = pFeatureDataset as IGeoDataset;

            ISpatialReference pSpatialReference = pGeoDataset.SpatialReference;

            return pSpatialReference;           

        }

        /// <summary>

        /// 获取要素层空间参考

        /// </summary>

        /// <param name="pFeatureLayer">要素层</param>

        /// <returns></returns>

        public static ISpatialReference GetSpatialReferenc(IFeatureLayer pFeatureLayer)

        {IFeatureClass pFeatureClass = pFeatureLayer.FeatureClass;

            IGeoDataset pGeoDataset = pFeatureClass as IGeoDataset;

            ISpatialReference pSpatialReference = pGeoDataset.SpatialReference;

            return pSpatialReference;           

        }

        /// <summary>

        /// 获取要素类空间参考

        /// </summary>

        /// <param name="pFeatureClass">要素类</param>

        /// <returns></returns>

        public static ISpatialReference GetSpatialReference(IFeatureClass pFeatureClass)

        {

            IGeoDataset pGeoDataset = pFeatureClass as IGeoDataset;

            ISpatialReference pSpatialReference = pGeoDataset.SpatialReference;

            return pSpatialReference;           

        }

3.修改空间参考


        /// <summary>

        /// 修改要素集空间参考

        /// </summary>

        /// <param name="pFeatureDataset">要素集</param>

        /// <param name="pSpatialReference">新空间参考</param>

        public static void AlterSpatialReference(IFeatureDataset pFeatureDataset, ISpatialReference pSpatialReference)

        {

            IGeoDataset pGeoDataset = pFeatureDataset as IGeoDataset;

            IGeoDatasetSchemaEdit pGeoDatasetSchemaEdit = pGeoDataset as IGeoDatasetSchemaEdit;

            if (pGeoDatasetSchemaEdit.CanAlterSpatialReference == true)

                pGeoDatasetSchemaEdit.AlterSpatialReference(pSpatialReference);

        }

        /// <summary>

        /// 修改要素类空间参考

        /// </summary>

        /// <param name="pFeatureClass">要素类</param>

        /// <param name="pSpatialReference">新空间参考</param>

        public static void AlterSpatialReference(IFeatureClass pFeatureClass, ISpatialReference pSpatialReference)

        {

            IGeoDataset pGeoDataset = pFeatureClass as IGeoDataset;

            IGeoDatasetSchemaEdit pGeoDatasetSchemaEdit = pGeoDataset as IGeoDatasetSchemaEdit;

            if (pGeoDatasetSchemaEdit.CanAlterSpatialReference == true)

                pGeoDatasetSchemaEdit.AlterSpatialReference(pSpatialReference);

        }








https://wap.sciencenet.cn/blog-3409972-1285812.html

上一篇:[转载]聊聊GIS中的坐标系|再版 识别各种数据的坐标系及代码中的坐标系
下一篇:[转载]ArcGIS 10.0紧凑型切片读写方法
收藏 IP: 210.72.27.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-9-26 07:59

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部