Документ взят из кэша поисковой машины. Адрес оригинального документа : http://www.sao.ru/precise/Laboratory/Publications/2000/MIDAS/Lect_N3/node9.html
Дата изменения: Mon Jan 31 12:20:39 2000
Дата индексирования: Sat Sep 11 22:09:45 2010
Кодировка: koi8-r

Поисковые слова: п п п п п п п п п п п п п п п п п
Пакет визуализации и создание рисунков next up previous
Next: Bibliography Up: Что такое image и Previous: Графический дисплей и графический

Пакет визуализации и создание рисунков

Хорошее знание пакета визуализации в MIDAS (работа с image и графическим дисплеями) избавляет пользователя-астронома практически полностью от необходимости работать с другими внешними пакетами при подготовке рисунков для статей. Вы как бы погружены в единую среду, в который производится как обработка данных (или расчет моделей), так и подготовка к выдаче Ваших результатов "наружу". Конечно, существует ряд рисунков, которые очень трудно создать в MIDAS, и поэтому я не берусь утверждать, что этот пакет есть панацея от всех бед. Но грамотный пользователь очень легко расширяет его возможности путем написания командных файлов.

ВНИМАНИЕ :При создании рисунков для статей ОБЯЗАТЕЛЬНО оформляйте их в виде командных файлов: один рисунок -- один командный файл. Храните этот командный файл и данные для него в одном месте. При необходимости переделать/доделать рисунок Вы просто слегка модифицируете имеющийся командный файл.

Я хотел бы привести в пример два командных файла с результатами их работы, конечно. Как будет говориться в дальнейшем, командный файл в MIDAS обычно имеет расширение ".prg" и, если он находится в текущей директории, вызывается на исполнение MIDAS-монитора командой @@ ИМЯ_ФАЙЛА. При разборе приведенных примеров учтите, что графический и image-дисплей я уже создал до исполнения командных файлов.



Пример :
Есть изображение h038Rbffm.bdf с прямым снимком галактики. Необходимо его нарисовать для статьи, наложив контуры на центральную часть галактики. На рисунке надо показать масштаб. Я написал командый файл, который назвал 2D.prg и вызвал его командой @@ 2D. Ниже даны краткие пояснения некоторым командам, а полной разбор строки со всеми параметрами оставлен интересующимся. Результат работы данной программы приведен на Рисунке 1.


LOAD/IMA h038Rbffm 0 4 1002,1060 cuts=11300,11650
-- визуализуем изображение в черно-белом цвете;
LOAD/ITT neg
-- устанавливаем ITT-таблицу, которая выбирает светлый цвет (белый) для фона и темный (черный) для галактики;
@a vertlut ? black 10 f5.0
-- рисуем вертикальный бар с распределением цвета в зависимости от интенсивности (при этом стандартная команда выводит на дисплей (в оверлейный канал) значения уровней);
CLEAR/CHANEL OVER
-- очищаем оверлейный канал, чтобы этих надписей не было;
ASS/GRA d,0
-- переназначаем вывод графики на image-дисплей;
SET/GRAPH tsize=0 ssize=0
-- чтобы следующая команда не рисовала ничего лишнего, устанавливаем нулевые размеры для линий и букв;
PLOT/AXES [<,<:>,>
] -- совмещаем визуализованное изображение с оверлейной памятью;
ВНИМАНИЕ :Эта команда есть тайное знание, которым я делюсь со всеми! Помните о ней! И всегда используйте, если Вы хотите, чтобы нарисованная контурная карта лежала поверх визуализованного изображения, а не стояла задумчиво в стороне.
SET/GRA tsize=1 ssize=1
-- возвращаем исходные числа;
DRAW/LINE 100,50,200,50 S ? black
-- рисуем горизонтальный бар. Чтобы он выглядел достаточно "жирным" (мы ведь потом будем рисунок сжимать), проводим три линии с легким сдвигом одна относительно другой. Рисуем командами для работы с оверлеем (а не с графикой), поскольку эти команды работают в единицах экрана, а не изображения (которое я загрузил с увеличением 4), значит сдвиг на один в координатах изображения -- это сдвиг на 4 в координатах экрана, и мой трюк с тремя линиями не сработает (можете попробовать);
DRAW/LINE 100,51,200,51 S ? black
DRAW/LINE 100,52,200,52 S ? black

DRAW/LINE 99,46,99,56 S ? black
-- рисуем вертикальную черту на левом конце бара. Используем тот же самый прием;
DRAW/LINE 100,46,100,56 S ? black
DRAW/LINE 101,46,101,56 S ? black

DRAW/LINE 199,46,199,56 S ? black
-- рисуем вертикальную черту на правом конце бара;
DRAW/LINE 200,46,200,56 S ? black
DRAW/LINE 201,46,201,56 S ? black

LABEL/DIS "5" 55,145 ? black 2
-- рисуем надпись рядом с баром, показывающим масштаб. Работаем в координатах экрана (для однообразия);
LABEL/DIS "'" 57,157 ? black 2
LABEL/DIS "'" 57,162 ? black 2
LABEL/DIS "303 pc" 25,112 ? black 2

