AE开发20210510之快捷方式、文件操作、常见问题

快捷方式

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值