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

Уточнение по работе mapRegisterObject + mapAvailableSemanticCode

Поиск  Пользователи  Правила  Войти
Форум » Linux » Средства разработки ГИС-приложений для Linux
Страницы: 1 2 3 След.
RSS
Уточнение по работе mapRegisterObject + mapAvailableSemanticCode
 
Доброго времени суток.

Хотелось бы для себя понять, в чём заковыка.
В теме http://gisweb.ru/forum/forum7/topic9587/messages/ я выложил код заполнения таблицы семантиками создаваемого объекта.
Если я правильно понимаю, то при регистрации объекта посредством mapRegisterObject его поля заполняются согласно классификатору обязательными и доступными семантиками,
которые я потом могу запросить через mapAvailableMustSemanticList и mapAvailableSemanticList/mapAvailableSemanticCount.
В моём случае на создаваемый объект последовательный вызов mapAvailableSemanticCode выдаёт довольно нетипичные для объекта коды.
Пользователь, создающий объект, вроде как не обязан, но может знать требуемые для создания объекта семантики.
Вопросы:
1. Наличие настроенных семантик сильно влияет на отображение объекта? (допустим отсутствует или некорректное значение текста шрифта или его цвет)
2. Каким образом я могу посмотреть наверняка, какие семантики прописаны для объектов в классификаторе, чтобы проверить процедуру создания их на карте?
3. На что следует обратить внимание, если создаваемый объект не отображается на карте? (допустим линейный, все точки добавлены и семантики по-умолчанию, из списка, полученного выше, в наличии)

Спасибо.
С уважением,
Лазарев Александр.
 
Цитата
2. Каким образом я могу посмотреть наверняка, какие семантики прописаны для объектов в классификаторе, чтобы проверить процедуру создания их на карте?

mapGetRscSemanticObjectCodeList ??
Изменено: Владимир Егоров - 10.07.2018 11:48:01
 
Цитата
Владимир Егоров написал:
Цитата
2. Каким образом я могу посмотреть наверняка, какие семантики прописаны для объектов в классификаторе, чтобы проверить процедуру создания их на карте?

mapGetRscSemanticObjectCodeList ??
Нет, скорее всего проверенным ПО, потому что работу своего кода я и хочу сверить, найти или исключить ошибки в классификаторе, полученном со стороны. Я пользуюсь SDK и, сталкиваясь с его ошибками, не могу быть уверен в том, что вызовы его методов дают корректные данные. В частности я вижу, что данные для объекта из классификатора "странные" на мой взгляд, но, не зная какие были заданы его создаталем, оценить эту странность при помощи средств библиотек не могу.
В частности в указанной в стартовом сообщении ссылке уже есть ошибка работы получения списка семантик. Как мне быть уверенным в том, что другой метод корректно выдёргивает эти семантики из классификатора?
 
operator.rsc - это реализация классификатора КЭУЗ-12, который существует в виде бумажного документа  и ещё он ДСП. Если у Вас нет документа, реализацией которого является файл operator.rsc - то, видимо, никак не проверить.
 
Цитата
Владимир Егоров написал:
operator.rsc - это реализация классификатора КЭУЗ-12, который существует в виде бумажного документа  и ещё он ДСП. Если у Вас нет документа, реализацией которого является файл operator.rsc - то, видимо, никак не проверить.
Угу, что-то типа того. Мне просто нужно удостовериться, что методы, предоставляемые SDK, работают корректно. Поэтому на всякий случай и прошу разработчиков проверить выдачу кодов из зарегистрированного объекта по использованному классификатору. Если все алгоритмы в порядке и классификатор на их стороне тоже собран корректно, тогда я буду пенять тех, кто мне выдал тот классификатор, по которому я вступил на грабли.
И да, у Панорамы нет средств просмотра классификатора и прописанных на объекты семантик? Не верю. :)
 
В смысле нету ? ГИС Оператор для силовых структур под Astra Linux запускается на Ubuntu на раз два, потом открываете классификатор и изучаете его сколько хотите.
 
Цитата
Владимир Егоров написал:
В смысле нету ? ГИС Оператор для силовых структур под Astra Linux запускается на Ubuntu на раз два, потом открываете классификатор и изучаете его сколько хотите.
Оу, не знал, сейчас посмотрю.
 
