Програма редагування формфайлу в ArcMap?


9

Це щось, що можна зробити?

Наприклад, якщо я створив накладку на карті і зберег її як файл форми, я хочу перейти та відредагувати це ( попередньо існуючий файл. ) Накладення ... Або додайте точки / видаліть точки, змінить колір / 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);

EDIT 3: Остаточне рішення

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

Ви хочете сказати, що ви намалювали якісь шари анотацій на карті інструментами малювання ArcMap? Якщо ви перетворили це у файл форми, ви можете напевно відредагувати його так, ніби це файл форми.
jvangeld

Я використовую ArcMap.TrackPolygon для створення IPolygon, а потім перетворюю це у файл форми. Тоді я хочу зробити це редагування цього формату .... Я знаю, як отримати властивості (точки, стиль стилю, колір тощо)
ist_lion

1
Так в ArcObjects програматично?
Mapperz

Так, це я хотів би зробити
ist_lion

Дякуємо за те, що поділилися рішенням, fyi, якщо ви позначите тегом C #, ви отримаєте виділення синтаксису.
Патрік

Відповіді:


4

Я створив і маніпулював форм-файлом програмно - тому, можливо, це може надати певні підказки для додавання точок: збережіть IGeometry на диску як файл шару

Що стосується фарбування шару, то це досить просто.

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

Хм, мабуть, я не правильно формулюю це питання. Я вже можу створити і зберегти файл форми програмно. Що я хочу зробити - це відредагувати цей попередньо існуючий файл. Я здогадуюсь, що така ж логіка буде працювати, хоча ....
ist_lion

1
@PSU_Kardi Я думаю, що ви повинні використовувати функціюCursor.InsertFeature (fb); та особливістьCursor.DeleteFeature для редагування попереднього файлу
Патрік

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.