//浏览文件夹选择文件gdb private void simpleButton1_Click(object sender, EventArgs e) { string path = ""; FolderBrowserDialog folderBrowserDialog = new FolderBrowserDialog(); folderBrowserDialog.ShowNewFolderButton = false; folderBrowserDialog.Description = "选择.gdb文件数据库"; if (folderBrowserDialog.ShowDialog() == DialogResult.OK) { path = folderBrowserDialog.SelectedPath; if (path.Substring((path.Length) - 4) != ".gdb") { MessageBox.Show("请选择*.gdb文件地理数据库!", "提示"); return; } tbxGDBPath.Text = path; GlobalTopoVaribate.GDBPath = path; } if (path == "") { return; } IWorkspaceFactory pWorkspaceFactory = new FileGDBWorkspaceFactory(); IWorkspace pWorkspace = pWorkspaceFactory.OpenFromFile(path, 0); FeatureDSList = getGDBFeatureDS(pWorkspace); GlobalTopoVaribate.GFeatureDSList = FeatureDSList; cbxFeatureDS.Properties.Items.Clear(); cbxFeatureDS.Text = ""; foreach (IFeatureDataset pFeatureDS in FeatureDSList) { cbxFeatureDS.Properties.Items.Add(pFeatureDS.Name); } }
private void CreaWorkSpaceOutput(out IWorkspaceName WorkspaceName, out string pathFGDB) { IWorkspaceFactory2 workF = new FileGDBWorkspaceFactory() as IWorkspaceFactory2; Guid g = Guid.NewGuid(); string timeStamp = DateTime.UtcNow.ToString("dd-MM-yyyy", CultureInfo.CurrentUICulture); string basePath = $@"C:\arcgisserver\directories\arcgisoutput\_ags_{timeStamp}"; string nomeFGDB = $@"FGDB_{g}.gdb"; pathFGDB = System.IO.Path.Combine(basePath, nomeFGDB); if (!System.IO.Directory.Exists(basePath)) { System.IO.Directory.CreateDirectory(basePath); } #region Parte dedicata alla creazione di un File Geodatabase // Istanzio l'oggetto singleton IWorkspaceFactory2 workspaceFactory = new FileGDBWorkspaceFactory() as IWorkspaceFactory2; WorkspaceName = workspaceFactory.Create(basePath, nomeFGDB, null, 0); #endregion #region Rilascio tutti gli oggetti singleton int resLeft = 0; do { resLeft = System.Runtime.InteropServices.Marshal.ReleaseComObject(workspaceFactory); }while (resLeft > 0); #endregion }
public static IWorkspace CreateFileGDB(string string_0) { IWorkspace workspace = null; IWorkspaceFactory fileGDBWorkspaceFactoryClass = new FileGDBWorkspaceFactory(); try { IWorkspaceName workspaceName = fileGDBWorkspaceFactoryClass.Create(System.IO.Path.GetDirectoryName(string_0), System.IO.Path.GetFileNameWithoutExtension(string_0), null, 0); workspace = (workspaceName as IName).Open() as IWorkspace; } catch (COMException cOMException1) { COMException cOMException = cOMException1; int errorCode = cOMException.ErrorCode; MessageBox.Show(string.Concat("错误代码:", errorCode.ToString(), "\r\n", cOMException.Message)); } catch (Exception exception) { } ComReleaser.ReleaseCOMObject(fileGDBWorkspaceFactoryClass); fileGDBWorkspaceFactoryClass = null; return(workspace); }
private GdbAccess() { string calcGdb = MilSpaceConfiguration.ConnectionProperty.TemporaryGDBConnection; IWorkspaceFactory workspaceFactory = new FileGDBWorkspaceFactory(); calcWorkspace = workspaceFactory.OpenFromFile(calcGdb, 0); }
public override void OnClick() { IGxObject firstObject = ((IGxSelection)_context.GxSelection).FirstObject; if (firstObject is IGxFile) { string path = (firstObject as IGxFile).Path; path = (path[path.Length - 1] != '\\' ? string.Concat(path, "\\新建文件型数据库") : string.Concat(path, "新建文件型数据库")); string str = string.Concat(path, ".gdb"); int num = 1; while (Directory.Exists(str)) { num++; str = string.Concat(path, " (", num.ToString(), ").gdb"); } IWorkspaceFactory fileGDBWorkspaceFactoryClass = new FileGDBWorkspaceFactory(); try { IWorkspaceName workspaceName = fileGDBWorkspaceFactoryClass.Create(Path.GetDirectoryName(str), Path.GetFileNameWithoutExtension(str), null, 0); IGxObject gxDatabase = new GxDatabase(); (gxDatabase as IGxDatabase).WorkspaceName = workspaceName; IGxCatalog catalog = GxCatalogCommon.GetCatalog(firstObject); gxDatabase.Attach(firstObject, catalog); catalog.ObjectAdded(gxDatabase); } catch (Exception exception) { MessageBox.Show(exception.Message); } } }
public IWorkspace OpenLoaclGeoDataBase(string path, EnumLoaclGeoDatabaseType type) { try { IWorkspaceFactory pTargetWsf = null; switch (type) { case EnumLoaclGeoDatabaseType.MDB: pTargetWsf = new AccessWorkspaceFactory(); break; case EnumLoaclGeoDatabaseType.GDB: pTargetWsf = new FileGDBWorkspaceFactory(); break; case EnumLoaclGeoDatabaseType.SHP: pTargetWsf = new ShapefileWorkspaceFactory(); break; } return(pTargetWsf.OpenFromFile(path, 0)); } catch (Exception ex) { ErrorMessage = ex.Message; return(null); } }
//按下新建文件GDB按钮 private void button1_Click(object sender, EventArgs e) { SaveFileDialog saveFileDialog = new SaveFileDialog(); saveFileDialog.Filter = "文件地理数据库(*.gdb)|*.gdb"; saveFileDialog.Title = "新建文件地理数据库"; if (saveFileDialog.ShowDialog() == DialogResult.OK) { if (System.IO.File.Exists(saveFileDialog.FileName)) { MessageBox.Show("文件已存在!"); return; } try { int index = saveFileDialog.FileName.LastIndexOf("\\"); string GDBName = saveFileDialog.FileName.Substring(index + 1); string GDBPath = saveFileDialog.FileName.Substring(0, index); IWorkspaceFactory pWorkspaceFactory = new FileGDBWorkspaceFactory(); pWorkspaceFactory.Create(GDBPath, GDBName, null, 0); MessageBox.Show("创建成功!", "提示"); } catch (Exception ex) { MessageBox.Show(ex.Message); } } }
// Get the filegeodatabase workspace. public IWorkspace GetOutputWorkspace() { IWorkspaceFactory workspaceFactory = new FileGDBWorkspaceFactory(); IWorkspace workspace = workspaceFactory.OpenFromFile(_options.OutputGeodatabase + "NextGenRoadLoader.gdb", 0); //IFeatureWorkspace pFeatureWorkspace = (IFeatureWorkspace)pWorkspace; return(workspace); }
//读取geodatabase数据的方法 public IFeatureClass OpenGDBFeatureClass(string dbPath, string clsName) { IWorkspaceFactory workspaceFactory = new FileGDBWorkspaceFactory(); IWorkspace workspace = workspaceFactory.OpenFromFile(dbPath, 0); IFeatureWorkspace featureWorkspace = (IFeatureWorkspace)workspace; IFeatureClass featureClass = featureWorkspace.OpenFeatureClass(clsName); return(featureClass); }
private void btn_read_Click(object sender, EventArgs e) { // Считываю слои из базы и заполняю CheckBoxList clb1.Items.Clear(); IFeatureClass myFeatureClass = null; IWorkspaceFactory workspaceFactory = new FileGDBWorkspaceFactory(); IWorkspace workspace = workspaceFactory.OpenFromFile(txtb1.Text, 0); IFeatureWorkspace iworkspace = (IFeatureWorkspace)workspace; IEnumDataset enumDataset = workspace.get_Datasets(esriDatasetType.esriDTAny); enumDataset.Reset(); List <string> datasets = new List <string>(); IDataset dataset = null; while ((dataset = enumDataset.Next()) != null) { if (dataset.Type == esriDatasetType.esriDTFeatureClass) { clb1.Items.Add(dataset.Name); } if (dataset.Type == esriDatasetType.esriDTFeatureDataset) { datasets.Add(dataset.Name); } //Проходим по датасетам если они есть foreach (string el in datasets) { string datasetsroot = txtb1.Text + @"\" + el; IFeatureDataset mydataset = iworkspace.OpenFeatureDataset(el); IEnumDataset enumDataset1 = mydataset.Subsets; IDataset dataset1 = null; while ((dataset1 = enumDataset1.Next()) != null) { clb1.Items.Add(dataset1.Name); } } } // Считываю все поля из всех слоев clb2.Items.Clear(); List <string> bn = new List <string>(); foreach (object item in clb1.Items) { myFeatureClass = iworkspace.OpenFeatureClass(item.ToString()); for (int j = 0; j < myFeatureClass.Fields.FieldCount; j++) { bn.Add(myFeatureClass.Fields.get_Field(j).Name); } } string[] bnn = bn.Distinct().ToArray(); foreach (string f in bnn) { clb2.Items.Add(f); } }
public static IWorkspace OpenWorkspace(IPropertySet ipropertySet_0) { IWorkspace workspace = null; IWorkspaceFactory factory; Exception exception; if (ipropertySet_0.Count == 1) { object obj2; object obj3; string str2 = ""; ipropertySet_0.GetAllProperties(out obj2, out obj3); if (((string[])obj2)[0] == "DATABASE") { str2 = System.IO.Path.GetExtension(((object[])obj3)[0].ToString()).ToLower(); } if (str2 == ".mdb") { factory = new AccessWorkspaceFactory(); try { workspace = factory.Open(ipropertySet_0, 0); } catch (Exception exception1) { exception = exception1; MessageBox.Show(exception.Message); } return(workspace); } if (str2 == ".gdb") { factory = new FileGDBWorkspaceFactory(); try { workspace = factory.Open(ipropertySet_0, 0); } catch (Exception exception2) { exception = exception2; MessageBox.Show(exception.Message); } } return(workspace); } factory = new SdeWorkspaceFactory(); try { workspace = factory.Open(ipropertySet_0, 0); } catch (Exception exception3) { exception = exception3; MessageBox.Show(exception.Message); } return(workspace); }
public static IWorkspace OpenWorkspace(IPropertySet ipropertySet_0) { object obj; object obj1; IWorkspaceFactory sdeWorkspaceFactoryClass; IWorkspace workspace = null; if (ipropertySet_0.Count != 1) { sdeWorkspaceFactoryClass = new SdeWorkspaceFactory(); try { workspace = sdeWorkspaceFactoryClass.Open(ipropertySet_0, 0); } catch (Exception exception) { MessageBox.Show(exception.Message); } } else { string str = ""; string lower = ""; ipropertySet_0.GetAllProperties(out obj, out obj1); if (((string[])obj)[0] == "DATABASE") { str = ((object[])obj1)[0].ToString(); lower = System.IO.Path.GetExtension(str).ToLower(); } if (lower == ".mdb") { sdeWorkspaceFactoryClass = new AccessWorkspaceFactory(); try { workspace = sdeWorkspaceFactoryClass.Open(ipropertySet_0, 0); } catch (Exception exception1) { MessageBox.Show(exception1.Message); } } else if (lower == ".gdb") { sdeWorkspaceFactoryClass = new FileGDBWorkspaceFactory(); try { workspace = sdeWorkspaceFactoryClass.Open(ipropertySet_0, 0); } catch (Exception exception2) { MessageBox.Show(exception2.Message); } } } return(workspace); }
public static ITable open_table(string ws, string name) { IWorkspaceFactory GdbWsF = new FileGDBWorkspaceFactory(); IWorkspace GdbWs = GdbWsF.OpenFromFile(ws, 0); // open fcs IFeatureWorkspace FeatWs = GdbWs as IFeatureWorkspace; ITable table = FeatWs.OpenTable(name); return(table); }
public static IFeatureClass open_fc(string ws, string name) { IWorkspaceFactory GdbWsF = new FileGDBWorkspaceFactory(); IWorkspace GdbWs = GdbWsF.OpenFromFile(ws, 0); // open fcs IFeatureWorkspace FeatWs = GdbWs as IFeatureWorkspace; IFeatureClass fc = FeatWs.OpenFeatureClass(name); return(fc); }
/// <summary> /// Creates the output featureclass, either fgdb featureclass or a shapefile /// </summary> /// <param name="outputPath">location of featureclass</param> /// <param name="saveAsType">Type of output selected, either fgdb featureclass or shapefile</param> /// <param name="graphicsList">List of graphics for selected tab</param> /// <param name="ipSpatialRef">Spatial Reference being used</param> /// <returns>Output featureclass</returns> public IFeatureClass CreateFCOutput(string outputPath, SaveAsType saveAsType, List <Graphic> graphicsList, ISpatialReference ipSpatialRef) { string fcName = System.IO.Path.GetFileName(outputPath); string folderName = System.IO.Path.GetDirectoryName(outputPath); IFeatureClass fc = null; try { bool isGraphicLineOrRangeRing = graphicsList[0].GraphicType == GraphicTypes.Line || graphicsList[0].GraphicType == GraphicTypes.RangeRing; if (saveAsType == SaveAsType.FileGDB) { IWorkspaceFactory workspaceFactory = new FileGDBWorkspaceFactory(); IWorkspace workspace = workspaceFactory.OpenFromFile(folderName, 0); IFeatureWorkspace fWorkspace = (IFeatureWorkspace)workspace; if (DoesFeatureClassExist(folderName, fcName)) { DeleteFeatureClass(fWorkspace, fcName); } fc = CreateFeatureClass(fWorkspace, fcName, isGraphicLineOrRangeRing); foreach (Graphic graphic in graphicsList) { IFeature feature = fc.CreateFeature(); if (graphic.GraphicType != GraphicTypes.Line && graphic.GraphicType != GraphicTypes.RangeRing) { feature.Shape = PolylineToPolygon(graphic.Geometry); } else { feature.Shape = graphic.Geometry; } feature.Store(); } } else if (saveAsType == SaveAsType.Shapefile) { // already asked them for confirmation to overwrite file if (File.Exists(outputPath)) { DeleteShapeFile(outputPath); } fc = ExportToShapefile(outputPath, graphicsList, ipSpatialRef, isGraphicLineOrRangeRing); } return(fc); } catch (Exception ex) { return(fc); } }
private void AddGDB() { FileGDBWorkspaceFactory pWSF = new FileGDBWorkspaceFactory(); IFeatureWorkspace pWS1 = pWSF.OpenFromFile("C:\\temp\\gdb.gdb", 0) as IFeatureWorkspace; IFeatureClass featureclass = pWS1.OpenFeatureClass("layer"); IFeatureLayer pFLRoads = new FeatureLayer(); pFLRoads.FeatureClass = featureclass; pFLRoads.Name = "点"; ILayer pLayerRoads = pFLRoads as ILayer; Global.mainmap.AddLayer(pLayerRoads); }
//创建GDB public IWorkspace CreateGDB(string gdbPath, string gdbName) { IPropertySet ps = new PropertySetClass(); ps.SetProperty("DATABASE", gdbPath); IWorkspaceFactory workspaceFactory = new FileGDBWorkspaceFactory(); IWorkspaceName newWorkspacename = workspaceFactory.Create(gdbPath, gdbName, ps, 0); IName name = (IName)newWorkspacename; IWorkspace newWorkspace = (IWorkspace)name.Open(); return(newWorkspace); }
private GdbAccess() { string calcGdb = MilSpaceConfiguration.ConnectionProperty.TemporaryGDBConnection; IWorkspaceFactory workspaceFactory = new FileGDBWorkspaceFactory(); logger.InfoEx($"Opening access to {calcGdb}."); calcWorkspace = workspaceFactory.OpenFromFile(calcGdb, 0); if (calcWorkspace == null) { logger.ErrorEx($"Cannot access to {calcGdb}."); } }
private void btnQuery_Click(object sender, EventArgs e) { string year = cbxYear.SelectedItem.ToString(); string month = cbxMonth.SelectedItem.ToString(); IWorkspaceFactory pFileGDBWorkspaceFactory; pFileGDBWorkspaceFactory = new FileGDBWorkspaceFactory(); IWorkspace pWorkspace = pFileGDBWorkspaceFactory.OpenFromFile(rasterPath, 0); IEnumDataset pEnumDataset = pWorkspace.get_Datasets(ESRI.ArcGIS.Geodatabase.esriDatasetType.esriDTAny); pEnumDataset.Reset(); IDataset pDataset = pEnumDataset.Next(); DataTable SpatialRefTable = new DataTable(); SpatialRefTable.Columns.Add(new DataColumn("影像名称", typeof(string))); SpatialRefTable.Columns.Add(new DataColumn("影像拍摄时间", typeof(string))); //判断数据集是否有数据 while (pDataset != null) { if (pDataset is IRasterDataset) //栅格数据集 { IRasterWorkspaceEx pRasterWorkspace = (IRasterWorkspaceEx)pWorkspace; IRasterDataset pRasterDataset = pRasterWorkspace.OpenRasterDataset(pDataset.Name); //影像金字塔判断与创建 ISpatialReference pSpatialRef = (pRasterDataset as IGeoDataset).SpatialReference; string spatialref = pSpatialRef.Name.ToString(); string rastername = pDataset.Name.ToString(); string[] strArray = rastername.Split('_'); DataRow dr = SpatialRefTable.NewRow(); dr["影像名称"] = pDataset.Name.ToString(); dr["影像拍摄时间"] = strArray[1].Substring(0, 8); IRasterLayer pRasterLayer = new RasterLayer(); pRasterLayer.CreateFromDataset(pRasterDataset); if (strArray[1].Substring(0, 6) == year + month) { SpatialRefTable.Rows.Add(dr); } } pDataset = pEnumDataset.Next(); } // ExportExcel(SpatialRefTable); //弹出显示框 FormQueryShowResult timeQuery = new FormQueryShowResult(); timeQuery.Text = "时间查询"; timeQuery.dgvQueryResult.DataSource = SpatialRefTable; timeQuery.dgvQueryResult.Columns[1].Width = 200; timeQuery.Show(); }
public static IFeatureClass GetFeatureClass(string GDBpath, string FCname) { //创建最后所需的点图层 IFeatureClass feaclass = null; //创建工作空间 FileGDBWorkspaceFactory fileGDBWorkspaceFactory = new FileGDBWorkspaceFactory(); IWorkspace workspace = fileGDBWorkspaceFactory.OpenFromFile(GDBpath, 0); IFeatureWorkspace featureWorkspace = workspace as IFeatureWorkspace; feaclass = featureWorkspace.OpenFeatureClass(FCname); return(feaclass); }
/// <summary> /// Retrieves all datasets names from filegdb /// </summary> /// <param name="gdbFilePath">Path to filegdb</param> /// <returns>List of names of all featureclasses in filegdb</returns> private List <string> GetAllDatasetNames(string gdbFilePath) { IWorkspaceFactory workspaceFactory = new FileGDBWorkspaceFactory(); IWorkspace workspace = workspaceFactory.OpenFromFile(gdbFilePath, 0); IEnumDataset enumDataset = workspace.get_Datasets(esriDatasetType.esriDTAny); List <string> names = new List <string>(); IDataset dataset = null; while ((dataset = enumDataset.Next()) != null) { names.Add(dataset.Name); } return(names); }
protected override void OnClick() { IWorkspaceFactory pWorkspaceFactory = new FileGDBWorkspaceFactory(); IWorkspace pWorkspace = pWorkspaceFactory.OpenFromFile(@"D:\Applications\ArcObjects\TestButton\GeoDP\GeoDB.gdb", ArcMap.Application.hWnd); IWorkspaceDomains pWorkspaceDomains = pWorkspace as IWorkspaceDomains; ICodedValueDomain pDomain = pWorkspaceDomains.DomainByName["Resturants"] as ICodedValueDomain; for (int i = 0; i < pDomain.CodeCount; i++) { MessageBox.Show("Code: " + pDomain.Value[i] + Environment.NewLine + "Description: " + pDomain.Name[i]); } }
/// <summary> /// Creates an fgdb in the given path. /// </summary> /// <param name="fgdbPath"></param> public static void CreateFgdbWorkspace(string fgdbPath) { if (string.IsNullOrWhiteSpace(fgdbPath)) { return; } var parentDir = Directory.GetParent(fgdbPath).FullName; string fgdbName = Path.GetFileName(fgdbPath); IWorkspaceFactory scratchWorkspaceFactory = new FileGDBWorkspaceFactory(); IWorkspaceName workspaceName = scratchWorkspaceFactory.Create(parentDir, fgdbName, null, 0); Marshal.FinalReleaseComObject(workspaceName); }
public static List <string> list_fcs_in_gdb(string ws) { List <string> fc_names = new List <string>(); IWorkspaceFactory GdbWsF = new FileGDBWorkspaceFactory(); IWorkspace GdbWs = GdbWsF.OpenFromFile(ws, 0); IEnumDatasetName ds_names = GdbWs.get_DatasetNames(esriDatasetType.esriDTFeatureClass); IDatasetName ds_name = ds_names.Next(); while (ds_name != null) { fc_names.Add(ds_name.Name); ds_name = ds_names.Next(); } return(fc_names); }
public static IWorkspace connectSde(string path) { try { //定义工作空间,工作空间的数据源来自SDE,IWorkspaceFactory是Geodatabase的入口 //Type factoryType = Type.GetTypeFromProgID("esriDataSourcesGDB.SdeWorkspaceFactory"); //IWorkspaceFactory workspaceFactory = (IWorkspaceFactory)Activator.CreateInstance(factoryType); IWorkspaceFactory workspaceFactory = new FileGDBWorkspaceFactory(); ////通过IPropertySet设置通过SDE连接数据库的各种参数 //IPropertySet propertySet = new PropertySetClass(); //propertySet.SetProperty("SERVER", "10.64.192.51"); //propertySet.SetProperty("SERVICE", "esri_sde"); //propertySet.SetProperty("INSTANCE", "sde:sqlserver:10.64.192.51"); ////propertySet.SetProperty("Instance", "port:5151"); //propertySet.SetProperty("DATABASE", "GasEarlyWarningGIS"); //propertySet.SetProperty("USER", "sde"); //propertySet.SetProperty("PASSWORD", "sde"); //propertySet.SetProperty("VERSION", "sde.DEFAULT"); ////通过以上设置的参数将数据库的数据通过SDE读入工作空间 IWorkspace workspace = workspaceFactory.OpenFromFile(path, 0); //IWorkspace workspace = null; //ILayer pLayer = DataEditCommon.GetLayerByName(DataEditCommon.g_pMap,"点"); //IFeatureLayer pFeatureLayer = (IFeatureLayer)pLayer; //IFeatureClass pFeatureClass = pFeatureLayer.FeatureClass; //IDataset pDataset = (IDataset)pFeatureClass; //workspace = pDataset.Workspace; //IWorkspaceFactory workspaceFactory = new SdeWorkspaceFactoryClass(); //workspace = workspaceFactory.Open(ConnectSDE(true), 0); return(workspace); //return GetSDEWorkspace(); } catch (Exception ex) { MessageBox.Show("数据库连接失败!" + ex.Message); } return(null); }
public IWorkspace get_FWorkSp() { IWorkspaceFactory pWorkSpaceFactory = new FileGDBWorkspaceFactory(); string tempFP = openFGDB(); if (tempFP != null) { IWorkspace pWorkSpace = pWorkSpaceFactory.OpenFromFile(tempFP, 0); //IEnumDataset pEDataset =pWorkSpace. get_Datasets(esriDatasetType.esriDTAny); //IDataset pDataset = pEDataset.Next(); return(pWorkSpace); } else { return(null); } }
private void barButtonItem6_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { FolderBrowserDialog openDLG = new FolderBrowserDialog(); //创建文件夹浏览对话框 if (openDLG.ShowDialog() == DialogResult.OK) //打开对话框,选择文件夹后,若点击ok按钮 { string sFilePath = openDLG.SelectedPath; //获得选择的文件夹 IWorkspaceFactory pWorkspaceFectory = new FileGDBWorkspaceFactory(); // 创建能够打开文件型数据库的工作空间工厂对象 IWorkspace pWorkspace = pWorkspaceFectory.OpenFromFile(sFilePath, 0); //打开对应的文件夹,返回工作空间对象 IEnumDataset pEnumDataset = pWorkspace.get_Datasets(esriDatasetType.esriDTFeatureDataset); //获取文件数据库中的所有矢量特征数据集集合 pEnumDataset.Reset(); //指向矢量特征数据集集合头部 IDataset pDataset = pEnumDataset.Next(); //获取第一个矢量特征数据集 while (pDataset != null) //若矢量特征数据集非空 { if (pDataset is IFeatureDataset) // 当前矢量特征数据集是否为FeatureDataset { IFeatureWorkspace pFeatureWorkspace = pWorkspace as IFeatureWorkspace; //接口转换为IFeatureWorkspace IFeatureDataset pFeatureDaset = pFeatureWorkspace.OpenFeatureDataset(pDataset.Name); //打开当前矢量特征数据集 IEnumDataset pSubEnumdataset = pFeatureDaset.Subsets; //获取其子数据集 pSubEnumdataset.Reset(); //指向子数据集头部 IDataset pSubDataset = pSubEnumdataset.Next(); //获取子数据集的第一个数据集 while (pSubDataset != null && pSubDataset is IFeatureClass) //当新获取的这个新数据集是FeatureClass { IFeatureClass pFeatureClass = pFeatureWorkspace.OpenFeatureClass(pSubDataset.Name); // 打开该IFeatureClass IFeatureLayer pLayer = new FeatureLayer(); //创建一个矢量特征层 pLayer.FeatureClass = pFeatureClass; //给该层数据源赋值 axMapControl1.Map.AddLayer(pLayer as ILayer); //添加到地图控件中 pSubDataset = pSubEnumdataset.Next(); //获取下一个新的子数据集 } } else if (pDataset is IFeatureClass) //当前矢量特征数据集是否为FeatureClass { IFeatureWorkspace pFeatureWorkspace = pWorkspace as IFeatureWorkspace; //接口转换为IFeatureWorkspace IFeatureClass pFeatureClass = pFeatureWorkspace.OpenFeatureClass(pDataset.Name); // 打开该IFeatureClass IFeatureLayer pLayer = new FeatureLayer(); //创建一个矢量特征层 pLayer.FeatureClass = pFeatureClass; //给该层数据源赋值 axMapControl1.Map.AddLayer(pLayer as ILayer); //添加到地图控件中 } pDataset = pEnumDataset.Next(); //获取下一个数据集 } axMapControl1.ActiveView.Refresh(); //地图刷新 } //添加GDB }
public static IWorkspace connectSde(string path) { try { //定义工作空间,工作空间的数据源来自SDE,IWorkspaceFactory是Geodatabase的入口 //Type factoryType = Type.GetTypeFromProgID("esriDataSourcesGDB.SdeWorkspaceFactory"); //IWorkspaceFactory workspaceFactory = (IWorkspaceFactory)Activator.CreateInstance(factoryType); IWorkspaceFactory workspaceFactory = new FileGDBWorkspaceFactory(); ////通过IPropertySet设置通过SDE连接数据库的各种参数 //IPropertySet propertySet = new PropertySetClass(); //propertySet.SetProperty("SERVER", "10.64.192.51"); //propertySet.SetProperty("SERVICE", "esri_sde"); //propertySet.SetProperty("INSTANCE", "sde:sqlserver:10.64.192.51"); ////propertySet.SetProperty("Instance", "port:5151"); //propertySet.SetProperty("DATABASE", "GasEarlyWarningGIS"); //propertySet.SetProperty("USER", "sde"); //propertySet.SetProperty("PASSWORD", "sde"); //propertySet.SetProperty("VERSION", "sde.DEFAULT"); ////通过以上设置的参数将数据库的数据通过SDE读入工作空间 IWorkspace workspace = workspaceFactory.OpenFromFile(path, 0); //IWorkspace workspace = null; //ILayer pLayer = DataEditCommon.GetLayerByName(DataEditCommon.g_pMap,"点"); //IFeatureLayer pFeatureLayer = (IFeatureLayer)pLayer; //IFeatureClass pFeatureClass = pFeatureLayer.FeatureClass; //IDataset pDataset = (IDataset)pFeatureClass; //workspace = pDataset.Workspace; //IWorkspaceFactory workspaceFactory = new SdeWorkspaceFactoryClass(); //workspace = workspaceFactory.Open(ConnectSDE(true), 0); return workspace; //return GetSDEWorkspace(); } catch (Exception ex) { MessageBox.Show("数据库连接失败!" + ex.Message); } return null; }
public IWorkspace CreateOrOpenLoaclGeoDataBase(string path, EnumLoaclGeoDatabaseType type) { try { IWorkspaceFactory pTargetWsf = null; switch (type) { case EnumLoaclGeoDatabaseType.MDB: pTargetWsf = new AccessWorkspaceFactory(); break; case EnumLoaclGeoDatabaseType.GDB: pTargetWsf = new FileGDBWorkspaceFactory(); break; case EnumLoaclGeoDatabaseType.SHP: pTargetWsf = new ShapefileWorkspaceFactory(); break; } if (System.IO.Directory.Exists(path) || System.IO.File.Exists(path)) { if (pTargetWsf.IsWorkspace(path)) { return(pTargetWsf.OpenFromFile(path, 0)); } else { ErrorMessage = "当前工作空间已经损坏"; return(null); } } else { string sPath = System.IO.Path.GetDirectoryName(path); string sName = System.IO.Path.GetFileNameWithoutExtension(path); IWorkspaceName pWorkspaceName = pTargetWsf.Create(sPath, sName, null, 0); return(pTargetWsf.Open(pWorkspaceName.ConnectionProperties, 0)); } } catch (Exception ex) { ErrorMessage = ex.Message; return(null); } }
private static string GetDefaultWorkspace() { string documents = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); string tempDir = System.IO.Path.Combine(documents, "temp"); string workspacePath = System.IO.Path.Combine(tempDir, "Scratch.gdb"); IWorkspaceFactory workspaceFactory = new FileGDBWorkspaceFactory(); if (!workspaceFactory.IsWorkspace(workspacePath)) { IWorkspaceName defaultWorkspaceName = workspaceFactory.Create(tempDir, "Scratch", null, 0); return(defaultWorkspaceName.PathName); } else { return(workspacePath); } }
protected override void OnClick() { // // TODO: Sample code showing how to access button host // IWorkspaceFactory pWorkspaceFactory = new FileGDBWorkspaceFactory(); IWorkspace pWorkspace = pWorkspaceFactory.OpenFromFile(@"C:\IGeometry\IGeometryGDB\IGeometry.gdb", ArcMap.Application.hWnd); IWorkspaceDomains pWorkspaceDomains = pWorkspace as IWorkspaceDomains; ICodedValueDomain pDomain = pWorkspaceDomains.DomainByName["RestaurantTypes"] as ICodedValueDomain; for (int i = 0; i < pDomain.CodeCount; i++) { MessageBox.Show("Code: " + pDomain.Value[i] + Environment.NewLine + "Description: " + pDomain.Name[i]); } ArcMap.Application.CurrentTool = null; }
//选择数据集路径 private void button1_Click(object sender, EventArgs e) { FolderBrowserDialog folderBrowserDialog = new FolderBrowserDialog(); folderBrowserDialog.Description = "选择文件GDB"; folderBrowserDialog.ShowNewFolderButton = false; if (folderBrowserDialog.ShowDialog() == DialogResult.OK) { if (folderBrowserDialog.SelectedPath.Substring(folderBrowserDialog.SelectedPath.LastIndexOf(".")) != ".gdb") { MessageBox.Show("请选择正确的地理数据库"); return; } IWorkspaceFactory pWorkspaceFactory = new FileGDBWorkspaceFactory(); pWorkspace = pWorkspaceFactory.OpenFromFile(folderBrowserDialog.SelectedPath, 0); textBox1.Text = folderBrowserDialog.SelectedPath; } }
private void axMapControl1_OnMouseDown(object sender, IMapControlEvents2_OnMouseDownEvent e) { double xpoint = e.mapX; double ypoint = e.mapY; IPoint point = new PointClass(); point.PutCoords(xpoint, ypoint); IWorkspaceFactory wsf = new FileGDBWorkspaceFactory(); IFeatureWorkspace ws = wsf.OpenFromFile(@"\\alexn\TestGDB\Feature.gdb", 0) as IFeatureWorkspace; IGeoDataset pointfc = ws.OpenFeatureClass(@"Points") as IGeoDataset; point.SpatialReference = pointfc.SpatialReference; //IGeometry point2 = point as IGeometry; IFeatureClass pointfc2 = pointfc as IFeatureClass; IFeature pointfc3 = pointfc2.CreateFeature(); IFeatureCursor pointFC = pointfc2.Insert(true); IFeatureBuffer fbuffer = pointfc2.CreateFeatureBuffer(); fbuffer.Shape = point; pointFC.InsertFeature(fbuffer); IActiveView display = axMapControl1.ActiveView; display.Activate(0); display.Refresh(); }
/// <summary> /// 创建镶嵌数据集 /// </summary> /// <param name="pFGDBPath"></param> /// <param name="pMDame"></param> /// <param name="pSrs"></param> /// <returns></returns> IMosaicDataset CreateMosaicDataset(string pFGDBPath, string pMDame, ISpatialReference pSrs ) { IWorkspaceFactory pWorkspaceFactory = new FileGDBWorkspaceFactory(); IWorkspace pFgdbWorkspace = pWorkspaceFactory.OpenFromFile(pFGDBPath, 0); ICreateMosaicDatasetParameters pCreationPars = new CreateMosaicDatasetParametersClass(); pCreationPars.BandCount = 3; pCreationPars.PixelType = rstPixelType.PT_UCHAR; IMosaicWorkspaceExtensionHelper pMosaicExentionHelper = new MosaicWorkspaceExtensionHelperClass(); IMosaicWorkspaceExtension pMosaicExtention = pMosaicExentionHelper.FindExtension(pFgdbWorkspace); return pMosaicExtention.CreateMosaicDataset(pMDame, pSrs, pCreationPars, ""); }
private IFeatureClass OpenFeatureClass(string filePath, string fcName) { var gdbWorkspaceFactory = new FileGDBWorkspaceFactory(); var featureWorkspace = (IFeatureWorkspace)gdbWorkspaceFactory.OpenFromFile(_fgdb, 0); return featureWorkspace.OpenFeatureClass(fcName); }
/// <summary> /// Retrieves all datasets names from filegdb /// </summary> /// <param name="gdbFilePath">Path to filegdb</param> /// <returns>List of names of all featureclasses in filegdb</returns> private List<string> GetAllDatasetNames(string gdbFilePath) { IWorkspaceFactory workspaceFactory = new FileGDBWorkspaceFactory(); IWorkspace workspace = workspaceFactory.OpenFromFile (gdbFilePath, 0); IEnumDataset enumDataset = workspace.get_Datasets(esriDatasetType.esriDTAny); List<string> names = new List<string>(); IDataset dataset = null; while((dataset = enumDataset.Next())!= null) { names.Add(dataset.Name); } return names; }
/// <summary> /// Creates the output featureclass, either fgdb featureclass or a shapefile /// </summary> /// <param name="outputPath">location of featureclass</param> /// <param name="saveAsType">Type of output selected, either fgdb featureclass or shapefile</param> /// <param name="graphicsList">List of graphics for selected tab</param> /// <param name="ipSpatialRef">Spatial Reference being used</param> /// <returns>Output featureclass</returns> public IFeatureClass CreateFCOutput(string outputPath, SaveAsType saveAsType, List<Graphic> graphicsList, ISpatialReference ipSpatialRef) { string fcName = System.IO.Path.GetFileName(outputPath); string folderName = System.IO.Path.GetDirectoryName(outputPath); IFeatureClass fc = null; try { if (saveAsType == SaveAsType.FileGDB) { IWorkspaceFactory workspaceFactory = new FileGDBWorkspaceFactory(); IWorkspace workspace = workspaceFactory.OpenFromFile(folderName, 0); IFeatureWorkspace fWorkspace = (IFeatureWorkspace)workspace; if (DoesFeatureClassExist(folderName, fcName)) { DeleteFeatureClass(fWorkspace, fcName); } fc = CreatePolylineFeatureClass(fWorkspace, fcName); foreach (Graphic graphic in graphicsList) { IFeature feature = fc.CreateFeature(); feature.Shape = graphic.Geometry; feature.Store(); } } else if (saveAsType == SaveAsType.Shapefile) { // already asked them for confirmation to overwrite file if (File.Exists(outputPath)) { DeleteShapeFile(outputPath); } fc = ExportToShapefile(outputPath, graphicsList, ipSpatialRef); } return fc; } catch (Exception ex) { return fc; } }