软件是由数据和程序组成,既然做反演系统,那么如何高效且合理的读取数据是一个至关重要的问题。在AE+C#中读取地图数据的代码十分简单,因此此篇分享还加上了将地图文件输出的代码。

还是老规矩,先把相关的引用放上来

using ESRI.ArcGIS.Carto;
using ESRI.ArcGIS.Geodatabase;
using ESRI.ArcGIS.DataSourcesRaster;

打开文件的内容仅包括矢量和栅格地图文件,mxd文档不知道是什么问题并不能读取,如有实现者,望不吝赐教。其代码如下:

//打开选择文件对话框用于选取图形文件
            string fullFilePath;  //存储打开文件的全路径
            //设置OpenFileDialog的属性,使其能打开多种类型文件
            OpenFileDialog openFile = new OpenFileDialog();
            openFile.Multiselect = true;
            openFile.Filter = "shape文件(*.shp)|*.shp";//设置打开文件对话框的文件过滤器属性
            openFile.Filter += "|栅格数据(*.jpg,*.bmp,*.tiff)|*.jpg;*.bmp;*.tiff;*.tif;*.img";
            openFile.Title = "打开文件";
            if (openFile.ShowDialog() == DialogResult.OK)//打开文件对话框,并判断是否成功打开,若是,执行以下代码块
            {
                fullFilePath = openFile.FileName;
                //获得文件路径
                int index = fullFilePath.LastIndexOf("\\");
                string filePath = fullFilePath.Substring(0, index);
                //获得文件名称
                string fileName = fullFilePath.Substring(index + 1);
                //加载shape文件
                if (openFile.FilterIndex == 1)
                {
                    //打开工作空间工厂
                    IWorkspaceFactory workspcFac = new ShapefileWorkspaceFactory();
                    IFeatureWorkspace featureWorkspc;
                    IFeatureLayer featureLay = new FeatureLayerClass();
                    //打开路径
                    featureWorkspc = workspcFac.OpenFromFile(filePath, 0) as IFeatureWorkspace;
                    //打开类要素
                    featureLay.FeatureClass = featureWorkspc.OpenFeatureClass(fileName);
                    featureLay.Name = fileName;//加载到axMapControl中图层的名字,fileName是带有文件后缀字符串,若看着实在不爽,用subString()方法裁剪一下,用法参考上文
                    //添加图层
                    axMapControl1.AddLayer(featureLay);
                    axMapControl1.Refresh();
                }
                //加载栅格图像(代码与加载shp文件代码类似,不做详细注释)
                else if (openFile.FilterIndex == 2)
                {
                    IWorkspaceFactory workspcFac = new RasterWorkspaceFactory();
                    IRasterWorkspace rasterWorkspc;
                    IRasterDataset rasterDatset = new RasterDatasetClass();
                    IRasterLayer rasterLay = new RasterLayerClass();
                    rasterWorkspc = workspcFac.OpenFromFile(filePath, 0) as IRasterWorkspace;
                    rasterDatset = rasterWorkspc.OpenRasterDataset(fileName);
                    rasterLay.CreateFromDataset(rasterDatset);
                    axMapControl1.ClearLayers();
                    rasterLay.Name = fileName;
                    axMapControl1.AddLayer(rasterLay);
                    axMapControl1.Refresh();
                }

}

输出文件的主体是axPageLayoutControl中的图层,输出格式可分为两个部分,即PDF和图片格式,其效果实现,需要在主体窗口上重新打开一个窗口,这就涉及到一个参数传递的问题,但是代码仍然不难,其代码如下:

//这是打开相应输出窗体的代码

private void 图形输出ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            //打开输出文件窗口
            ExportMapForm exportPh = new ExportMapForm(axPageLayoutControl1);//将axPageLayoutCobtrol1作为对象进行传入至ExportMapForm的构造函数中
            exportPh.Show();

exportPh.Enabled = true;//设置该窗口可见和可操作

}

以下代码较长,慎入:

