Создание простейшей карты в GMT
Задача: Сделать карту Арктики с рельефом дна, нанести на неё точки океанологических станций и нарисовать стрелочки между ними, показывающие как двигался пароход.
?нструмент: GMT (Generic Mapping Tools).
GMT это около 60ти утилит, при помощи которых любой линуксоид может на дому создавать карты не хуже тех что в нарисованы в географических атласах. Это практически стандарт отображения данных на карте в геофизике, океанологии и тому подобных науках, которые работают с нашим шариком и периодически на нём что ни будь измеряют. Визуализацией измеренного и призвана заниматься GMT.
Насколько она мощная, настолько же труднопознаваемая. Лёрнинг курва у неё никуда не годная, всё завязано на скриптах с миллионом опций, которые работают для каждой утилиты по своему. Но эти трудности мало кого смущают после того как они видят результат работы программы.
Здесь я по просьбе одного начинающего юзера расскажу о том как решить одну конкретную задачу, попутно постараюсь объяснить основы GMT. Рассказ будет довольно подробный, поскольку что такое шел скрипты (без которых GMT превращается в неповоротливое чудище) наш юзер тоже не знает.
Надеюсь что с установкой вы уже справились (там всё сравнительно безгеморойно) и мы можем переходить к вводным процедурам. Если вдруг не справились то вот тут инструкция от Алексея Колдунова для Убунту.
Первое что нам надо сделать это скачать топографию. Топография это грубо набор данных щирота\долгота\превышение на определённой сетке. Сетка может быть покрупнее или помельче. Мы выберем нечто среднее, под названием ETOPO2. Двойка означает что шаг сетки на земной поверхности — 2 минуты. Это не лучшее из доступных разрешений, но если брать более качественные то обсчитываться она будет чрезвычайно долго, а времени у нас нет ), ну и плюс для неё существует файл в нативном GMT формате .grd.
Скачать файл можно
- Регимся на сервере.
- Переходим по ссылке
- Внизу жмём по синей картинке с надписью Data access
- Нажимаем Internet Download
- Если не вошли то входим
- Нажимаем на ETOPO2 Official Release (10800×5400 grids), September 2001
- Скачиваем etopo2.grd.gz при помощи правой кнопки и Save as (иначе в файрфоксе, например, файл начнёт открываться в броузере, и ничего хорошего из этого не выйдет )).
Скачанный файл мы распаковываем
Получаем файл etopo2.grd. В нём содержится топография всей Земли в среднем разрешении. Нам вся Земля без надобности, мы хотим только Арктику вырезать. Для этого используем первую утилиту GMT под названием grdcut. Она вырезает определённый район из .grd файла.
- -R — определяет область данных которую мы должны вырезать. формат следующий west, east, south, and north. В нашем случае берём весь шарик по долготе, и от 70 до 90 (северного полюса) по широте. Это не вся Арктика, но чтобы сэкономить время мы пока поиграемся с этим (довольно большим) райончиком.
- -fg так толком и не понял для чего эта опция, но без неё утилита работать отказывалась.
- ./etopo2.grd — путь к нашему исходному файлу
- —G — имя выходного файла. В нашем случае arctic.grd
?сходные данные есть, начинаем писать скрипт по отрисовке карты. Знакомые с линуксом могут пропустить следующий параграф и перейти непосредственно к скрипту. Для тех же кто не в курсе — поясняю
Создание карты в GMT это последовательность операций каждую из которых можно, конечно, набирать в командной строке, но это, учитывая их количество, меганеудобно. В таких случаях в линуксе используют шел скрипты. Грубо — это файлы, содержащие в себе последовательность команд, как если бы мы их вводили руками. Объяснять в подробностях — это долго и не ко мне 🙂 . Надеюсь что даже без познаний в шелл скриптинге всё у вас получится, я постараюсь быть предельно подробен.
В той же папке что и наш грид, создаём текстовый файл и называем его arctica.sh. Выглядеть он будет поначалу так:
makecpt -Cgebco > GMT_global.cpt
grdimage arctic.grd -Js0/90/3i/70 -R-180/180/70/90 -CGMT_global.cpt > arctic.ps
А теперь давайте долго и нудно разбирать что же у нас тут понаписано 🙁
- #!/bin/sh — говорит системе какую версию шела она будет использовать. С этим проблем возникнуть не должно, потому что sh должен быть везде.
- makecpt -Cgebco > GMT_global.cpt . Утилита makecpt создаёт цветовую гамму нашей карты. В данном случае мы используем встроенную в GMT палитру gebco, которая соответствует стандартной раскраске океанов GEBCO. Для простоты сушу пока раскрашивать не будем. -С название встроенной палитры, > значит что мы перенаправляем вывод в файл, GMT_global.cpt имя файла созданной нами палитры.
grdimage arctic.grd -Js0/90/3i/70 -R-180/180/70/90 -CGMT_global.cpt > arctic.ps Тут всё самое главное и происходит.
- Утилита grdimage создаёт изображение из нашего гридированного файла.
- arctic.grd — имя гридированного файла,
- -Js0/90/3i/70 — проекция в которой будет отображаться твоя карта и её характеристики. В данном случае -Js генеральная стереографическая проекция, 0/90/ — lon0/lat0 — координаты центра проекции (центра карты), в нашем случае мы центрируемся на нулевом меридиане и северном полюсе. 3i/70 радиус (тут в дюймах) от центра до определённой широты (тут 70я).
- -CGMT_global.cpt Опция -С передаёт название файла с палитрой для карты (в нашем случае GMT_global.cpt). Знак > означает направление вывода в файл arctic.ps.
Сохранив скрипт надо дать ему права на исполнение, делается это следующим образом
теперь запустим скрипт командой
Если мы всё сделали правильно, то через какое то (довольно продолжительное) время, скрипт завершит работу и у нас образуется файлик arctic.ps
Выглядит оно довольно блекло и на карту похоже только в самых общих чертах. Давайте придадим форму этому содержанию, то есть нарисуем береговую линию и рамку карты. Дополняем наш скрипт и получаем
makecpt -Cgebco > GMT_global.cpt
grdimage arctic.grd -Js0/90/3i/70 -R-180/180/70/90 -CGMT_global.cpt -K > arctic.ps
pscoast -Js0/90/3i/70 -R-180/180/70/90 -Ba30/10 -Df -W0.1p/0/0/0 -V -O >> arctic.ps
- В опциях grdimage добавилось -K. Это значит что в файл будет записано ещё что то.
pscoast -Js0/90/3i/70 -R-180/180/70/90 -Ba30/10 -Df -W0.1p/0/0/0 -V -O >> arctic.ps .
- Утилита pscoast отвечает за отрисовку береговой линии.
- -Js0/90/3i/70 -R-180/180/70/90 — эти опции нам уже знакомы и означают они тоже самое что и в случае grdimage.
- -Ba30/10 — это самая сложная и загадочная опция в тех утилитах GMT которые её используют 🙂 Грубо — она определяет внешний вид рамки. В данном случае из всей конструкции a30/10 я понимаю только что 30 отвечает за шаг обозначений долгот (10 видимо отвечает за широты).
- Опция -D говорит о том какое разрешение береговой линии будет использовано. Они не все ставятся по умолчанию при установке. В данном случае f означает (f)ull, то есть самое высокое разрешение. Если будет ругаться попробуйте (h)igh, (i)ntermediate, (l)ow, или на худой конец (c)rude).
- Опция -W говорит что рисовать береговую линию мы таки будем а параметры 0.1p/0/0/0 означают ширина линии/R/G/B где RGB это цветовые координаты (все нули — чёрный).
- Опция -V говорит о том что вам будут сообщаться более подробные сведения о работе утилиты (verbose mode).
- Опция -O означает что рисоваться береговая линия будет поверх уже существующей информации (батиметрии в нашем случае).
- Знаки >> означают что файл в который будет производиться запись будет не создан заново а дополнен.
- arctic.ps — имя выходного файла.
В итоге получаем гораздо более адекватный вариант, больше похожий на карту.
Простейшую карту с батиметрией мы создали. Выглядит она может и не как в атласе, но мы пока только учимся 🙂
Теперь хотелось бы нанести на карту места наших боевых подвигов, сиречь океанологических станций. Для этого нам нужен файл с их координатами (в десятых долях градуса!!!) и ещё кой какой информацией.
Создаём файл track, который выглядит следующим образом
180 90 0.2 c
31 88.33 0.2 c
31 86.67 0.2 c
31 85 0.2 c
31 83.33 0.2 c
Формат — долгота\щирота\размер значка\вид значка. По поводу размера и вида объясню позже. Видоизменяем скрипт
makecpt -Cgebco > GMT_global.cpt
grdimage arctic.grd -Js0/90/3i/70 -R-180/180/70/90 -CGMT_global.cpt -K > arctic.ps
pscoast -Js0/90/3i/70 -R-180/180/70/90 -Ba30/10 -Df -W0.1p/0/0/0 -V -K -O >> arctic.ps
psxy track -Js0/90/3i/70 -R-180/180/70/90 -Gblue -S -O >> arctic.ps
В pscoast появилась новая опция -K, значит будем дописывать в файл.
psxy track -Js0/90/3i/70 -R-180/180/70/90 -Gblue -S -O >> arctic.ps — рисуем станции на карте.
- psxy — утилита которая отрисовывает линии, полигоны и символы на карте.
- track — название файла с входными данными
- -Js0/90/3i/70 -R-180/180/70/90 — этих ребят мы уже знаем
- -Gblue — цвет значков, в данном случае синий, можно задавать RGB координаты.
- -S мы таки рисуем символы. В третьей и четвёртой колонке исходного файла содержится информация о размере (у нас везде 0.2) и виде (у нас c — кружок) значка. Если в файле этого нет, то можно задать эти вещи как параметры опции -S.
- -O рисуем поверх уже нарисованного.
- >> дописываем информацию в файл
- arctic.ps выходной файл.
Результат
Теперь стрелочки… Мы хотим показать куда двигался наш пароход. Для этого создаём файл vec
180 90 31 88.33
31 88.33 31 86.67
31 86.67 31 85
31 85 31 83.33
Формат следующий — долгота начальная\широта начальная\долгота конечная\широта конечная. То есть в каждой строчке координаты начала и конца нашей стрелочки. Дополняем скрипт
makecpt -Cgebco > GMT_global.cpt
grdimage arctic.grd -Js0/90/3i/70 -R-180/180/70/90 -CGMT_global.cpt -K > arctic.ps
pscoast -Js0/90/3i/70 -R-180/180/70/90 -Ba30/10 -Df -W0.1p/0/0/0 -V -K -O >> arctic.ps
psxy track -Js0/90/3i/70 -R-180/180/70/90 -Gblue -S -K -O >> arctic.ps
psxy vec -Js0/90/3i/70 -R-180/180/70/90 -Gred -Svs0.01c/0.2c/0.2c -O >> arctic.ps
В первый psxy добавляется -K (не забывайте правильно ставить -K и -O, половина ошибок и стонов по поводу того что ничего не работает или работает не так — из за неправильной их расстановки).
psxy vec -Js0/90/3i/70 -R-180/180/70/90 -Gred -Svs0.01c/0.2c/0.2c -O >> arctic.ps
- psxy уже знакомая нам утилита, но теперь ей мы будем рисовать стрелочки
- vec — файл с координатами начала и конца стрелочек
- -Js0/90/3i/70 -R-180/180/70/90 — тут всё ясно
- -Gred — цвет у стрелочек будет красный
- -Svs0.01c/0.2c/0.2c Опция -Sv говорит что мы рисуем вектор, s — вместо направления и радиуса (по умолчанию) мы используем координаты начала и конца вектора, 0.01c/0.2c/0.2c — ширина вектора/длинна указателя вектора/ширина указателя вектора
- -O не забываем про эту важную штучку!
- >> дописываем в файл
- arctic.ps — выходной файл.
М.. результат тут…
.. стрелочки мне никогда не удавались )) Я тут их ещё сделал побольше чтобы было видно что это стрелочки. В общем получилось не очень, но возможность доказана 🙂
В следующий раз, когда я соберусь писать про GMT, покажу как при помощи добавления всего ещё пары строчек можно добиться вот такого результата.
Чутка на русском
На английском —
На вопросы которые, надеюсь, возникнут, постараюсь ответить в коментах.
Материал исключительно полезный, учитывая полное отсутствие подобных материалов на русском, можно даже сказать уникальный.
P.S.: Добавте, пожалуйста, линк в самом начале поста, по которому раздают ETOPO2.
> Скачать файл можно отсюда
А ссылки-то и нету 🙁
Усё поправил! ) Спасибо! )
Недает скачать etopo2.grd.gz даже с регистрацией — вы могли бы его куда-нибуть вроде rapidshare выложить ?
За статью — спасибо.
Николай.
Я добавил инструкцию по скачиванию. Должно работать. Если не будет получаться, отпишитесь, выложу на файлообменник или торрент сделаю.
Некоторые данные уже конвертнутые в GMT формат
Ничего себе! Я даже и не представлял, что есть такие потрясающие вещи. Огромное спасибо за статью!
Ну что сказать… Круто! 🙂 Если соберусь рисовать карты — приду перечитывать.
Коля будь другом, выложи куда-нибудь на файлообменник etopo2, что-то не могу скачать. Вроде зарегистрировался все нормально, а при закачке пишет запрещеная закачка.
2Stilo
http://host03.pipebytes.com/get.php?key=1039380346459
http://www.axifile.com/?6846229
Выложил сюда
и сюда
Коля вот такой вопрос еще: можно с помощью этой проги выдернуть из грида по заданым координатам глубину? ? еще вопрос сколько времени занимает у тебя процесс создания рисунка. Я использовал у себя вместо етопо2 ибкао и создание рисунка занимало около минуты. Потом когда скачал етопо2 решил сравнить. ?спользовал твою заготовку ждал по полчаса процесс идет, процессор загружен на 99%, а результатов не видно. Построение из этого же грида карты для японского моря занимает тоже около минуты.
При помощи GMT думаю что нельзя. Если только не переводить все данные в xyz формат — это она может. Я получаю данные при помощи cdo, команда selindexbox вроде — задаю ему не бокс а прсто точку. Если нужно могу объяснить как конкретно.
Странно, вроед ибкао должен быть побольше и обрабатываться подольше. У меня рисунок около минуты делается. Это вообше не особо быстрый процесс 🙂
Может ты не вырезал данные из етопо?
Я вырезал, сделал все по иструкции. Но что-то не то . Мне особо это сейчас не нужно, ибкао более красивый, просто интересно в чем завгвоздка. Для японского моря даже по необрезанному гриду етопо2 рисунок строится за пару минут. А с обрезанным быстрее. Я думаю может где-то опечатка у тебя в тексте.
P.S Разобрался как выдернуть из грида глубину в нужных точках с помощью GMT, создаешь файл с координатами и используешь утилиту grdtrack.
grdtrack track.xy -Garctic.grd -H > track.xyd
Все оказывается просто.
а где брать «coast lines», которые использует pscoast ?
http://dss.ucar.edu/datasets/ds759.3/data/etopo2_2001sep/etopo2.grd.gz
тут нет информации о «coast lines»
ps
ставил из исходников — всё вплоть до pscoast идет нормально
2termterm
Они должны ставиться вместе с GMT. Если вы ставили из исходников то при формированияя инсталяционного файла на сайте GMT вам предлагали выбрать качество береговой линии. По умолчанию там стаит галочка на GSHHS Low-resolution Coastlines (4 мегабайта), но вы могли ей снять, тогда костлайны не поставились. Лечиться должно скачиванием их отдельно и установкой в правильную папочку )
Cпасибо за ответ !
ps
A как называется файл ?
Что-то там «*.d» ?
Это случайно не здесь ?
http://www.ngdc.noaa.gov/mgg/shorelines/data/gshhs/version1.5/shapefiles/
не здесьhttp://www.ngdc.noaa.gov/mgg/shorelines/data/gshhs/version1.5/shapefiles/
нашел на сайте rpm`ов для suse
Не не здесь )ftp://ibis.grdl.noaa.gov/pub/gmt/4/
Расширение у них cdf это файлы netCDF.
Скачать их можно (в виде тарболов) например отсюда
Называться это может GSHHS_full.tar.gz
Располагаются у меня они в
GMT4.2.0/share/coast
ПРОБЛЕМА РЕШЕНА! ftp://ibis.grdl.noaa.gov/pub/gmt/4/ )
скачал из левой дистрибуции для suse (с названием типа
gmt_coast-4.2.1-21.rpm).
распаковал — всё удачно собралось и сделалось как в статье как в статье.
зы
спасибо (вообще и за ссылку
зызы
а билд gmt-ишным build скриптом я не пользуюсь —
я качнул все исходники и собрал с помощью ./configure
Коль, не сориентируешь, где достать .grd базу данных с разрешением 1 градус (или большим)? Для небольших районов двух градусов мало. Тем более, когда важна топография дна.
Копать надо в сторону GEBCO
На вскидку не смог найти GEBCO фаила сконвертированного в GMT формат.
Пошукай, а я вечерком поищу )
Привет! Пошукал кое-что, нашел только вот это:ftp://topex.ucsd.edu/pub/global_topo_1min .
Там есть .img файл, который конвертируется в .grd при помощи команды:
img2grd topo_9.1.img -T1 -S1 -V -R-180/-160/-80/-60 -m1 -D -Gtopo_all.grd
Правда, у меня GMT не понимает опцию D…
Дальше еще проблема. В инструкции написано следующее:
The binary format of the integers is bigendian so the bytes need to be
swapped if you are running on an Intel processor.
Here is a typical command for swapping bytes:
dd if=topo_9.1.img of=topo_9.1.img.swab bs=21600 conv=swab
Вроде, работает, файл на выходе есть, но опять же GMT не может конвертировать расширение .swab
Если будет время, попробуй посмотреть, или может сразу дашь наводку на решение?
2Serg
Лучше не мучиться и взять готовый GEBCO :)) который похоже расположен тут
http://jules.unavco.org/GMT/gebco_2003/gridone.grd.zip
Скажи если получится скачать )
Да, и если бедут картинки, с удовольствием на них посмотрел бы )
А если скриптами поделишься, ты цены тебе не будет )))
Залил GEBCO на яндексовский сервис чтобы не потерялся. Размер 274 метра. После распаковки что то около половины гига.
http://narod.ru/disk/11897000/gridone.grd.zip
Слушайте подскажите, что нужно сделать чотбы на одной странице высветилось несколько карт. Если записывать последовательно — рисуется только последняя!!!
На сайте http://meteoinfo.by/maps/ — много карт. Визуализация метеорологических данных проводится с помощью ГМТ. ГМТ работает под Виндой автоматически.
По-моему, миленько получилось.
2Александр
Да, очень славные получились ) Удивительно что работает под виндой, обычно виндузятники очень сильно матерятся на GMT )
Может выложите в открытый доступ скрипты, или хотя бы их часть, чтобы народ мог на них учиться? )
Пишу по поручению Александра, поскольку карты рисовала я.
Могу сказать, что нечему тут учиться, всё соответствует написанному выше — по этой статье я, собственно говоря, и начинала разбираться с ГМТ.
Документация.
Единственный момент, который хотелось бы представить на рассмотрение и обсуждение — это отсутствие условных операторов типа if…else
По крайне мере я ничего не смогла найти и мне пришлось осваивать монстрообразный и неподъемный аппарат обратной польской записи.
Появилась необходимость реализовать следующее:
Надо было по ходу действия умножать значение (давление-1000) на различные коэффициенты (h) в зависимости от температуры воздуха.
h=0.9, при температуре воздуха t> 15°C;
h=0.8 при t от -15 до 15° ;
h=0.7 при t<-15°
h=0.6 при t1024 мб
Пришлось выкручиваться так:
составить таблицу коэффициентов для каждой точки
Каждое значение из таблицы температур проверяем на t>15. В результате пролучаем либо 0, либо 1, который и умножаем на 0.9
Дальше проверяем температуру на принадлежность к диапазону от -15 до 15, если да, то соответствующие умножаем на 0.8 и прибавляем к уже существующим 🙂 ? т.д.
grdmath contour_t_norm.grd 15 GT 0.9 MUL = h.grd
grdmath h.grd DUP contour_t_norm.grd -15 15 INRANGE 0.8 MUL ADD = h.grd
grdmath h.grd DUP contour_t_norm.grd -15 LT 0.7 MUL ADD = h.grd
grdmath h.grd DUP contour_t_norm.grd -40 LT contour_p_norm.grd 1025 GT MUL 0.1 MUL SUB = h.grd
Вот примерно таким образом.
Если кто-то знает способ попроще — буду благодарна
2ElDoRada
Славно что эта статья помогает )
По поводу вопроса об отсутствии условных операторов.
Большинство народу работая под линукс встраивает команды GMT в shell скрипты, в них есть и условные операторы и много чего ещё присущее языку программирования.
Последнее время у нас в институте всё чаще используется такая схема — обработка данных идёт на Pythion и потом оттуда вызываются команды GMT при помощи системных вызовов. Выглядеть это может так
gridname = "arctic.grd"
region = "-180/180/70/90"
os.system("makecpt -Cgebco > GMT_global.cpt")
os.system("grdimage"+gridname+"-Js0/90/3i/70 -R"+region+" -CGMT_global.cpt > arctic.ps")
Преимущество в том что питон более мощьный чем shell язык, к тому же работающий практически одинаково и на линукс и на винде.
Проблема с использованием условных операторов связана с тем, что в некоторых случаях надо визуализировать не просто значения одной сетки, а строить и визуализировать функцию нескольких сеток (переменных).
В простейшем же случае, данные к нам поступают в виде GRIB-ов.
Degrib конвертирует из GRIB в CSV, скрипт (самописный) на perl, отрывает заголовок и «лишние» поля, результат скармливается утилите surface из пакета GMT.
Скрипт отрывает заголовок и все поля кроме широты и долготы и значения в точке.
Можно все переводить в бинарный формат, но это не обязательно. Бинарный работает чуть быстрее, но не стоит оно того.
Лучше сделать Грид (в формате .nc — NetCDF).
Все команды для подложки:
psxy — Ставит точки разного вида на пунктах (пункты — в файле);
pstext — Подписи пунктов (параметры берутся или из файла подписей, или задаются в команде);
pscoast — береговая линия.
Заливка у нас делается grdview или grdimage в зависимости от желаемого эффекта, изолинии — grdcontour
Самое главное — это наиграться с параметрами, тогда всё получится красиво.
Кодировка текстового файла под win (для городов из русских букв) iso8859-5-cyrillyc.
Полученный на выходе GMT postscript конвертируется в png (на данный момент), которые выкладываются на сайт. Для преобразования используем GhostScript.
2ElDoRada
Сори за проблемы с комментами, противоспамный фильтр шалит ((
Я может немного не понимаю всех этапов, но почему вы не делаете препроцессинг ваших данных в перле, раз уж всё равно конвертируете им из GRIB в CSV? То есть можно было бы в перле и получать функцию от нескольких переменных, потом конвертить её в netCDF?
Не делаем «препроцессинг» потому, что с помощью GMT горааааздо проще происходит обработка огромнейших таблиц 🙂 Одна умножается на другую, и на третью, и складывается, и прочее… за доли секунды.
2ElDoRada
если решите как нить поумножать файлы в netCDF отдельно от GMT то можете посмотреть в сторону cdo (climate data operators) 🙂
Hi,
I’m sorry writing in English but I know Russian too poorely.
At the end of the post there are such sentences:
Чутка на русском тут
На английском — The GMT Grdimage Primer и Introduction to Generic Mapping Tools
На вопросы которые, надеюсь, возникнут, постараюсь ответить в коментах.
Please change your bookmarks of the GMT Grdimage Primer to
http://pp.blast.pl/gmt/primer_grdimage.html
Thank you. Cheers.
Przemysław Pawełczyk
2Przemysław Pawełczyk
Thanks, Przemysław, changed as requested 🙂
? снова здрасте 🙂
Наделали мы у себя карт, если вы помните (я писала немного выше). ? попробовали поэкспериментировать в ГМТ с графиками
Если интересно, то метеограммки выложили на http://meteoinfo.by/meteograms/?city=26850 — это для Минска.
Там не чистый ГМТ, но всё таки…
?нтересно было бы узнать мнение сообщников по ГМТ.
2ElDoRada
По мне так очень круто, я вообще с вас поражаюсь как вы красиво всё делаете ) Чудненькие метеограмки )
Гран мерси 🙂
Может быть Вы подскажете, в какую сторону было бы неплохо глянуть, чтобы порисовать графики (тоже метеограммы, только другие)?
Что есть из простенького, но хорошо «заточенного» под это дело?
Ну на мой взгляд у вас и так уже всё хорошо. ?з альтернатив можно посмотреть на PyNGL, но он всё таки больше для площадных карт, хоть и может делать чисто метеорологические вещи типа http://www.pyngl.ucar.edu/Examples/Images/skewt3.1.png . Всё таки рисование графиков в нем, по крайней мере простых, связано с неоправданным гемороем. Последнее время я использую Matplotlib, вывод которой очень неплохо смотрится http://matplotlib.sourceforge.net/gallery.html и она заточена именно под графики.
Даааа…. Вторая «штучка» вроде как неплоха. Мы ее рассматривали как вариант, только пока не получилось «заточить» ее под наши условия. Но мы еще не отчаялись 🙂
Будем пробовать. Если получится, то с меня кратенький отчет, если Вы не будете против 🙂
2ElDoRada
Я всеми руками за ) Если есть желание могу предоставить этот блог как площадку для вашего кратенького отчёта. То есть можно сделать его тут отдельным постом, если лень заморачиваться оформлением его я могу взять на себя )
Ну что Вы…. до отчета еще «ого-го» сколько 🙂
Николай, скажите, пожалуйста, а где взять elevation grid, чтобы построить такую карту, какая приведена последней (с обещанием рассказать, как сделать оную)?
и какая использована палитра?
заранее благодарен за ответ,
Миша.
2Миша
Есть несколько подобных наборов данных. В данном случае использовалось IBCAO, обычно также строят по данным GEBCO (оба находятся в гугле:) ). Палитру честно говоря, не помню, но это точно одна из стандартных палитр GMT, там их не много, можно найти методом перебора )
разве IBCAO и GEBCO гриды содержат топографию суши, не только дна?
2Миша
Угу, суша там тоже есть. А в ETOPO, например, есть океан. Делать глобальный грид и работать с ним гораздо проще чем вырезать сушу и океаны отдельно.
большое спасибо за советы! буду пробовать.
классно, все работает!
кстати, доступен GEBCO грид с разрешением 30″
2Миша
Да, недавно совсем появился.
интересно — береговые линии GMT не совпадают с береговыми линиями гридов GEBCO и IBCAO в северной оконечности островов Гренландия и Эльсмир.
Возвращаясь к вопросу о PyNGL. Можно ли его поставить под Винду? Может кто-то пробовал? Какие там есть «подводные камни»? А то неохота изобретать велосипед. Если есть описание процесса установки именно под Винду — буду благодарна.
Если есть возможность или интерес, может быть Вы создали бы отдельную тему? ?ли написали бы мне по email?
? сильно не совпадают? Картнинки нету?
ну как, на мой взгляд — существенно. в списке рассылки GMT-HELP существование проблемы потдвердили.
картинку не сохранил, вот скрипт (для данных GEBCO, 1″, можно тупо заменить на грид IBCAO):
#!/bin/sh
OUTPUT_FILENAME=plot3-b.eps
COLOR_MAP=arctic-b.cpt
GRID_FILE=arctic-b.grd
GRADIENT_FILE=arctic_grad-b.grd
RANGE=»-90/0/80/90″
grdcut -R$RANGE ~/software/GridOne.grd -fg -G$GRID_FILE
makecpt -Cglobe > $COLOR_MAP
grdgradient $GRID_FILE -A0/270 -Ne0.6 -G$GRADIENT_FILE
grdview $GRID_FILE -R$RANGE -Js0/90/6i/70 -C$COLOR_MAP -K -P \
-Qi600 -S -I$GRADIENT_FILE > $OUTPUT_FILENAME
pscoast -R -J -Dh -W -I1 -A150 -Na -O -K -P >> $OUTPUT_FILENAME
psbasemap -R -J -O -B30g30/10g10:.»Arctic ocean»: -P >> $OUTPUT_FILENAME
gv $OUTPUT_FILENAME
rm .gmtcommands4
2ElDoRada
Такие вопросы задавались в рассылке и вот что ответили разработчики:
«The latest version of NCL is available as a Cygwin app. You can
download it from the NCL download site.
As for PyNGL, I haven’t approached this port yet. When I do, it will
also be a Cygwin app, as we don’t have a native port of NCL’s graphical
library available for windows, and this would be required before we
could get a PyNGL port going. I’m not sure a native port of NCL/PyNGL will
ever happen (it’s very low on our list). »
На самом деле порт под Cygwin для версии PyNGL/PyNIO 1.2.0 уже есть (называется PyNGL/PyNIO 1.2.0 for Python 2.4, CYGWIN), так что под сигвином на винде это будет работать. Порта для винды скорее всего не будет и проблемма не в кросплатформенном питоне, а в библиотеках NCL которые используются для визуализации.
Еще один вариант это использование виртуальной машины с установленным в нее линуксом.
Только начинаю работать с GMT. Вопрос пока чисто теоретический — достаточно ли набора приведенных выше GRD-файлов, чтобы отрисовать границы областей Центрального федерального округа России? Если нет, то где взять (если есть где)? Спасибо за отличную статью!
Добрый день 🙂
Отказались мы от идеи рисования графиков в других средах. Так что отчета не будет 🙂
Остались верны GMT и пока не пожалели. Если интересно, можете глянуть на http://meteoinfo.by/m3/
Там ничего принципиально нового, но работаем дальше. Уже доделываем высотные метеограммы.
2ElDoRada
Главное чтобы вам было удобно и результат глаз радовал. Картинки у вас получились очень красивые, правда было бы здорово иметь возможность смотреть их увеличенную версию, а то на таком маленьком размере сливаются линии.
вот нарисовали метеограммы ввысь 🙂
получилось http://meteoinfo.by/aero/?city=26850
остался только вопрос с ветром. На самой верхней хотелось бы нарисовать ветер на поверхностях. Как-то это у нас получился вертикальный разрез, а вот ветры надо рисовать в горизонтальной плоскости С-Ю-З-В.
Может у Вас есть мысли по этому поводу?
Здравствуйте!
Тоже начинаю разбираться с GMT. Не могу понять как отрисовывать изолинии осадков. С температурой всё понятно — она есть везде. А вот осадки… Беру данные от метеостанций где есть осадки, а где нет присваиваю ноль. «Скармливаю» surface и у меня осадки по всей площади получаются. Ну или почти по всей. Подскажите в какую сторону двигаться?
Здравствуйте!
Тоже начинаю разбираться с GMT. Не могу понять как отрисовывать изолинии осадков. С температурой всё понятно — она есть везде. А вот осадки… Беру данные от метеостанций где есть осадки, а где нет присваиваю ноль. «Скармливаю» surface и у меня осадки по всей площади получаются. Ну или почти по всей. Подскажите в какую сторону двигаться?
Спасибо.
To Muzzy:
Что могу сказать…. Surface — это очень хорошо. ? даже нужно. Но я делаю сначала blockmean, потому как данные с метеостанций не дают нам регулярной сетки. ? потом, после blockmean, после surface… рисую осадки, начиная с 0.1 мм 🙂
To ElDoRada:
Но blockmean не приводит данные к регулярной сетке….
Всё равно спасибо за ответ.
Добрый день всем всем!!! Может у кого получалось или кто то рисовал в ГМТ батиметрию! То есть промер сделанный! Попробовал все данные загрузить в серфер , получил батиметрию красивую! Но решил наложить потом все это в ГМТ, то есть сами промерные линии из то есть как говорится преплот , а потом уже еще плюс ко всему и батиметрию! Так вот из Серфера получил файл grd. Но почему то в ГМТ не хочет рисовать! Решил проверить какой же грид файл получается из ETOPO попробовал его открыть в серфере- так вот не получилось!! Ест ьеще наметка что батиметрию можно рисовать в ГМТ из ASCII файла!! Такой файл тоже можно получить в Серфере!! Есть какие нибудь мысли по этому поводу? Всем удачи!!
Здравствуйте!
Спасибо за статью! Она помогла мне на начальном этапе написания gmt-скриптов.
По поводу -Ba30/10
Это действительно отрисовка рамки. Я знаю такие опции:
а — большие риски,
g — грид (сетка)
f — маленькие риски
?так, задание флага -Ba30g10f1/a50f2
означает, что отрисуется рамка с большими рисками по горизонтали через 30, с линиями сетки через 10, с маленькими рисками через 10. Соответственно, по вертикали большие риски будут через 50, малые — через 2, линий сетки не будет.
Like!! I blog frequently and I really thank you for your content. The article has truly peaked my interest.
Comprar Cialis Online Paypal generic cialis Generic Direct Doryx Secure Medicine Amex Accepted Buy Cialis Sandalis Viagra
Amoxicillin Clavulanate Aka Augmentin 250m generic 5mg cialis best price Prednisolone Tablets Online Buy Cialis Levitra Generico Comprar
Clobetasol Medicine Internet No Doctor cheap cialis Dapoxetina Depressione Cialis Progesterone With Overnight Delivery
Order Viagra Pills Online Cialis Pharmacie Cialis Levitra Viagra Cialis Cialis Que Contiene
This paragraph will help the internet visitors for setting up new weblog or even a blog from start to end.|