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

формат файла RSW

Поиск  Пользователи  Правила  Войти
Форум » Общие вопросы » Конвертация данных
Страницы: 1 2 След.
RSS
формат файла RSW, Извлечение изображения из файла RSW
 
Столкнулся с такой ситуацией. Имеется файл RSW, в заголовке которого указана версия 0x201. Это означает, что практически все смещения указаны (согласно документации на файлы MTW и RSW) в параграфах по 256 байт.
Выбираю блок смещение на описатель блоков. Выбираю из описателя смещение на блок данных. В документации не написано смещение на блок данных также в параграфах по 256 байт или это смещение
указано просто в байтах от начала файла (пробовал выбирать данные и так и так). Кроме того, указано, что блоки данных сжаты. Номер алгоритма сжатия равен 2. Пробовал распаковать  данные по алгоритму,
приведённому в документации. Картинки из этих данных не получается. При разборе данных файла RSW версии 0x200 получается нормальное изображение.
Подскажите: 1. В случае версии файла 0x201 смещение на блок данных указано в параграфах по 256 байт или просто в байтах.
                     2. Как распаковывать сжатые блоки данных.
 
Цитата
Александр Черноусов написал:
Столкнулся с такой ситуацией. Имеется файл RSW, в заголовке которого указана версия 0x201. Это означает, что практически все смещения указаны (согласно документации на файлы MTW и RSW) в параграфах по 256 байт.
Добрый день!
Просьба уточнить программу и версию в которой работаете?
Ответ в похожей теме:
https://www.gisweb.ru/forum/messages/forum17/topic9050/message67780/9050-chtenie-rsw-0x201#message67...
 
Добрый день!
Программа написана без использования API КБ "Панорама" на C++.
Файл RSW имеет версию 0x201. Выбирается смещение на описатель блоков. Это смещение указано в параграфах по 256 байт.
Из описателя конкретного блока выбирается смещение на блок данных. Это смещение указано в байтах от начала файла или в параграфах по 256 байт.?
Похоже, что в байтах. (Пробовал в параграфах по 256 байт, получается ерунда).
Далее выбираю длину блока. Длина блока меньше, чем произведение ширина блока * высота блока * размер эл-та (в байтах).
Номер алгоритма сжатия блоков (из заголовка файла) равен 2, т.е. блок сжат. Пробую использовать функцию DecompressMtr, приведённую в документе.
Похоже, что эта функция не подходит для "расжатия" данных файла RSW.
С помощью какого алгоритма сжаты данные блока RSW файла?

Вся информация о структуре файла и текст функции DecompressMtr берутся из документации, выложенной на сайте.
Форматы и спецификации данных.
RSW, MTW. Структура данных в двоичном виде
ПАРБ.00046-06 99 01
 
В файле rmf.h описана структура заголовка растров и матриц:
Код
typedef struct RMF                 // РАЗМЕР ЗАГОЛОВКА 320 БАЙТ
{
...
                                                     // 0x00D0 (208)
  unsigned char CompressNumber;    // НОМЕР АЛГОРИТМА СЖАТИЯ БЛОКОВ
                                   // Возможные значения:
                                   // 0 - сжатие к блокам изображения не применено
                                   // RMF_COMPR_LZW   (1)- блоки сжаты по методу LZW (справедливо для растров)
                                   // RMF_COMPR_JPEG  (2)- блоки сжаты по методу JPEG (справедливо для 24 битных растров)
                                   // RMF_COMPR_32    32)- блоки матрицы сжаты (справедливо для матриц)
...
};
Функция DecompressMtr используется при RMF::CompressNumber = 32.
В файле mapapi.h для RMF::CompressNumber = 2 (RMF_COMPR_JPEG) есть соответствующая функция:
Код
  // Декомпрессия изображения по алгоритму JPEG
  // in       - массив исходных (сжатых) данных
  // sizein   - размер массива исходных (сжатых) данных
  // width    - ширина изображения (пикселей)
  // height   - высота изображения (пикселей)
  // bit      - количество бит на пиксель (выполняется сжатие изображения
  //            с количеством бит на пиксель, равным 24)
  //  out     - массив выходных данных
  //  sizeout - размер массива выходных данных
  // При ошибке возвращает 0

_MAPIMP long int _MAPAPI mapDecompressJPEG(const char *in, long int sizein, long int width, long int height, long int bit,
                                           char *out, long int sizeout);
Изменено: Александр Кружков - 22.09.2022 12:19:43
 
#define VERSION_BIGRMF   0x0201        // ВЕPСИЯ СТРУКТУРЫ 2.01 (растр произвольного размера одним файлом, смещения в 256 байтных элементах)

В данном случае все смещения умножаются на 256:
Код
__int64 blockDescOffset = (__int64)RMF::BlockDescOffset * 256 - смещение (в байтах) на МАССИВ ОПИСАТЕЛЕЙ БЛОКОВ
__int64 blockOffset = (__int64)BLOCKDESC::Value1 * 256 - смещение (в байтах) на блок
int blockLength = BLOCKDESC::Value2 - длина блока (в байтах). УМНОЖЕНИЕ НЕ ВЫПОЛНЯТЬ
Изменено: Александр Кружков - 22.09.2022 12:26:28
 
Большая просьба - выложите, пожалуйста, описание формата RSW с недостающими функциями.
Сейчас многие разработчики (ПО для БПЛА, в том числе) начали работать с файлами, сделанными с помощью ГИС вашей компании.
Но когда формат файла оказывается закрытым, разработка тормозится, что в нынешней ситуации - сами понимаете...
 
Цитата
Александр C. написал:
Большая просьба - выложите, пожалуйста, описание формата RSW с недостающими функциями.Сейчас многие разработчики (ПО для БПЛА, в том числе) начали работать с файлами, сделанными с помощью ГИС вашей компании.Но когда формат файла оказывается закрытым, разработка тормозится, что в нынешней ситуации - сами понимаете...
На нашем сайте в разделе Скачать - Документация ГИС "Панорама" ПАРБ.00046-06 Форматы и спецификации данных. RSW, MTW. Структура данных в двоичном виде
https://gistoolkit.com/download/doc/sxf4mtwrsw.pdf
 
Но дело в том, что в документации нет функций для распаковки JPEG и LZW!
 
Цитата
Александр C. написал:
Но когда формат файла оказывается закрытым
Формат сжатия данных матрицы высот разработан в КБ Панорама, поэтому приведен в приложении 2 документа https://gistoolkit.com/download/doc/sxf4mtwrsw.pdf
Формат JPEG открыт: https://ru.wikipedia.org/wiki/JPEG
LZW: https://pl.wikipedia.org/wiki/LZW
Вы можете прочитать его сами или воспользоваться функциями, входящими в состав Комплекта для разработки приложений (ГИС "Панорама" 14): https://gisinfo.ru/download/?id=279
 
Цитата
Александр C. написал:
Большая просьба - выложите, пожалуйста, описание формата RSW с недостающими функциями.
Сейчас многие разработчики (ПО для БПЛА, в том числе) начали работать с файлами, сделанными с помощью ГИС вашей компании.
Но когда формат файла оказывается закрытым, разработка тормозится, что в нынешней ситуации - сами понимаете...
Для работы со всеми видами данных есть инструментарий ГИС Конструктор, который поддерживается в различных ОС и для различных процессоров.
RSW отрисовывается в многопоточном режиме с учетом хранящейся пирамиды изображений и трансформированием под текущие параметры изображения
с высокой скоростью. Повторить этот код можно, но зачем?
Страницы: 1 2 След.
Читают тему (гостей: 1)



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

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