AxPageLayoutControl m_Map;//新建axPageLayoutControl变量,用于接收传进来的参数
        public ExportMapForm(AxPageLayoutControl m_Map)
        {
            InitializeComponent();
            this.m_Map = m_Map;//通过参数传递将主界面的axPageLayoutControl传递给m_Map
            this.Text = "图层输出";
        }
        private void btnPrint_Click(object sender, EventArgs e)//点击打印Button响应
        {
            //创建保存文件对话框的实例
            SaveFileDialog SaveFile = new SaveFileDialog();
            //根据掩码文本框对对话框初始化
            switch (comboBox1.SelectedIndex)
            {     
                case 0:
                    SaveFile.Filter = "bmp文件(*.bmp)|*.bmp";
                    SaveFile.Title = "保存bmb文件";
                    break;
                case 1:
                    SaveFile.Filter = "emf文件(*.emf)|*.emf";
                    SaveFile.Title = "保存emp文件";
                    break;
                case 2:
                    SaveFile.Filter = "gif文件(*.gif)|*.gif";
                    SaveFile.Title = "保存gif文件";
                    break;
                case 3:
                    SaveFile.Filter = "jpg文件(*.jpeg)|*.jpeg";
                    SaveFile.Title = "保存jpg文件";
                    break;
                case 4:
                    SaveFile.Filter = "PNG文件(*.png)|*.png";
                    SaveFile.Title = "保存png文件";
                    break;
                case 5:
                    SaveFile.Filter = "TIFF文件(*.TIFF)|*.TIFF";
                    SaveFile.Title = "保存tiff文件";
                    break;
                case 6:
                    SaveFile.Filter = "PDF文件(*.PDF)|*.pdf";
                    SaveFile.Title = "保存pdf文件";
                    break;
            }
            if (SaveFile.ShowDialog() == DialogResult.OK)
            {
                //打开保存文件对话框 并选择路径和文件名
                SaveFile.AddExtension = true;//设置为自动补充文件扩展名
                IExport pExport;
                switch (comboBox1.SelectedIndex)//根据掩码文本框的索引值穿件不同的pExport实例并调用Export方法
                {
                    case 0:
                        pExport = new ExportBMPClass();
                        Export(pExport, SaveFile.FileName);
                        break;
                    case 1:
                        pExport = new ExportEMFClass();
                        Export(pExport, SaveFile.FileName);
                        break;
                    case 2:
                        pExport = new ExportGIFClass();
                        Export(pExport, SaveFile.FileName);
                        break;
                    case 3:
                        pExport = new ExportJPEGClass();
                        Export(pExport, SaveFile.FileName);
                        break;
                    case 4:
                        pExport = new ExportPNGClass();
                        Export(pExport, SaveFile.FileName);
                        break;
                    case 5:
                        pExport = new ExportTIFFClass();
                        Export(pExport, SaveFile.FileName);
                        break;
                    case 6:
                        pExport = new ExportPDFClass();
                        Export(pExport, SaveFile.FileName);
                        break;

}
               
            }
            
        }
        //输出文件
        public void Export(IExport pExport,string path)
        {
            IActiveView pActiveView;
            IEnvelope pPixelBoundsEnv;
            int iOutputResolution;
            int iScreenResolution;
            int hdc;
            pActiveView = m_Map.ActiveView;
            pExport.ExportFileName =path ;
            iScreenResolution = 96;
            iOutputResolution = 300;
            pExport.Resolution = iOutputResolution;
            tagRECT pExportFrame;
            pExportFrame = pActiveView.ExportFrame;
            tagRECT exportRECT;
            exportRECT.left = 0;
            exportRECT.top = 0;
            exportRECT.right = pActiveView.ExportFrame.right * (iOutputResolution / iScreenResolution);
            exportRECT.bottom = pActiveView.ExportFrame.bottom * (iOutputResolution / iScreenResolution);
            pPixelBoundsEnv = new EnvelopeClass();
            pPixelBoundsEnv.PutCoords(exportRECT.left, exportRECT.top, exportRECT.right, exportRECT.bottom);
            pExport.PixelBounds = pPixelBoundsEnv;
            hdc = pExport.StartExporting();
            pActiveView.Output(hdc, (int)pExport.Resolution, ref exportRECT, null, null);
            pExport.FinishExporting();
            pExport.Cleanup();
            MessageBox.Show("输出文件完成");
        }

