快捷方式
ctrl+K+E 调整格式
文件的操作
通过菜单打开文件,值得注意的是,菜单的深度不宜过深。,代码如下:
private void appToolStripMenuItem_Click(object sender, EventArgs e)
{
OpenFileDialog dlg = new OpenFileDialog();
dlg.Filter = "shape file|*.shp";//进行文件过滤
dlg.Multiselect = false;
dlg.Title = "Open shap file";
if(dlg.ShowDialog()==DialogResult.OK)
{
string pathfile = dlg.FileName;
//获取shapefile的名词和路径
//设置断点,进行调试
//双斜线,第一个是转义符,字符串当中的需要加转义符
//作业1:查看C#中的转义符,能转义哪一些字符
//提取路径和文件名词,该如何提取,substring,截取一部分字符,有一个方法,即substring方法
//pathfilefile.Indexof('\\');//单引号表示字符类型,双引号是字符串,第一个是转义符,我们目的是找后一个方法,这个方法是找到第一个出现的斜杠,因为是从头开始找的
//所以我们要想用从后往前找的方法
int index=pathfile.LastIndexOf('\\');//找到最后一个斜杠的位置
string path = pathfile.Substring(0,index);//从0开始去取,一直取到最后一个
string name = pathfile.Substring(index+1);
//pathfile.Substring();//从第几个字符开始取,一直取到最后,那个位置开始取,我取多长呢?看最后一个反斜杠,找到最后一个的位置,找到这个位置之前的,再找这个位置之后的
//作业2:字符串常用方法
//shapefile所存在的文件夹,我们就认为其是一个工作空间,我们先把工作空间打开,再在工作空间下进行操作
//找到类库里面的,打开对象模型图,我们就可以看到WorkSpace这个普通类,不能new,但是可以由别的类取创建,这个虚线就表示谁去创建它
//发现是工作空间工厂去new一个,我们就去看是否有派生的子类,链接两个对象模型图,打开shape file,我们要用shape file的工作空间工厂,我们才能创建这个shape file的工作空间,才可以去打开shape file
//所有基于文件方式打开这个类,打开“here",打开datasourcesfile去找,虫孔的链接,虫孔的关联,上下进行子类的派生。
//子类里面去实现,WorkspaceFactory是组件类,我们可以去实例化,(灰色的),去实例化工作空间工厂。
//怎么去程序开发,使用对象模型图。
//工作空间工厂
//返回一个什么接口呢,IWorkSpace接口
//需要别的对象对其进行创建,父类不能创建,只能子类创建,子类创建呢,就需要使用一个接口
IWorkspaceFactory pWorkspaceFct = new ShapefileWorkspaceFactory();
//父类接口,能力,子类也应该要有
IWorkspace pWorkspace = pWorkspaceFct.OpenFromFile(path,0);//参数:路径,和默认参数0
//打开当前的文件夹
//作业3:查WorkspaceFactory,Workspace,以及WorkspaceFactory可以生成哪一些子类,以及子类能访问到什么,去学习
//Open方法返回的也是一个接口,方法返回的应该是对象,所有方法均适用,接口变量去承接它,
//我们可以用指定的名称,filename
//考虑用相关的能力去做工作,实际上就是创建出来了
//找到工作空间对象,返回的是什么呢,IWorkSpace,访问的是shapefile文件,shapefile是矢量格式的
//有另外的接口和能力呢?访问矢量数据的能力呢?
//找到的是IFeatureWorkSpace,可以用它去创建数据库,可以new shaplefile
//OpenFeatureClass(不仅仅有new,也有Open)
//作业4:查FeatureClass类
//能力切换,结构查询
IFeatureWorkspace pFeatureWorkSpace = pWorkspace as IFeatureWorkspace;
IFeatureClass pFeatureCLass = pFeatureWorkSpace.OpenFeatureClass(name);//参数是shape file的文件名称
//作业5:查FeatureClass类,与作业4一致
//数据也是我的组成部分,我去找到指定的数据源,数据集,其本质是我的一个组成部分
//数据与工作空间是组成关系
//一个featureclass是一个要素的集合,多个矢量要素的数据集,单张表的数据集,数据集可以有很多不同的类别
//可以派生一个纯表,是可以1存放一个矢量字段的,
//Geodataset是一个抽象类(普通类,抽象类,组件类)不可以new 但是可以派生,矢量数据集,可以有对应的一些组成,组成多个feature类,要的就是那个featureclass,可以存放矢量的空间要素集,有了要素集之后
//就可以矢量层的创建了,在地图上以图层方式进行表达了,所以有了一个概念,图层。
//数据源就是一个featureclass,找到矢量要素的集合,该如何加载呢,应该以层的方式存在,所以要创建层
ILayer pLayer = new FeatureLayer();//lager对象只能作为一个父类,一个地图包括的图层,图层可以去做渲染等操作
//所以我们要找一个类库,叫carto库
//作业6:查找carto库
//作业7:MapDocument的查找,接口的能力,返回的是什么,Mapdocument可以有多个地图,地图与之也是组成关系
//作业8:查Map,Imap,属性,内容,地图里面有多个层可以组成,是不是有对应的其他的组成啊
//层的定义去哪里找呢,要去找layers表里面去找,carto里面类分不开了,需要分多张,每一张都有一个标题
//地图elements要素的
//maplayer
//Carto Object Model 关注虫孔相对的那一个,我们首先关注图层这个类,抽象类,抽象类是可以派生的,找到featurelayer
//派生的这个类叫,feature layer类,也就可以创建出来了
//ILayer 是layer类的接口,进行layer操作的能力,
IFeatureLayer pFeatureLayer = pLayer as IFeatureLayer;
//怎么查询到IFeatureLayer,结构查询
//每一层要有一个引用的数据源
pFeatureLayer.FeatureClass = pFeatureCLass;
//创建完层,需要加到地图空间中去
axMapControl1.AddLayer(pLayer);
axMapControl1.Refresh();
//实体化文件,加载完了,蕴含了很多关系,控件,对象,
//考试必考,写代码。
//明白所有的类的关系,进行
//还有一个加的方法比较简单,那就是:
}
}
private void anotherToolStripMenuItem_Click(object sender, EventArgs e)
{
OpenFileDialog dlg = new OpenFileDialog();
dlg.Filter = "shape file|*.shp";//进行文件过滤
dlg.Multiselect = false;
dlg.Title = "Open shap file";
if (dlg.ShowDialog() == DialogResult.OK)
{
string pathfile = dlg.FileName;
int index = pathfile.LastIndexOf('\\');//找到最后一个斜杠的位置
string path = pathfile.Substring(0, index);//从0开始去取,一直取到最后一个
string name = pathfile.Substring(index + 1);
axMapControl1.AddShapeFile(path,name);
}
//第三种方法:command加载
//考试内容:写出两种文档打开的方法。
//第一个open Map 的方法,相对比较简单,实际上调用了MapCOntrol的一个方法,然后指定文件名,从地图控件中打开,实际上与AO相关的就这一句话
}
//加载的第三种方法
private void commandToolStripMenuItem_Click(object sender, EventArgs e)
{
ICommand pCommand = new ControlsAddDataCommand();
//谁去执行呢,要去调用axmapcontrol
pCommand.OnCreate(axMapControl1.Object);
pCommand.OnClick();
//明白真正的底层的执行
//打印对象模型图
}
1.打开文件夹
2.文件过滤
3.不进行多选
https://blog.csdn.net/cunchi8090/article/details/107495911
4.判断文件格式
5.或许文件的名称和路径
6.创建工作空间
7.创建要素(选择的文件)
8.创建图层去显示要素
9.实体化文件,加载,并刷新界面
常见问题
遇到奇怪的问题,可以重新加载licenseControl