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

Как будет вести себя функция _PICIMP long int _PICAPI picexLoadRasterToRswUn при изъятии данных из файлов привязки?

Поиск  Пользователи  Правила  Войти
Форум » Linux » Средства разработки ГИС-приложений для Linux
Страницы: 1
RSS
Как будет вести себя функция _PICIMP long int _PICAPI picexLoadRasterToRswUn при изъятии данных из файлов привязки?
 

Здравствуйте.

2.    1. Как будет вести себя функция при изъятии данных из файлов привязки?

// Импорт растровых данных в файл RSW

// handle - диалог визуального сопровождения процесса обработки

// srcname - имя входного файла (TIF, IMG, PNG, GIF, JPG, BMP, PCX)

// rstname - имя выходного файла (*.rsw)

// retcode - код возврата

// Приоритет изъятия параметров привязки:

// 1. Содержимое соответствующих тегов файлов TIF, IMG

// 2. Файл привязки world.file

// 3. Файл привязки TAB (MapInfo)

// Функция ищет файл привязки рядом с исходным файлом srcname,

// перебирая по приоритету типы файлов.

// При ошибке возвращает ноль

_PICIMP long int _PICAPI picexLoadRasterToRswUn(HMESSAGE handle,

                                               const WCHAR* srcname,

                                               const WCHAR* rstname,

                                               long int * retcode); Например, если найдены теги файлов TIF, IMG, то будут ли дальше проверяться файлы .wld и/или .tab ?

Если в файл .tif создан с одним значением геотега, а в файле привязки(например .tab указано другое значение, относящееся к этому тегу), то какое значение будет валидным? Файл .tif вручную не изменить , а .tab можно. Например в файле SPB-1.tif в геотеге CK указан код EPSG = 28401 (что не правильно), а в файле .tab был указан осевой меридиан 27 и смещение 5500000 (правильно). Если при этом игнорировать геотеги из .tif файла, все встает на свои места.

2. Вопрос, будет ли функция picexLoadRasterToRswUn() обходить все файлы привязки, или остановится на первом найденном и перейдёт в режим конвертирования ? И если мы можем поправить .tab , то как игнорировать теги из .tif .

Или все будет на ответственности пользователя?

Ссылка на карту:    https://drive.google.com/file/d/1pouDSTpPzeSxIuuohVXGulJfqCjsY3vr/view?usp=sharing

 

Здравствуйте!

Цитата

Здравствуйте.

2.    1. Как будет вести себя функция при изъятии данных из файлов привязки?

// Импорт растровых данных в файл RSW

// handle - диалог визуального сопровождения процесса обработки

// srcname - имя входного файла (TIF, IMG, PNG, GIF, JPG, BMP, PCX)

// rstname - имя выходного файла (*.rsw)

// retcode - код возврата

// Приоритет изъятия параметров привязки:

// 1. Содержимое соответствующих тегов файлов TIF, IMG

// 2. Файл привязки world.file

// 3. Файл привязки TAB (MapInfo)

// Функция ищет файл привязки рядом с исходным файлом srcname,

// перебирая по приоритету типы файлов.

// При ошибке возвращает ноль

_PICIMP long int _PICAPI picexLoadRasterToRswUn(HMESSAGE handle,

                                               const WCHAR* srcname,

                                               const WCHAR* rstname,

                                               long int * retcode); Например, если найдены теги файлов TIF, IMG, то будут ли дальше проверяться файлы .wld и/или .tab ?

Если в файл .tif создан с одним значением геотега, а в файле привязки(например .tab указано другое значение, относящееся к этому тегу), то какое значение будет валидным? Файл .tif вручную не изменить , а .tab можно. Например в файле SPB-1.tif в геотеге CK указан код EPSG = 28401 (что не правильно), а в файле .tab был указан осевой меридиан 27 и смещение 5500000 (правильно). Если при этом игнорировать геотеги из .tif файла, все встает на свои места.

