C#+ArcEngine加载shape、栅格、access、mxd文件

12 篇文章 0 订阅

http://wenku.baidu.com/view/8495427558fafab069dc02a3.html这个是百度文库里一篇比较详细的C#,AE打开各种文件的代码。


我没有用//分文件路径,其实也是一样的。一开始不知道ArcEngine简称AE,去搜engine打开各种文件居然都找不到,有一次搜C#打开各种文件才恍悟。


打开access时总是提示未将对象引用设置到对象的实例,仔细检查后是 pWSF = new AccessWorkspaceFactoryClass() as IWorkspaceFactory;//不知为何workspaceFactory=null。重装ArcGIS未解决,老师说是环境问题,ArcGIS问题等等,反正我也不知道new一下应该是什么结果。(我什么都不知道。。。


[csharp]  view plain  copy
  1. /// <summary>  
  2. /// 功能:响应鼠标操作  
  3. /// 滚轴滚动可放大缩小  
  4. /// 鼠标左键拖动地图  
  5. /// 鼠标右键全图显示  
  6. /// </summary>  
  7. /// <param name="sender"></param>  
  8. /// <param name="e"></param>  
  9. /// <para>  
  10. /// Author: Mollmy  
  11. /// Date:2015-6-17  
  12. /// </para>  
  13. ///   
  14. private void MapControl_OnMouseDown(object sender, ESRI.ArcGIS.Controls.IMapControlEvents2_OnMouseDownEvent e)  
  15. {  
  16.     //滚轴滚动可放大缩小  
  17.     //鼠标左键拖动地图  
  18.     //鼠标右键全图显示  
  19.     if (e.button == 1)//左键  
  20.        // this.MapControl.Extent = this.MapControl.TrackRectangle();//拖出矩形框放大  
  21.         this.MapControl.Pan();//左键实现拖动地图,实现漫游功能  
  22.     else if (e.button == 2)//右键。  
  23.         this.MapControl.Extent = this.MapControl.FullExtent;//全图显示,还原  
  24.     //else if (e.button == 4)//中键,全图显示  
  25.         //this.MapControl.Extent = this.MapControl.FullExtent;  
  26. }  



[csharp]  view plain  copy
  1. /// <summary>  
  2.        /// 功能:菜单->打开->打开栅格文件  
  3.        /// </summary>  
  4.        /// <param name="e"></param>  
  5.        /// <param name="sender"></param>  
  6.        /// <para>  
  7.        /// Date:2015-6-16  
  8.        /// Author:MOLLMY  
  9.        /// </para>  
  10.        ///   
  11.        private void OpenRasterFile_Click(object sender, EventArgs e)  
  12.        {  
  13.            string IsFilePathNameNull = null;//文件路径名,用于判断路径是否为空  
  14.            string FilePath = null;//文件路径  
  15.            string FileName = null;//文件名称  
  16.   
  17.            //获取并打开地图文档窗口  
  18.            OpenFileDialog OpenRasterFileDialog = new OpenFileDialog();  
  19.            OpenRasterFileDialog.Title = "打开栅格文件";  
  20.            OpenRasterFileDialog.Filter = "栅格文件(*.jpg,*.bmp,*.tif,*.img)|*.jpg;*.bmp;*.tif;*.img";  
  21.             
  22.            try  
  23.            {  
  24.                if (OpenRasterFileDialog.ShowDialog() == DialogResult.OK)  
  25.                {  
  26.                    IsFilePathNameNull = OpenRasterFileDialog.FileName;//文件路径名称  
  27.                    if (IsFilePathNameNull != "")  
  28.                    {  
  29.                        FilePath = System.IO.Path.GetDirectoryName(IsFilePathNameNull);//路径  
  30.                        FileName = System.IO.Path.GetFileName(IsFilePathNameNull);//文件名                      
  31.                    }  
  32.                }  
  33.   
  34.                IWorkspaceFactory pWSF;//唉,栅格数据的打开好麻烦==  
  35.                pWSF = new RasterWorkspaceFactoryClass();  
  36.   
  37.                IWorkspace pWS;  
  38.                pWS = pWSF.OpenFromFile(FilePath, 0);  
  39.   
  40.                IRasterWorkspace pRWS;  
  41.                pRWS = pWS as IRasterWorkspace;  
  42.                IRasterDataset pRDS;  
  43.                pRDS = pRWS.OpenRasterDataset(FileName);  
  44.   
  45.                //影像金字塔的判断与创建  
  46.                IRasterPyramid pRP;  
  47.                pRP = pRDS as IRasterPyramid;  
  48.                if (pRP != null)  
  49.                {  
  50.                    if (!(pRP.Present))  
  51.                        pRP.Create();  
  52.                }  
  53.   
  54.                IRaster pR;  
  55.                pR = pRDS.CreateDefaultRaster();  
  56.   
  57.                IRasterLayer pRL;  
  58.                pRL = new RasterLayerClass();  
  59.                pRL.CreateFromRaster(pR);  
  60.   
  61.                ILayer pL = pRL as ILayer;  
  62.                MapControl.AddLayer(pL, 0);  
  63.                //MapControl.ActiveView.Refresh();  
  64.            }  
  65.            catch (Exception ex)  
  66.            {  
  67.                MessageBox.Show(ex.Message);  
  68.                throw;  
  69.            }  
  70.            //地图文档全图显示  
  71.            this.MapControl.Extent = this.MapControl.FullExtent;  
  72.        }  


