基于AE+C#读取文件及图层输出
软件是由数据和程序组成,既然做反演系统,那么如何高效且合理的读取数据是一个至关重要的问题。在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#读取文件及图层输出相关推荐
- php显示文件内容,php读取文件内容_PHP读取文件内容并输出显示
摘要 腾兴网为您分享:PHP读取文件内容并输出显示,自动刷宝,中信期货,掌上新华,心视界等软件知识,以及3dmax看图软件,方块平台,内蒙社保,b站免流量,南方银河1,爱普生r330打印机驱动,照片分 ...
- STM32挂载SD卡基于Fatfs文件系统读取文件信息
STM32挂载SD卡基于Fatfs文件系统读取文件信息
- php显示文件内容,PHP读取文件内容并输出显示
一个小的应用要用到txt文件来读取文件的内容之后再显示出来文件里面的内容了,下面来给各位分个例子,希望能帮助到各位哦. 例子 代码如下 复制代码 $file_name="1.txt&quo ...
- node读取文件筛选数据输出excel表格
需要安装node-xlsx npm install node-xlsx const filePath = "./temp.txt" // 输入文件路径名称 const xlsxPa ...
- shell读取文件并且遍历输出
#!/bin/bash addwords_path="/home/weijie/files" addwords_size=`wc -l ${addwords_path} | awk ...
- Java开发技术总结!java读取文件内容并输出
一.内存与线程 1.内存结构 内存是计算机的重要部件之一,它是外存与CPU进行沟通的桥梁,计算机中所有程序的运行都在内存中进行,内存性能的强弱影响计算机整体发挥的水平.JVM的内存结构规定Java程序 ...
- 读取文件并输出,输出时将小写字母转为大写
1.获取文件属性(检查文件):stat() struct stat buf_stat; stat("temp.txt", &buf_stat);// #include &l ...
- 读取文件并输出,输出时将小写字母转为大写 [ 2 ]
1 /*2 * FILE: p48_file2lower.c3 * DATE: 201801064 * --------------5 * DESCRIPTION: 读取文件内容,输出时将小写字母转为 ...
- nginx 读取文件_Nginx的提升php上传下载
Nginx广泛应用在各个服务器上,之前一篇笔记里面写了如何用php下载文件,里面写了两种方法来下载文件 nginx配置直接try_files下载文件 php读取文件之后再输出 对于第二种方法,php- ...
- 【Java】字节流-从文件输入,输出到文件
假如需要复制一张图片,一份word,一个rar包.可以以字节流的方式,读取文件,然后输出到目标文件夹. 以复制一张4M的图片举例. 每次读一个字节: ch = (char)System.in.read ...
最新文章
- 【解决】MySql 5.6 运行崩溃错误
- Spring data redis应用示例
- 使用php与mysql构建我们的网站
- feign调用第三方接口_讲一个你不知道的事:SringCloud的feign的继承特性
- 干货!最全需求评审指南,让你不再怕被怼
- 什么是虚拟化,虚拟化的现状
- SVN中trunk,branches,tags用法详解
- img2txt(二)
- [VNC] 远程连接 Xfce4 桌面 tab 键不能自动补全
- pathway一些网站
- 修改mysql数据存放路径
- freemaker if 多个条件_小函数,大用处!巧用AND函数,避开IF函数嵌套
- 电网101、104规约解析(Java)
- 人脸识别技术全面总结:从传统方法到深度学习
- android端播放器框架,Android通用播放器解码框架Vitamio的介绍和使用
- 情绪管理---第二课:情绪包含四方面的反应
- 00:编程入门--了解计算机
- 小何的第一篇博客+GitHub的基本设置
- linux系统中串口驱动的基本实现原理
- VC图片的半透明处理
热门文章
- 浅谈C++中类的const成员变量,static成员变量和const static成员变量的区别
- ora-30926:无法在源表中获得一组稳定的行
- 猜数字游戏python程序_【自学编程】python 小游戏—猜数字
- nacos加载多配置集
- php 是否存在,php判断常量是否存在
- python描述_Python描述符(Descriptor)入门
- sql交叉表查询_初学前端需要注意什么 SQL连接相关内容有哪些
- Javascript:遍历json数据的方法
- Halcon和Opencv区别
- 论文笔记_S2D.51_2016-IEEE TOR_Past, Present, and Future of Simultaneous Localization and Mapping