Suite

Mettre à jour les enregistrements d'entités dans ArcGIS 10

Mettre à jour les enregistrements d'entités dans ArcGIS 10


Je dois mettre à jour plusieurs enregistrements d'entités dans ArcGIS via ArcObjects. Ci-dessous mon code.

Cela fonctionne bien pour la première fois, mais cela me donne une erreur alors qu'il va exécuter le filtre de requête pour la prochaine fois, cela me donne une erreur "Permissions insuffisantes".

foreach (tester toProcess dans forProcess) { int OID = toProcess.R1; int GISID = toProcess.R2; double longueur = toProcess.R3; chaîne oùc = "OBJECTID = '" + OID + "' AND GISID = '" + GISID + "'" ; //initialiser le filtre de requête queryFilter.SubFields = "*"; queryFilter.WhereClause = wherec; //recherche via le filtre de requête IFeatureCursor featureCursor2 = featureClass.Search(queryFilter, false); //Obtenir les caractéristiques de sortie IFeature featurenew = featureCursor2.NextFeature(); //while (featurenew != null) (ne pas utiliser à la fois une seule fonctionnalité) //{ IObject pObject = featurenew; int iNewTag = GISAUConstants.kiNoSequenceValue; // Obtient une nouvelle valeur de balise à partir de la séquence de balises dans l'espace de travail. iNewTag = CommonFunct.GetSequenceValue(GISAUConstants.ksGISIDSequenceName, espace de travail); if (iNewTag <= GISAUConstants.kiNoSequenceValue) throw new Exception("Valeur de balise invalide : " + iNewTag); // Récupère l'index du champ, par nom de modèle. int fieldIndex = CommonFunct.GetFirstFieldIndexByModelName(pObject, GISAUConstants.ksMNFieldGISID); // Avons-nous obtenu un index de champ valide ? if (fieldIndex == GISAUConstants.kiNoField) throw new Exception(" n'a pas de champ avec le nom de modèle : " + GISAUConstants.ksMNFieldGISID); // Tout va bien… écrivez la valeur de la balise dans le champ. featurenew.set_Value(fieldIndex, iNewTag); featurenew.Store(); //fonctionnalitésélection.Clear(); logger.WriteLine(DateTime.Now.ToString() + " ID d'objet : " + OID + " GISID précédent : " + OID + " >> Nouveau GISID : " + iNewTag); // featurenew = featureCursor.NextFeature(); (comme je n'ai qu'une seule fonctionnalité) }

Vous devez relâcher le curseur après chaque utilisation. Ajoutez simplement ces lignes à la fin de vos codes :

System.Runtime.InteropServices.Marshal.ReleaseComObject(featureCursor2); featureCursor2 = null;

Et ajoutez une référence à l'assembly ESRI.ArcGIS.ADF.Local.


Voir la vidéo: Mosaic in ArcGIS bangla