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

SXF: Кодировка подписи объекта, длина подписи, количество точек метрики объекта

Поиск  Пользователи  Правила  Войти
Форум » Настольные приложения » GIS ToolKit
Страницы: 1 2 След.
RSS
SXF: Кодировка подписи объекта, длина подписи, количество точек метрики объекта, Вопросы, ответы на которые не были найдены в официальной документации
 
Доброго времени суток!
Имею следующие вопросы на которые, надеюсь, кто-нибудь сможет помочь найти ответы. :)

1. Как определить какая кодировка была использована при записи подписи объекта? Правильно ли я понимаю, что если установлен 5ый бит 21го байта заголовка объекта, то подпись кодируется в формате Unicode. Во всех остальных случаях, она зависит от значения "Флага кодировки текстов подписей объектов"? Если нет поправьте. Если да, то почему "Флаг кодировки текстов подписей объектов" имеется сразу в двух местах - в заголовке SXF-файла и в дескрипторе? Они означают одно и тоже? При изменении значения в одном месте, оно также должно быть изменено и в другом? Что произойдет если значения будут разными?

2. Верно ли панорамы различных версий (начиная с 7.25 и заканчивая 11ой) записывают длину подписи в метрике объекта? Судя по документации L должна содержать количество байт, отведенных под текст подписи, исключая себя и терминирующий 0. На деле, в случае с линейное подписью, он включает в себя 0. В случае с шаблоном подписи ведет себя и вовсе странно - при длине подписи в 3 байта, записывает в длину 6. Вы можете возразить, что это из-за того, что каждый символ кодируется двумя байтами, но нет - там действительно 3 байта, за которыми следует \0 и фрагменты следующего подобъекта. Поскольку \0 присутствует всегда, то считать подпись труда не составит, но у меня вопрос - что я должен записывать в это самое L при изменении подписи? Или панорама тоже на него чихать хотела и читает все до первого \0? Как быть?

3. И совсем уж мелочь - при записи количества точек объекта при n < 65535, что записывать в "длинную" длину метрики? Тоже самое, что и в "короткую" или 0?

Надеюсь, кто-нибудь сможет помочь. Заранее спасибо, уважаемым форумчанам! :)
 
1. Я читаю данные из заголовка объекта. Пока проблем не было.
2. За нулём, ограничивающим сам текст, следует байт выравнивания. Сам размер поля может быть выравнен на длину поля координаты (например на 8 байт для координат в double). Всё это описано в спецификации на SXF.
3. Всё едино. Ставьте 0, чтобы не смущало Вас самого.
 
Цитата
Газонокосильщик пишет:
1. Я читаю данные из заголовка объекта. Пока проблем не было.

2. За нулём, ограничивающим сам текст, следует байт выравнивания. Сам размер поля может быть выравнен на длину поля координаты (например на 8 байт для координат в double). Всё это описано в спецификации на SXF.
1. Ммм, тогда вопрос: а для чего собственно существуют эти самые "Флаги кодировки текстов подписей объектов" в загловке файла и дескрипторе?
2. Спасибо, нашел. Хочется материться и кого-нибудь придушить...
 
1. ИМХО - дань традиции.
2. Зачем? Надо внимательнее спецификацию читать! :)
 
Цитата
Газонокосильщик пишет:
1. ИМХО - дань традиции.
2. Зачем? Надо внимательнее спецификацию читать! :)
1. Понял, еще раз спасибо!
2. За все те битовые флаги по 11 штук на байт, половинчатые байты, ошибки в документации (которая пытается убедить, что в байте 9 бит), Приложение 3 (которое оказалось приложением Ж), и прочие прелести, оставшиеся позади. :) А насчет внимательности эт да! Исправлюсь! :)

Еще раз огромное спасибо!
 
Хозяйке на заметку - иногда попадаются подписи с символами 0х13 0х10 на конце. Иногда после удаления этих символов подпись вырождается в ничто.
 
Цитата
Газонокосильщик пишет:
Хозяйке на заметку - иногда попадаются подписи с символами 0х13 0х10 на конце. Иногда после удаления этих символов подпись вырождается в ничто.
В следующий раз при этой ситуации просьба прислать данные, чтобы с вырождением разобраться.
 
Цитата
с символами 0х13 0х10 на конце
В смысле - с символами 0x0D 0x0A!!!
Цитата
Andrey Gheleznyakov пишет:
В следующий раз при этой ситуации просьба прислать данные
Пороюсь в своём SXF-архиве! Этот код у меня не просто так появился:
Код
    
    sxfhClearTextTail(txt);  // проверка \r\n на хвосте
    if (strlen(txt) > 0)
      objTxt->Add(String(txt));
    else objTxt->Add("");    // вырожденная подпись

ЗЫ - пробовал симитировать "пустой ввод" текста в самой Панораме. 11-я версия такое не допускает. Насчёт более ранних - не знаю :(
 
Нашёл! Это сотка N-37-002. В ней рамка 91000000 и подпись 92020000 (№ объекта 20546). Полностью файл, сами понимаете, выслать не могу :( . Но картинка вот:

Красная точка слева от сооружения башенного типа - это и есть объект № 20546.
Рамка и "подпись" - http://ifolder.ru/21622320
---
Сам исходный файл - от апреля 2005 года (хотя бы косвенно можно судить о версии Панорамы, в которой он был создан).
Изменено: Газонокосильщик - 30.01.2011 21:04:21
 
Флаг кодировки подписей в заголовке SXF указывает на кодировку однобайтового текста.
Когда-то он был в кодировке DOS (ASCII), в версии 4 обычно в кодировке Windows (ANSI), но при создании данных в Linux может быть KOI-8R.

2-ух байтовая кодировка UNICODE может встречаться в конкретной подписи конкретного объекта в комбинации с любым флажком в заголовке SXF. При этом устанавливается флажок UNICODE у конкретного объекта.

Битовые флажки по 11 или 9 бит на байт не вижу. Биты указываются со словом бит. Если стоит просто число, то это в байтах.

Ссылку на Приложение Ж поправили. Спасибо за информацию!
Страницы: 1 2 След.
Читают тему (гостей: 1)



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

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