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

Пара вопросов по mapapi

Поиск  Пользователи  Правила  Войти
Форум » Настольные приложения » GIS ToolKit, GIS ToolKit Active, ГИС Конструктор для Windows
Страницы: Пред. 1 2 3 4 5 След.
RSS
Пара вопросов по mapapi
 
Можно посмотреть протокол ГИС Сервера (log-файл). Если есть ошибки в работе, то они отражаются там.
Можно включить режим диагностики для отображения всех команд на сервер и результатов их выполнения. Это делается через Администратор для ГИС Сервер.
В протоколе записаны все подключения клиентов и какие данные открыты. Может клиенты работают с разными данными и т.п.
На всякий случай можно очитить кэш на клиенте в ГИС Оператор (CTRL-F5).

Выше по переписке Вы сообщали, что смена периода обновления помогла. То есть, изменения в ГИС Оператор были, а затем прекратились?
Рекомендуем работать с ГИС Оператор 13 и ГИС Сервер 9.
 
Добрый день! Для использования периода обновления в  вебтулките, необходимо  вызвать функцию GWTK.mapSetMapRefreshPeriod.
/**
* Установить период обновления карты
* @method mapSetMapRefreshPeriod
* @param map {Object} объект карты
* @param seconds {Number} период обновления динамических слоев карты, секунды
* Функция инициирует запросы изображений слоев с периодичностью seconds.
* Если seconds = 0 или undefined, обновление прекращается
*/
GWTK.mapSetMapRefreshPeriod (map, seconds)
 
Цитата
Oleg Belenkov написал:
Можно посмотреть протокол ГИС Сервера (log-файл). Если есть ошибки в работе, то они отражаются там.
Можно включить режим диагностики для отображения всех команд на сервер и результатов их выполнения. Это делается через Администратор для ГИС Сервер.
В протоколе записаны все подключения клиентов и какие данные открыты. Может клиенты работают с разными данными и т.п.
На всякий случай можно очистить кэш на клиенте в ГИС Оператор (CTRL-F5).

Не могли бы вы пояснить? Карту в коде я открываю по алиасу - HOST#localhost#2047#ALIAS#Layers_map_map.sit. Такой же алиас я наблюдаю при открытии карты в ГИС Оператор.

Цитата
Oleg Belenkov
Выше по переписке Вы сообщали, что смена периода обновления помогла. То есть, изменения в ГИС Оператор были, а затем прекратились?

Не работало и локально. Поставив секунду, на тестовом примере я увидел на карте движение объекта. Но sit файл был открыт локально. Вот здесь вы мне дали подсказку: http://gisweb.ru/forum/messages/forum2/topic10857/message82279/10857-para-voprosov-po-mapapi#message82279

Цитата
Oleg Belenkov
Рекомендуем работать с ГИС Оператор 13 и ГИС Сервер 9.

Я обновил на днях до актуальных версий с вашего сайта.
 
Провел тестовое подключение из ГИС Оператор и из своей программы. Прикладываю лог ГИС Сервера

Код
     10:09:31   [001] User = User1. Open map. Name = Layers_map_map.sit
     10:09:31   [001] [01] Open map. number = 1. Path = /var/Panorama/gisserver/Data/map/map.sit
     10:09:31   [001] [01] Open map. Rsc = /var/Panorama/gisserver/Data/map/operator.rsc



     10:11:15   [003] Connection with a server is open. Free memory (Kb) = 3255060, Date = 22/10/2020
     10:11:15   [003] Begin registration of the user. User = User1@pkoo
     10:11:15   [003] Registration of the user. User = User1@pkoo
     10:11:15   [003] User = User1. Open map. Name = Layers_map_map.sit
     10:11:15   [003] [01] Open map. number = 1. Path = /var/Panorama/gisserver/Data/map/map.sit
     10:11:15   [003] [01] Open map. Rsc = /var/Panorama/gisserver/Data/map/operator.rsc



Первое подключение - ГИС Оператора, второе - мое.
 
Цитата
Алексей написал:
Провел тестовое подключение из ГИС Оператор и из своей программы. Прикладываю лог ГИС Сервера
Просьба включить печать диагностики  и прислать нам результат.
 
Спасибо за переданный протокол. Он позволил найти причину проблемы.

Поскольку текстов Вашего приложения у нас нет, мы не смогли раньше это выяснить.

ГИС Оператор подключается к карте через ГИС Сервер.
Приложение подключается к карте  через ГИС Сервер.

