sunzheng04
路人甲
路人甲
  • 注册日期2008-11-12
  • 发帖数37
  • QQ
  • 铜币250枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:2560回复:1

C# +AE加载shp、栅格、地图文档数据

楼主#
更多 发布于:2009-11-30 11:31
<P  align=left>//添加ArcGIS命名空间<p></p></P>
<P  align=left>using ESRI.ArcGIS.Carto;<p></p></P>
<P  align=left>using ESRI.ArcGIS.Geometry;<p></p></P>
<P  align=left>using ESRI.ArcGIS.Geodatabase;<p></p></P>
<P  align=left>using ESRI.ArcGIS.DataSourcesFile;<p></p></P>
<P  align=left>using ESRI.ArcGIS.DataSourcesRaster;</P>
<P  align=left>//存储打开文件的全路径<p></p></P>
<P  align=left>        string fullFilePath;</P>
<P  align=left>//设置OpenFileDialog的属性,使其能打开多种类型文件<p></p></P>
<P  align=left>            OpenFileDialog openFile = new OpenFileDialog();<p></p></P>
<P  align=left>            openFile.Filter = "shape文件(*.shp)|*.shp|";<p></p></P>
<P  align=left>openFile.Filter +="栅格数据(*.jpg,*.bmp,*.tiff)|*.jpg;*.bmp;*.tiff|";<p></p></P>
<P  align=left>openFile.Filter +="地图文档(*.mxd,*.mxt,*.jmf)|*.mxd;*.mxt;*.jmf";<p></p></P>
<P  align=left>            openFile.Title = "打开文件";<p></p></P>
<P  align=left>           <p></p></P>
<P  align=left>            try<p></p></P>
<P  align=left>            {<p></p></P>
<P  align=left>                if (openFile.ShowDialog() == DialogResult.OK)<p></p></P>
<P  align=left>                {<p></p></P>
<P  align=left>                   <p></p></P>
<P  align=left>                    fullFilePath = openFile.FileName;<p></p></P>
<P  align=left>                    //获得文件路径<p></p></P>
<P  align=left>                    int index = fullFilePath.LastIndexOf("\\");<p></p></P>
<P  align=left>                    string filePath = fullFilePath.Substring(0, index);<p></p></P>
<P  align=left>                    //获得文件名称<p></p></P>
<P  align=left>                    string fileNam = fullFilePath.Substring(index + 1);<p></p></P>
<P  align=left>                    //加载shape文件<p></p></P>
<P  align=left>                    if (openFile.FilterIndex == 1)<p></p></P>
<P  align=left>                    {<p></p></P>
<P  align=left>                        //打开工作空间工厂<p></p></P>
<P  align=left>                        IWorkspaceFactory workspcFac = new ShapefileWorkspaceFactory();<p></p></P>
<P  align=left>                        IFeatureWorkspace featureWorkspc;<p></p></P>
<P  align=left>                        IFeatureLayer featureLay = new FeatureLayerClass();<p></p></P>
<P  align=left>                        //打开路径<p></p></P>
<P  align=left>                featureWorkspc = workspcFac.OpenFromFile(filePath, 0) as IFeatureWorkspace;<p></p></P>
<P  align=left>                        //打开类要素<p></p></P>
<P  align=left>                        featureLay.FeatureClass = featureWorkspc.OpenFeatureClass(fileNam);<p></p></P>
<P  align=left>                        //清空图层<p></p></P>
<P  align=left>                        axMapControl1.ClearLayers();<p></p></P>
<P  align=left>                        //添加图层<p></p></P>
<P  align=left>                        axMapControl1.AddLayer(featureLay);<p></p></P>
<P  align=left>                        axMapControl1.Refresh();<p></p></P>
<P  align=left>                    }<p></p></P>
<P  align=left>                        //加载栅格图像<p></p></P>
<P  align=left>                    else if (openFile.FilterIndex == 2)<p></p></P>
<P  align=left>                    {<p></p></P>
<P  align=left>                        IWorkspaceFactory workspcFac = new RasterWorkspaceFactory();<p></p></P>
<P  align=left>                        IRasterWorkspace rasterWorkspc;<p></p></P>
<P  align=left>                        IRasterDataset rasterDatst = new RasterDatasetClass();<p></p></P>
<P  align=left>                        IRasterLayer rasterLay = new RasterLayerClass();<p></p></P>
<P  align=left><p> </p></P>
<P  align=left>                 rasterWorkspc = workspcFac.OpenFromFile(filePath, 0) as IRasterWorkspace;<p></p></P>
<P  align=left>                        rasterDatst = rasterWorkspc.OpenRasterDataset(fileNam );<p></p></P>
<P  align=left>                        rasterLay.CreateFromDataset(rasterDatst);<p></p></P>
<P  align=left><p> </p></P>
<P  align=left>                        axMapControl1.ClearLayers();<p></p></P>
<P  align=left><p> </p></P>
<P  align=left>                        axMapControl1.AddLayer(rasterLay);<p></p></P>
<P  align=left>                        axMapControl1.Refresh();<p></p></P>
<P  align=left><p> </p></P>
<P  align=left>                    }<p></p></P>
<P  align=left>                    //加载地图文档<p></p></P>
<P  align=left>                    else if (openFile.FilterIndex == 3)<p></p></P>
<P  align=left>                    {<p></p></P>
<P  align=left>                        IMapDocument mapDoc = new MapDocumentClass();<p></p></P>
<P  align=left>                        mapDoc.Open(filePath ,"");<p></p></P>
<P  align=left><p> </p></P>
<P  align=left>                        axMapControl1.ClearLayers();<p></p></P>
<P  align=left><p> </p></P>
<P  align=left>                        for (int i = 0; i < mapDoc.MapCount - 1; i++)<p></p></P>
<P  align=left>                        {<p></p></P>
<P  align=left>                            axMapControl1.Map =mapDoc.get_Map (i);<p></p></P>
<P  align=left>                        }<p></p></P>
<P  align=left>                        IActiveView activeViw = axMapControl1.Map as IActiveView;<p></p></P>
<P  align=left>                        activeViw.Extent = axMapControl1.FullExtent;<p></p></P>
<P  align=left>                        axMapControl1.Refresh();<p></p></P>
<P  align=left>                    }<p></p></P>
<P  align=left>                }<p></p></P>
<P  align=left>            }<p></p></P>
<P  align=left>            catch (Exception ex)<p></p></P>
<P  align=left>            {<p></p></P>
<P  align=left>                MessageBox.Show(ex.Message.ToString ());<p></p></P>
<P  align=left>            }<p></p></P>
<P  align=left>        }</P>
<P  align=left>    }<p></p></P>
<P  align=left><p></p> </P>
喜欢0 评分0
anney1230
路人甲
路人甲
  • 注册日期2008-04-04
  • 发帖数11
  • QQ
  • 铜币155枚
  • 威望0点
  • 贡献值0点
  • 银元0个
1楼#
发布于:2009-12-10 21:52
<P>学习学习了</P>
举报 回复(0) 喜欢(0)     评分
游客

返回顶部