[csharp]  view plain  copy
  1. /// <summary>  
  2. /// 功能:菜单->打开->打开shape文件  
  3. /// </summary>  
  4. /// <param name="e"></param>  
  5. /// <param name="sender"></param>  
  6. /// <para>  
  7. /// Date:2015-6-16  
  8. /// Author: Mollmy  
  9. /// </para>  
  10. ///   
  11. private void OpenShapeFile_Click(object sender, EventArgs e)  
  12. {  
  13.     string IsFilePathNameNull = null;//文件路径名称  
  14.     string FilePath = null;//文件路径  
  15.     string FileName = null;//文件名称  
  16.   
  17.     //获取并打开地图文档窗口  
  18.     OpenFileDialog OpenShapeFileDialog = new OpenFileDialog();  
  19.     OpenShapeFileDialog.Title = "打开Shape文件";  
  20.     OpenShapeFileDialog.Filter = "shp文件(*.shp)|*.shp";  
  21.     try  
  22.     {  
  23.         if (OpenShapeFileDialog.ShowDialog() == DialogResult.OK)  
  24.         {  
  25.             IsFilePathNameNull = OpenShapeFileDialog.FileName;  
  26.             if (IsFilePathNameNull != "")  
  27.             {  
  28.                 FilePath = System.IO.Path.GetDirectoryName(IsFilePathNameNull);  
  29.                 FileName = System.IO.Path.GetFileNameWithoutExtension(IsFilePathNameNull);  
  30.             }  
  31.         }  
  32.         this.MapControl.AddShapeFile(FilePath, FileName);  
  33.         MapControl.ActiveView.Refresh();  
  34.     }  
  35.     catch (Exception ex)  
  36.     {  
  37.         MessageBox.Show(ex.Message);  
  38.         throw;  
  39.     }  
  40.         //地图文档全图显示  
  41.         this.MapControl.Extent = this.MapControl.FullExtent;  
  42.   
  43.     }  