基于AE+C#读取文件及图层输出相关推荐

  1. php显示文件内容,php读取文件内容_PHP读取文件内容并输出显示

    摘要 腾兴网为您分享:PHP读取文件内容并输出显示,自动刷宝,中信期货,掌上新华,心视界等软件知识,以及3dmax看图软件,方块平台,内蒙社保,b站免流量,南方银河1,爱普生r330打印机驱动,照片分 ...

  2. STM32挂载SD卡基于Fatfs文件系统读取文件信息

    STM32挂载SD卡基于Fatfs文件系统读取文件信息

  3. php显示文件内容,PHP读取文件内容并输出显示

    一个小的应用要用到txt文件来读取文件的内容之后再显示出来文件里面的内容了,下面来给各位分个例子,希望能帮助到各位哦. 例子  代码如下 复制代码 $file_name="1.txt&quo ...

  4. node读取文件筛选数据输出excel表格

    需要安装node-xlsx npm install node-xlsx const filePath = "./temp.txt" // 输入文件路径名称 const xlsxPa ...

  5. shell读取文件并且遍历输出

    #!/bin/bash addwords_path="/home/weijie/files" addwords_size=`wc -l ${addwords_path} | awk ...

  6. Java开发技术总结!java读取文件内容并输出

    一.内存与线程 1.内存结构 内存是计算机的重要部件之一,它是外存与CPU进行沟通的桥梁,计算机中所有程序的运行都在内存中进行,内存性能的强弱影响计算机整体发挥的水平.JVM的内存结构规定Java程序 ...

  7. 读取文件并输出,输出时将小写字母转为大写

    1.获取文件属性(检查文件):stat() struct stat buf_stat; stat("temp.txt", &buf_stat);// #include &l ...

  8. 读取文件并输出,输出时将小写字母转为大写 [ 2 ]

    1 /*2 * FILE: p48_file2lower.c3 * DATE: 201801064 * --------------5 * DESCRIPTION: 读取文件内容,输出时将小写字母转为 ...

  9. nginx 读取文件_Nginx的提升php上传下载

    Nginx广泛应用在各个服务器上,之前一篇笔记里面写了如何用php下载文件,里面写了两种方法来下载文件 nginx配置直接try_files下载文件 php读取文件之后再输出 对于第二种方法,php- ...

  10. 【Java】字节流-从文件输入,输出到文件

    假如需要复制一张图片,一份word,一个rar包.可以以字节流的方式,读取文件,然后输出到目标文件夹. 以复制一张4M的图片举例. 每次读一个字节: ch = (char)System.in.read ...

最新文章

  1. 【解决】MySql 5.6 运行崩溃错误
  2. Spring data redis应用示例
  3. 使用php与mysql构建我们的网站
  4. feign调用第三方接口_讲一个你不知道的事:SringCloud的feign的继承特性
  5. 干货!最全需求评审指南,让你不再怕被怼
  6. 什么是虚拟化,虚拟化的现状
  7. SVN中trunk,branches,tags用法详解
  8. img2txt(二)
  9. [VNC] 远程连接 Xfce4 桌面 tab 键不能自动补全
  10. pathway一些网站
  11. 修改mysql数据存放路径
  12. freemaker if 多个条件_小函数,大用处!巧用AND函数,避开IF函数嵌套
  13. 电网101、104规约解析(Java)
  14. 人脸识别技术全面总结:从传统方法到深度学习
  15. android端播放器框架,Android通用播放器解码框架Vitamio的介绍和使用
  16. 情绪管理---第二课:情绪包含四方面的反应
  17. 00:编程入门--了解计算机
  18. 小何的第一篇博客+GitHub的基本设置
  19. linux系统中串口驱动的基本实现原理
  20. VC图片的半透明处理

热门文章

  1. 浅谈C++中类的const成员变量,static成员变量和const static成员变量的区别
  2. ora-30926:无法在源表中获得一组稳定的行
  3. 猜数字游戏python程序_【自学编程】python 小游戏—猜数字
  4. nacos加载多配置集
  5. php 是否存在,php判断常量是否存在
  6. python描述_Python描述符(Descriptor)入门
  7. sql交叉表查询_初学前端需要注意什么 SQL连接相关内容有哪些
  8. Javascript:遍历json数据的方法
  9. Halcon和Opencv区别
  10. 论文笔记_S2D.51_2016-IEEE TOR_Past, Present, and Future of Simultaneous Localization and Mapping