在介绍ArcGIS中各种数据的打开方法时,我们用到了许多对于File文件的操作,在此做一个常用用法的总结。例如,

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

以方法一为例:运用LoadMxFile方法的函数参数加载地图文档

  1. private void loadMapAccDoc1()
  2. {
  3. OpenFileDialog ofd = new OpenFileDialog();
  4. ofd.Title = "打开地图文档";
  5. ofd.Filter = "map documents(*.mxd)|*.mxd";
  6. ofd.InitialDirectory = m_Path;
  7. //判断, 如果对话框结构不为OK, 退出函数体
  8. DialogResult DR = ofd.ShowDialog();
  9. if (DR != DialogResult.OK)
  10. return;
  11. string filePath = ofd.FileName;
  12. if (axMapControl1.CheckMxFile(filePath))
  13. {
  14. //设置axMapControl控制鼠标指针图标选项为沙漏光标
  15. axMapControl1.MousePointer = ESRI.ArcGIS.Controls.esriControlsMousePointer.esriPointerArrowHourglass;
  16. //三个参数(filePath——文件路径、0——地址名称或索引、Type.Missing——通过反射进行调用获取参数的默认值)
  17. axMapControl1.LoadMxFile(filePath, , Type.Missing);
  18. //定义axMapControl控制鼠标指针图标为默认箭头
  19. axMapControl1.MousePointer = ESRI.ArcGIS.Controls.esriControlsMousePointer.esriPointerDefault;
  20. axMapControl1.Extent = axMapControl1.FullExtent;
  21. }
  22. else
  23. {
  24. MessageBox.Show(filePath + "不是有效的地图文档");
  25. }
  26. }

从以上的代码中,我们归纳出几条常用的。

1、

  1. OpenFileDialog ofd = new OpenFileDialog();
  2. ofd.Title = "打开地图文档";
  3. ofd.Filter = "map documents(*.mxd)|*.mxd";
  4. ofd.InitialDirectory = m_Path;

2、

  1. DialogResult DR = ofd.ShowDialog();
  2. if (DR != DialogResult.OK)
  3. return;

可改写为(推荐使用)

  1. if(ofd.ShowDialog()!=DialogResult.OK)
  2. return;

3、

因为C#当中的FileName得到完整的路径(路径+文件名),让人感到有点不理解,很容易会让人误以为只是得到文件名。

因此,我们在编码中规定,

pFileName(完整的路径,路径+文件名)

fileName(文件名)

filePath(路径)

因此方法一中,应改写为:

  1. private void loadMapAccDoc1()
  2. {
  3. OpenFileDialog ofd = new OpenFileDialog();
  4. ofd.Title = "打开地图文档";
  5. ofd.Filter = "map documents(*.mxd)|*.mxd";
  6. ofd.InitialDirectory = m_Path;
  7. //判断, 如果对话框结构不为OK, 退出函数体
  8. if (ofd.ShowDialog() != DialogResult.OK)
  9. return;
  10. string pFileName = ofd.FileName;
  11. if (axMapControl1.CheckMxFile(pFileName))
  12. {
  13. //设置axMapControl控制鼠标指针图标选项为沙漏光标
  14. axMapControl1.MousePointer = ESRI.ArcGIS.Controls.esriControlsMousePointer.esriPointerArrowHourglass;
  15. //三个参数(pFileName——文件路径、0——地址名称或索引、Type.Missing——通过反射进行调用获取参数的默认值)
  16. axMapControl1.LoadMxFile(pFileName, , Type.Missing);
  17. //定义axMapControl控制鼠标指针图标为默认箭头
  18. axMapControl1.MousePointer = ESRI.ArcGIS.Controls.esriControlsMousePointer.esriPointerDefault;
  19. axMapControl1.Extent = axMapControl1.FullExtent;
  20. }
  21. else
  22. {
  23. MessageBox.Show(pFileName+ "不是有效的地图文档");
  24. }
  25. }

4、

  1. //FileInfo类提供创建、复制、删除、移动和打开文件的实例方法
  2. FileInfo fileInfo = new FileInfo(ofd.FileName);
  3. //获取父目录并强制转换成字符型
  4. String filePath = fileInfo.Directory.ToString();
  5. //得到不带后缀的文件名
  6. String sfileName = fileInfo.Name.Substring(, fileInfo.Name.IndexOf("."));

5、

  1. string pFileName = ofd.FileName;
  2. int index = ;
  3. //获取最后一个“\\”时的索引位置
  4. index = pFileName.LastIndexOf("\\");
  5. //获得shp文件的路径
  6. string filePath = pFileName.Substring(, index);
  7. //获得shp文件名
  8. string fileName = pFileName.Substring(index + , pFileName.Length - (index + ));

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

