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
Membros conectados podem postar, seguir atualizações e mais. Novo aqui? Registre uma conta gratuita.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.