Shapefile in ArcMap programmgesteuert bearbeiten?

9

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);
ist_lion
quelle
Wollen Sie damit sagen, dass Sie mit den Zeichenwerkzeugen von ArcMap einige Anmerkungsebenen auf der Karte gezeichnet haben? Wenn Sie das in eine Formdatei konvertiert haben, können Sie es definitiv so bearbeiten, als wäre es ein Shapefile.
Jvangeld
Ich verwende das ArcMap.TrackPolygon, um ein IPolygon zu erstellen, und verwandle es schließlich in eine Formdatei. Was ich dann tun möchte, ist dieses Shapefile zu bearbeiten ... Ich weiß, wie man die Eigenschaften (Punkte, Füllstil, Farbe usw.)
erhält
1
Also in ArcObjects programmatisch?
Mapperz
Ja, das würde ich gerne tun
ist_lion
Vielen Dank, dass Sie die Lösung geteilt haben. Wenn Sie mit C # taggen, wird die Syntax hervorgehoben.
Patrick

Antworten:

4

Ich habe ein Shapefile programmgesteuert erstellt und bearbeitet. Vielleicht kann dies einige Hinweise zum Hinzufügen von Punkten geben: Speichern Sie IGeometry als Layer-Datei auf der Festplatte

Das Färben einer Ebene ist ziemlich einfach.

IGeoFeatureLayer geolayer = thislayer as IGeoFeatureLayer;
ISimpleRenderer simplerenderer = geolayer.Renderer as ISimpleRenderer;
if (simplerenderer != null)
{
//depending on the type one of these objects will probably not be null -- then set .Color and .Symbol 

IMarkerSymbol markersymbol = simplerenderer.Symbol as IMarkerSymbol;
ILineSymbol linesymbol = simplerenderer.Symbol as ILineSymbol;
SimpleFillSymbol simpleFillSymbol = simplerenderer.Symbol as SimpleFillSymbol;
}
Patrick
quelle
Hmm, vielleicht formuliere ich diese Frage nicht richtig. Ich kann bereits programmgesteuert eine Formdatei erstellen und speichern. Ich möchte diese bereits vorhandene Datei bearbeiten. Ich
vermute, dass
1
@PSU_Kardi Ich denke, Sie müssen featureCursor.InsertFeature (fb) verwenden; und featureCursor.DeleteFeature, um Ihre bereits vorhandene Datei zu bearbeiten
Patrick
Ich werde es untersuchen - ich denke, das ist was ich will
ist_lion