3、打開存儲在Access GeoDatabase的要素類
使用工作空間打開一個Access庫中的一個要素類。
private void OpenWorkspaceFromFileAccess(string clsName, string DBPath)
定義函數OpenWorkspaceFromFileAccess,輸入參數包括要素類名和該數據庫文件所在的路徑,返回值為打開該要素類獲得的要素對象FeatureClass。
介紹一種方法
#region 打開個人數據庫中的要素 private void 打開個人數據庫中的要素toolStripLabel2_Click(object sender, EventArgs e) { //方法: AddMDBFile(); } /// <summary> /// 方法:使用工作空間打開一個Access庫中的一個要素類 /// </summary> private void AddMDBFile() { OpenFileDialog ofd = new OpenFileDialog(); ofd.Title = "打開個人數據庫"; ofd.Filter = "Personal GDB(*.mdb)|*.mdb"; ofd.InitialDirectory = m_Path; if (ofd.ShowDialog() != DialogResult.OK) return; string DBPath = ofd.FileName; OpenWorkspaceFromFileAccess("廣西師范學院平面圖", DBPath); } /// <summary> /// 方法補充:使用工作空間打開一個Access庫中的一個要素類 /// </summary> /// <param name="clsName">文件名</param> /// <param name="DBPath">文件路徑</param> private void OpenWorkspaceFromFileAccess(string clsName, string DBPath) { //排除沒有打開指定數據的情況 if(DBPath!=m_Path+"\\Access.mdb") { MessageBox.Show("請打開指定數據庫!"); return; } //新建一個Access的工作空間工廠 IWorkspaceFactory pWorkspaceFactory = new AccessWorkspaceFactoryClass(); IWorkspace pWorkspace = pWorkspaceFactory.OpenFromFile(DBPath, 0); IFeatureWorkspace pAccessWorkspace=pWorkspace as IFeatureWorkspace; IFeatureClass pFeatureClass = pAccessWorkspace.OpenFeatureClass(clsName); IFeatureLayer pFLayer = new FeatureLayerClass(); pFLayer.FeatureClass = pFeatureClass; pFLayer.Name = clsName; this.axMapControl1.AddLayer(pFLayer); this.axMapControl1.Refresh(); } #endregion
小提示:
AccessWorkspaceFactoryClass 需要引用using ESRI.ArcGIS.DataSourcesGDB;
謝謝觀看!本人初學GIS二次開發,如果有不對的地方,請多多包涵!