2、加载shp文件到地图控件

ShapeFile是一种矢量数据模型的计算机数据组织文件,用于在计算机上表达矢量数据的计算机文件。

加载ShapeFile文件最主要是:axMapControll控件对象所携带的AddShapeFile方法和Addlayer方法。

介绍两种加载shp文件的方法

方法一:使用axMapControl1对象的AddShapeFile方法加载ShapeFile文件

//path——为shp文件的路径目录,fileName——不带后缀的文件名
axMapControl1.AddShapeFile(path, fileName);

方法二:使用axMapControl1对象的AddLayer方法加载ShapeFile文件

//调用AddLayer方法添加shp图层
this.axMapControl1.AddLayer(pFLayer as ILayer);

方法二添加shp文件需要用到Map、Dataset、FeatureLayer和FeatureClass等对象。这些对象一般用到的主要接口有IMap、IActiveView、IDataset、IFeatureLayer和IFeatureClass等。

小提示:

IWorkspaceFactory 需要引用 using ESRI.ArcGIS.Geodatabase;

ShapefileWorkspaceFactory 需要引用 using ESRI.ArcGIS.DataSourcesFile;

核心代码:

#region 打开Shp文件
private void 打开Shp文件toolStripLabel1_Click(object sender, EventArgs e)
{
//方法一:
///addShapeFile1();
//方法二:
addShapeFile2();
}
/// <summary>
/// 方法二:使用axMapControl1对象的AddLayer方法加载ShapeFile文件
/// </summary>
private void addShapeFile2()
{
OpenFileDialog ofd = new OpenFileDialog();
ofd.Title = "打开shp文件";
ofd.Filter = "shp layer(*.shp)|*.shp";
if(ofd.ShowDialog()==DialogResult.OK)
{
string file = ofd.FileName;
int index = ;
//获取最后一个“\\”时的索引位置
index = file.LastIndexOf("\\");
//获得shp文件的路径
string filePath = file.Substring(, index);
//获得shp文件名
string fileName = file.Substring(index + , file.Length - (index + ));
//由工作空间工厂创建shp工作空间工厂类
IWorkspaceFactory pWorkspaceFactory = new ShapefileWorkspaceFactoryClass();
//打开shp文件的路径目录, 并强转赋予要素工作空间
IFeatureWorkspace pFeatureWorkspace = pWorkspaceFactory.OpenFromFile(filePath,) as IFeatureWorkspace;
//创建要素图层
IFeatureLayer pFLayer = new FeatureLayerClass();
//打开文件名
pFLayer.FeatureClass = pFeatureWorkspace.OpenFeatureClass(fileName);
//定义pFLayer的别名
pFLayer.Name = pFLayer.FeatureClass.AliasName;
//调用AddLayer方法添加shp图层
this.axMapControl1.AddLayer(pFLayer as ILayer);
//axMapControl控件刷新
this.axMapControl1.Refresh();
}
} /// <summary>
/// 方法一:使用axMapControl1对象的AddShapeFile方法加载ShapeFile文件
/// </summary>
private void addShapeFile1()
{
OpenFileDialog ofd = new OpenFileDialog();
ofd.Title = "打开图层文件";
ofd.Filter = "map documents(*.shp)|*.shp";
if(ofd.ShowDialog()==DialogResult.OK)
{
//FileInfo类提供创建、复制、删除、移动和打开文件的实例方法
FileInfo fileInfo = new FileInfo(ofd.FileName);
//获取父目录并强制转换成字符型
String path = fileInfo.Directory.ToString();
//获取文件名
String fileName = fileInfo.Name.Substring(, fileInfo.Name.IndexOf("."));
try
{
//path——为shp文件的路径目录,fileName——不带后缀的文件名
axMapControl1.AddShapeFile(path, fileName);
}
catch(Exception e)
{
MessageBox.Show("添加图层失败!!!"+e.ToString());
}
}
}
#endregion

谢谢观看!本人初学GIS二次开发,如果有不对的地方,请多多包涵!

