Mengedit shapefile di ArcMap secara terprogram?


9

Apakah ini sesuatu yang bisa dilakukan?

Sebagai contoh jika saya membuat overlay pada peta dan menyimpannya sebagai shapefile, saya ingin pergi dan mengedit overlay ini ( file yang sudah ada. ) ... Entah menambah / menghapus poin, ubah warna / fillstyle / dll.

Idealnya saya ingin menghindari membuat shapefile baru dan menghapus yang lama.

Pikiran?

Sunting 1: Oke, sekarang seseorang telah mengatakan itu bisa dilakukan. Pertanyaan yang jelas adalah, bagaimana Anda mengedit shapefile (dalam ArcObjects pro-gramatikal)?

Sunting 2: Melihat komentar sepertinya saya perlu melakukan sesuatu seperti ini, tapi saya tidak yakin.

Saat ini saya memiliki shapefile dasar yang ingin saya edit di ArcObjects di C #.

Saya telah membuat shapefile dengan membuat FeatureClass, Workspace dan kemudian dengan jelas melewati bentuk saya. Dalam hal ini hanya Polyline sederhana dengan beberapa poin di atasnya. Yang ingin saya lakukan adalah memiliki kemampuan untuk memperbarui shapefile ini.

Saya berasumsi saya harus menggunakan kembali FeatureClass itu, Workspace dan lulus dalam bentuk baru. Namun, apa yang saya lakukan sepertinya tidak berhasil. Di sinilah saya berada di edit - saran apa pun akan bagus.

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: Solusi Akhir

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

Apakah Anda mengatakan bahwa Anda menggambar beberapa lapisan penjelasan pada peta dengan alat menggambar ArcMap? Jika Anda mengonversinya menjadi file bentuk, Anda pasti dapat mengeditnya seolah-olah itu adalah shapefile.
jvangeld

Saya menggunakan ArcMap.TrackPolygon untuk membuat IPolygon dan kemudian saya mengubahnya menjadi file bentuk. Apa yang ingin saya lakukan adalah mengedit shapefile ini .... Saya tahu bagaimana cara mendapatkan properti (poin, fillstyle, warna, dll)
ist_lion

1
Jadi di ArcObjects pro-gramatikal?
Mapperz

Ya itulah yang ingin saya lakukan
ist_lion

Terima kasih telah berbagi solusinya, fyi jika Anda memberi tag dengan C # Anda akan mendapatkan penyorotan sintaksis.
patrick

Jawaban:


4

Saya membuat dan memanipulasi shapefile secara terprogram - jadi mungkin ini dapat memberikan beberapa petunjuk untuk menambahkan poin: simpan IGeometry ke disk sebagai file Layer

Sedangkan untuk mewarnai lapisan, itu cukup sederhana.

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, mungkin saya tidak menjawab pertanyaan ini dengan benar. Saya sudah bisa membuat dan menyimpan file bentuk secara terprogram. Yang ingin saya lakukan adalah mengedit file yang sudah ada ini. Saya kira logika yang sama akan bekerja ....
ist_lion

1
@PSU_Kardi Saya pikir Anda harus menggunakan featureCursor.InsertFeature (fb); dan featureCursor.DeleteFeature untuk mengedit file Anda yang sudah ada sebelumnya
patrick

Saya akan memeriksanya - saya pikir itulah yang saya inginkan
ist_lion
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.