2. Вопрос, будет ли функция picexLoadRasterToRswUn() обходить все файлы привязки, или остановится на первом найденном и перейдёт в режим конвертирования ?

Если в TIFF-файле есть теги, содержащие параметры проекции и системы координат, то функция picexLoadRasterToRswUn их прочитает и установит в формируемый растр RSW. Если в TIFF-файле отсутствуют теги параметров проекции, то рядом с исходным файлом будет искаться файл привязки TFW, а при его отсутствии файл TAB.


Цитата

И если мы можем поправить .tab , то как игнорировать теги из .tif .


Предлагаю рассмотреть альтернативные функции для реализации алгоритма:
- Прочитать файл привязки TAB  и получить параметры проекции и системы координат.
- Загрузить растр из файла TIFF в RSW.
- Открыть растр RSW и установить в него параметры проекции и системы координат. Закрыть растр.
Код
mappicex.h

// Чтение и Анализ файла настройки *.tab (MapInfo)
// inputName         - имя графического файла
// rstIniName        - имя файла привязки *.tab
// mapreg            - параметры системы координат и проекции
// datum             - параметры пересчета с эллипсоида рабочей системы координат
//                     к WGS-84
// ellipsoid         - параметры пользовательского эллипсоида для рабочей
//                     системы координат
// flagMapRegisterEx - флаг заполнения параметров проекции из файла TAB
// locationPoint     - привязка растра
// meterInElementX   - размер элемента по X
// meterInElementY   - размер элемента по Y
//
// rasterPoint - Левый Нижний, Левый Верхний, Правый Верхний, Правый Нижний
// countPoint  - 4
//
// rasterPointTr - LT,RT,RB,LB;  массив заполняется, если flagTransformation == 1
// countPointTr  - 4,
// flagTransformation - флаг трансформирования по координатам rasterPointTr
//
// retCode - код возврата ошибки

_PICIMP long int _PICAPI picexReadTabFile(const WCHAR *inputName,
                                          const WCHAR *rstIniName,
                                          MAPREGISTEREX* mapreg,
                                          ELLIPSOIDPARAM* ellipsoid,
                                          DATUMPARAM* datum,
                                          long int* flagMapRegisterEx,
                                          DOUBLEPOINT* locationPoint,
                                          double* meterInElementX,
                                          double* meterInElementY,
                                          DOUBLEPOINT* rasterPoint,
                                          long int countPoint,
                                          LOCATIONPOINT *rasterPointTr,
                                          long int countPointTr,
                                          long int* flagTransformation,
                                          long int* retCode);


// Загрузка растровой карты из 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

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


mapapi.h

  // Открыть данные с автоматическим определением их типа
  // (векторные,растровые,матричные...)

_MAPIMP HMAP _MAPAPI mapOpenDataUn(const WCHAR * name, long int mode = 0);


rstapi.h

  // Установить данные о проекции растра
  // hMap   - идентификатор открытых данных
  // number - номер файла в цепочке
  // Структуры MAPREGISTEREX, DATUMPARAM, ELLIPSOIDPARAM описаны в mapcreat.h
  // ttype  - тип локального преобразования координат (см. TRANSFORMTYPE в mapcreat.h) или 0
  // tparm - параметры локального преобразования координат (см. mapcreat.h)
  // При ошибке возвращает ноль

_MAPIMP long int _MAPAPI mapSetRstProjectionDataPro(HMAP hMap, int number,
                                                    MAPREGISTEREX  *mapregister,
                                                    DATUMPARAM     *datumparam,
                                                    ELLIPSOIDPARAM *ellipsoidparam,
                                                    long int ttype,
                                                    LOCALTRANSFORM * tparm);

mapapi.h

  // Закрыть все данные электронной карты
  // hmap -  идентификатор открытых данных
  // Идентификатор HMAP становится недействительным !

_MAPIMP void _MAPAPI mapCloseData(HMAP hMap);


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



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

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