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