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);

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;
}

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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.