介绍ArcGIS中各种数据的打开方法——shp(矢量文件)的更多相关文章

  1. 介绍ArcGIS中各种数据的打开方法——mxd(地图文档)

    1.加载地图文档 在ArcGIS中,以mxd作为扩展名的文件叫地图文档. 地图文档中只是包含图层的引用,即存储当前地图的图层路径.符号.状态.修饰等信息,并不存储真实的数据层. ArcGIS Map中 ...

  2. 介绍ArcGIS中各种数据的打开方法——mdb(个人数据库)

    3.打开存储在Access GeoDatabase的要素类 使用工作空间打开一个Access库中的一个要素类. private void OpenWorkspaceFromFileAccess(str ...

  3. 介绍ArcGIS中各种数据的打开方法——tin(栅格文件)

    4.加载栅格文件 栅格数据是GIS中重要的数据源之一,如卫星图像.扫描的地图.照片等. 栅格数据常见的格式有Bmp.Tiff.Jpg.Grid等. 添加栅格数据主要使用Rasterlayer 组件类, ...

  4. PatentTips - 在物联网中进行数据过滤的方法和装置

    背景技术 [0001] 本发明涉及物联网,特别涉及在物联网进行数据过滤的方法和装置. [0002] 物联网是新一代信息技术的重要组成部分,特指物物相连的网络.具体地,物联网是指通过各种信息传感设备,如 ...

  5. ASP.NET中如何删除最近打开的项目和文件的记录

    ASP.NTET中总是保留最近打开的项目和文件的记录,甚至是已删除的它也不删.下面介绍几种删除的方法: 第一种:建立一个bat文件,以后双击即可清除,内置代码如下: @echo off@REG Del ...

  6. excel中的数据导入oracle方法

    SQL_loader批量上传数据 1.    注释 在工作中,很多时候会遇到如下情况:需要将excel中的数据批量上传到ORACLE表中.如果是小数据量,如几十条至几百条,那么用plsql dev工具 ...

  7. ArcGIS中的数据连接问题——数据类型不统一

    博主在研究空间数据分布的时候经常会用到 ArcGIS 进行空间数据可视化.但是有时候会由于数据类型不统一而无法将 csv 中的数据连接到底图上.比如在底图中的数据是字符串格式,而 csv 中是数字格式 ...

  8. 归纳从文件中读取数据的六种方法-JAVA IO基础总结第2篇

    在上一篇文章中,我为大家介绍了<5种创建文件并写入文件数据的方法>,本节我们为大家来介绍6种从文件中读取数据的方法. 另外为了方便大家理解,我为这一篇文章录制了对应的视频:总结java从文 ...

  9. 判断js中各种数据的类型方法之typeof与0bject.prototype.toString讲解

    提醒大家,Object.prototype.toString().call(param)返回的[object class]中class首字母是大写,像JSON这种甚至都是大写,所以,大家判断的时候可以 ...

随机推荐

  1. ES6-数组的新方法

    1.Array.of() 方法创建一个具有可变数量参数的新数组实例,而不考虑参数的数量或类型. Array.of() 和 Array 构造函数之间的区别在于处理整数参数:Array.of(7)创建一个 ...

  2. SqlServer 2014 还原数据库时提示:操作系统返回了错误5,,拒绝访问

    场景 在进行数据库还原时提示: System.Data.SqlError:在对”“尝试”“时,操作系统返回了错误5(拒绝访问) 实现 第一种方案是修改要还原的数据库备份文件的权限. 找到备份文件右击属 ...

  3. 松软科技课堂:SQL--RIGHTJOIN关键字

    发布时间:2019/3/15 9:27:31 SQL RIGHT JOIN 关键字 RIGHT JOIN 关键字会右表 (table_name2) 那里返回所有的行,即使在左表 (table_name ...

  4. 表达式树练习实践:C# 循环与循环控制

    目录 表达式树练习实践:C# 循环 LabelTarget for / while 循环 无限循环 最简单的循环 多次循环 break 和 continue 一起 表达式树练习实践:C# 循环 C# ...

  5. 零基础快速入门Java的秘诀

    刚开始学习Java时要端正自己的学习的目标和态度,明确学习Java基础重点要做什么. 首先第一点,Java基础的学习,基础很重要,基础好地基牢,才能爬的高! 大家要从以下4个方向努力: 代码能力:一定 ...

  6. IO流 - 字节输入输出流,文件的复制

    IO流 I:input - 输入(读取),eg:把硬盘的内容读取到内存 O: output - 输出(写入) eg:把内存中的东西写入硬盘保存 流:数字(字符/字节) 一般1个字符=2Byte,1By ...

  7. Android Studio [TextView]

    MainAcitvity package com.xdw.secondapp; import android.content.Intent;import android.os.Bundle;impor ...

  8. 我面向 Google 编程,他面向薪资编程

    面试官:同学,说一说面向对象有什么好处? 神仙开发者:我觉的面向对象编程没有什么好处. 面试官:为什么(摊手.问号脸)? 神仙开发者:因为在面向对象的时候,我对象总是跟我说话,问我在淘宝上挑的衣服哪个 ...

  9. Git初始化项目 和 Gitignore

    初始化init: git init git status git add . git commit -am "init projrct" 添加远程仓库: git remote ad ...

  10. Java之字符流读写文件、文件的拷贝

    字符流读数据 – 按单个字符读取 创建字符流读文件对象: Reader reader = new FileReader("readme.txt"); 调用方法读取数据: int d ...