Chỉnh sửa shapefile trong ArcMap theo chương trình?


9

Đây có phải là một cái gì đó có thể được thực hiện?

Chẳng hạn, nếu tôi đã tạo một lớp phủ trên bản đồ và lưu nó dưới dạng shapefile, tôi muốn đi và chỉnh sửa lớp phủ này ( tệp có sẵn. ) ... Hoặc thêm điểm / xóa điểm thay đổi màu / fillstyle / v.v.

Lý tưởng nhất là tôi muốn tránh tạo một shapefile mới và xóa cái cũ.

Suy nghĩ?

Chỉnh sửa 1: OK, bây giờ ai đó đã nói nó có thể được thực hiện. Câu hỏi rõ ràng là, làm thế nào để bạn chỉnh sửa shapefile (trong ArcObjects theo ngữ pháp)?

Chỉnh sửa 2: Nhìn vào các bình luận có vẻ như tôi cần phải làm một cái gì đó như thế này, nhưng tôi không chắc chắn.

Tôi hiện có một shapefile cơ bản mà tôi muốn chỉnh sửa trong ArcObjects trong C #.

Tôi đã tạo một shapefile bằng cách tạo FeatureClass, Workspace và sau đó rõ ràng chuyển qua hình dạng của tôi. Trong trường hợp này, nó chỉ là một Polyline đơn giản với một vài điểm trên đó. Những gì tôi muốn làm là có khả năng cập nhật shapefile này.

Tôi giả sử tôi cần sử dụng lại FeatureClass, Workspace đó và chuyển sang hình dạng mới. Tuy nhiên, những gì tôi đang làm dường như không hoạt động. Đây là nơi tôi đang chỉnh sửa - mọi lời khuyên sẽ rất tuyệt.

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: Giải pháp cuối cùng

featureCursor = inFeatureClass.Update(null ,true);
//DELETE old shape
featureCursor = inFeatureClass.Insert(true);
//Insert new 
workspaceEdit.StopEditOperation();
workspaceEdit.StopEditing(true);

Bạn đang nói rằng bạn đã vẽ một số lớp chú thích trên bản đồ bằng các công cụ vẽ của ArcMap? Nếu bạn đã chuyển đổi nó thành một tệp hình dạng, bạn chắc chắn có thể chỉnh sửa nó như thể nó là một shapefile.
jvangeld

Tôi đang sử dụng ArcMap.TrackPolygon để tạo IPolygon và cuối cùng tôi biến nó thành một tệp hình dạng. Những gì tôi muốn làm sau đó là chỉnh sửa shapefile này .... Tôi biết làm thế nào để có được các thuộc tính (điểm, fillstyle, màu sắc, v.v.)
ist_lion

1
Vậy trong ArcObjects pro-grammaratic?
Mapperz

Vâng, đó là những gì tôi muốn làm
ist_lion

Cảm ơn đã chia sẻ giải pháp, fyi nếu bạn gắn thẻ với C #, bạn sẽ nhận được tô sáng cú pháp.
patrick

Câu trả lời:


4

Tôi đã tạo và thao tác một shapefile theo chương trình - vì vậy có lẽ điều này có thể cung cấp một số gợi ý để thêm điểm: lưu IGeometry vào đĩa dưới dạng tệp Layer

Đối với việc tô màu một lớp, điều đó khá đơn giản.

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, có lẽ tôi không diễn đạt chính xác câu hỏi này. Tôi đã có thể tạo và lưu một tệp hình dạng theo chương trình. Những gì tôi muốn làm là chỉnh sửa tập tin có sẵn này. Tôi đoán logic tương tự sẽ hoạt động mặc dù ....
ist_lion

1
@PSU_Kardi Tôi nghĩ bạn phải sử dụng tính năngCoder.InsertFeature (fb); và FeatureCoder.DeleteFeature để chỉnh sửa tệp có sẵn của bạn
patrick

Tôi sẽ xem xét nó - Tôi nghĩ đó là những gì tôi muốn
ist_lion
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.