上一篇中只能添加代码中指定的shp文件(最简单的ArcGIS Engine应用程序(上)

为了让用户可以浏览磁盘加载指定的shp文件,需做一下调整。

从工具箱往窗体上添加一个OpenFileDialog控件。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms; using ESRI.ArcGIS.DataSourcesFile;
using ESRI.ArcGIS.Geodatabase;
using ESRI.ArcGIS.Carto; namespace SimpleArcEngineDemo
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
} private void menuAddShp_Click(object sender, EventArgs e)
{
//步骤1: 创建工作空间工厂。
IWorkspaceFactory pWorkspaceFactory = new ShapefileWorkspaceFactory(); //文件过滤器, 选择后缀名为.shp
openFileDialog1.Filter = "ShapeFile文件(*.shp)|*.shp"; //设定文件对话框的初始路径
openFileDialog1.InitialDirectory = @"D:\data"; //示例数据文件夹
openFileDialog1.Multiselect = false; //不允许多选
DialogResult dialogResult = openFileDialog1.ShowDialog();//打开对话框
if (dialogResult != DialogResult.OK)
{
return; //用户没有选择时返回
}
//得到文件名对应的路径、文件夹名等
string pPath = openFileDialog1.FileName; //得到完整的路径(路径+文件名)
string pFolder = Path.GetDirectoryName(pPath); //得到文件的路径(不包括文件名)
string pFileName = Path.GetFileName(pPath); //得到文件的文件名 //步骤2: 打开ShapeFile文件名对应的工作空间。
IWorkspace pWorkspace1 = pWorkspaceFactory.OpenFromFile(pFolder, ); //数据目录
IFeatureWorkspace pFeatureWorkspce = pWorkspace1 as IFeatureWorkspace; //将工作空间强转成要素工作空间 //步骤3: 打开要素类。
IFeatureClass pFC = pFeatureWorkspce.OpenFeatureClass(pFileName); //步骤4: 创建要素类图层。
IFeatureLayer pFLayer = new FeatureLayerClass();
pFLayer.FeatureClass = pFC;
pFLayer.Name = pFC.AliasName; //步骤5: 关联图层和要素类。
ILayer pLayer = pFLayer as ILayer;
IMap pMap = axMapControl1.Map; //步骤6: 添加到地图控件中。
pMap.AddLayer(pLayer);
axMapControl1.ActiveView.Refresh(); }
}
}

简述:

单机“添加shp”,会弹出一个打开文件的对话框,浏览目录后选中任意一个shp文件,单机确定,即可将指定的shp文件加载到地图控件当中。

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

