精华内容
下载资源
问答
  • arcgis开发入门
    千次阅读
    2021-10-06 19:22:37

    ArcGIS入门 (一)

    一、ArcGIS的数据

    1.1 4D数据

    4D数据包括DLG(数字线画地图)、DEM(数字高程模型)、DOM(数字正射影像地图)、DRG(数字栅格地图)

    • 数字线划地图(DLG)是一种更为方便的放大、漫游、查询、检查、量测、叠加地图。其数据量小,便于分层,能快速的生成专题地图,所以也称作矢量专题信息DTI(Digital Thematic Information)。此数据能满足地理信息系统进行各种空间分析要求,视为带有智能的数据。可随机地进行数据选取和显示,与其他几种产品叠加,便于分析、决策。数字线划地图(DLG)的技术特征为:地图地理内容、分幅、投影、精度、坐标系统与同比例尺地形图一致
    • (Digital Elevation Model,缩写DEM)是一定范围内规则格网点的平面坐标(X,Y)及其高程(Z)的数据集,它主要是描述区域地貌形态的空间分布,是通过等高线或相似立体模型进行数据采集(包括采样和量测),然后进行数据内插而形成的。DEM是对地貌形态的虚拟表示,可派生出等高线、坡度图等信息,也可与DOM或其它专题数据叠加,用于与地形相关的分析应用,同时它本身还是制作DOM的基础数据
    • 数字正射影像图(DOM,DigitalOrthophotoMap):是对航空(或航天)像片进行数字微分纠正和镶嵌,按一定图幅范围裁剪生成的数字正射影像集。它是同时具有地图几何精度和影像特征的图像。
    • 在地理方面,DRG是Digital Raster Graphic的缩写,中文叫数字栅格地图是根据现有纸质、胶片等地形图经扫描和几何纠正及色彩校正后,形成在内容、几何精度和色彩上与地形图保持一致的栅格数据集。

    在这里插入图片描述

    1.2 ArcGIS的数据和4D数据对应

    ArcGIS的数据的数据主要分为矢量数据(要素类)和栅格数据(也叫
    影像数据)
    矢量数据(要素类):点、线、面和注记(地图文本的地理数据库名
    称)。
    栅格数据是按网格单元的行与列排列、具有不同灰度或颜色的阵列数据。每一个单元(像素)的位置由它的行列号定义,所表示的实体位置隐含在栅格行列位置中,数据组织中的每个数据表示地物或现象的非几何属性或指向其属性的指针。

    1.3 栅格数据

    空间分辨率:空间分辨率是指像素所代表的的地面范围的大小,即扫描
    仪的瞬时视场,或地面物体能分辨的最小单元

    栅格数据介绍-CELLSIZE

    • Ø 定义格格单元的大小时,我们需要平衡信息的精确性和数据 量之间的矛盾。
    • Ø 栅格单元代表的尺度越小CellSIZE,表达的信息就越精确。
    • Ø 栅格单元代表的尺度越大,存储数据所需要的空间就更少,同时,表达的信息也就不精确。
    • Ø 在ArcGIS中改变CellSIZE,使用Resample 重采样
    • Ø Resample:可以处理单波段,也可以处理多波段

    栅格格式
    栅格在一种特殊的影像格式,一般影像格式有JPG,BMP,TIF,PNG等,在ArcGIS中一般表现为Grid,.img,.TIF,具体的应用为DEM,DOM等,前面的属于文件格式,也可以存在数据库,在数据库中,不能加扩展名,是文件格式一定要加扩展名。
    任何栅格分析(处理)都是信息有损的处理,原始数据一定要保存(保留)。

    二、ArcGIS矢量数据和地理数据库

    2.1 ArcGIS矢量数据

    Ø 矢量数据结构是通过记录空间对象的坐标及空间关系
    表达空间对象的几何位置。
    Ø 矢量格式主要SHP,GeoDatabase(地理数据库)

    2.2 SHP格式

    • hapefile 是一种用于存储地理要素的几何位置和属性信息的非拓扑简单格式。 shapefile 是可以在 ArcGIS中使用和编辑的其中一种空间数据格式。
    • shapefile 格式在应存储在同一项目工作空间且使用特定文件扩展名的三个或更多文件中定义地理引用要素的几何和属性。这些文件是:
      .shp - 用于存储要素几何的主文件;必需文件。
      .shx - 用于存储要素几何索引的索引文件;必需文件。
      .dbf -用于存储要素属性信息的 dBASE 表;必需文件。 几何与属性是一对一关系,这种关系基于记录编号。dBASE文件中的属性记录必须与主文件中的记录采用相同的顺序。

    2.3 地理数据库的类型

    地理数据库是用于保存数据集集合的“容器”。有以下三种类型:

    • Ø 文件地理数据库 - 在文件系统中以文件夹形式存储。每个数据集都以文件形式保存,该文件大小最多可扩展至 1 TB。建议使用文件地理数据库而不是个人地理数据库。
    • Ø 个人地理数据库 - 所有的数据集都存储于 Microsoft Access 数据文件内,该 数据文件的大小最大为 2 GB。
    • Ø ArcSDE 地理数据库 - 也称作多用户地理数据库。这种类型的数据库使用 Oracle、Microsoft SQL Server、IBM DB2、IBM Informix 或 PostgreSQL 存 储于关系数据库中。这些地理数据库需要使用 ArcSDE,并且在大小和用户数量方面没有限制。

    2.4 创建数据库方法

    在这里插入图片描述

    2.5 SHP和数据库区别

    SHP就是具体的点、线、面,数据库是一个集合
    SHP不支持注记和高级功能,如拓扑检查
    SHP字段名只有10个字,文件最大2G
    ArcGIS建议大家使用数据库

    三、坐标系与投影变换

    3.1 坐标系

    测绘地面上某个点的位置时,需要两个起算点:一是平面位置,一是高程。计算这两个位置所依据的系统,就叫坐标系统和高程系统。

    坐标是GIS数据的骨骼框架,能够将我们的数据定位到相应的位置,为地图中的每一点提供准确的坐标。如经纬度下经度、纬度,平面中X,Y。

    3.2 基准面

    当一个旋转椭球体的形状与地球相近时,基准面用于定义旋转椭球体相对于地心的位置。基准面给出了测量地球表面上位置的参考框架。它定义了经线和纬线的原点及方向。

    • 地心基准面
    • 区域基准面

    地心基准面
    在过去的 15 年中,卫星数据为测地学家提供了新的测量结果,用
    于定义与地球最吻合的、坐标与地球质心相关联的旋转椭球体。地
    球中心(或地心)基准面使用地球的质心作为原点。最新开发的并
    且使用最广泛的基准是 WGS 1984。它被用作在世界范围内进行定
    位测量的框架。还有目前国家2000坐标系。

    区域基准面
    区域基准面是在特定区域内与地球表面极为吻合的旋转椭球体。旋转椭球体表面上的点与地球表面上的特定位置相匹配。该点也被称作基准面的原点。原点的坐标是固定的,所有其他点由其计算获得。如北京54,和西安80。

    更多信息可参考ArcGIS帮助文档

    3.3 坐标系分类

    全局坐标系或球坐标系,例如经纬度。这些坐标系通常称为地理坐标系

    基于横轴墨卡托、阿尔伯斯等积或罗宾森等地图投影的投影坐标系,这些地图投影(以及其他多种地图投影模型)提供了各种机制将地球球面的地图投影到二维笛卡尔坐标平面上。投影坐标系有时称为地图投影。

    地理坐标系与投影坐标系区别:
    地理坐标系以度为单位, 地理空间坐标系(Geographic coordinate system ),使用基于经纬度坐标描述地球上某一点所处的位置。地理坐标系坐标经度范围(-180-180),纬度(-90-90)。投影坐标系以米为单位。

    最常用的地理坐标系是经纬度坐标系,这个坐标系可以确定地球上任何一点的位置,如果我们将地球看作一个球体,而经纬网就是加在地球表面的地理坐标参照系格网,经度和纬度是从地球中心对地球表面给定点量测得到的角度,经度是东西方向,而纬度是南北方向,经线从地球南北极穿过,而纬线是平行于赤道的环线,需要说明的是经纬度坐标系不是一种平面坐标系,因为度不是标准的长度单位,不可用其量测面积长度。

    3.4 高斯-克吕格投影

    在这里插入图片描述
    在这里插入图片描述

    3.5 动态投影

    动态投影(ArcMap), 所谓动态投影指:改变ArcMap中的Data Frame(工作区)的空间参考或是对后加入到ArcMap工作区中数据的投影变换。ArcMap的DataFrame(工作区)的坐标系统默认为第一个加载到当前DataFrame(工作区)的那个文件的坐标系统,后加入的数据,如果和当前工作区坐标系统不同,则ArcMap会自动做投影变换,把后加入的数据投影变换到当前坐标系下显示,但此时数据文件所存储的实际数据坐标值并没有改变,只是显示形态上的变化!因此叫动态投影。

    3.6 投影变换

    投影:将矢量数据从一种坐标系投影到另一种坐标系。 分两种

    • 同一基准面:在同一基准面间转换数据的方法,当将矢量数据从一个坐标系统变换到另一个坐标系统下时,可以用三度带、六度带之间转换,带号和中央经线之间转换,地理坐标和投影坐标之间转换
    • 不同基准面:当系统所使用的数据是来自不同地图投影的时,需要将一种投影的地理数据转换成另一种投影的地理数据,这就需要进行地图投影变换。

    不同椭球体或基准面不能直接转换原因在于椭球体长短轴不一样,如不能直接将西安80转换成国家2000一样,如需要转换,有两种方法:
    (1)参数法转换
    (2)5个以上同名点空间校正转换
    (最好5个以上同名点,没有5个点无法查看残差,残差越小精度越高)

    更多相关内容
  • 这本书讲的很详细,对于想学习AE二次开发的同学很有帮助,我自己添加的书签,希望可以帮助同学们
  • ArcGIS Engine开发入门教程详解
  • 本书针对地理信息科学专业初年级学生的专业基础特点和需求,将常用地理信息系统二次开发的功能按需求进行分解,以功能为基本单元,由易到难对所需理论、开发思路、实现步骤、编程实现、代码详细注释等进行了系统论述...
  • arcgis开发入门培训(详细解说) 对不起,上次只能上传小于15MB的文件
  • arcgis开发入门培训(详细解说) .part4.rar
  • arcgis开发入门培训(详细解说) .part3.rar
  • arcgis开发入门培训(详细解说) .part2.rar
  • ARCGIS轻松入门教程.doc

    2021-09-10 11:40:24
    ARCGIS轻松入门教程简单方便
  • ArcGIS Engine开发入门到精通 源码.rar
  • 本文主要介绍ArcGis的ArcEngine开发,学习时,我们需要放下心里障碍,那就是Gis开发只是普通的软件开发,并不需要专业的GIS知识,就是非常普通的,调用相关的C++开发的COM组件。 开发环境:VS2017。 ArcEngine版本:...

    前言

    本文主要介绍ArcGis的ArcEngine开发,学习时,我们需要放下心里障碍,那就是Gis开发只是普通的软件开发,并不需要专业的GIS知识,就是非常普通的,调用相关的C++开发的COM组件。

    开发环境:VS2017。

    ArcEngine版本:10.1。

    基础学习

    正式使用ArcGis之前,需要先学习ArcGis一些基础概念。

    工作空间(IWorkspace):

    存储ArcGis数据的对象,他可以从多种数据库中读取ArcGis数据,如oracle,mdb等等。

    普通表(ITable):

    跟我们常用的表一样,又称对象类。由于ArcGis是C++写的,所以读取表数据的时候,要使用游标一行一行的读取;普通表(ITable)默认第一个字段是主键,名称为OBJECTID。

    要素表(IFeatureClass):

    要素表有两部分组成,一部分是图像,一部分是普通表,他在代码中是一个对象,但在数据中是以两个表存在的,如下图(test2和test2_SHAPE_Index)。

    但我们要注意的是,要素表(FeatureClass)存储图像的字段是表test2的SHAPE,而不是在test2_SHAPE_Index表中;要素表(FeatureClass)默认第一个字段是主键,名称为OBJECTID,第二个字段是图像字段,默认名称为SHAPE。

    要素表的图形(SHAPE字段):

    要素表的图形就是第二个字段,默认名称为SHAPE的图像字段;图像字段有很多种类型,其对应枚举为esriGeometryType,枚举值如下:

     esriGeometryType.esriGeometryAny://"任何类型(Any valid geometry)"               
     esriGeometryType.esriGeometryBag://"任意几何类型的集合(GeometryBag)"               
     esriGeometryType.esriGeometryBezier3Curve:// "贝兹曲线(BezierCurve)"               
     esriGeometryType.esriGeometryCircularArc:// "圆弧(CircularArc)"               
     esriGeometryType.esriGeometryEllipticArc://"椭圆弧(EllipticArc)"               
     esriGeometryType.esriGeometryEnvelope://"外包(Envelope)"               
     esriGeometryType.esriGeometryLine:// "线段(Line)"               
     esriGeometryType.esriGeometryMultiPatch:// "表面几何(MultiPatch)"               
     esriGeometryType.esriGeometryMultipoint://"多点(Multipoint)"               
     esriGeometryType.esriGeometryNull:// "未知类型(Unknown)"               
     esriGeometryType.esriGeometryPath://"路径(Path)"               
     esriGeometryType.esriGeometryPoint://"点(Point)"               
     esriGeometryType.esriGeometryPolygon://"多边形(Polygon)"               
     esriGeometryType.esriGeometryPolyline:// "多段线(Polyline)"               
     esriGeometryType.esriGeometryRay://"射线(Ray)"               
     esriGeometryType.esriGeometryRing://"环(Ring)"               
     esriGeometryType.esriGeometrySphere://"球体(Sphere)"               
     esriGeometryType.esriGeometryTriangleFan:// "三角扇形(TriangleFan)"               
     esriGeometryType.esriGeometryTriangleStrip://"三角带(TriangleStrip)"               
     esriGeometryType.esriGeometryTriangles:// "三角形(Triangles)"
    

    我们最常用的就是点(esriGeometryPoint),线(esriGeometryPolyline),面(esriGeometryPolygon)。

    要素集(IFeatureDataset):

    要素集,顾名思义就是要素表的集合,创建要素集的时候要提供空间参考(SpatialReference),常规使用时,可以直接将地图的空间参考提供给要素集,创建代码如下:

    IFeatureWorkspace featureWorkspace = workspace as IFeatureWorkspace;
                ISpatialReference spatialReference = axMapControl1.ActiveView.FocusMap.SpatialReference;
    //创建要素集
    featureWorkspace.CreateFeatureDataset("Data2", spatialReference);
    

    空间参考(SpatialReference)可以简单理解为横纵坐标系,因为世界上有很多种坐标系(如:北京54,西安80),所以在创建地图的时候,要指明使用哪种坐标系。

    栅格数据(IRasterDataset):

    栅格数据虽然是以Dataset存在,但他并不是类似要素集的存在,而是一个是独立存在的图像的文件。比如,我们可以通过IRasterDataset.OpenFromFile(filePath)来打开一个物理文件。

    注意事项

    注1:非空间数据:非空间数据就是可以在地图上展示或使用的业务数据;要素集中的非图形字段都是,普通表(ITable)存储的全是非空间数据。

    注2:空间数据:空间数据即图形元素,又地图对象;几何数据类,要素类,关系类都是空间数据;空间数据可以被图层加载,形成图层对象,如:IFeatureLayer有个IFeatureClass属性,只要为该属性赋值要素类的对象,就成功加载了空间数据,此时,该图层也可称为要素图层。(要素表(IFeatureClass)包含空间数据和非空间数据两部分)。

    ArcMap中各种元素展示如下:

    注3:Arcgis专用的mdb会有一些表存储Arcgis的专有数据,在数据库中的展示,如下图所示:

    准备开发

    首先安装ArcGisEngine和ArcObjects Sdk,然后创建一个普通的Winform项目。

    然后在Program.cs中添加如下代码:

    static void Main()
    {
        ESRI.ArcGIS.RuntimeManager.Bind(ESRI.ArcGIS.ProductCode.Engine);
        IAoInitialize aoInit = new AoInitializeClass();
        aoInit.Initialize(esriLicenseProductCode.esriLicenseProductCodeEngine);
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Application.Run(new Form1()); 
    }
    

    注:Bind和Initialize函数要使用统一的Code,这里我都使用的是ProductCode.Engine的Code。

    因为是使用VS2017,所以在工具箱中我们看不到ArcGis的工具;需要我们手动引入ArcGis工具,工具箱—选择项—.NET Framework组件,找到ESRI程序集下的工具,引入即可。

    然后把引入的类库的嵌入互操作类型熟悉修改为false,不然编译的时候会提示错误——无法嵌入互操作类型。

    如果我们在开发中发现有些ArcGis的类抛异常,那可以通过引用的方式,将ArcGis的Com组件引入进来,如,我们要打开SDE数据库,要使用ESRI.ArcGIS.DataSourcesGDB命名空间,就要添加Esri DataSourcesGDB OBJECT Library 10.1这个Com组件。

    功能开发

    在导入Arcgis的类库后,我们会在工具栏总看到如下控件:

    AxMapControl 就是 Map 地图控件

    AxPageLayouControl 是布局地图控件

    AxTOCControl 是目录控件

    AxToolbarControl 是 GIS 工具栏控件

    AxSceneControl 是 Scene 三维场景控件

    AxGlobeControl 是 Globe 控件

    AxLicenseControl 是许可控件

    AxSymbologyControl 是符号选择器控件

    AxArcReaderControl 是 ArcReader 控件

    AxArcReaderGlobeControl 是 ArcReaderGlobe 控件

    如下图:

    本文主要使用AxMapControl (Map 地图控件),AxPageLayouControl (是布局地图控件),AxTOCControl (目录控件)。

    首先向窗体里添加这三个控件,然后设置控件AxPageLayouControl 和AxTOCControl 的buddy属性为AxMapControl ,目的是AxPageLayouControl 和AxTOCControl成为AxMapControl 的伙伴控件,实现数据的同步和共享。

    设置buddy属性,需要右键控件,在下拉菜单中选择属性,如下图:

    然后我们创建一个按钮,导入mdb数据库,并实现读取Mdb的要素集,要素类,表格数据,栅格数据等数据,并把名称显示在Listbox中。

    代码编写思路介绍:

    首先通过AccessWorkspaceFactoryClass实例化一个IWorkspaceFactory接口,然后用他打开一个mdb文件,并返回一个IWorkspace对象;然后通过IWorkspace的get_Datasets方法获取全部数据,(传递参数esriDatasetType.esriDTAny为获取全部数据),get_Datasets方法返回IEnumDataset,是一个枚举Dataset,这个对象不能for循环,只能使用Next函数获取下一个,这个也是C++的特点;然后我们通过while循环,取出所有数据,并显示在Listbox上;同时也做判断如果数据是要素类IFeatureClass ,则定义一个FeatureLayerClass对象,并将他的FeatureClass属性赋值,FeatureLayerClass添加进地图,这样就实现了将mdb的数据挂载进地图的操作。

    代码如下:

    #region 读取Mdb的要素集,要素类,表格数据,栅格数据等数据,并把名称显示在Listbox中
    private void btnImportMDB_Click(object sender, EventArgs e)
    {
        string WsName = SelectMdb();
        List<string> listBoxSource = new List<string>();
        if (WsName != "")
        {
            IWorkspaceFactory workspaceFactory = new AccessWorkspaceFactoryClass();
            workspace = workspaceFactory.OpenFromFile(WsName, 0);
    ​
            IEnumDataset enumDataset_workspace = workspace.get_Datasets(esriDatasetType.esriDTAny);
            IDataset dataset_Parent = enumDataset_workspace.Next();
            datalistBox.DataSource = null;
           
            while (dataset_Parent != null)
            {
              
                if (dataset_Parent.Type == esriDatasetType.esriDTFeatureClass)//要素类
                {
                    listBoxSource.Add(dataset_Parent.Name + "-要素类-parent");
                    IFeatureClass featureClass = dataset_Parent as IFeatureClass;//将IDataset强转为IFeatureClass(要素对象) 
                    AddLayer(featureClass);//将要素对象挂载在要素图层上,并显示在地图上
                }
                else if (dataset_Parent.Type == esriDatasetType.esriDTFeatureDataset)//要素集
                {
                    string parentName = dataset_Parent.Name;
                    listBoxSource.Add(parentName + "-要素集-parent");
                    IFeatureDataset featureDataset_workspace = dataset_Parent as IFeatureDataset;
    ​
                    IEnumDataset enumDataset_Child = dataset_Parent.Subsets;//取出要素对象的集合
                    IDataset dataset_item = enumDataset_Child.Next();
                    int index = 0;
                    while (dataset_item != null)
                    {
                        listBoxSource.Add(dataset_item.Name + "-要素对象-父:" + parentName+"-" + dataset_item.Type);
                        Console.WriteLine("dataset_item.Type:" + dataset_item.Type);
                        IGeoDataset geoDataset = dataset_item as IGeoDataset; //也可以这样强转
                        IFeatureClass featureClass = dataset_item as IFeatureClass;//将IDataset强转为IFeatureClass(要素对象)
                   
                        AddLayer(featureClass);//将要素对象挂载在要素图层上,并显示在地图上
                        index++;
                        dataset_item = enumDataset_Child.Next();
                    }
                }
                else if (dataset_Parent.Type == esriDatasetType.esriDTTable)//数据表
                {
                    string parentName = dataset_Parent.Name;
                    listBoxSource.Add(parentName + "-数据表-parent");
                    ITable table11_workspace = dataset_Parent as ITable;
                    var count = table11_workspace.RowCount(new QueryFilterClass());
                    Console.WriteLine("数据行数:" + count);
    ​
                }
                else if (dataset_Parent.Type == esriDatasetType.esriDTRasterDataset)//栅格数据
                {
                   
    ​
                    string parentName = dataset_Parent.Name;
                    listBoxSource.Add(parentName + "-栅格数据-parent");
                }
                else
                {
                    string parentName = dataset_Parent.Name;
                    listBoxSource.Add(parentName + "-parent-" + dataset_Parent.Type.ToString());
    ​
                }
    ​
                dataset_Parent = enumDataset_workspace.Next();
            }
        } 
        datalistBox.DataSource = listBoxSource;
        datalistBox.Refresh();
    ​
        #region 刷新地图 
                axMapControl1.ActiveView.Refresh();//全图刷新 
                //axMapControl1.Map.MapScale = axMapControl1.Map.MapScale;
                //axMapControl1.Map.MapScale = 25000;
                Application.DoEvents();
               
    ​
                #endregion
    ​
    ​
    ​
    }
    //添加图层
    public void AddLayer(IFeatureClass featureClass)
    { 
        IFeatureLayer featureLayer = new FeatureLayerClass();
        featureLayer.Name = featureClass.AliasName;
        featureLayer.FeatureClass = featureClass;
    ​
        ILayerEffects layerEffects = featureLayer as ILayerEffects;
        layerEffects.Transparency = 1;//透明度设置
    ​
        IGeoFeatureLayer geoFeatureLayer = featureLayer as IGeoFeatureLayer;
        IFeatureRenderer featRender = geoFeatureLayer.Renderer;
        #region 样式设置 
                if (featRender is ISimpleRenderer)
                {
                    ISimpleRenderer simple = featRender as ISimpleRenderer;
                    //Symbol一般不会为空,因为有默认值,这里的图层layer是新建的,这里将IFeatureLayer转换为IGeoFeatureLayer,然后取他的Renderer,而Renderer里的Symbol就已经有值了。 
                    IFillSymbol symbolFill = simple.Symbol as IFillSymbol;
    ​
                    #region 获取和设置图层的符号的颜色
                    if (symbolFill != null)//可以强转为IFillSymbol,即为填充符号,即面符号
                    {
                        RgbColor rgbColor = new RgbColor();
                        rgbColor.RGB = symbolFill.Color.RGB;
                        Color pSymbolColor = Color.FromArgb(rgbColor.Red, rgbColor.Green, rgbColor.Blue);
                        symbolFill.Color = ConvertToArcGisColor(Color.Green);  // 设置图层的符号的颜色
                        //设置图层的符号的边框的颜色,这里直接symbolFill.Outline.Color不好使,必须重新new一个线对象
                        symbolFill.Outline = new SimpleLineSymbolClass() {  Color= ConvertToArcGisColor(Color.Purple), Width = 1 }; 
                          
                        
                    }
                    else
                    {
                        IMarkerSymbol symbolMarker = simple.Symbol as IMarkerSymbol;
                        if (symbolMarker != null)//可以强转为IMarkerSymbol,即为标记符号,即点符号
                        {
                            RgbColor rgbColor = new RgbColor();
                            rgbColor.RGB = symbolMarker.Color.RGB;
                            Color pSymbolColor = Color.FromArgb(rgbColor.Red, rgbColor.Green, rgbColor.Blue);
                            symbolMarker.Color = ConvertToArcGisColor(Color.Red);  // 设置图层的符号的颜色
                        }
                        else
                        {
                            ILineSymbol symbolLine = simple.Symbol as ILineSymbol;
                            if (symbolLine != null)//可以强转为ILineSymbol,即为线符号
                            {
                                RgbColor rgbColor = new RgbColor();
                                rgbColor.RGB = symbolLine.Color.RGB;
                                Color pSymbolColor = Color.FromArgb(rgbColor.Red, rgbColor.Green, rgbColor.Blue);
                                symbolLine.Color = ConvertToArcGisColor(Color.Blue);  // 设置图层的符号的颜色
                            }
    ​
                        }
                    }
                    #endregion
    ​
                }
                #endregion
      
        axMapControl1.Map.AddLayer(featureLayer);
    ​
    ​
    }
    //选择文件数据库
    public string SelectMdb()
    {
        string WsFileName = "";
        OpenFileDialog OpenFile = new OpenFileDialog();
        OpenFile.Filter = "文件数据库(MDB)|*.mdb";
        DialogResult DialogR = OpenFile.ShowDialog();
        if (DialogR == DialogResult.Cancel)
        {
    ​
        }
        else
        {
            WsFileName = OpenFile.FileName;
        }
        return WsFileName;
    ​
    }
    #endregion
    ​
    

    结果如下下图所示:

    BUG:您必须有许可证才能使用此 ActiveX 控件

    首先打卡License Server Administrator,看看许可证是否正常启动。

    如果解决不了,则重新安装license manager。

    ----------------------------------------------------------------------------------------------------

    到此,最基础的Arcgis开发,我们就学会了。

    代码已经传到Github上了,欢迎大家下载。

    Github地址: https://github.com/kiba518/ArcgisEngine_Winform

    ----------------------------------------------------------------------------------------------------

    注:此文章为原创,任何形式的转载都请联系作者获得授权并注明出处!
    若您觉得这篇文章还不错,请点击下方的【推荐】,非常感谢!

    https://www.cnblogs.com/kiba/p/16139750.html

     

    展开全文
  • ARCGIS API for JavaScript 开发文档 完整版
  • ArcGis是“计算机制图”应用,包含了全球范围内的底图、地图数据、应用程序,以及可配置的应用模板和开发人员使用的 GIS 工具和 API,可用于创建 Web 地图、发布GIS服务、共享地图、数据和应用程序,以及管理组织的...
  • Esri教学视频地址,ArcGIS入门资料,主要针对ArcGIS从业人员或者ArcGIS爱好者学习工作使用
  • ArcGIS_Engine开发入门教程.doc
  • ArcGIS二次开发何及,包括ArcGIS engine开发实例教程,中文开发指南清洗版,ArcGIS Engine轻松入门ArcGIS Engine10开发手册
  • 2000行代码,ArcGIS Engine开发入门源码
  • ArcGIS Engine 开发工具包中包含了其他可用的文档ArcGIS 开发帮助组件帮助对象模型图表和适合于初 学者的样例程序 ? ArcGIS 开发在线一个 Web 站点提供了最新的 ArcGIS 开发信息包括程序样例和技术文档请访问 h
  • ArcGIS API for Silverlight开发入门
  • PAGE 2 合肥工业大学 资源与环境工程学院 地理信息系统设计与开发实验报告 实验一 姓 名 学 号 专 业 地理信息系统 班 级 任课教师 张明明 实验1 ArcGIS Engine 开发入门 1.实验目的和内容 熟悉并安装ArcGIS Engine ...
  • ArcGIS Engine二次开发入门PPT教案.pptx
  • ArcGis开发入门到精通》书中源代码
  • ArcGIS开发宝典---从入门到精通》是为适应当前我国ArcGIS应用开发需要而编写的一本面向不同层次的开发指导教程。该书全面系统地介绍了ArcGIS初、中、高级应用开发方法,提供了大量VC++、Delphi、Java、VB、C#、...
  • 本资源是对刘仁义版《ArcGIS开发宝典—从入门到精通》书上示例源代码的实现,基于VS2008平台,编码实现了第二篇第5章地图控件、第6章地图浏览、第七章数据操作、第8章地图编辑(编辑地理特征和编辑整饰要素没有实现...
  • ArcGIS Engine开发入门到精通文档数据,可以实现基本的ArcGIS Engine功能,适合ArcGIS Engine初学者参考和学习
  • ArcGIS Engine地理信息系统开发入门到精通(第2版) 源码

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,225
精华内容 1,290
关键字:

arcgis开发入门

友情链接: 32.zip