SET/GRA lwidth=3 color=8
-- устанавливаем цвет и ширину линий, которыми будем рисовать контуры;
OVERPLOT/CONT h038Rbffm ? 11700,11800:15000:600 LTYPE
-- рисуем контуры только некоторой центральной (самой яркой) части;
SET/GRA lwidth=1 color=1
-- возвращаем исходные числа;

COPY/DIS p3=P p5=noprint p6=PC8NZ
-- копируем получившийся результат в PostScript-файл;
$mv screen10.ps HS0822+3542R_direct.ps
-- переименовываем стандартный файл в нужное имя.



Пример :
Есть таблица qq.tbl со значениями измеренных скоростей для различных областей одной галактики и расстояниями для этих областей от центра галактики. Необходимо нарисовать для статьи эти точки, посчитать и наложить на рисунок получающуюся кривую скоростей (линейное приближение). Показать точки, не совпадающие с этой кривой скоростей. Я написал командный файл, который назвал Rot.prg, и вызываю его командой @@ Rot. Результат работы данной программы приведен на Рисунке 2.



    
Figure: Изображение галактики HS 0822+3542 с наложенными на его центральную часть контурами. Показан масштаб.
Figure: Кривая вращения для галактики UGC 10806. Звездочками отмечены скорости для областей из удаляющегося, а квадратиками -- из приближающегося рукава этой галактики. Вертикальными барами выделены ошибки для каждой точки. Сплошная линия показывает приближение наблюдаемых точек полиномом первой степени. Отмечены положения HS 1717+4955 и области A2, не использованные при построении кривой вращения.
\begin{figure}
\centering {
\hspace*{-1.cm}
\vbox{\psfig{figure=HS0822+3542R_...
...vbox{\psfig{figure=HS1717_rot_old.ps,width=14cm,angle=-90} }\par }
\end{figure}

SET/GRA ssize=1.5 tsize=1.3 font=1 twidth=2 stype=3
-- производим настройки графического пакета для рисования линий и символов;
PLOT/AXES 0,50 950,1250 ? " $\backslash$+ $\backslash$1 Distance (arcsec)" " $\backslash$+ $\backslash$1 Velocity (km/s)"
-- рисуем оси вместе с подписями;
SELECT/TAB qq :POS_C.lt.0
-- выделяем в таблице все точки по одну сторону от центра галактики;
OVERPLOT/TAB qq :POS_CRA :VEL_C
-- рисуем их пустыми квадратиками;
SET/GRA stype=8
-- меняем тип рисуемых символов на звездочки;
SELECT/TAB qq :PO_C.gt.0
-- выделяем в таблице все точки по другую сторону от центра галактики;
OVERPLOT/TAB qq :POS_CRA :VEL_C
-- рисуем их звездочками;
SELECT/TAB qq all
-- выделяем в таблице все точки;
OVERPLOT/ERROR qq :POS_CRA :VEL_C :Err
-- рисуем бары ошибок для всех точек;

REGRESSION/POLYNOM qq1 :VEL_C :POS_CRA 1
-- я заранее скопировал во вторую таблицу qq1.tbl все точки, за исключением двух, которые сильно отклоняются. Используя точки из этой второй таблицы, я приближаю их полиномом первой степени;
SAVE/REGRES qq1 coef
-- запоминаю полученные коэффициенты;
COMP/REGRES qq1 :fit = coef
-- считаю положения точек в соответствии с полученным приближением;

CREATE/IMA ref 1,40 4,1 nodata
-- это мой "ход конем". Мне не нравится вид прямой, проведенной по шести точкам, когда я просто пытаюсь использовать PLOT/TABLE, установив перед этим SET/GRAPH STYPE=0 LTYPE=1. К тому же MIDAS рисует в этом случае только до положений крайних точек. Поэтому я решил построить модель линейного приближения в виде одномерного изображения. Как первый шаг я строю так называемое reference-изображение (в нем нет данных, но есть размерность, шаг и т.д.);
CONVERT/TABLE vel = qq1 :POS_CRA :fit ref POLY 1
-- преобразую колонку таблицы в изображение vel.bdf, используя число точек, размерность и шаг;
SET/GRA lwidth=3
-- устанавливаю тип линии для рисования;
OVER/ROW vel
-- разрисовываю построенную модель;
SET/GRA ssize=1 tsize=1
-- возвращаю исходные установки для части параметров;
LABEL/GRA "A2" 28.5,1025 ? 1
-- делаю надписи, указав место на рисунке;
LABEL/GRA "HS 1717+4955" 41,1005 ? 1

SET/GRA ssize=1 tsize=1 twidth=1 stype=5 lwidth=1
-- возвращаю исходные установки для всех параметров;
COPY/GRA postscript
-- копирую полученный рисунок в PostScript-файл;
$mv postscript.ps HS1717_rot.ps
-- переименовываю стандартный файл.

И это конец третьей сказки о MIDAS.


next up previous
Next: Bibliography Up: Что такое image и Previous: Графический дисплей и графический
Willy Kniazev
2000-01-31