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

обновление карты

Поиск  Пользователи  Правила  Войти
Форум » Настольные приложения » GIS ToolKit, GIS ToolKit Active, ГИС Конструктор для Windows
Страницы: 1
RSS
обновление карты
 
по задаче требуется обновить объекты на большой карте (>>20тыс. объектов)
по каждому объекту нужно обновить данные в семантике.
объект обновляется так:
mapobj := ищется объект по key
ищется индекс семантике по коду в mapobj
обновляется значение семантике в mapobj
mapobj.commit;

к функционалу претензий нет - все работает, но очень медленно.
есть ли групповая операция сохранения данных в карте, а не поштучное сохранение, по аналогии - транзакции в бд?
Изменено: mihalych72 - 19.12.2022 14:23:33
 
была мысль сделать ram-disk но комп не мой. доступа по рдп туда нет.
 
Добрый день!

Пакет операций лучше выполнять в отдельной явно открываемой транзакции.
Когда выполняется сохранение объекта, а явно открытой транзакции нет, для каждого сохранения объекта будет открываться и закрываться неявная транзакция, что работает медленнее.
Поэтому для ускорения пакетных операций рекомендуется управлять транзакциями самостоятельно - то есть явно открыть транзакцию вначале (mapLogCreateAction) и закрыть по окончании (mapLogCommitAction).

Еще вариант - отключить ведение журнала транзакций (mapLogAccess). Но это не позволит выполнить отмену операций.

Также позволяет ускорить работу открытие данных в Вашем приложении в монопольном доступе - mapSetExclusiveAccess (установить режим до открытия данных).

Если нужно выполнить изменение каждого (или почти каждого) объекта карты, то лучше не выполнять поиск объекта по Key, а просто перебрать по порядковому номеру (mapReadObjectByNumberEx либо TMapObj.ReadObjectByNumberEx) все объекты карты от первого (c 1) до последнего (mapGetSiteObjectCount или TMapSite.SiteObjectCount).
 
Денис, здравствуйте
при вызове mapLogAccess( mapview.handle, 0, $10000) возникает access violation в какой то dll
лог дать не могу.
из-за срочности работы пришлось вернуть все обратно.
Изменено: mihalych72 - 19.12.2022 17:41:59
 
здесь я виноват.
вместо mapview.handle нужно указывать mapview.maphandle
вопрос решен
Страницы: 1
Читают тему (гостей: 1)



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

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