ArcGIS Engine——坐标系相关

    public class SpatialReferenceHelpers
    {
        /// <summary>
        /// 创建地理坐标系
        /// </summary>
        /// <param name="FactoryCode"></param>
        /// <returns></returns>
        public ISpatialReference CreateGeographicSpatialReference(ESRI.ArcGIS.Geometry.esriSRGeoCSType FactoryCode)
        {
            return CreateGeographicSpatialReference((int)FactoryCode);
        }
        public ISpatialReference CreateGeographicSpatialReference(int FactoryCode)
        {
            ISpatialReferenceFactory2 oSpatialReferenceFactory;
            ISpatialReference oCS;
            try
            {
                Type t = Type.GetTypeFromProgID("esriGeometry.SpatialReferenceEnvironment");
                oSpatialReferenceFactory = (ISpatialReferenceFactory2)Activator.CreateInstance(t);
                oCS = oSpatialReferenceFactory.CreateSpatialReference(FactoryCode);
                return oCS;
            }
            catch
            {
                return null;
            }
        }

        /// <summary>
        ///  创建投影坐标系
        /// </summary>
        /// <param name="pcsType"></param>
        /// <returns></returns>
        public ISpatialReference CreateProjectSpatialReference(esriSRProjCS4Type pcsType)
        {
            return CreateProjectSpatialReference((int)pcsType);
        }
        public ISpatialReference CreateProjectSpatialReference(int FactoryCode)
        {
            ISpatialReferenceFactory2 oSpatialReferenceFactory;
            ISpatialReference oCS;
            try
            {
                Type t = Type.GetTypeFromProgID("esriGeometry.SpatialReferenceEnvironment");
                oSpatialReferenceFactory = (ISpatialReferenceFactory2)Activator.CreateInstance(t);
                oCS = oSpatialReferenceFactory.CreateProjectedCoordinateSystem(FactoryCode);
                return oCS;
            }
            catch
            {
                return null;
            }
        }

        /// <summary>
        /// 图形坐标系变换
        /// </summary>
        /// <param name="pGeometry"></param>
        /// <param name="pInputSR"></param>
        /// <param name="pOutputSR"></param>
        /// <returns></returns>
        public IGeometry TransformShapeCS(IGeometry pGeometry, ISpatialReference pInputSR, ISpatialReference pOutputSR)
        {
            IGeometry oGeometry;
            try
            {
                oGeometry = pGeometry;
                oGeometry.SpatialReference = pInputSR;
                oGeometry.Project(pOutputSR);
                return oGeometry;
            }
            catch
            {
                return pGeometry;
            }
        }
        /// <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="pGeoDataset">要素集</param>
        /// <returns></returns>
        public static ISpatialReference GetSpatialReference(IGeoDataset pGeoDataset)
        {
            return pGeoDataset.SpatialReference;
        }
        public static ISpatialReference GetSpatialReference(IFeatureDataset pFeatureDataset)
        {
            return GetSpatialReference(pFeatureDataset as IGeoDataset);
        }
        public static ISpatialReference GetSpatialReference(IFeatureLayer pFeatureLayer)
        {
            return GetSpatialReference(pFeatureLayer.FeatureClass);
        }
        public static ISpatialReference GetSpatialReference(IFeatureClass pFeatureClass)
        {
            return GetSpatialReference(pFeatureClass as IGeoDataset);
        }

    }

原文地址:https://www.cnblogs.com/zwcoding/p/12108600.html

时间: 2024-11-05 15:50:31

ArcGIS Engine——坐标系相关的相关文章

Arcgis Engine符号化相关

之前对于系统的符号化功能运行流程一直没梳理清楚,现在梳理总结其主要过程如下,细节不加阐述: 符号化功能主要应用的接口有两个:简单符号化ISimpleRenderer.唯一值符号化IUniqueValueRenderer 关于默认符号的两个相关点: 用IGeoFeatureLayer获取地图图层后,IGeoFeatureLayer的Render下的Symbol为默认为原有符号:而   IUniqueValueRenderer的DefaultSymbol是需要自定义的. Dim pUniqueVal

ArcGIS Engine开发之旅08--和查询相关的对象和接口

查询在GIS领域应该是一个很频繁的操作,在GIS中除了具有属性查询(和其他关系型数据库的查询类似),还提供了空间查询.在介绍查询的时候,让我们先了解下面的对象. 1.Table 对象 Table 是不含有空间信息的一张二维表,它主要实现了 ITable 接口.在这张二维表中,每一行称之为 Row(IRow),ITable 接口 定义了对这张二维表行的插入,更新,查询,以及删除等操作. 独立表(standalone table):就是一个单独的不含空间信息的表也就是只能在 ArcMap 中 Tab

ArcGIS Engine开发前基础知识(1)

ArcGIS二次开发是当前gis领域的一项重要必不可少的技能.下面介绍它的基本功能 一.ArcGIS Engine功能 在使用之前首先安装和部署arcgis sdk,(在这里不在赘述相关知识)可以实现的功能主要有地图的基本操作.信息查询.专题地图制作.数据编辑.网络分析.空间统计分析.三维分析等. 1.地图的基本操作 地图的基本操作主要包括加载矢量.栅格数据,浏览缩放地图,保存地图,在地图上显示文本注记,绘制点线面几何体等. 2.信息查询 信息查询主要通过矩形圆形或多边形来选中地图上的要素,或者

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 10.2安装过程

安装顺序 : VS2010-->Arcgis 10.2-->Arcgis engine 10.2-->ArcObjects SDK for Microsoft.NET Framework. vs2010安装方式略 一.Arcgis10.2安装 选择ArcGIS10.2 解压后的安装包中ESRI.exe文件 第一步安装ArcGIS License Manager (选择合适路径,基本一路回车) 安装好以后,启动License Manager,选择停止 第二步安装ArcGIS for  De

利用ArcGIS Engine、VS .NET和Windows控件开发GIS应用

原文:利用ArcGIS Engine.VS .NET和Windows控件开发GIS应用 此过程说明适合那些使用.NET建立和部署应用的开发者,它描述了使用ArcGIS控件建立和部署应用的方法和步骤. 你可以在下面的目录下找到相应的样例程序: <安装目录>\DeveloperKit\Samples\Developer_Guide_Scenarios\ ArcGIS_Engine\Building_an_ArcGIS_Control_Application\Map_Viewer 注:ArcGIS样

ArcGIS Engine开发之旅02--ArcGIS Engine中的类库

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

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

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