阅读:2762回复:1
C# +AE加载shp、栅格、地图文档数据
<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> |
|
1楼#
发布于:2009-12-10 21:52
<P>学习学习了</P>
|
|