Mehr

Aktualisieren von Feature-Datensätzen in ArcGIS 10

Aktualisieren von Feature-Datensätzen in ArcGIS 10


Ich muss mehrere Feature-Datensätze in ArcGIS über ArcObjects aktualisieren. Unten ist mein Code.

Es läuft zum ersten Mal gut, aber es gibt mir einen Fehler, während es den Abfragefilter für das nächste Mal ausführen wird, wenn es mir einen Fehler gibt.Nicht ausreichende Berechtigungen".

foreach (Test toProcess in forProcess) { Int OID = toProcess.R1; int GISID = toProcess.R2; double sLength = toProcess.R3; Zeichenfolge wobeic = "OBJEKTID = '" + OID + "' UND GISID = '" + GISID + "'"; //Abfragefilter initialisieren queryFilter.SubFields = "*"; queryFilter.WhereClause = wherec; //Suche durch queryfilter IFeatureCursor featureCursor2 = featureClass.Search(queryFilter, false); //Ausgabe-Features abrufen IFeature featurenew = featureCursor2.NextFeature(); //while (featurenew != null) (wird nicht gleichzeitig verwendet, da nur 1 Feature gleichzeitig verwendet wird) //{ IObject pObject = featurenew; int iNewTag = GISAUConstants.kiNoSequenceValue; // Holen Sie sich einen neuen Tag-Wert aus der Tag-Sequenz im Arbeitsbereich. iNewTag = CommonFunct.GetSequenceValue(GISAUConstants.ksGISIDSequenceName, Arbeitsbereich); if (iNewTag <= GISAUConstants.kiNoSequenceValue) throw new Exception("Ungültiger Tag-Wert: " + iNewTag); // Feldindex nach Modellnamen abrufen. int fieldIndex = CommonFunct.GetFirstFieldIndexByModelName(pObject, GISAUConstants.ksMNFieldGISID); // Haben wir einen gültigen Feldindex erhalten? if (fieldIndex == GISAUConstants.kiNoField) throw new Exception(" hat kein Feld mit Modellname: " + GISAUConstants.ksMNFieldGISID); // Alles ist gut… Tag-Wert in das Feld schreiben. featurenew.set_Value(fieldIndex, iNewTag); Featurenew.Store(); //Funktionsauswahl.Clear(); logger.WriteLine(DateTime.Now.ToString() + " Objekt-ID : " + OID + " Vorherige GISID : " + OID + " >> Neue GISID : " + iNewTag); //featurenew = featureCursor.NextFeature(); (da ich nur ein einzelnes Feature habe) }

Sie müssen den Cursor nach jeder Verwendung loslassen. Fügen Sie einfach diese Zeilen am Ende Ihrer Codes hinzu:

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

Fügen Sie einen Verweis auf die Assembly ESRI.ArcGIS.ADF.Local hinzu.


Schau das Video: A Complete Beginners Guide to ArcGIS Desktop Part 1