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

проблема добавления/изменения семантики объектов карты

Поиск  Пользователи  Правила  Войти
Форум » Настольные приложения » GIS ToolKit, GIS ToolKit Active, ГИС Конструктор для Windows
Страницы: Пред. 1 2 3 4 5 6 След.
RSS
проблема добавления/изменения семантики объектов карты
 
Пришлите карту и Ваш исходный код приложения на e-mail техподдержки - panorama@gisinfo.ru
Желательно урезанный но рабочий вариант - только открытие карты, поиск и изменение объекта
 
не могу. карта не моя.
только что проверено на проверочной карте картографов (до 20 тыс. объектов) - нет ошибок.
проверено на двух разных компах. ни на одном ошибок не проявилось.
сейчас узнаю дадут ли карту или нет
есть подозрение что сбой проявляется только для больших карт !
Изменено: mihalych72 - 21.12.2022 15:18:33
 
извините. сразу не понял о чем речь.исходный код сейчас попробую передать на почту.
опять же оговариваюсь: код не маленький и придется передавать только куски кода.
Изменено: mihalych72 - 21.12.2022 15:26:36
 
Денис, я был занят
картографы обновили карту. по всем объектам они добавили нужную семантику с пустым значением
пока выполняется обновление. сбоя нет.
похоже проблема тут:

//===================================================//  ДОБАВИТЬ СЕМАНТИЧЕСКУЮ ХАРАКТЕРИСТИКУ СО СТРОКОВЫМ ЗНАЧЕНИЕМ
//     Code  - Внешний код семантики
//     Value - Добавляемое значение
//     возвращает: номер добавленной характеристики в семантике объекта,
//                 0 - не удалось
//===================================================
function TMapSemantic.AddWithValue(Code:integer; Value : string):integer;
см. мой код в начале темы.

обновление значения семантики нормально отрабатывает.
Изменено: mihalych72 - 21.12.2022 17:07:47
 
странно то, что на других картах добавление семантики выполняется норм.
карторафа давали карты со соброшенной свемантикой и добавление нужной семантики давало сбой по всем объектам.
тогда они установили семантику с пустым значением.
сейчас обновляется такая карта - все норм.

обновление длится от 5 минут до часа. на разных картах по разному.
на этой - 30 минут. уже заканчивает. пока проблем нет.
 
обновление завершено
ошибок нет.
обновление семантики отработано успешно.
обновлено 20200 объектов.


на другой карте добавление семантики отработано было успешно. вот это и не понятно.

попробую реализовать добавление через gisapi  с логированием.

может получится найти где именно валится...
 
найдена ошибка в gtk
после доработки через gisapi все заработало
проверялось на проблемной карте
 
Цитата
mihalych72 написал:
найдена ошибка в gtk

если можно, поподробнее
 
ошибка в Semantic.AddWithValue( aCode, aValue);
там ошибка в передаче длины строки. зачем +1?

вот этот код нормально отработал:
здесь добавляется значение семантики 0 (не #0!) а потом значение меняется на нужное.
если добавить пустое значение семантики тоже возаращается ошибка.
function TGTK_MapFindHelper.ChangeSemanticCodeValue( const aCode: integer;                                                     const aValue: string;

                                                    aCommit: boolean = TRUE): Boolean;
const
 cnNullAStr: array[ 0..1] of AnsiChar = ('0',#0);
var
 xIndex: integer;
begin
...//      xIndex := fMapFindObj.Semantic.AddWithValue( aCode, aValue);
     xIndex := mapAppendSemantic( fMapFindObj.ObjHandle,
                                  aCode,
                                  PAnsiChar( ADDR( cnNullAStr[ 0])),
                                  1);
     if ( xIndex <= 0) then begin
       DoLogError( '???? ?????????? ???? ????????? %d', [ aCode]);
       exit;
...

так же была ошибка после фиксации коммита изменения карты (mapLogCommitAction вернула 0):
                   if ( mapLogCommitAction( MapView.MapHandle, 0) <> 0) then begin
                     DoLogAction( 'Успешно выполнена транзакция обновления карты.');
                     Result := TRUE;
                   end else begin
                     DoLogError( 'Сбой закрытия транзакции обновления карты.');
                     DoLogError( 'Не понятен результат обновления карты');
                     //EXIT;
                   end;

и это после часового обновления карты.
не знаю что не так. пришлось убрать транзакции из проекта.
 
Добрый день!

Спасибо за информацию!
Мы внесли правки в методы добавления семантики. В ближайшее время выложим обновленный GIS ToolKit на сайт.

Цитата
mihalych72 написал:
так же была ошибка после фиксации коммита изменения карты (mapLogCommitAction вернула 0)

А что до этого вернула функция mapLogCreateAction при создании транзакции? И с каким кодом типа транзакции Вы ее создавали?

Для записи транзакции лучше использовать более новую функцию, которая позволяет узнать не только количество операций в транзакции, но и ее номер в журнале.
Цитата
// Закрыть запись транзакции
// hMap  - идентификатор открытой карты
// hSite - идентификатор открытой пользовательской карты    
// number - поле для записи номера выполненной транзакции в журнале транзакций
// Возвращает число выполненных операций в транзакции для карты  
// Если число транзакций не может быть определено возвращает -1  
// При ошибке возвращает ноль

 function mapLogCommitActionEx(HMap:HMap; HSite:HSite; number : PInteger) : integer;
   stdcall external sGisAcces;

После записи транзакции можно проверить ее наличие журнале транзакций карты: ГИС "Панорама" - главное меню - Задачи - Запуск приложений - Контроль и исправление данных - Просмотр журнала транзакций.
Страницы: Пред. 1 2 3 4 5 6 След.
Читают тему (гостей: 1)



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

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