Suite

Rejoindre la source de données des couches à l'aide d'ArcObjects


Je travaille actuellement sur un projet ArcObjects C# qui repointera des sources de données pour des couches de différents types. Fondamentalement, une base de données est maintenue qui contient les anciennes connexions de source de données et les nouvelles connexions. Lorsque l'utilisateur appuie sur un bouton, l'application parcourt toutes les couches actuelles dans ArcDesktop et compare la source de données actuelle des couches avec la nouvelle. S'il y a une différence, il réinitialise la source de données.

Cependant, je ne sais pas trop comment accéder à la source de données et, en parcourant cet échange de piles, j'ai remarqué quelqu'un qui travaillait sur quelque chose de similaire, mais qui utilisait des couches raster. Je ne connais pas trop ArcGIS et je ne savais pas si je devais gérer les couches d'entités différemment, car il mentionne qu'il a déjà trouvé une solution pour les couches d'entités.

Voici la section que j'essaie de modifier dans ArcDesktop :

J'ai tout fonctionne très bien, sauf le changement de ces sources de données. J'ai trouvé cette ressource sur arcgis, mais cela ne semble pas changer ces chaînes, bien que je puisse me tromper.

Voici ce que j'ai actuellement :

// Parcourez toutes les couches et obtenez leurs informations pEnumLayer.Reset(); pLayer = pEnumLayer.Next(); while (pLayer != null) { Log.Debug("Manipulation de la couche : " + pLayer.Name); IDataLayer dataLayer = (IDataLayer)pLayer; var datasource = dataLayer.DataSourceName; // c'est ce que je pense être la source de données actuelle Log.Debug("Couche réparée : " + pLayer.Name); pLayer = pEnumLayer.Next(); }

Est-ce la bonne source de données que je recherche ? Si tel est le cas, tout ce que je dois faire pour changer la source de données est de définir cette variable sur la nouvelle chaîne de source de données, puis de redessiner la carte ?


Dans l'aide en ligne d'Esri, il existe des exemples de ce problème, vous pouvez vous référer à cet exemple.

URL : http://help.arcgis.com/en/sdk/10.0/arcobjects_net/componenthelp/index.html#//00490000002r000000


Vous devez utiliser l'interface IDataSourceHelperLayer :

Extrait de code:

IDataSourceHelperLayer dsh = new DataSourceHelper() as IDataSourceHelperLayer; dsh.ReplaceName(pLayer, newIName, false);

Vous pouvez également utiliser la méthode IDataSourceHelperLayer.FindAndReplaceWorkspaceNamePath.


Voir la vidéo: 1 - Crear Capa ArcGis (Octobre 2021).