Список форумов www.integro.ru www.integro.ru
ЦСИ ИНТЕГРО
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

Вопросы о IIngeoMapObjects.UpdateChanges() и IIngeoContourPart.InsertVertex(...)

 
Начать новую тему   Ответить на тему    Список форумов www.integro.ru -> Вопросы разработчиков
Предыдущая тема :: Следующая тема  
Автор Сообщение
Николаускас



Зарегистрирован: 27.11.2013
Сообщения: 52

СообщениеДобавлено: Чт 12 Ноя 2015 13:36    Заголовок сообщения: Вопросы о IIngeoMapObjects.UpdateChanges() и IIngeoContourPart.InsertVertex(...) Ответить с цитатой

Добрый день. У меня простой вопрос к знающим людям. Упомянутые в названии темы методы не возвращают значений, поэтому скажите, как я могу определить, что точка не вставилась или изменения не применились? Просто выскочит исключение или что? Какие есть способы определить, что точка не вставилась или изменения не применились?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Азаматов Азамат Хадисович



Зарегистрирован: 17.02.2005
Сообщения: 100
Откуда: г. Учалы, Респ. Башкортостан

СообщениеДобавлено: Чт 12 Ноя 2015 14:08    Заголовок сообщения: Ответить с цитатой

после insertvertex можно просто проверить последнюю точку или количество точек.

по update сложнее.
по графике исключений никогда не наблюдал, зато "непоявление"
объектов при массовом создании - запросто.
тут если только собирать id созданных/измененных объектов и
проверять внесенные изменения.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Николаускас



Зарегистрирован: 27.11.2013
Сообщения: 52

СообщениеДобавлено: Чт 12 Ноя 2015 15:38    Заголовок сообщения: Ответить с цитатой

Вот и я столкнулся с непоявлением объектов при выгрузке контуров и семантической информации большого количества участков в ИнГЕО. Интересно, что контуры некоторых участков отсутствуют, но семантическая информация о них при этом перенесена.

Как я понял из Ваших слов, такое "непоявление" - известный факт. Как же с ним бороться?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
APopov



Зарегистрирован: 19.06.2006
Сообщения: 347
Откуда: Самара

СообщениеДобавлено: Пт 13 Ноя 2015 15:45    Заголовок сообщения: Ответить с цитатой

Я с "исчезающей" графикой в своих модулях не сталкивался.
редко сталкивался с последствиями - семантика есть, объекта нет или графика у объекта пустая - как правило это результаты импортов mif/mid или dxf.

в своих модулях мы используем такие правила:
*) делать MapObjects.UpdateChanges() через какое-то кол-во объектов, например через 10000
Код:

while (...)
{
  createOrUpdateObject();
  if (++i % 10000 == 0) //% это mod
  {
     MapObjects.UpdateChanges();
     MapObjects = IngeoApp.ActiveDB.MapObjects;//таким образом сбрасываем кэш транзакции, чтоб память не жралась
  }
}

тут правда есть проблема - откатить такое создание целиком это отдельная серьёзная задача. так что нужно решать что важнее - сделать изменения или иметь возможность откатиться.

*) убедится, что территория базы покрывает создаваемые объекты. Если объекты вне территории создавать, то они кидаются в корневой сектор слоя, который со временем может переполнится и не сохранять новые объекты и ваще глюков можно нахвататься

_________________
ОАО "Самара-Информспутник",
инженер-программист Попов Артем
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
APopov



Зарегистрирован: 19.06.2006
Сообщения: 347
Откуда: Самара

СообщениеДобавлено: Пт 13 Ноя 2015 15:52    Заголовок сообщения: Ответить с цитатой

insertvertex никогда не подводил.
правда был глюк в C# в режиме Debug некоторые точки (как правило последние) оказывались равны 0.
Но в release сборке такого не было и вроде больше к этому мы не возвращались.

Были проблемы с другими методами
Код:

  // эти две процедуры живы только потому что существуед баг при использовании AddPartsFrom
  // к контуру в котором уже есть части
  procedure InsertContourPartsFrom(const destCont, srcCont:IIngeoContour);
  procedure AddContourPartsFrom(const destCont, srcCont:IIngeoContour);

  function ExtractContourPart(const inApp: IIngeoApplication;
    const iCont :IIngeoContour; cpNo :integer):IIngeoContour;

там реализованы очевидные вещи через
Код:
iCP.GetVertex(j, x, y, ac);
iResCP.InsertVertex(j, x, y, ac);

т.е. InsertVertex для нас надёжная процедура

_________________
ОАО "Самара-Информспутник",
инженер-программист Попов Артем
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Николаускас



Зарегистрирован: 27.11.2013
Сообщения: 52

СообщениеДобавлено: Чт 26 Ноя 2015 18:55    Заголовок сообщения: Ответить с цитатой

Спасибо за ответы. А есть ли другие способы обеспечить появление на карте всех участков, кроме как выполнением MapObjects.UpdateChanges() только через определенное количество участков? Поскольку этот способ порождает, как уже упоминалось, много лишних забот.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Николаускас



Зарегистрирован: 27.11.2013
Сообщения: 52

СообщениеДобавлено: Ср 16 Дек 2015 13:53    Заголовок сообщения: Ответить с цитатой

Вопрос снимается. Буду просто проверять входит ли выгружаемый участок в границы территории. Раз такая беда с этими секторами. Всем спасибо за ответы.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов www.integro.ru -> Вопросы разработчиков Часовой пояс: GMT + 5
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете добавлять приложения в этом форуме
Вы можете скачивать файлы в этом форуме


© phpBB Group
Русская поддержка phpBB