Посмотрел содержимое,  сравнил с тем, что возвращает mapAvailableSemanticCount + mapAvailableSemanticCode.
Могу сказать, что возвращаемые коды отличаются от того, что записано в классификаторе.
Коды программными средствами:
 

mapAvailableSemanticCode:  9,  31002, 31004,  108,  11401,  20101

Коды из редактора: 9, 108, 110, 11303, 11401, 20101, 31001, 31002, 31003, 31004, 31007

Исходный текст чтения приведён в тексте обсуждений по ссылке в первом сообщении.
Надо разобраться, либо я что-то не так делаю, либо что-то ещё.

Объект "Подпись 1.5 син.". Даже с классификатором из состава пакета ГИС Оператор не сходится.
Изменено: Александр Лазарев - 10.07.2018 14:24:52
 
Цитата
В реализации функции mapAvailableSemanticList допущена ошибка, связанная с неправильным анализом буфера семантик.
Оттуда же.


Есть разница мне кажется:

Код
  // Запросить список всех кодов семантики для данного объекта
  // incode - внутренний код(индекс)объекта
  // hRsc   - идентификатор классификатора карты
  // code   - адрес массива семантик
  // countlimit - размер массива
  // Возвращает число считанных кодов семантики
  // При ошибке возвращает ноль

_MAPIMP long int _MAPAPI mapGetRscSemanticObjectCodeList(HRSC hRsc,long int incode,
                                                         long int * code, long int countlimit);

mapGetRscSemanticObjectCodeList - это информация по классификатору (rscapi.h), то есть этой функцией вы работаете с классификатором, который и открыли в ГИС Оператор.
mapAvailableSemanticLis - это про объект который уже создан по классификатору и лежит в карте. И возвращается, как я понимаю, список семантик которые можно добавить к конкретно этому объекту, а не вообще все доступные сематники для вообще всех объектов данного типа. Вообще все доступные семантики надо вытаскивать из классификатора.


Это моё видение.
Ждём официальных комментариев.
 
Здравствуйте!
Цитата
Александр Лазарев написал:
1. Наличие настроенных семантик сильно влияет на отображение объекта? (допустим отсутствует или некорректное значение текста шрифта или его цвет)
Есть семантики, которые влияют на внешний вид, и которые не влияют. Если для семантики, влияющей на внешний вид, Вы успешно присвоили значение объекту, то скорее всего это значение корректно.
Цитата
Александр Лазарев написал:
2. Каким образом я могу посмотреть наверняка, какие семантики прописаны для объектов в классификаторе, чтобы проверить процедуру создания их на карте?
Семантики, которые можно назначить объекту, можно запросить из классификатора. Например, получение списка семантик по ключу объекта:
Код
  HRSC rscHandle = mapGetRscIdent(mapHandle, mapHandle);
  assert(rscHandle);

  long objectIncode = mapGetRscObjectKeyIncode(rscHandle, "312625000214");
  assert(objectIncode);

  long semanticCount = mapGetRscSemanticObjectCount(rscHandle, objectIncode, ALL_SEMANTIC);
  std::cout << "semantic count: " << semanticCount << std::endl;
  
  long semanticCodes[1024];
  memset(semanticCodes, 0, sizeof(semanticCodes));
  long isListFormed = mapGetRscSemanticObjectCodeList(rscHandle, objectIncode, semanticCodes, sizeof(semanticCodes)/sizeof(long));
  assert(isListFormed);

  for (int semanticNumber = 0; semanticNumber < semanticCount; semanticNumber++)
    std::cout << "semantic code: " << semanticCodes[semanticNumber] << std::endl;

Цитата
Александр Лазарев написал:
3. На что следует обратить внимание, если создаваемый объект не отображается на карте? (допустим линейный, все точки добавлены и семантики по-умолчанию, из списка, полученного выше, в наличии)
Можно выполнить следующие действия:
- установить вид отображения карты "Нормальный с узлами" - в этом случае будет явно отображаться метрика объекта, и Вы сможете оценить ее корректность;

- убедиться в правильности установленных для объекта параметров в классификаторе: возможно, у Вас некорректно задан вид объекта или его размеры (в этом случае он отображается очень мелко, и его не видно на карте). Это удобнее всего сделать, открыв Ваш классификатор в задаче "Редактор классификатора" в одном из настольных продуктов для Windows (например, ГИС Панорама Мини).

Страницы: 1 2 3 След.
Читают тему (гостей: 1)



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

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