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

Масштабирование растров, порядок их отображения

Поиск  Пользователи  Правила  Войти
Форум » Linux » ГИС Панорама для Linux
Страницы: 1
RSS
Масштабирование растров, порядок их отображения
 
Доброго времени суток!

У меня 3 вопроса.

Первый.
Есть растр, прикрепленый к карте. Мне нужно производить с растром в интерактиве манипуляции, т.е. мышкой таскать (1) и растягивать (2). Первое сделал, вопрос собственно по второму пункту. Есть функции mapSetRstScale(...) и mapSetRstPrecision(...) в них задается конкретное значение scale и precision. Вопрос: у меня есть два Rect'a растра (старый и новый) - могу ли я имея эти данные вычислить такие значения scale и precision, чтобы вписать растр в новый Rect?

Второй.
Можно ли масштабировать растр без сохранения пропорций? Например, только по оси X?

Третий.
При открытии нескольких растров (например одной и той же области, но с разной детализацией) при отрисовке они рисуются на карте в порядке их открытия. Можно ли как-нибудь программно менять их порядок отрисовки? Например, как в Visio, по правой кнопке в меню два пункта "На задний план" и "На передний план", что-то типо этого.

Заранее благодарен.

Разработчики ГИС Панорамы откликнитесь!!!
Изменено: Александр Колдаев - 03.09.2009 21:37:42
 
Здравствуйте, Александр.

Для растягивания растра предлагаю воспользоваться функцией из библиотеки MAPPICEX, которая объявлена в файле MAPPICEX.H:
Код
// Привязка растра с масштабированием по двум точкам  
// hMap        - карта, содержащая векторные данные;
// rswName     - имя файла растра
// pointMet1   - Координаты первой точки  в метрах
// pointMetNew1- Новые координаты первой точки в метрах
// pointMet2   - Координаты второй точки  в метрах
// pointMetNew2- Новые координаты второй точки в метрах
// message     - флаг на выдачу сообщений (0\1)
// При ошибке возвращает ноль
long int WINAPI _export AttachRswWithScaling(HMAP hMap, char* rswName,
                                             DOUBLEPOINT *pointMet1, DOUBLEPOINT *pointMetNew1,
                                             DOUBLEPOINT *pointMet2, DOUBLEPOINT *pointMetNew2,
                                             int message);



Цитата

Можно ли масштабировать растр без сохранения пропорций? Например, только по оси X?
В нашей системе размер пикселя растра в метрах один для оси X и для оси Y.
Для решения Вашей задачи предлагаю следующую функцию из библиотеки MAPPICEX, которая также объявлена в файле MAPPICEX.H:
Код
Трансформирование растра                                      
// (вычисление коэффициентов пересчета координат методом наименьших квадратов)
//
//   handle    - диалог визуального сопровождения процесса обработки;
//   map       - карта,содержащая векторные данные;
//   parm      - параметры прикладной задачи;
//   namein    - имя исходного растра;
//   nameout   - имя выходного растра;
//   fact      - исходные координаты опоры;
//   teor      - желаемые координаты опоры;
//   count     - количество опорных точек (не меньше 4-х).
//
//   Диалогу визуального сопровождения процесса обработки посылаются сообщения:
//   -  (WM_PROGRESSBAR) Извещение об изменении состояния процесса
//      WPARAM - текущее состояние процесса в процентах (0% - 100%)
//      Если функция-отклик возвращает WM_PROGRESSBAR, то процесс завершается.
// При ошибке возвращает ноль,
//==============================================================================
long int WINAPI _export RswTransformingBySquareMethod(HMAP map,HMESSAGE handle,
                           TASKPARMEX * parm,char * namein,char * nameout,
                           long int count,DOUBLEPOINT * fact,DOUBLEPOINT * teor);


Цитата
При открытии нескольких растров (например одной и той же области, но с разной детализацией) при отрисовке они рисуются на карте в порядке их открытия. Можно ли как-нибудь программно менять их порядок отрисовки? Например, как в Visio, по правой кнопке в меню два пункта "На задний план" и "На передний план", что-то типо этого.

Посмотрите функцию из RstApi.h:
Код
  // Поменять очередность отображения растров (rst) в цепочке 
  // Последний растр в цепочке отображается в последнюю очередь
  // Нумерация растров в цепочке начинается с 1 и заканчивается номером mapGetRstCount(..)
  //   oldNumber - номер файла в цепочке
  //   newNumber - устанавливаемый номер файла в цепочке
  //  При ошибке возвращает 0

_MAPIMP long int _MAPAPI mapChangeOrderRstShow(HMAP hMap, long int oldNumber,
                                                          long int newNumber);
 
Цитата
Dmitry_ пишет:
Код Трансформирование растра
// (вычисление коэффициентов пересчета координат методом наименьших квадратов)
//
// handle- диалог визуального сопровождения процесса обработки;
// map - карта,содержащая векторные данные;
// parm- параметры прикладной задачи;
// namein- имя исходного растра;
// nameout - имя выходного растра;
// fact- исходные координаты опоры;
// teor- желаемые координаты опоры;
// count - количество опорных точек (не меньше 4-х).
//
// Диалогу визуального сопровождения процесса обработки посылаются сообщения:
// -(WM_PROGRESSBAR) Извещение об изменении состояния процесса
//WPARAM - текущее состояние процесса в процентах (0% - 100%)
//Если функция-отклик возвращает WM_PROGRESSBAR, то процесс завершается.
// При ошибке возвращает ноль,
//================================================­=========­=====================
long int WINAPI _export RswTransformingBySquareMethod(HMAP map,HMESSAGE handle,TASKPARMEX * parm,char * namein,char * nameout,long int count,DOUBLEPOINT * fact,DOUBLEPOINT * teor);

К сожалению, в моей версии библиотеки ГИС Панорамы функция RswTransformingBySquareMethod(...) отсутствует (((
есть какие-нибудь другие варианты?
 
и AttachRswWithScaling(...) тоже нет...
 
Назовите, пожалуйста, название и версию продукта, который Вы используете.
 
с этим трудно )) какая именно версия библиотеки (libmapaccess.so и др.) не знаю, могу сказать одно - это библиотека под MCBC (где-то января 2008 года) и в ней корректно работает mapPaintToXImage(...) на глубине 24 и 32 бита

Но, в принципе, все 3 вопроса уже решены (пришлось масштабирование сделать с сохранением пропорций)
Изменено: Александр Колдаев - 07.09.2009 23:14:38
Страницы: 1
Читают тему (гостей: 1)



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

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