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

Преобразование TIFF в RSW с помощью функции picexLoadTiffToRstAndCompressEx

Поиск  Пользователи  Правила  Войти
Форум » Настольные приложения » GIS ToolKit, GIS ToolKit Active, ГИС Конструктор для Windows
Страницы: 1
RSS
Преобразование TIFF в RSW с помощью функции picexLoadTiffToRstAndCompressEx
 
Возникла следующая проблема. Имеется TIFF с геопривязкой (создан с помощью GDAL), который надо преобразовать в RSW. Функция LoadImageToRstEx вполне справляется с задачей, но хотелось бы делать то же самое без показа диалогового окна.

Обнаружил функцию picexLoadTiffToRstAndCompressEx, но непонятно, как ее вызывать. Функция требует параметров, задающих геопривязку, однако хотелось бы, чтобы геопривязка извлекалась бы из самого импортируемого файла. Можно ли это сделать? Что в этом случае передавать в параметры meterInPixelX, meterInPixelY и point? Попытка передать NULL привела к Access Violation. Какое значение следует передавать в параметр flagIgnoreGeoTiff?
 
Объявление функции picexLoadTiffToRstAndCompressEx из файла mappicex.h:
Код
//========================================================================
// Загрузка растровой карты из Tiff(GeoTiff) в RSW
//    Handle - диалог визуального сопровождения процесса обработки.
//    TiffName - имя Tiff-файла;
//    RstName - имя Rst-файла;
//    meterInElementX - размер в метрах элемента по X
//    meterInElementY - размер в метрах элемента по Y
//    point     - точка привязки растра (в метрах)
//                (положение юго-западного угла растра в районе)
//    compression - флаг использования сжатия при формировании RST-файла (0/1)
//              0 - сжатие к блокам изображения применяться не будет
//              1 - блоки д.б. сжаты по методу LZW
//              2 - блоки д.б. сжаты по методу JPEG (справедливо для 24 битных растров)
//    flagIgnoreGeoTiff - (0/1) флаг игнорирования GeoTiff тегов
//    При ошибке возвращает ноль
//
//    Диалогу визуального сопровождения процесса обработки посылаются
//    сообщения:
//    -  (WM_PROGRESSBAR) Извещение об изменении состония процесса
//       WPARAM - текущее состоние процесса в процентах (0% - 100%)
//       Если функция-отклик возвращает WM_PROGRESSBAR, то процесс завершается.
//
//    -  (WM_ERROR) Извещение об ошибке
//       LPARAM - указатель на структуру ERRORINFORMATION
//       Структура ERRORINFORMATION описана в picexprm.h,
//       WM_PROGRESSBAR и WM_ERROR - в maptype.h
//========================================================================
long int _MAPAPI  picexLoadTiffToRstAndCompressEx(HMESSAGE handle,
const char * TiffName,
const char * RstName,
double* meterInPixelX, double* meterInPixelY,
DOUBLEPOINT *point,
int compression,
int flagIgnoreGeoTiff);

long int _MAPAPI  picexLoadTiffToRstAndCompressExUn(HMESSAGE handle,
const WCHAR * TiffName,
const WCHAR * RstName,
double* meterInPixelX, double* meterInPixelY,
DOUBLEPOINT *point,
int compression,
int flagIgnoreGeoTiff);



flagIgnoreGeoTiff - (0/1) флаг игнорирования GeoTiff тегов, отвечающих за параметры проекции и системы координат.

В качестве аргумента функции point необходимо передавать указатель на привязку изображения, которая размещается в структуре DOUBLEPOINT.
Цитата
Попытка передать NULL привела к Access Violation.
Добавил контроль для аргумента функции point.

Для запроса параметров изображения файла GeoTIFF предназначены функции:

Код
//========================================================================
//    Запросить параметры GeoTIFF-файла
//    Map - карта,содержащая векторные данные;  
//    TifName - имя GeoTIF-файла;
//    DataInformation - структура, которую необходимо заполнить
//    geoTIFFinformation - структура, которую необходимо заполнить
//    Структуры DATAINFORMATION и GEOTIFFINFORMATION описаны в picexprm.h
//
//    Функцию LoadGeoTifInformation рекомендуется вызывать перед началом
//    конвертации TIFF-файла в Rsw для инициализации диалога сопровождения
//========================================================================
long int _MAPAPI LoadGeoTifInformation(HMESSAGE Handle, const char * TiffName,
DATAINFORMATION * information,
GEOTIFFINFORMATION* geoTIFFinformation);

long int _MAPAPI LoadGeoTifInformationUn(HMESSAGE Handle, const WCHAR * TiffName,  
DATAINFORMATION * information,
GEOTIFFINFORMATION* geoTIFFinformation);

//========================================================================
//    Запросить параметры СК из файла GeoTiff
//    Handle              - диалог визуального сопровождения процесса обработки.
//    TifName             - имя TIF-файла;
//    geoTIFFparam        - указатель на структуру GEOTIFFPARAM для записи
параметров СК
//========================================================================
long int _MAPAPI LoadGeoTiffParameters(HMESSAGE Handle, const char * TiffName,
GEOTIFFPARAM * geoTIFFparam);

long int _MAPAPI LoadGeoTiffParametersUn(HMESSAGE Handle, const WCHAR * TiffName,  
GEOTIFFPARAM * geoTIFFparam);



По запрошенным параметрам определяются размеры элемента(пикселя) растра и вычисляется привязка изображения для функции picexLoadTiffToRstAndCompressEx.
В сложных случаях вычисляются параметры трансформирования изображения, которое запускается после перегона изображения в RSW.
Изменено: Dmitry_ - 09.06.2015 10:44:06
 
Вроде ясно. Спасибо за ответ.
Страницы: 1
Читают тему (гостей: 1)



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

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