Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Николаускас
Зарегистрирован: 27.11.2013 Сообщения: 52
|
Добавлено: Пт 15 Янв 2016 18:35 Заголовок сообщения: Вопрос об IngeoMapObject |
|
|
Добрый день. Вопрос в следующем.
Пишу программу, добавляющую в ИнГЕО участки и семантику. Если при добавлении участка обнаруживаю, что такой уже имеется на карте, то новый не переношу, а семантику кладу в уже имеющийся участок.
Программу построил так, что сначала создаю объект, задаю координаты его контура(ов), после чего проверяю, есть ли такой контур на карте. Если есть то делаю переприсваивание объекта:
Код: | obj = objs.GetObject("здесь ID существующего объекта"); |
При таком подходе при выполнении objs.UpdateChanges() семантика у существующего объекта заменяется, однако на карту добавляется клон участка без семантики.
Стал делать так:
Код: | obj.DropChanges();
obj = objs.GetObject("здесь ID существующего объекта"); |
В этом случае на objs.UpdateChanges() вылетает исключение с текстом о том, что у объекта нет контуров.
Скажите, что я делаю не так? |
|
Вернуться к началу |
|
 |
Азаматов Азамат Хадисович
Зарегистрирован: 17.02.2005 Сообщения: 100 Откуда: г. Учалы, Респ. Башкортостан
|
Добавлено: Сб 16 Янв 2016 01:42 Заголовок сообщения: |
|
|
надо бы увидеть больше кода |
|
Вернуться к началу |
|
 |
Николаускас
Зарегистрирован: 27.11.2013 Сообщения: 52
|
Добавлено: Пн 18 Янв 2016 12:42 Заголовок сообщения: |
|
|
Кода довольно много, попробую привести его в общих чертах.
Код: | Ingeo.IIngeoMapObjects objs = app.ActiveDb.MapObjects;
Ingeo.IIngeoMapObject obj = objs.AddObject("ID слоя");
Ingeo.IIngeoShapes shapes = obj.Shapes;
Ingeo.IIngeoShape shape = shapes.Insert(0, "ID стиля");
Ingeo.IIngeoContour contour = shape.Contour; |
Далее код со вставкой контуров с помощью InsertVertex.
Потом с помощью app.ActiveDb.MapObjects.QueryByContour(...) проверяю существование такого участка на карте.
Далее:
Код: |
if (isMapContainsParcel) //участок уже есть
{
//obj.DropChanges();
obj = objs.GetObject("ID существующего участка");
}
else
{
objs.UpdateChanges();
} |
Далее блок кода с переносом семантики посредством obj.SemData.SetValue(...)
И в финале objs.UpdateChanges();
Если раскомментить строку с obj.DropChanges(), то при objs.UpdateChanges() выскакивает исключение с сообщением о том, что объект не имеет контуров.
То есть созданный объект никуда не исчезает при переприсваивании. Вопрос сводится к тому, как мне его грамотно обнулить, очистить и т.п. |
|
Вернуться к началу |
|
 |
Азаматов Азамат Хадисович
Зарегистрирован: 17.02.2005 Сообщения: 100 Откуда: г. Учалы, Респ. Башкортостан
|
Добавлено: Пн 18 Янв 2016 14:01 Заголовок сообщения: |
|
|
видимо отдельно собрать список "несоздавшихся" и потом удалить. |
|
Вернуться к началу |
|
 |
Николаускас
Зарегистрирован: 27.11.2013 Сообщения: 52
|
Добавлено: Пн 18 Янв 2016 16:06 Заголовок сообщения: |
|
|
Не совсем понял Вашу мысль.
Пока решил проблему вызовом DropChanges у MapObjects.
Других способов удалить объект из этого промежуточного состояния не нашел. |
|
Вернуться к началу |
|
 |
|