Приложение открывает транзакцию на редактирование -

    14:24:05   [002] Diagnostics: Prepare command = Create action
    14:24:05   [002] [01] Diagnostics: Create action successful. Action type: 60002

Затем редактирует объект -

    14:24:05   [002] Diagnostics: Prepare command = Update object
    14:24:05   [002] [01] Diagnostics: Update object - key: 1, number: 1

    14:24:07   [002] Diagnostics: Prepare command = Update object
    14:24:07   [002] [01] Diagnostics: Update object - key: 1, number: 1

ГИС Оператор запрашивает изменения -

    14:24:08   [001] [01] Diagnostics: Check mode successful. Access/Mode/Update code = 4359/2386/1
    14:24:08   [001] [01] Diagnostics: Build updated objects list, action = 1464

    14:24:10   [001] [01] Diagnostics: Check mode successful. Access/Mode/Update code = 4359/2387/1
    14:24:10   [001] [01] Diagnostics: Build updated objects list, action = 1464

Номер транзакции не меняется. Передавать нечего. Приложение не закрывает транзакцию.
Нужно или закрывать транзакцию, когда Вы хотите увидеть изменения, или не открывать ее.
Тогда каждая операция редактирования будет транзакцией.
Вызов mapCommitObject записывает только отдельную операцию в транзакции.
Для вызова mapLogCreateAction нужен парный вызов mapLogCommitAction.
 
Цитата
Oleg Belenkov написал:

Нужно или закрывать транзакцию, когда Вы хотите увидеть изменения, или не открывать ее.
Тогда каждая операция редактирования будет транзакцией.

Спасибо за ответ. Подскажите, а без транзакций возможна работа? Мне не важна сохранность данных на карте. Тем более данные будут обновляться постоянно. Если да, то как опубликовать изменения на карте? Что использоваться вместо mapCommitObject?
 
Транзакции пишутся автоматически на каждый mapCommitObject,
если Вы не хотите сгруппировать несколько операций (mapCommitObject)
в одну транзакцию сами через mapLogCreateAction/mapLogCommitAction.

Просто уберите mapLogCreateAction в программе для данного случая.
 
Сделал тестовый пример.  mapLogCreateAction/mapLogCommitAction не использую.  Если убрать mapCommitObject - перестает обновлять. Что нужно добавить или убрать?

Код
    auto *host = "localhost";
    auto port = 2047;
    int number = mapOpenConnect(host, port);
    TMCUSERPARM user;
    string username = "User1";
    string password = "1";
    int usernameLength = username.length();
    username.copy(user.Name, usernameLength);
    user.Name[usernameLength] = 0;
    HINSTANCE instance = 0;
    int res = svStringToHash("1", user.Password, sizeof(user.Password));
    mapFreeLibrary(instance);
    auto isRegistered = mapRegisterUserEx(number, &user);
    const char *alias = "map";
    char aliasname[1024];
    mapBuildAliasName(host, port, alias, aliasname, sizeof(aliasname));
    HMAP hMap = mapOpenDataUn(WTEXT("HOST#localhost#2047#ALIAS#Layers_map_map.sit"), GENERIC_WRITE);
    HOBJ object = mapCreateObject(hMap);
    auto findObject = mapSeekObject(hMap, object, mapListName(object), 1);

    double y = 4197969.32;
    double x = 7443378.48;
    bool isNew = false;
    while (true)
    {
        long int isUpdated = 0;

        if (!isNew)
        {
            mapUpdatePointPlane(object, x + 1000, y, 1);
            isUpdated = mapUpdatePointPlane(object, x + 2000, y, 2);
        }
        else
        {
            mapUpdatePointPlane(object, x, y, 1);
            isUpdated = mapUpdatePointPlane(object, x + 1000, y, 2);
        }

        isNew = !isNew;
        auto isCommited = mapCommitObject(object);
        cout << " Is commited: " << isCommited << " Is updated: " << isUpdated << endl;
        sleep(2);
    }


 
mapCommitObject нельзя убирать.

Эта транзакция служебная, должна была закрыться автоматически -
   14:24:05   [002] [01] Diagnostics: Create action successful. Action type: 60002

Добавьте пока принудительное закрытие транзакций перед редактированием карты/объекта -

mapLogCommitAction(HMAP hMap, HSITE hSite);
или
mapLogCommitActionObject(HOBJ info);
Страницы: Пред. 1 2 3 4 5 След.
Читают тему (гостей: 1)



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

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