Ist das etwas, was getan werden kann?
Wenn ich beispielsweise eine Überlagerung auf einer Karte erstellt und als Shapefile gespeichert habe, möchte ich diese Überlagerung ( bereits vorhandene Datei ) bearbeiten ... Entweder Punkte hinzufügen / Punkte entfernen, Farbe ändern / Füllstil / etc.
Idealerweise möchte ich vermeiden, ein neues Shapefile zu erstellen und das alte zu löschen.
Gedanken?
Edit 1: OK, jetzt, wo jemand gesagt hat, dass es möglich ist. Die offensichtliche Frage ist, wie Sie das Shapefile bearbeiten (in ArcObjects programmatisch).
Bearbeiten 2: Wenn ich mir die Kommentare ansehe, muss ich so etwas tun, bin mir aber nicht sicher.
Ich habe derzeit ein grundlegendes Shapefile, das ich in ArcObjects in C # bearbeiten möchte.
Ich habe ein Shapefile erstellt, indem ich eine FeatureClass, einen Arbeitsbereich und dann offensichtlich meine Form übergeben habe. In diesem Fall handelt es sich nur um eine einfache Polylinie mit einigen Punkten. Was ich tun möchte, ist die Möglichkeit, dieses Shapefile zu aktualisieren.
Ich gehe davon aus, dass ich diese FeatureClass und diesen Arbeitsbereich wiederverwenden und in einer neuen Form übergeben muss. Was ich tue, scheint jedoch nicht zu funktionieren. Hier bin ich bei der Bearbeitung - jeder Rat wäre großartig.
IWorkspaceEdit workspaceEdit = (IWorkspaceEdit)inWorkspace;
workspaceEdit.StartEditing(true);
workspaceEdit.StartEditOperation();
ComReleaser comReleaser = new ComReleaser();
IFeatureCursor featureCursor = inFeatureClass.Update(null , true);
IFeature feature = null;
while((feature = featureCursor.NextFeature()) != null)
{
int id = feature.Fields.FindField("shape");
IFeatureBuffer featureBuffer = inFeatureClass.CreateFeatureBuffer();
featureCursor.DeleteFeature(); //Delete the old
featureBuffer.Shape = (IGeometry)inShape;
featureCursor.InsertFeature(featureBuffer);
}
workspaceEdit.StopEdidtOperation();
workspaceEdit.StopEditing(true);
EDIT 3: Endlösung
featureCursor = inFeatureClass.Update(null ,true);
//DELETE old shape
featureCursor = inFeatureClass.Insert(true);
//Insert new
workspaceEdit.StopEditOperation();
workspaceEdit.StopEditing(true);