介绍ArcGIS中各种数据的打开方法——shp(矢量文件)
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(矢量文件)的更多相关文章
- 介绍ArcGIS中各种数据的打开方法——mxd(地图文档)
1.加载地图文档 在ArcGIS中,以mxd作为扩展名的文件叫地图文档. 地图文档中只是包含图层的引用,即存储当前地图的图层路径.符号.状态.修饰等信息,并不存储真实的数据层. ArcGIS Map中 ...
- 介绍ArcGIS中各种数据的打开方法——mdb(个人数据库)
3.打开存储在Access GeoDatabase的要素类 使用工作空间打开一个Access库中的一个要素类. private void OpenWorkspaceFromFileAccess(str ...
- 介绍ArcGIS中各种数据的打开方法——tin(栅格文件)
4.加载栅格文件 栅格数据是GIS中重要的数据源之一,如卫星图像.扫描的地图.照片等. 栅格数据常见的格式有Bmp.Tiff.Jpg.Grid等. 添加栅格数据主要使用Rasterlayer 组件类, ...
- PatentTips - 在物联网中进行数据过滤的方法和装置
背景技术 [0001] 本发明涉及物联网,特别涉及在物联网进行数据过滤的方法和装置. [0002] 物联网是新一代信息技术的重要组成部分,特指物物相连的网络.具体地,物联网是指通过各种信息传感设备,如 ...
- ASP.NET中如何删除最近打开的项目和文件的记录
ASP.NTET中总是保留最近打开的项目和文件的记录,甚至是已删除的它也不删.下面介绍几种删除的方法: 第一种:建立一个bat文件,以后双击即可清除,内置代码如下: @echo off@REG Del ...
- excel中的数据导入oracle方法
SQL_loader批量上传数据 1. 注释 在工作中,很多时候会遇到如下情况:需要将excel中的数据批量上传到ORACLE表中.如果是小数据量,如几十条至几百条,那么用plsql dev工具 ...
- ArcGIS中的数据连接问题——数据类型不统一
博主在研究空间数据分布的时候经常会用到 ArcGIS 进行空间数据可视化.但是有时候会由于数据类型不统一而无法将 csv 中的数据连接到底图上.比如在底图中的数据是字符串格式,而 csv 中是数字格式 ...
- 归纳从文件中读取数据的六种方法-JAVA IO基础总结第2篇
在上一篇文章中,我为大家介绍了<5种创建文件并写入文件数据的方法>,本节我们为大家来介绍6种从文件中读取数据的方法. 另外为了方便大家理解,我为这一篇文章录制了对应的视频:总结java从文 ...
- 判断js中各种数据的类型方法之typeof与0bject.prototype.toString讲解
提醒大家,Object.prototype.toString().call(param)返回的[object class]中class首字母是大写,像JSON这种甚至都是大写,所以,大家判断的时候可以 ...
随机推荐
- hadoop2.7.3启动报错问题
在日志里面可以看出是没有对应的权限,因此在hdfs_site.xml中添加 <property> <name>dfs.permissions</name> < ...
- Servlet+jsp用户登录加上验证码
最近公司有个项目被客户拿去进行漏洞扫描,发现用户登录太简单,容易被暴力破解.当然发现的问题很多,什么反射型XSS,存储型XSS,敏感信息泄露等等.但是我们今天不讲这么多,就说说如何修复暴力破解的问题. ...
- 【第二十二篇】从客户端中检测到有潜在危险的 Request.Form 值
提交数据的时候 用js的方法 escape(富文本框的值) 例:escape(UM.getEditor('Content').getContent()); 取值的时候 unescape ...
- Winform中实现ZedGraph中曲线右键显示为中文
场景 Winforn中设置ZedGraph曲线图的属性.坐标轴属性.刻度属性: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/10 ...
- js中的几种继承方法
JS作为面向对象的弱类型语言,继承也是其非常强大的特性之一. 继承:子承父业:一个原本没有某些方法或属性的对象,统一写方法,拿到了另外一个对象的属性和方法 下面是js中的几种继承方式 1.改变this ...
- 第八届蓝桥杯java b组第三题
标题:承压计算 X星球的高科技实验室中整齐地堆放着某批珍贵金属原料. 每块金属原料的外形.尺寸完全一致,但重量不同.金属材料被严格地堆放成金字塔形. 7 ...
- redis 主从复制和哨兵模式(二)
Redis 主从复制 为了分担单机 redis 的数据服务压力,需要进行读写分离,所以搭建 redis 的主从结构,主节点负责写,从节点负责读,主节点定期把数据同步到从节点. 配置主从 # 配置文件中 ...
- Atm 测试
Account.java package ATM;//信1705-1 20173628 赵路仓 public class Account { private int balance;//余额 priv ...
- 安装pytest-allure-adaptor后,运行报错:AttributeError: module 'pytest' has no attribute 'allure'
原因:因为pytest-allure-adaptor库基本被python3放弃了,运行很不友好,反正我运行就是报错 解决方法: 先卸载:pip uninstall pytest-allure-ad ...
- 性能优化:虚拟列表,如何渲染10万条数据的dom,页面同时不卡顿
列表大概有2万条数据,又不让做成分页,如果页面直接渲染2万条数据,在一些低配电脑上可能会照成页面卡死,基于这个需求,我们来手写一个虚拟列表 思路 列表中固定只显示少量的数据,比如60条 在列表滚动的时 ...