Hi,is there any way to select all FC and datasets from FileGDB? I would like to extract all elements from the path to .gdb and add them to the list. Is it possible?
Thank youDavid
You can call GetDefinitions for individual dataset types:
var fcDefinitions = geodatabase.GetDefinitions<FeatureClassDefinition>();var tableDefinitions = geodatabase.GetDefinitions<TableDefinition>();var datasetDefinitions = geodatabase.GetDefinitions<FeatureDatasetDefinition>();.....// Similar for other dataset types
// Loop through the resultsforeach (var definition in datasetDefinitions){ Console.WriteLine(definition.GetName() + "=>" + definition.DatasetType);
definition.Dispose();
}
Thank you very much !!!
This snippet shows you the path differences in feature datasets and feature classes.
You can get the path using featureClass.GetPath().
var fcName = featureClassDef.GetName(); using (var fc = geodatabase.OpenDataset<FeatureClass>(fcName)) { FeatureDataset featureDataset = fc.GetFeatureDataset(); if(featureDataset !=null) { // do something with feature class inside feature dataset } var path = fc.GetPath(); LayerFactory.Instance.CreateLayer(path, MapView.Active.Map); }
To filter the feature classes only inside the feature dataset you can use geodatabase.GetRelatedDefinitions() method.
foreach (var featureDatasetDef in featureDatasetDefinitions) { IReadOnlyList<Definition> datasetsInFeatureDataset = geodatabase.GetRelatedDefinitions(featureDatasetDef, DefinitionRelationshipType.DatasetInFeatureDataset); foreach(Definition datsetInFeatureDataset in datasetsInFeatureDataset) { if(datsetInFeatureDataset.DatasetType == DatasetType.FeatureClass) { using (FeatureClassDefinition featureClassDefinition = datsetInFeatureDataset as FeatureClassDefinition) { var fcName = featureClassDefinition.GetName(); using (var fc = geodatabase.OpenDataset<FeatureClass>(fcName)) { var path = fc.GetPath(); LayerFactory.Instance.CreateLayer(path, MapView.Active.Map, layerName:$"From Dataset{fcName}"); } } } } }
Just a question, I'm trying to make Layers out of it, but I don't know how to put it together to select FeatureClass and FeatureDataset.
var seznamFeateruLayer = new List<FeatureLayer>(); Geodatabase geodatabase = new Geodatabase( new FileGeodatabaseConnectionPath( new Uri(_cesta))); //C:\Users\mrazekd\Documents\ArcGIS\Projects\test\test.gdb var fcDefinice = geodatabase.GetDefinitions<FeatureClassDefinition>(); var datasetDefinice = geodatabase.GetDefinitions<FeatureDatasetDefinition>(); if (datasetDefinice.Count != 0) { foreach (var definition in datasetDefinice) { var jmenoFcDataset = definition.GetName(); var url = _cesta + @"\" + jmenoFcDataset; Uri uri = new Uri(url); await QueuedTask.Run(() => LayerFactory.Instance.CreateLayer(uri, mapView.Map)); if (fcDefinice.Count != 0) { foreach (var definice in fcDefinice) { var jmenoFc = definice.GetName(); if ()//I don't know how to separate the two here { var urlFc = _cesta + @"\" + jmenoFc; Uri uriFc = new Uri(urlFc); await QueuedTask.Run(() => LayerFactory.Instance.CreateLayer(uriFc, mapView.Map)); } FeatureLayer featureLayerJmeno = mapView.Map.FindLayers(jmenoFc).First() as FeatureLayer; seznamFeateruLayer.Add(featureLayerJmeno); } } } }
Thank you very much that's it 🙂
Hi,
Look here:
https://community.esri.com/t5/arcgis-pro-sdk-questions/how-do-i-get-all-of-the-tablenames-from-the-fgdb/m-p/1156733#M7960
Aangemelde leden kunnen berichten plaatsen, updates volgen en meer. Nieuw hier? Registreer een gratis account.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.