Это то, что можно сделать?
Например, если я создал наложение на карте и сохранил его как шейп -файл , я хочу перейти и отредактировать это ( существующий файл. ) Наложение ... Либо добавьте точки / удалите точки, измените цвет / fillstyle / и т. Д.
В идеале я хочу избежать создания нового шейп-файла и удаления старого.
Мысли?
Редактировать 1: Хорошо, теперь, когда кто-то сказал, что это можно сделать. Очевидный вопрос: как вы редактируете шейп-файл (в ArcObjects программно)?
Изменить 2: Глядя на комментарии, кажется, мне нужно сделать что-то вроде этого, но я не уверен.
В настоящее время у меня есть основной шейп-файл, который я хочу редактировать в ArcObjects в C #.
Я создал шейп-файл, создав FeatureClass, Workspace, а затем, очевидно, передав мою форму. В данном случае это просто простая полилиния с несколькими точками. Я хотел бы иметь возможность обновлять этот шейп-файл.
Я предполагаю, что мне нужно повторно использовать этот FeatureClass, Workspace и перейти в новую форму. Однако то, что я делаю, похоже, не работает. Это где я нахожусь на редактировании - любой совет будет отличным.
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);
РЕДАКТИРОВАТЬ 3: окончательное решение
featureCursor = inFeatureClass.Update(null ,true);
//DELETE old shape
featureCursor = inFeatureClass.Insert(true);
//Insert new
workspaceEdit.StopEditOperation();
workspaceEdit.StopEditing(true);