public static string GetPathFromGeodatabase(ArcGIS.Core.Data.Geodatabase gdb) { string gdbPath = string.Empty; if (gdb == null) { return(gdbPath); // Empty } ArcGIS.Core.Data.FileGeodatabaseConnectionPath fgdbcp = gdb.GetConnector() as ArcGIS.Core.Data.FileGeodatabaseConnectionPath; if (fgdbcp != null) { gdbPath = fgdbcp.Path.LocalPath; } return(gdbPath); }
private void OpenGDB() { if (_executeQuery) { return; } if (_gdbPath == "") { return; } _executeQuery = true; System.Windows.Data.BindingOperations.CollectionRegistering += BindingOperations_CollectionRegistering; ArcGIS.Desktop.Framework.Threading.Tasks.QueuedTask.Run(() => { using (ArcGIS.Core.Data.Geodatabase gdb = new ArcGIS.Core.Data.Geodatabase( new ArcGIS.Core.Data.FileGeodatabaseConnectionPath(new Uri(_gdbPath, UriKind.Absolute)))) { IReadOnlyList <ArcGIS.Core.Data.Definition> fcList = gdb.GetDefinitions <ArcGIS.Core.Data.FeatureClassDefinition>(); IReadOnlyList <ArcGIS.Core.Data.Definition> tables = gdb.GetDefinitions <ArcGIS.Core.Data.TableDefinition>(); ArcGIS.Desktop.Framework.Dialogs.MessageBox.Show("Total number of feature classes: " + fcList.Count.ToString() + "\nFirst Feature is: " + FeatureString(fcList[0] as ArcGIS.Core.Data.FeatureClassDefinition)); lock (_theLock) { // Add all features to _tables list foreach (var fcDef in fcList) { _tables.Add(TableString(fcDef as ArcGIS.Core.Data.TableDefinition)); // Feature class table is read as TableDefinition and NOT FeatureClassDefinition } // Add all tables to _tables list foreach (var tableDef in tables) { _tables.Add(TableString(tableDef as ArcGIS.Core.Data.TableDefinition)); // ArcGIS.Desktop.Framework.Dialogs.MessageBox.Show("TableString: " + (TableString(tableDef as ArcGIS.Core.Data.TableDefinition))); } } } }); }
/// <summary> /// Create Pipeline Route from input pipeline centerline /// </summary> /// <param name="fcPath"></param> /// <returns></returns> public static async Task <ArcGIS.Desktop.Core.Geoprocessing.IGPResult> CreatePipelineRoute(string fcPath) { // Check if input pipeline has "ROUTEID" field // Active Map must hvae fcPath var output = await QueuedTask.Run(() => { var lyr = ArcGIS.Desktop.Mapping.MapView.Active.Map.FindLayers(fcPath).First() as ArcGIS.Desktop.Mapping.FeatureLayer; var gdb = lyr.GetTable().GetDatastore() as ArcGIS.Core.Data.Geodatabase; Uri path = gdb.GetPath(); string fullPath = Path.Combine(path.LocalPath, lyr.GetTable().GetName().ToString()); ArcGIS.Desktop.Framework.Dialogs.MessageBox.Show("GDB is: " + path); ArcGIS.Desktop.Framework.Dialogs.MessageBox.Show("path is: " + fullPath); fcPath = fullPath; Uri uri = new Uri(path.ToString()); ArcGIS.Desktop.Framework.Dialogs.MessageBox.Show("database uri here: " + uri); // Check if input pipline layer has a "ROUTEID" field using (ArcGIS.Core.Data.Geodatabase fileGeodatabase = new ArcGIS.Core.Data.Geodatabase(new ArcGIS.Core.Data.FileGeodatabaseConnectionPath(uri))) using (ArcGIS.Core.Data.FeatureClass featureClass = fileGeodatabase.OpenDataset <ArcGIS.Core.Data.FeatureClass>(lyr.Name)) { ArcGIS.Core.Data.FeatureClassDefinition lyrDefinition = featureClass.GetDefinition(); IReadOnlyList <ArcGIS.Core.Data.Field> fields = lyrDefinition.GetFields(); List <string> fieldsList = new List <string>(); ArcGIS.Desktop.Framework.Dialogs.MessageBox.Show("Checking fields"); foreach (var field in fields) { fieldsList.Add(field.Name); } return(fieldsList); } }); }
private async void GetActiveMapLayerGDBPathAsync() { // Check if active MapView exists if (ArcGIS.Desktop.Mapping.MapView.Active == null) { return; } _tables.Clear(); IEnumerable<ArcGIS.Desktop.Mapping.Layer> layers = ArcGIS.Desktop.Mapping.MapView.Active.Map.Layers.Where(layer => layer is ArcGIS.Desktop.Mapping.FeatureLayer); await ArcGIS.Desktop.Framework.Threading.Tasks.QueuedTask.Run(() => { foreach (ArcGIS.Desktop.Mapping.FeatureLayer featureLayer in layers) { try // TRY/CATCH TO CHECK FOR LAYERS WITH LOST CONNECTIONS (DELETED/CHANGED SOURCES) // { using (ArcGIS.Core.Data.Table table = featureLayer.GetTable()) using (ArcGIS.Core.Data.Datastore datastore = table.GetDatastore()) { if (datastore is ArcGIS.Core.Data.UnknownDatastore) { ArcGIS.Desktop.Framework.Dialogs.MessageBox.Show("Unknow datastore for: " + featureLayer.Name); } ArcGIS.Core.Data.Geodatabase gdb = datastore as ArcGIS.Core.Data.Geodatabase; _tables.Add(gdb.GetPath().ToString() + "/" + featureLayer.Name.ToString()); } } catch { return; } } }); }