http://wenku.baidu.com/view/8495427558fafab069dc02a3.html这个是百度文库里一篇比较详细的C#,AE打开各种文件的代码。
我没有用//分文件路径,其实也是一样的。一开始不知道ArcEngine简称AE,去搜engine打开各种文件居然都找不到,有一次搜C#打开各种文件才恍悟。
打开access时总是提示未将对象引用设置到对象的实例,仔细检查后是 pWSF = new AccessWorkspaceFactoryClass() as IWorkspaceFactory;//不知为何workspaceFactory=null。重装ArcGIS未解决,老师说是环境问题,ArcGIS问题等等,反正我也不知道new一下应该是什么结果。(我什么都不知道。。。
- /// <summary>
- /// 功能:响应鼠标操作
- /// 滚轴滚动可放大缩小
- /// 鼠标左键拖动地图
- /// 鼠标右键全图显示
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- /// <para>
- /// Author: Mollmy
- /// Date:2015-6-17
- /// </para>
- ///
- private void MapControl_OnMouseDown(object sender, ESRI.ArcGIS.Controls.IMapControlEvents2_OnMouseDownEvent e)
- {
- //滚轴滚动可放大缩小
- //鼠标左键拖动地图
- //鼠标右键全图显示
- if (e.button == 1)//左键
- // this.MapControl.Extent = this.MapControl.TrackRectangle();//拖出矩形框放大
- this.MapControl.Pan();//左键实现拖动地图,实现漫游功能
- else if (e.button == 2)//右键。
- this.MapControl.Extent = this.MapControl.FullExtent;//全图显示,还原
- //else if (e.button == 4)//中键,全图显示
- //this.MapControl.Extent = this.MapControl.FullExtent;
- }
- /// <summary>
- /// 功能:菜单->打开->打开栅格文件
- /// </summary>
- /// <param name="e"></param>
- /// <param name="sender"></param>
- /// <para>
- /// Date:2015-6-16
- /// Author:MOLLMY
- /// </para>
- ///
- private void OpenRasterFile_Click(object sender, EventArgs e)
- {
- string IsFilePathNameNull = null;//文件路径名,用于判断路径是否为空
- string FilePath = null;//文件路径
- string FileName = null;//文件名称
- //获取并打开地图文档窗口
- OpenFileDialog OpenRasterFileDialog = new OpenFileDialog();
- OpenRasterFileDialog.Title = "打开栅格文件";
- OpenRasterFileDialog.Filter = "栅格文件(*.jpg,*.bmp,*.tif,*.img)|*.jpg;*.bmp;*.tif;*.img";
- try
- {
- if (OpenRasterFileDialog.ShowDialog() == DialogResult.OK)
- {
- IsFilePathNameNull = OpenRasterFileDialog.FileName;//文件路径名称
- if (IsFilePathNameNull != "")
- {
- FilePath = System.IO.Path.GetDirectoryName(IsFilePathNameNull);//路径
- FileName = System.IO.Path.GetFileName(IsFilePathNameNull);//文件名
- }
- }
- IWorkspaceFactory pWSF;//唉,栅格数据的打开好麻烦==
- pWSF = new RasterWorkspaceFactoryClass();
- IWorkspace pWS;
- pWS = pWSF.OpenFromFile(FilePath, 0);
- IRasterWorkspace pRWS;
- pRWS = pWS as IRasterWorkspace;
- IRasterDataset pRDS;
- pRDS = pRWS.OpenRasterDataset(FileName);
- //影像金字塔的判断与创建
- IRasterPyramid pRP;
- pRP = pRDS as IRasterPyramid;
- if (pRP != null)
- {
- if (!(pRP.Present))
- pRP.Create();
- }
- IRaster pR;
- pR = pRDS.CreateDefaultRaster();
- IRasterLayer pRL;
- pRL = new RasterLayerClass();
- pRL.CreateFromRaster(pR);
- ILayer pL = pRL as ILayer;
- MapControl.AddLayer(pL, 0);
- //MapControl.ActiveView.Refresh();
- }
- catch (Exception ex)
- {
- MessageBox.Show(ex.Message);
- throw;
- }
- //地图文档全图显示
- this.MapControl.Extent = this.MapControl.FullExtent;
- }
- /// <summary>
- /// 功能:菜单->打开->打开shape文件
- /// </summary>
- /// <param name="e"></param>
- /// <param name="sender"></param>
- /// <para>
- /// Date:2015-6-16
- /// Author: Mollmy
- /// </para>
- ///
- private void OpenShapeFile_Click(object sender, EventArgs e)
- {
- string IsFilePathNameNull = null;//文件路径名称
- string FilePath = null;//文件路径
- string FileName = null;//文件名称
- //获取并打开地图文档窗口
- OpenFileDialog OpenShapeFileDialog = new OpenFileDialog();
- OpenShapeFileDialog.Title = "打开Shape文件";
- OpenShapeFileDialog.Filter = "shp文件(*.shp)|*.shp";
- try
- {
- if (OpenShapeFileDialog.ShowDialog() == DialogResult.OK)
- {
- IsFilePathNameNull = OpenShapeFileDialog.FileName;
- if (IsFilePathNameNull != "")
- {
- FilePath = System.IO.Path.GetDirectoryName(IsFilePathNameNull);
- FileName = System.IO.Path.GetFileNameWithoutExtension(IsFilePathNameNull);
- }
- }
- this.MapControl.AddShapeFile(FilePath, FileName);
- MapControl.ActiveView.Refresh();
- }
- catch (Exception ex)
- {
- MessageBox.Show(ex.Message);
- throw;
- }
- //地图文档全图显示
- this.MapControl.Extent = this.MapControl.FullExtent;
- }
- /// <summary>
- /// 功能:菜单->打开->打开access文件
- /// </summary>
- /// <param name="e"></param>
- /// <param name="sender"></param>
- /// <para>
- /// Date:2015-6-16
- /// Author: Mollmy
- /// </para>
- ///
- private void OpenAccessFile_Click(object sender, EventArgs e)//打开Access文件
- {
- string IsFilePathNameNull = null;//文件路径名,用于判断路径是否为空
- string FilePath = null;//文件路径
- string FileName = null;//文件名称
- //获取并打开地图文档窗口
- OpenFileDialog OpenAccessFileDialog = new OpenFileDialog();
- OpenAccessFileDialog.Title = "打开Access文件";
- OpenAccessFileDialog.Filter = "Access文件(*.mdb)|*.mdb";
- if (OpenAccessFileDialog.ShowDialog() == DialogResult.OK)
- {
- IsFilePathNameNull = OpenAccessFileDialog.FileName;//文件路径名称
- if (IsFilePathNameNull != "")
- {
- //获取文件路径和文件名
- FilePath = System.IO.Path.GetDirectoryName(IsFilePathNameNull);//路径
- FileName = System.IO.Path.GetFileName(IsFilePathNameNull);//文件名
- }
- }
- IWorkspaceFactory pWSF;
- IFeatureWorkspace pFWS;
- String WorkspacePath = IsFilePathNameNull;
- pWSF = new AccessWorkspaceFactoryClass() as IWorkspaceFactory;//不知为何测出workspaceFactory=null。重装ArcGIS未解决
- try
- {
- if (pWSF != null)//so,为空则以下不执行,else显示原因
- {
- //error:未将对象引用设置到对象的实例
- IPropertySet pPS = new PropertySetClass();
- pPS.SetProperty("DATABASE", WorkspacePath);
- pFWS = pWSF.Open(pPS, 0) as IFeatureWorkspace;
- //pFWS = pWSF.OpenFromFile(FilePath, 0) as IFeatureWorkspace;
- IFeatureClass pFC = pFWS.OpenFeatureClass("continent");
- IFeatureLayer pFL = new FeatureLayerClass();
- pFL.FeatureClass = pFC;
- this.MapControl.Map.AddLayer(pFL);
- //MapControl.ActiveView.Refresh();
- }
- else
- {
- MessageBox.Show("Whoops!!workspaceFactory=null.");
- }
- }
- catch (Exception ex)
- {
- MessageBox.Show(ex.Message);
- throw;
- }
- }
- /// <summary>
- /// 功能:菜单->打开->打开mxd文件
- /// </summary>
- /// <param name="e"></param>
- /// <param name="sender"></param>
- /// <para>
- /// Date:2015.6.17
- /// Author: Mollmy
- /// </para>
- ///
- private void OpenMxdFile_Click(object sender, EventArgs e)//打开mxd文件
- {
- string IsFilePathNameNull = null;//文件路径名,用于判断路径是否为空
- string FilePath = null;//文件路径
- string FileName = null;//文件名称
- //获取并打开地图文档窗口
- OpenFileDialog OpenMxdFileDialog = new OpenFileDialog();
- OpenMxdFileDialog.Title = "打开mxd文件";
- //OpenMxdFile.InitialDirectory = "E:";
- OpenMxdFileDialog.Filter = "Map Documents (*.mxd)|*.mxd";
- try
- {
- if (OpenMxdFileDialog.ShowDialog() == DialogResult.OK)
- {
- IsFilePathNameNull = OpenMxdFileDialog.FileName;
- if (IsFilePathNameNull != "")//路径不为空时
- {
- FilePath = System.IO.Path.GetDirectoryName(IsFilePathNameNull);//路径
- FileName = System.IO.Path.GetFileName(IsFilePathNameNull);//文件名
- MapControl.LoadMxFile(FilePath);
- MapControl.ActiveView.Refresh();
- }
- }
- }
- catch (Exception ex)
- {
- MessageBox.Show(ex.Message);
- throw;
- }
- }
- }