ArcGIS加载数据中常用的File文件方法总结的更多相关文章

  1. linux c++ 加载动态库常用的三种方法

    链接库时的搜索路径顺序:LD_LIBRARY_PATH --> /etc/ld.so.conf --> /lib,/usr/lib 方法1. vi .bash_profile    设置环 ...

  2. Highcharts 异步加载数据曲线图表

    导入 data.js 文件 异步加载数据需要引入以下js 文件: <script src="http://code.highcharts.com/modules/data.js&quo ...

  3. Ajax页面的加载数据与删除

    1.数据库找一张表: 颜色表2.主页面主页面的代码用到tbody:TBODY作用是:可以控制表格分行下载,从而提高下载速度.(网页的打开是先表格的的内容全部下载完毕后,才显示出来,分行下载可以先显示部 ...

  4. Highcharts 基本曲线图;Highcharts 带有数据标签曲线图表;Highcharts 异步加载数据曲线图表

    Highcharts 基本曲线图 实例 文件名:highcharts_line_basic.htm <html> <head> <meta charset="U ...

  5. ArcGIS Engine中加载数据

    ArcGIS Engine中加载数据 http://blog.csdn.net/gisstar/article/details/4206822   分类: AE开发积累2009-05-21 16:49 ...

  6. ML.NET Cookbook --- 1.如何从文本文件中加载数据?

    使用ML.NET中的TextLoader扩展方法从文本文件中加载数据.你需要知道在文本文件中数据列在那里,它们的类型是什么,在文本文件中什么位置可以找到它们. 请注意:对于ML.NET只读取文件的某些 ...

  7. 机器学习:从sklearn中加载数据

    一.sklearn模块 sklearn模块下有很多子模块,常用的数据集在:sklearn.datasets模块下: 通过数据集中DESCR来查看数据集的文档: 从datasets中加载数据: impo ...

  8. echarts在.Net中使用实例(二) 使用ajax动态加载数据

    通过上一篇文章可以知道和echarts参考手册可知,series字段就是用来存储我们显示的数据,所以我们只需要用ajax来获取series的值就可以. option 名称 描述 {color}back ...

  9. Flexigrid从对象中加载数据

    (有问题,在找…………) Flexigrid是用来动态加载数据的一种比较好(老)的Jquery表插件,然后有些时候,我们需要其从本地或者jQuery对象中加载数据,比如有这么个需求,页面显示中有两个表 ...

随机推荐

  1. maven 左边空了

    看一下maven: 解决方法:进入maven的配置,把maven的路径配置一下,就好了: 结果:

  2. 【技术博客】基于JsPlumb和JQuery-UI的流程图的保存和再生成

    开发组在开发过程中,都不可避免地遇到了一些困难或问题,但都最终想出办法克服了.我们认为这样的经验是有必要记录下来的,因此就有了[技术博客]. 基于JsPlumb和JQuery-UI的流程图的保存和再生 ...

  3. 颜色空间模型(HSV\LAB\RGB\CMYK)

    通过Photoshop的拾色器,我们知道表征颜色的模型的不止一种,本文将系统并且详细讨论这四种模型(HSV.LAB.RGB和CMYK)之间的联系以及应用.本文部分章节整合了多位优秀博主的博客(链接见本 ...

  4. [Web 测试] Jest单元测试的几个指标

    三个参数代表什么? %stmts是语句覆盖率(statement coverage):是不是每个语句都执行了? %Branch分支覆盖率(branch coverage):是不是每个if代码块都执行了 ...

  5. 使用Sabaki和Leela Zero配置AI围棋对弈环境

    求 李昌镐儿童围棋课堂 的pdf. 一.下载Sabaki和Leela Zero最新版本 二.安装Sabaki 三.安装leela zero 四.Sabaki配置leela zero引擎 五.Sabak ...

  6. OSPF协议介绍及配置

    一.OSPF概述 回顾一下距离矢量路由协议的工作原理:运行距离矢量路由协议的路由器周期性的泛洪自己的路由表,通过路由的交互,每台路由器都从相邻的路由器学习到路由,并且加载进自己的路由表中,而对于这个网 ...

  7. java面试题实战三

    华为优招面试经验. 1.笔试(这部分按照华为以前的风格不会为难人的,认真做AC一道题就可以进面试了,我编程能力一般吧,做了一道半而已,-_-||!) 2.测评(性格测试,不要太偏激就行了) 3.面试分 ...

  8. C++ Map运用实例

    C++ Map运用实例 #include <map> #include <string> #include <iostream> #include <ioma ...

  9. pauseable 库

    pauseable.js https://www.npmjs.com/package/pauseable Pauseable allows you to pause event emitters, t ...

  10. 第1部分 Elasticsearch基础

    一.安装 es端口:9200 kibana端口:5601 brew install elasticsearch brew install elasticsearch brew services sta ...