[csharp]  view plain  copy
  1.       /// <summary>  
  2.        /// 功能:菜单->打开->打开access文件  
  3.        /// </summary>  
  4.        /// <param name="e"></param>  
  5.        /// <param name="sender"></param>  
  6.        /// <para>  
  7.        /// Date:2015-6-16  
  8.        /// Author: Mollmy  
  9.        /// </para>  
  10.        ///   
  11.        private void OpenAccessFile_Click(object sender, EventArgs e)//打开Access文件  
  12.        {  
  13. string IsFilePathNameNull = null;//文件路径名,用于判断路径是否为空  
  14.            string FilePath = null;//文件路径  
  15.            string FileName = null;//文件名称  
  16.   
  17.            //获取并打开地图文档窗口  
  18.            OpenFileDialog OpenAccessFileDialog = new OpenFileDialog();  
  19.            OpenAccessFileDialog.Title = "打开Access文件";  
  20.            OpenAccessFileDialog.Filter = "Access文件(*.mdb)|*.mdb";  
  21.   
  22.            if (OpenAccessFileDialog.ShowDialog() == DialogResult.OK)  
  23.            {  
  24.                IsFilePathNameNull = OpenAccessFileDialog.FileName;//文件路径名称  
  25.                if (IsFilePathNameNull != "")  
  26.                {  
  27.                    //获取文件路径和文件名  
  28.                    FilePath = System.IO.Path.GetDirectoryName(IsFilePathNameNull);//路径  
  29.                    FileName = System.IO.Path.GetFileName(IsFilePathNameNull);//文件名                  
  30.                }  
  31.            }  
  32.   
  33.            IWorkspaceFactory pWSF;  
  34.            IFeatureWorkspace pFWS;  
  35.            String WorkspacePath = IsFilePathNameNull;  
  36.            pWSF = new AccessWorkspaceFactoryClass() as IWorkspaceFactory;//不知为何测出workspaceFactory=null。重装ArcGIS未解决  
  37.   
  38.   
  39.            try  
  40.            {  
  41.   
  42.                if (pWSF != null)//so,为空则以下不执行,else显示原因  
  43.                {  
  44.                    //error:未将对象引用设置到对象的实例  
  45.   
  46.                    IPropertySet pPS = new PropertySetClass();  
  47.                    pPS.SetProperty("DATABASE", WorkspacePath);  
  48.   
  49.                    pFWS = pWSF.Open(pPS, 0) as IFeatureWorkspace;  
  50.                    //pFWS = pWSF.OpenFromFile(FilePath, 0) as IFeatureWorkspace;  
  51.                    IFeatureClass pFC = pFWS.OpenFeatureClass("continent");  
  52.                    IFeatureLayer pFL = new FeatureLayerClass();  
  53.                    pFL.FeatureClass = pFC;  
  54.   
  55.                    this.MapControl.Map.AddLayer(pFL);  
  56.                    //MapControl.ActiveView.Refresh();  
  57.                }  
  58.                else  
  59.                {  
  60.                    MessageBox.Show("Whoops!!workspaceFactory=null.");  
  61.   
  62.                }  
  63.            }  
  64.            catch (Exception ex)  
  65.            {  
  66.                MessageBox.Show(ex.Message);  
  67.                throw;  
  68.            }  
  69.        }  
  70.   
  71.        /// <summary>  
  72.        /// 功能:菜单->打开->打开mxd文件  
  73.        /// </summary>  
  74.        /// <param name="e"></param>  
  75.        /// <param name="sender"></param>  
  76.        /// <para>  
  77.        /// Date:2015.6.17  
  78.        /// Author: Mollmy  
  79.        /// </para>  
  80.        ///   
  81.        private void OpenMxdFile_Click(object sender, EventArgs e)//打开mxd文件  
  82.        {  
  83.            string IsFilePathNameNull = null;//文件路径名,用于判断路径是否为空  
  84.            string FilePath = null;//文件路径  
  85.            string FileName = null;//文件名称  
  86.   
  87.            //获取并打开地图文档窗口  
  88.            OpenFileDialog OpenMxdFileDialog = new OpenFileDialog();  
  89.            OpenMxdFileDialog.Title = "打开mxd文件";  
  90.            //OpenMxdFile.InitialDirectory = "E:";  
  91.            OpenMxdFileDialog.Filter = "Map Documents (*.mxd)|*.mxd";  
  92.            try  
  93.            {  
  94.                if (OpenMxdFileDialog.ShowDialog() == DialogResult.OK)  
  95.                {  
  96.                    IsFilePathNameNull = OpenMxdFileDialog.FileName;  
  97.                    if (IsFilePathNameNull != "")//路径不为空时  
  98.                    {  
  99.                        FilePath = System.IO.Path.GetDirectoryName(IsFilePathNameNull);//路径  
  100.                        FileName = System.IO.Path.GetFileName(IsFilePathNameNull);//文件名  
  101.                        MapControl.LoadMxFile(FilePath);  
  102.                        MapControl.ActiveView.Refresh();  
  103.                    }  
  104.                }  
  105.            }  
  106.            catch (Exception ex)  
  107.            {  
  108.                MessageBox.Show(ex.Message);  
  109.                throw;  
  110.            }  
  111.   
  112.            }  
  113.        }  


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值