最简单的ArcGIS Engine应用程序(中)的更多相关文章

  1. 最简单的ArcGIS Engine应用程序(下)

    在中篇我们讲到使用OpenFileDialog控件可以添加shp文件.(最简单的ArcGIS Engine应用程序(中)) 添加lyr文件的操作也是大同小异的. using System; using ...

  2. 最简单的ArcGIS Engine应用程序(终)

    在上文的基础上,下面将使用简单的代码实现要素类属性的查看.(最简单的ArcGIS Engine应用程序(下)) 新增一个窗体,并从工具箱拖动DataGridView控件到该窗体中.设置该对象的Dock ...

  3. 最简单的ArcGIS Engine应用程序(上)

    名词: IWorkspaceFactory 工作空间工厂 ShapeFileWorksapceFactory 矢量文件工作空间工厂 IWorkspce 工作空间 IFeatrueWorkspace 要 ...

  4. C#+ArcGIS Engine 获取地图中选中的要素

    转自 C#+ArcGIS Engine 获取地图中选中的要素 C#+ArcGIS Engine 获取地图中选中的要素 提供一种简单遍历获取地图中选中要素的方法,代码如下: List<IFeatu ...

  5. ArcGIS Engine读取GDB中的Shape

    string gdbPath = @"D:\Documents\ArcGIS\Default.gdb"; FileGDBWorkspaceFactoryClass pFileGDB ...

  6. ArcGIS Engine能够做什么?

    转自原文ArcGIS Engine能够做什么? ArcGIS Engine是一组跨平台的嵌入式ArcObjects,它是ArcGIS软件产品的底层组件,用来构建定制的GIS和桌面制图应用程序,或是向原 ...

  7. 基于Arcgis Engine 10.2(C#)+PostgreSQL 11(Postgis 3)+pgRouting 3.0实现使用数据库进行路径规划

    前言:最近在(被迫)使用ArcGIS Engine10.2(.NET平台)进行二次开发(桌面应用),因为想做一个最短路径查询的功能,而arcgis的网络分析又比较麻烦,于是想到了使用Postgis.但 ...

  8. ArcGIS Engine控件运行许可(转)

    ArcGIS Engine控件运行许可   Runtime绑定: 在ArcGIS Engine10.0中,许可方式发生了一定的变化,ArcGis10有一个新的要求---runtime绑定.就是在任何A ...

  9. ArcGIS Engine开发之旅01---产品组成、逻辑体系结构

    原文:ArcGIS Engine开发之旅01---产品组成.逻辑体系结构 ArcGIS Engine 由两个产品组成:  面向开发人员的软件开发包(ArcGIS Engine Developer k ...

随机推荐

  1. Java连载30-方法重载、方法递归

    一.方法重载 1.又被称为overload 2.方法重载使用场景 功能类似的时候,尽可能仍方法名相同(但是功能不同或者不相似的时候,方法名尽量不同) 3.什么条件满足之后,可以构成方法重载 (1)在同 ...

  2. 云原生生态周报 Vol. 19 | Helm 推荐用户转向 V3

    作者| 禅鸣.忠源.天元.进超.元毅 业界要闻 Helm 官方推荐用户迁移到 V3 版本 Helm 官方发布博客,指导用户从 v2 迁移到 v3,这标志着官方开始正式推进 helm 从 v2 转向 v ...

  3. ASP.NET Core 2.2 : 二十一. 内容协商与自定义IActionResult和格式化类

    上一章的结尾留下了一个问题:同样是ObjectResult,在执行的时候又是如何被转换成string和JSON两种格式的呢? 本章来解答这个问题,这里涉及到一个名词:“内容协商”.除了这个,本章将通过 ...

  4. Android mmap 文件映射到内存介绍

    本文链接: Android mmap 文件映射到内存介绍 Android开发中,我们可能需要记录一些文件.例如记录log文件.如果使用流来写文件,频繁操作文件io可能会引起性能问题. 为了降低写文件的 ...

  5. jmeter运行第三方java项目

    自己写了个简化系统操作的小工具,因为不想给别人用的时候占用本地资源于是写的是纯java项目,后面放到jmeter中通过beanshell sampler调用. java源码不贴了,把写好的项目导出成可 ...

  6. TLC5615

    #include <reg51.h> #include "TLC5615.c" code uchar seven_seg[] = {0xc0, 0xf9, 0xa4, ...

  7. 同步FIFO design and IP level verification

    一.前言 应聘IC前端相关岗位时,FIFO是最常考也是最基本的题目.FIFO经常用于数据缓存.位宽转换.异步时钟域处理.随着芯片规模的快速增长,灵活的system verilog成为设计/验证人员的基 ...

  8. python excel to mysql

    import sys import xlrd import pymysql import math import json from collections import OrderedDict # ...

  9. Introduction to ES6上课笔记

    课程链接:https://scrimba.com/g/gintrotoes6 这个网站有几个热门的前端技术栈的免费课程,上课体验除了英语渣只能看代码理解听老师讲的一知半解之外,是极佳的学编程的网站了. ...

  10. Android Studio [真机测试/开发者模式]

    一.手机设置 首先根据自己的手机型号百度打开开发者模式, 我的是vivo,设置--->更多设置-->关于手机-->软件版本号连续点击会提示开启开发者模式. 并在开发者选项里打开USB ...