Suite

Obtenir FeatureDataSet d'une FeatureClass invalide


J'ai un projet qui répare les sources de données cassées. L'un des objectifs du projet est d'ajouter la source de données d'un jeu de données d'entités pour réparer les classes d'entités brisées. Cependant, jusqu'à présent, le seul moyen que j'ai vu pour obtenir le FeatureDataSet est via le FeatureClass. Cependant, étant donné que ces couches ne sont pas valides, il n'y a pas de classe d'entités.

Normalement, le jeu de données d'entités parent d'une classe d'entités est conservé dans la classe d'entités. Alors est-il accessible ailleurs ?

J'ai déjà vérifié les propriétés dans l'interface IProperties, mais pas de chance. J'ai également essayé de convertir l'IFeatureDataset à partir d'IDataset, mais évidemment, cela ne fonctionnera pas car j'utilise une classe d'entités pour accéder à l'ensemble de données d'entités dont il provient et ce n'est pas un ensemble de données d'entités pour commencer.


L'objet featuredataset lui-même n'est pas disponible, mais son nom est disponible via l'interface IDataset du couche (pas la classe d'entités). Voici un exemple de code qui vous donne les noms de la classe d'entités et du jeu de données d'entités d'une couche non valide. Ou, en fait, n'importe quelle couche.

var doc = new MapDocumentClass(); doc.Open(@"d:	empuntitled.mxd"); Carte IMap = doc.Map[0]; var dataset = map.Layer[0] as IDataset; Console.WriteLine(dataset.Name); var fcn = dataset.FullName as IFeatureClassName ; // Cela ne fonctionnera évidemment que pour les couches d'entités if (fcn.FeatureDatasetName != null) Console.WriteLine(fcn.FeatureDatasetName.Name); var dsn = dataset.FullName as IDatasetName ; Console.WriteLine(dsn.WorkspaceName.PathName); // Chemin de l'espace de travail, sauf s'il s'agit d'un databset SDE