На главную... Продукты | Технологии | Классификаторы | Проекты | Скачать | Цены| Форум | Статьи | Обучение | Контакты

TMapView добавление множества объектов

Поиск  Пользователи  Правила  Войти
Форум » Настольные приложения » GIS ToolKit, GIS ToolKit Active, ГИС Конструктор для Windows
Страницы: Пред. 1 2
RSS
TMapView добавление множества объектов, Оптимизация отрисовки
 
Привет. Есть идеи что может быть?
 
При включении потоковой загрузки система выполняет буферизацию записи на диск в оперативной памяти.
До закрытия приложения данные корректны и поиск работает.
При завершении приложения без корректного закрытия/сохранения карты (это предположение),
данные в буфере не дописываются на диск и при последующем открытии карта работает с ошибками.

Попробуйте после завершения обработки вызвать явно функцию "Save" для карты.
Код
  // Сохранить текущее состояние карты на диск
  // hMap - идентификатор основной векторной карты
  // hSite - идентификатор открытой пользовательской карты
  // force - сохранять всегда, если не 0, или только при редактировании
  // При выполнении редактирования карты с отключенным
  // журналом транзакций состояние карты в памяти и
  // на диске может отличаться, в этом случае можно
  // вызвать mapSaveSite

_MAPIMP void _MAPAPI mapSaveSite(HMAP hMap, HSITE hSite, long int force);
Обычное закрытие карты должно само вызывать эту функцию.
 
Вроде починилось. Спасибо.

Подскажите, а почему по ветке GIS ToolKit регулярно дают решения из mapApi а не из GIS Tool Kit ? )))
 
Цитата
Валерий Валериевич написал:
Подскажите, а почему по ветке GIS ToolKit регулярно дают решения из mapApi а не из GIS Tool Kit ? )))

Ветка форума "GIS ToolKit" посвящена средствам разработки ГИС-приложений.
Это обобщенное наименование и так сложилось исторически.

Фактически сюда включаются:
- GIS ToolKit
- GIS ToolKit Active
- GIS WebToolKit SE
- ГИС Конструктор для Qt Designer
Также здесь обсуждаются вопросы, связанные с разработкой:
- прикладных задач на основе соответствующих SDK для работы в ГИС Панорама (ГИС Карта) или в ГИС Оператор на основе интерфейса PANTASK;
- библиотек пользовательских условных знаков IML;

Все выше перечисленные инструменты базируются на нашем ГИС-ядре, доступ к которому осуществляется посредством интерфейса MAPAPI.
Любой наш инструментарий совместим с MAPAPI, то есть Вы можете использовать вызовы MAPAPI совместно с методами компонентов того или иного инструментария, дополняя тем самым его функционал.
Далеко не все вызовы MAPAPI реализованы в виде методов или свойств компонентов GIS ToolKit.
Если Ваши задачи не покрываются штатными методами компонентов и классов используемого Вами инструментария, то стоит обращать внимание на возможности MAPAPI и, при необходимости, использовать их совместно.

Кстати, предложенный Вам выше вызов функции MAPAPI mapSaveSite реализован в GIS ToolKit в виде метода класса TMapSite - TMapSite.SaveSite.
Можно использовать любой вариант.
 
Добрый день.
Опять наткнулись на проблему... при добавлении порядка 1,5 млн точечных объектов после 800 тыс - 1,1млн объекта (примерно) валится библиотека Qt5Cored.dll
При этом приложение сжирает больше 300Мб оперативки. Не знаю поможет или нет.. задача с пустым ситом занимает порядка 200Мб, с 800 тыс объектов - 300Мб.

Если выводить примерно 500 тыс объектов.. то все нормально проходит.
Если не добавлять объекты на карту, а просто пробежаться по ним (получить из БД) - все проходит и память не выжирается. (это делали для определения проблемного места в коде).

Вот содержимое функции создания объекта, которая вызывается в цикле по объектам

axMapObjectFULL->dynamicCall( "CreateObjectByKey(int,int,QString)", 1, IDDOUBLE2, code );

semantic = axMapObjectFULL->querySubObject( "Semantic" );
semantic->dynamicCall( "AddWithValue(int,QString)", 11111, semanticStr );

metricts = axMapObjectFULL->querySubObject( "Metric" );
   
double addedPointLat = pLat;
double addedPointLon = pLon;

axMapObjectPointFULL->dynamicCall( "SetPoint(double,double)", addedPointLat, addedPointLon );
metricts->dynamicCall( "Append(int,aiMapPoint)", 0, axMapObjectPointFULL->asVariant() );

axMapObjectFULL->dynamicCall( "commitObject()" );
Изменено: Валерий Валериевич - 30.05.2019 15:53:39
Страницы: Пред. 1 2
Читают тему (гостей: 1)



© КБ Панорама, 1991-2024

Регистрируясь или авторизуясь на форуме, Вы соглашаетесь с Политикой конфиденциальности