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

来源:互联网 发布:linux 给用户root权限 编辑:程序博客网 时间:2024/05/24 07:11

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);        }

2 0