apostila_INPE2

25
Generic Mapping Tools: um μcurso Paulo S. Polito e Olga T. Sato 22 de Mar¸ co de 2002 Conte´ udo 1 Objetivo 3 2 O que ´ e, para que serve e por que eu usaria o GMT? 3 3 Estrutura deste μcurso 3 4 Mais informa¸ oes sobre o GMT 3 5 Nota¸ ao 4 6 UNIX 4 6.1 Abrindo uma Sess˜ ao ......................................... 4 6.2 Editando um arquivo texto ..................................... 5 6.3 Criando um shell script ....................................... 6 6.3.1 C-shell ´ e invocado ...................................... 6 6.3.2 Coment´ arios ......................................... 7 6.3.3 Criando vari´ aveis locais ................................... 7 6.3.4 Imprimindo o conte´ udo de uma vari´ avel .......................... 7 6.3.5 Redirecionadores em C-shell (csh) ............................. 7 6.4 Programando com shell scripts ................................... 8 6.4.1 Itera¸ oes Itera¸ oes Itera¸ oes ... ............................... 8 6.4.2 Mas e se.............................................. 9 6.5 Manipula¸ ao de arquivos ....................................... 10 6.5.1 awk, nawk e gawk ...................................... 10 6.5.2 Pipe (|): conectando comandos ............................... 11 6.5.3 Trocando as bolas ...................................... 12 1

Transcript of apostila_INPE2

Page 1: apostila_INPE2

Generic Mapping Tools: um µcurso

Paulo S. Polito e Olga T. Sato

22 de Marco de 2002

Conteudo

1 Objetivo 3

2 O que e, para que serve e por que eu usaria o GMT? 3

3 Estrutura deste µcurso 3

4 Mais informacoes sobre o GMT 3

5 Notacao 4

6 UNIX 4

6.1 Abrindo uma Sessao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

6.2 Editando um arquivo texto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

6.3 Criando um shell script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

6.3.1 C-shell e invocado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

6.3.2 Comentarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

6.3.3 Criando variaveis locais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

6.3.4 Imprimindo o conteudo de uma variavel . . . . . . . . . . . . . . . . . . . . . . . . . . 7

6.3.5 Redirecionadores em C-shell (csh) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

6.4 Programando com shell scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

6.4.1 Iteracoes Iteracoes Iteracoes ... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

6.4.2 Mas e se... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

6.5 Manipulacao de arquivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

6.5.1 awk, nawk e gawk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

6.5.2 Pipe (|): conectando comandos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

6.5.3 Trocando as bolas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

1

Page 2: apostila_INPE2

7 Generic Mapping Tools 12

7.1 Entrada e saida . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

7.2 Exercicio Comentado 1: Grafico Cartesiano . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

7.2.1 Exercicio 1: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

7.3 Exercicio Comentado 2: Varios graficos em uma pagina . . . . . . . . . . . . . . . . . . . . . 14

7.3.1 Exercicio 2: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

7.4 Exercicio Comentado 3: Utilizacao de variaveis . . . . . . . . . . . . . . . . . . . . . . . . . . 15

7.4.1 Exercicio 3: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

7.5 Exercicio Comentado 4: Projecoes , continentes e texto . . . . . . . . . . . . . . . . . . . . . 17

7.5.1 Exercicio 4: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

7.6 Exercicio Comentado 5: Pontos e contornos em mapas . . . . . . . . . . . . . . . . . . . . . . 19

7.6.1 Exercicio 5: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

7.7 Exercicio Comentado 6: Vetores e interpolacao . . . . . . . . . . . . . . . . . . . . . . . . . . 20

7.7.1 Exercicio 6: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

7.8 Exercicio Comentado 7: Relevo iluminado de uma sub-regiao . . . . . . . . . . . . . . . . . . 23

7.8.1 Exercicio 7: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

8 O proximo passo 25

2

Page 3: apostila_INPE2

1 Objetivo

Este µcurso introduz o uso do GMT - Generic Mapping Tools a usuarios nao necessariamen-

te familiarizados com ambiente UNIX ou Linux. Linux nao e UNIX mas a similaridade e grande e por

conveniencia vou simplesmente me referir ao UNIX.

O GMT foi desenvolvido por:

Pal Wessel

School of Ocean and Earth Science and Technology, University of Hawai’i at Manoa

.

Mahalo Pal !!!

2 O que e, para que serve e por que eu usaria o GMT?

O GMT e composto por uma serie de programas para preparar, processar e plotar dados em ambiente UNIX.

Nao existe um ”programa principal”nem interface grafica.

O GMT foi escrito por e para geofisicos, inclui dezenas de projecoes diferentes e pode plotar pontos,

linhas, elipses, contornos, trajetorias, vetores, imagens, superficies 3D com ou sem iluminacao , mascaras,

etc.. O pacote inclui a definicao dos continentes e nos incluimos dados topograficos globais com resolucao

de 5 minutos (ETOPO5).

Os programas para interpolacao sao confiaveis, se baseiam em algoritmos descritos em publicacoes

cientificas e contam com o olho critico da comunidade academica para corrigi-los. Alem de corrigido, por ser

software aberto (GNU Public License) o GMT pode ser extendido para atender necessidades especificas.

3 Estrutura deste µcurso

Comecaremos por uma breve introducao aos comandos UNIX que serao usados para escrever scripts (pro-

graminhas simples) para uso do GMT. Estes comandos sao de aplicacao geral e podem ser usados para uma

infinidade de tarefas nao relacionadas ao tema aqui abordado.

A programacao de tarefas com C-shell e introduzida como meio de se automatizar e facilitar o processo

de criacao , leitura e manipulacao de arquivos.

O uso dos comandos do GMT e introduzido atraves de uma serie de exemplos e exercicios de fixacao ,

nao dispensando de forma alguma a consulta ao manual.

4 Mais informacoes sobre o GMT

O manual do GMT esta instalado localmente:

file:/home/gmt/GMT3.3.6/www/gmt/doc/html/GMT_Docs/GMT_Docs.html

3

Page 4: apostila_INPE2

e e essencial , deem uma olhada nos topicos ”cookbook”e ”quick reference”. No ”cookbook”voce encontrara

uma lista de exemplos que da uma boa ideia da capacidade deste programa e e uma extensao dos exemplos

aqui apresentados.

O web site original, um mapa dos locais onde se usa o GMT e a errata estao aqui:

http://imina.soest.hawaii.edu/gmt/

Neste local voces tambem encontrarao tudo que e necessario para instalar o GMT em outras maquinas.

Basta preencher um formulario online e rodar um script de instalacao criado automaticamente pelo for-

mulario.

Para uma consulta rapida ha sempre o comando man do UNIX para cada um dos programas que compoe

o GMT. Falando em UNIX...

5 Notacao

Nesta apostila os URLs, nomes de comandos e excertos de programas sao escritos com esta fonte. O

negrito e usado para realcar conceitos e ideias. Nos comandos o prompt e ignorado.

Nos programas a notacao ... indica continuacao de uma linha que nao coube na pagina e nao deve ser

transcrita ao programa. No texto corrido a notacao ... tem o sentido usual de preguica de escrever.

As figuras aqui reproduzidas estao reduzidas para poupar espaco.

6 UNIX

O GMT roda em ambiente UNIX, portanto e necessario saber alguns comandos e conceitos deste sistema

operacional. E indispensavel a leitura dos capitulos iniciais de algum livro basico de UNIX, que fica

inteiramente a escolha do leitor.

No MS-Windows o acesso ao sistema e feito atraves de menus e icones. No UNIX o modo preferencial

de acesso ao sistema e o terminal onde o usuario digita comandos. Menus e icones tem um papel menos

relevante, embora estejam plenamente implementados.

O UNIX e um sistema operacional modular. Seus comandos sao pequenos programas que fazem tarefas

especificas. Com eles voce pode abrir sessoes de trabalho, editar arquivos, enviar e-mail, processar imagens,

etc.. A seguir veremos alguns comandos em acao .

6.1 Abrindo uma Sessao

O GMT pode ser usado em qualquer estacao UNIX. Para este exercicio vamos trabalhar remotamente. Nao

equeca (a) de autorizar o lagavulin junto a sua maquina com xhost + lagavulin e (b) de apontar o servidor

X para a sua maquina com o comando

4

Page 5: apostila_INPE2

setenv DISPLAY nome_da_maquina:0

O seguinte monologo ilustra alguns comandos do UNIX :

Em que maquina estou trabalhando? echo $HOST

Vou para a lagavulin. rlogin lagavulin

Em que maquina estou trabalhando? echo $HOST

Em que diretorio estou? pwd

Que arquivos tenho neste diretorio? ls

Vou criar um diretorio para este curso. mkdir ge-eme-te

Nao gostei. rmdir ge-eme-te

Vou criar outro. mkdir gmt

Vou entrar neste diretorio e... cd gmt

... separar programas, dados e figuras. mkdir pgms dados figs

Criei tudo certinho? ls

O que faz o comando ls? man ls

O que faz o comando pwd? man pwd

O que faz o comando mkdir? man mkdir

OK, vou voltar para meu diretorio raiz. cd

6.2 Editando um arquivo texto

Ha varios editores1 de texto no UNIX, os mais populares sao o ”vi”e o ”emacs”e suas variantes (jove, Xemacs,

VIper, etc.). Vamos usar o xemacs.

Para abrir o xemacs simplemente digite xemacs no terminal. O xemacs possui um menu razoavelmente

intuitivo. Ao lado dos itens de cada menu aparecem os comandos equivalentes (C e a tecla control e M e

alt). O uso do teclado e mais eficiente que o uso do mouse.

O xemacs pode ser usado como um simples editor de texto, apesar de ser capaz de muitas outras peripecias

fora do escopo deste µcurso.

Rode o xemacs, crie um texto qualquer e salve-o, so para se acostumar com o editor.

1Editor de texto em UNIX e editor de arquivos ASCII, nao sao introduzidos caracteres ”extras”com em processadores de

texto (e.g. MS-Word). Esta apostila foi editada no Xemacs e processada no LATEX.

5

Page 6: apostila_INPE2

6.3 Criando um shell script

Usando o xemacs crie um arquivo chamado prog1. O arquivo deve ser exatamente assim:

#!/bin/csh -f

# cria a variavel linha

set linha = "23.54 12.33 23 99 A"

# cria a variavel arquivo

set nome_do_arquivo = "dados.ASCII"

# escreve 23.54 12.33 23 99 A no arquivo dados.ASCII

echo $linha >! $nome_do_arquivo

# por enquanto e so pessoal

No UNIX os arquivos tem permissoes de acesso2. Um arquivo pode ser lido, gravado ou executado. Este

que foi criado agora ainda nao pode ser executado. Por ora nao nos preocuparemos com o conteudo do script

prog1, vamos apenas transforma-lo num arquivo executavel:

chmod +x prog1

e executa-lo:

prog1

Se tudo ocorreu como esperado, voce deve ter o arquivo dados.ASCII no seu diretorio. Verifique com:

ls dad*

O conteudo deste arquivo e listado com:

cat dados.ASCII

Agora nos resta entender o que o prog1 fez.

O UNIX possui varios dialetos3 ou shells que permitem a programacao de tarefas simples. Sao linguagens

interpretadas e portanto os programas (scripts) sao executados linha por linha. Vejamos o que o script criado

acima faz:

6.3.1 C-shell e invocado

#!/bin/csh -f

Todo shell script comeca com uma linha similar a esta, invocando o shell que sera usado. E como se uma

nova sessao fosse iniciada so para rodar este script. O parametro -f (fast) carrega o shell sem ler os arquivos

de configuracao (.cshrc e .login). Se adicionarmos o parametro (-fv, verbose) veremos no terminal o que

o programa faz, passo a passo. Este e um bom modo para achar erros em um script. Altere o seu script e

teste-o.

2Para listar as permissoes de acesso, tamanho, etc. use o comando ls -l prog1 , as permissoes estao na primeira coluna:

r=read, w=write, x=execute.3e.g.: sh, bash, csh, tcsh e ksh

6

Page 7: apostila_INPE2

6.3.2 Comentarios

# cria a variavel linha

Toda linha de comentarios comeca com #. Comente todos os seus programas. Um programa sem co-

mentarios e um amontoado amorfo de comandos de utilidade limitada. Um programa com bons comentarios

pode sempre ser usado como exemplo, desmembrado, reescrito e otimizado. Comente cada linha de comando

que nao seja absolutamente trivial. Explique o que o programa faz, descreva os arquivos lidos e os arquivos

gravados, as subrotinas usadas e nao esqueca o nome do autor - a Cæsar o que e de Cæsar.

6.3.3 Criando variaveis locais

set linha = "23.54 12.33 23 99 A"

set nome_do_arquivo = "dados.ASCII"

Neste caso linha e nome_do_arquivo sao os nomes das variaveis cujo conteudo sao os caracteres

"23.54 12.33 23 99 A" e "dados.ASCII" respectivamente.

Nota: As aspas duplas (") delimitam caracteres possibilitando a substituicao de variaveis entre elas. As aspas

simples(’) nao permitem a substituicao de variaveis entre elas, neste sentido as aspas simples protegem as aspas

duplas. As crases (‘) delimitam comandos cujo resultado ocupara o espaco entre as crases.

6.3.4 Imprimindo o conteudo de uma variavel

echo $linha >! $nome_do_arquivo

No comando anterior as variaveis linha e nome_do_arquivo foram criadas. Para se referir a elas e

necessario prefixa-las com um $. O valor das variaveis e substituido e o comando efetivamente executado e:

echo "23.54 12.33 23 99 A" >! "dados.ASCII"

Neste comando usamos um recurso muito importante, o redirecionador >! .

6.3.5 Redirecionadores em C-shell (csh)

Um exemplo do uso de redirecionadores para se criar4 um arquivo texto curto:

echo "lon lat z" >! lixo

echo "10.5 -23.4 -1021" >>! lixo

echo "10.9 -22.9 -4057" >>! lixo

echo "11.1 -21.2 -4029" >>! lixo

echo "---- ----- -----" >>! lixo

4Ha um metodo mais elegante apelidado de here-file.

7

Page 8: apostila_INPE2

Para ver no que deu tudo isso use o comando cat que lista um arquivo no terminal:

cat lixo

Entendamos pois o que aconteceu. O comando echo "bla bla bla" simplesmente escreve o argumento

"bla bla bla" no terminal.

O redirecionador >! cria o arquivo ”lixo”e joga a saida do comando echo "bla bla bla" nele.

Redirecionadores sao muito uteis, eles funcionam assim:

[comando] > [arquivo] escreve saida do comando no arquivo.

[comando] >! [arquivo]escreve saida do comando no arquivo, incondicionalmente5.

[comando] >> [arquivo] adiciona saida do comando o arquivo.

[comando] >>! [arquivo] adiciona saida do comando o arquivo, incondicionalmente.

[comando] < [arquivo] usa arquivo como entrada do comando.

6.4 Programando com shell scripts

Shell scripts sao usados para tarefas pequenas e relativamente simples. Para qualquer aplicacao onde a

performance seja importante recomenda-se o uso de linguagens compiladas (e.g. fortran, C, C++).

Vejamos agora os mecanismos basicos para controle em C-shell:

6.4.1 Iteracoes Iteracoes Iteracoes ...

Para fazer loops ha pelo menos dois metodos: while e foreach.

O while funciona assim:

while (teste)

comando ...

end

O foreach funciona assim:

foreach variavel (lista_de_variaveis)

comando ...

end

Abra o xemacs e crie exatamente o seguinte arquivo:

#!/bin/csh -f

set i = 4

while ($i <= 9)

@ j = ($i - 3)

set nome = "lixo$j"

5Mesmo se o comando set noclobber estiver ativado.

8

Page 9: apostila_INPE2

echo "$i $j $nome" >! $nome

@ i++

end

foreach trash (‘ls lixo[2-5]‘)

echo $trash " contains:"

cat $trash

end

Use chmod +x nome_do_arquivo para torna-lo executavel e execute-o. Este script cria os arquivos lixo[1-6]

usando o while e lista-os usando o foreach. Vejamos o que ha de novo nesse script, passo a passo:

while literalmente significa enquanto: execute os comandos entre while e end enquanto o teste $i <= 9

for verdadeiro. Comparacoes ou testes validos sao:

== igual != diferente

<= menor ou igual >= maior ou igual

> maior < menor

@ j = ($i - 3) Expressoes aritmeticas sao precedidas de @ .

foreach literalmente significa para cada. Executa os comandos entre foreach e end para cada um dos

elementos da lista resultante de ‘ls lixo[2-5]‘. Experimente este comando (sem as crases) no terminal.

O resultado e uma lista de nomes de arquivos. A cada iteracao um destes nomes de arquivos e carregado na

variavel $trash ate que a lista termine.

6.4.2 Mas e se...

O condicional if funciona assim:

if (teste) then

comando ...

else if (outro_teste) then

comando ...

else

comando ...

end

Se ”teste”e verdadeiro, o primeiro bloco de comandos e executado; se ”teste”e falso e ”outro teste”e

verdadeiro, o segundo bloco e executado; caso os dois testes sejam falsos o terceiro bloco e executado.

Vejamos na pratica como funciona o uso de condicionais em C-shell. Altere o arquivo previamente criado

para incluir um condicional:

#!/bin/csh -f

9

Page 10: apostila_INPE2

set i = 4

while ($i <= 9)

@ j = ($i - 3)

set nome = "lixo$j"

if ( $i == 4 ) then

echo "Quatro $i $j $nome" >! $nome

else if ( $i == 5 ) then

echo "Cinco $i $j $nome" >! $nome

else

echo "$i $j $nome" >! $nome

endif

@ i++

end

foreach trash (‘ls lixo[2-5]‘)

echo $trash " contains:"

cat $trash

end

6.5 Manipulacao de arquivos

Por manipulacao de arquivos estamos nos referindo a operacoes triviais em arquivos ASCII dispostos em

colunas. Especificamente focamos em tarefas como selecionar e rearranjar colunas, operacoes matematicas

entre colunas, selecao de linhas, edicao de separadores de campo, reformatacao , etc..

Operacoes matematicas menos triviais podem ser feitas atraves dos comandos (GMT) grdmath e gmtmath

que nao sao abordados neste µcurso. Uma alternativa ainda melhor e o uso de uma linguagem compilada.

6.5.1 awk, nawk e gawk

O awk e um utilitario UNIX para processamento de arquivos ASCII linha por linha. Os comandos de awk

podem ser dados de duas formas: na propria linha de comando ou em um arquivo separado. Vamos discutir

apenas tarefas simples para as quais a linha de comando e suficiente. O nawk (new awk) e o gawk (GNU

awk) sao versoes melhoradas do awk e em muitas maquinas ja o substituem. A sintaxe geral e:

awk ’{comando comando comando}’ arquivo.velho >! arquivo.novo

Noventa por cento dos erros de awk sao por causa da sintaxe que inclui aspas simples, duplas, crases,

dois-pontos, ponto-e-virgual, etc..

Neste exemplo iniciaremos com um arquivo chamado dados_awk de 5 colunas separadas por espacos, nao

necessariamente alinhadas verticalmente:

10

Page 11: apostila_INPE2

10 201 130 40 504

10 202 310 00 540

10 203 301 00 540

...

Para selecionar as colunas 1 e 3 tente isto6:

awk ’{print $1,$3}’ dados_awk

Neste caso o resultado e mostrado no terminal. Redirecione para o arquivo dados.tmp e confira no

terminal:

awk ’{print $1,$3}’ dados_awk >! dados.tmp

more dados.tmp

Suponha que e necessario escalar a coluna 4 para melhorar a aparencia dos graficos. Para criar um

arquivo (dados.tmp) com as colunas 1, 2 e 4 sendo que a coluna 4 deve ser dividida por 100 tente isto:

awk ’{print $1 " " $2 " " $4/100}’ dados_awk >! dados.tmp

more dados.tmp

Vamos agora selecionar todas as linhas onde a coluna 5 e maior que 501 e imprimir as colunas 1, 2 e 5:

awk ’{if ($5 > 501) print $1 " " $2 " " $5+’ dados_awk

6.5.2 Pipe (|): conectando comandos

Pipe e mais um recurso interessante do UNIX que joga a saida de um comando na entrada de outro comando7.

Para apreciarmos o uso do pipe, vejamos primeiro o comando:

wc -l lixo

ele conta quantas linhas tem o recem-criado arquivo ”lixo”. Experimente com outros arquivos ASCII em

seu diretorio.

Vamos tentar algo diferente com um comando ja conhecido:

ls -al

Ele mostra detalhes de todos os arquivos deste diretorio em uma coluna.

Agora podemos usar o pipe:

ls -al | wc -l

A laconica resposta conta o numero de arquivos no seu diretorio pois o resultado do ”ls”vai direto para

o ”wc”como se fosse um arquivo. Isto permite o encadeamento de comandos e evita a criacao de arquivos

temporarios agilizando o processamento.

6Se as colunas fossem separadas por ”;”o comando seria awk -F; ’print $1,$3’ dados awk7O redirecionador faz isso com arquivos.

11

Page 12: apostila_INPE2

6.5.3 Trocando as bolas

Muitas vezes os arquivos de dados possuem caracteres indesejaveis ou convencoes do tipo virgula/ponto que

precisam ser corrigidas.

O comando tr substitui, complementa ou deleta um ou mais caracteres de um arquivo ASCII. A sintaxes

que usaremos mais sao :

cat arquivo_original | tr ’a’ ’b’ >! arquivo_corrigido

cat arquivo_original | tr -d ’x’ >! arquivo_corrigido

No primeiro caso o caracter ’a’ e substituido por ’b’. No segundo caso o caracter ’x’ e deletado.

Caracteres invisiveis sao particularmente chatos. Geralmente trata-se do caracter ”CR”(carriage return)

que e o caracter ASCII correspondente ao numero octal 15 ou decimal 13. Para exorcisarmos nossos arquivos

deste mal eis a solucao :

cat arquivo_original | tr -d ’\015’ >! arquivo_corrigido

Para detetar os caracteres invisiveis de forma inequivoca use o comando od -c arquivo_original

(mostra caracteres) e/ou od -b arquivo_original (mostra octais), use man od para obter mais informacoes

.

Embora nao seja tratado aqui, e bom notar que existe tambem o comando sed que faz edicoes sofisticadas

em arquivos ASCII.

7 Generic Mapping Tools

Certifique-se que em seu diretorio ”home”existe o arquivo .cshrc e que o mesmo contem estas linhas:

stty sane

setenv GMTHOME "/home/gmt/GMT3.3.6/"

setenv GS_LIB "/home/local/share/ghostscript/5.50/ : /home/local/share/ghostscript/fonts"

set path=($path /home/gmt/GMT3.3.6/bin /home/gmt/netcdf-3.4/bin )

Estes comandos dizem ao sistema operacional onde encontrar o GMT.

Para testar se o sistema consegue achar o GMT, digite psxy. A resposta deve ser algumas telas de ”help”.

Outro ingrediente e o ghostscript, usado para visualizar os graficos postscript gerados pelo GMT. Para

invocar o ghostscript digite gs. Para sair do ghostscript digite quit ou simplesmente mate-o com CTRL-C.

Qualquer bom pacote que consiga abrir arquivos postscript serve (Xpsview, ghostview, etc.).

7.1 Entrada e saida

O GMT le os seguintes formatos de arquivos:

12

Page 13: apostila_INPE2

ASCII em colunas, com longitude na coluna 1, latitude na coluna 2 e dados nas demais colunas. Estas

coordenadas geograficas podem ser especificadas de varias maneiras (vide manual). A grade nao precisa

ser regular, o arquivo pode ter cabecalho e multiplos segmentos.

binario em colunas. Valem as observacoes feitas para arquivos ASCII, maiores detalhes na secao 9.1.2 do

manual.

grd ou netCDF e o formato preferido do GMT. Ha comandos para a conversao de/para netCDF. Maiores

detalhes na secao 9.2.1 do manual.

O uso de arquivos ASCII e mais facil e sera adotado sempre que possivel. Em geral e trivial converter

arquivos ASCII e binarios em netCDF e vice-versa.

Os graficos sao sempre gerados em formato postscript ou encapsulated postscript. Se for necessario

converter para outros formatos (jpeg, bmp, etc.) usaremos o ghostscript.

7.2 Exercicio Comentado 1: Grafico Cartesiano

Este primeiro exercicio visa: (a) familiariza-los com a sintaxe do GMT e (b) mostrar como se cria um grafico

cartesiano simples. O GMT nao faz apenas mapas!

Use o xemacs para criar o seguinte shell script:

#!/bin/csh -f

gmtset PAPER_MEDIA A4+

psxy -R1/10/0/25 -JX10c/7.5c -Ba2/a3WSne -P dados.1 >! fig1.ps

gs fig1.ps

Na linha 1 invocamos o C-shell com o parametro -f (fast). Na linha 2 indicamos o tamanho da folha A4 e o

formato EPS (+) para facilitar a inclusao do grafico neste documento. Na linha 3 executamos o comando

psxy. Na linha 4 executamos o ghostscript para visualizar a nossa obra. Entendamos pois a linha 3:

-R1/10/0/25 indica a regiao a ser plotada, limitando a extensao dos eixos. Portanto o eixo x vai de 1 a

10 e o y de 0 a 25.

-JX10c/7.5c indica a projecao e o tamanho do grafico. Como nao e um mapa usamos X, com o eixo x

de 10cm e o y de 7.5cm. Use c para centimetros e i para polegadas.

-Ba2/a3WSne controla as anotacoes dos eixos. No eixo x temos tics e anotacoes a cada 2 unidades e no

y a cada 3 unidades. Os eixos Oeste e Sul sao plotados e anotados, os demais sao apenas plotados.

-P indica formato de pagina portrait e so precisa ser dado uma vez (landscape e o default).

dados.1 e o arquivo ASCII de entrada, com 2 colunas (x, y = f(x)):

1 10

2 12

13

Page 14: apostila_INPE2

3 20

...

>! fig1.ps redireciona a saida do comando psxy para o arquivo fig1.ps que contera a figura.

0

3

6

9

12

15

18

21

24

2 4 6 8 10

Figura 1: Exercicio comentado 1: Grafico Cartesiano.

7.2.1 Exercicio 1:

Crie um grafico semelhante ao exemplo anterior, mas cujo eixo y tem escala logaritmica. Dica: olhe no

manual online do GMT, secao 5.1.2.

7.3 Exercicio Comentado 2: Varios graficos em uma pagina

Introduzimos aqui: (a) o uso dos parametros -X, -Y, -K, -O que permitem a movimentacao dos graficos

na pagina; (b) os nomes nos eixos e na figura e; (c) dos diferentes tipos de linhas e simbolos.

#!/bin/csh -f

gmtset PAPER_MEDIA A4+

psxy -R1/10/0/25 -JX15c/4c -Ba2:Tempo:/a5WSne:Plot1: -P dados.1 -K >! fig2.ps

psxy -R1/10/0/25 -JX15c/4c -Ba2g1/a5g5WsNe:Plot2: -Sa0.05 -P dados.1 ...

... -K -O -Y6c >> fig2.ps

psxy -R1/10/0/25 -JX15c/4c -Ba1/a4wSnE:Plot3: -P -Sc0.1 dados.1 ...

... -K -O -Y6c >> fig2.ps

psxy -R1/10/0/25 -JX15c/4c -Ba2/a5WSne:Plot4:,:.’Quatro Figura@!\316cas’: ...

... -W3/150/0/255t20_10:10 -P dados.1 -O -Y6c >> fig2.ps

gs fig2.ps

A maior parte dos erros de GMTistas em inicio de carreira ocorre por mau uso dos parametros -K

(keep=segura) e -O (overlay=escreve em cima). Valem as regras:

14

Page 15: apostila_INPE2

O primeiro comando que imprime usa -K >!

O ultimo comando que imprime usa -O >>

Os outros comandos que imprimem usam -O -K >>

Os graficos sao colocados na figura 2 sequencialmente. Os parametros -X, -Y controlam a posicao da origem

de cada grafico em relacao ao mais recente8. Portanto o primeiro psxy ... plota o grafico mais baixo,

o segundo psxy ... -Y6c ... move a origem 6cm acima do primeiro e assim por diante.

Comparando os quatro parametros -B podemos notar que sao colocados nomes nos eixos usando

:’nome_do_eixo’: e o nome da figura usando ,:.’nome_da_figura’:. O uso das ”sequencias de escape”,

e.g.: @!\316, e descrito no manual.

O parametro -S controla que simbolo sera desenhado (a=pentagrama, c=circulo) e e seguido de um fator

de escala que controla o tamanho do simbolo.

O parametro -W3/150/0/255t20_10:10 controla que tipo de linha sera desenhada no grafico mais acima.

No caso, 3 e a espessura da pena; /150/0/255 e a cor RGB roxa; t20_10:10 indica linha tracejada com

linhas de 20 pontos, espacos de 10 pontos comecando a 10 pontos da origem.

7.3.1 Exercicio 2:

Usando o exemplo anterior, crie um grafico semelhante com 2 figuras na mesma pagina. No primeiro

sobreponha a quadrados verde-escuros uma linha pontilhada vermelha e grossa. No segundo plote uma linha

do tipo traco-ponto.

7.4 Exercicio Comentado 3: Utilizacao de variaveis

A repeticao de longas linhas de comando torna a leitura tediosa e a eliminacao de erros dificil. O uso de

variavais melhora muito a leitura do programa. Vejamos um exemplo aplicado ao problema anterior:

#!/bin/csh -f

gmtset PAPER_MEDIA A4+

set dados = dados.1

set figura = fig3.ps

set regiao = "-R1/10/0/25"

set projecao = "-JX15c/4c"

set sobe = "-Y6c"

psxy $regiao $projecao -Ba2:Tempo:/a5WSne:Plot1: -P $dados -K >! $figura

psxy $regiao $projecao -Ba2g1/a5g5WsNe:Plot2: -Sa0.05 $dados -K -O $sobe >> $figura

psxy $regiao $projecao -Ba1/a4wSnE:Plot3: -Sc0.1 $dados -K -O $sobe >> $figura

8Este e o default, pode ser mudado para indicar posicao absoluta

15

Page 16: apostila_INPE2

0

5

10

15

20

25

Plo

t1

2 4 6 8 10

Tempo

0

5

10

15

20

25

Plo

t2

2 4 6 8 10

048

12162024

Plo

t3

1 2 3 4 5 6 7 8 9 10

Quatro Figuracas

0

5

10

15

20

25

Plo

t4

2 4 6 8 10

Figura 2: Exercicio comentado 2: Varios graficos na mesma pagina

psxy $regiao $projecao -Ba2/a5WSne:Plot4:,:.’Quatro Figura@!\316cas’: ...

... -W3/150/0/255t20_10:10 $dados -O $sobe >> $figura

gs $figura

Os nomes das variaveis foram escolhidos de modo a esclarecer a funcao de cada parametro, dispensando

comentarios. A figura gerada deve ser igual a figura 2.

7.4.1 Exercicio 3:

Termine o trabalho acima substituindo -K, -K -O e -O por variaveis com nomes mais inteligiveis. Teste o

script.

16

Page 17: apostila_INPE2

7.5 Exercicio Comentado 4: Projecoes , continentes e texto

Os objetivos deste script sao (1) demonstrar o uso de varias projecoes cartograficas; (2) introduzir o comando

pscoast para gerar mascaras continentais e; (3) introduzir o comando pstext para anotacoes livres.

E feito extensivo uso de variaveis, redirecionadores e pipes.

#!/bin/csh -f

gmtset PAPER_MEDIA A4+ HEADER_FONT_SIZE 12 DEGREE_FORMAT 3 FRAME_WIDTH 0.1c

set fig = fig4.ps

set reg = "-R-50/-31/-30/-20"

set grid = "-Ba5f2.5g5/a3f3g3/WSne"

set c = "-G200/200/0 -W0.25p/0/0/250 -S100/190/255"

set topo = "-Y19c"

set desce = "-Y-8c"

set vai = "-X10c"

set volta = "-X-10c"

#---------------------------------------------------------------------------

set pro = "-JC-40/-25/8c"

pscoast $reg"r" $pro $grid $c -P -K $topo >! $fig

echo ’-40 -19 12 0 1 2 1) Cassini cyl’ | pstext $reg"r" $pro -N -K -O >> $fig

set pro = "-JA-40/-25/8c"

pscoast $reg"r" $pro $grid $c -K -O $vai >> $fig

echo ’-40 -19 12 0 1 2 2) Lambert az equiarea’ | pstext $reg"r" $pro -N -K -O>> $fig

set pro = "-JM8c"

pscoast $reg $pro $grid $c -K -O $volta $desce >> $fig

echo ’-40 -19 12 0 1 2 3) Mercator conf’ | pstext $reg $pro -N -K -O>> $fig

set pro = "-JG-40/-25/8c"

pscoast $reg"r" $pro $grid $c -K -O $vai >> $fig

echo ’-40 -19 12 0 1 2 4) Orthographic’ | pstext $reg"r" $pro -N -K -O>> $fig

set pro = "-JY-40/-45/6c"

pscoast $reg $pro $grid $c -K -O $volta $desce >> $fig

echo ’-40 -19 12 0 1 2 5) Peters cyl equiarea’ | pstext $reg $pro -N -K -O>> $fig

set pro = "-JB-40/-25/-40/-10/8c"

pscoast $reg $pro $grid $c -O -K $vai>> $fig

echo ’-40 -19 12 0 1 2 6) Albers conic equiarea’ | pstext $reg $pro -N -O>> $fig

#---------------------------------------------------------------------------

gs $fig

17

Page 18: apostila_INPE2

Para algumas projecoes como a Mercator conformal precisamos indicar apenas o tamanho do grafico:

set pro = "-JM8c".

Para outras como a Albers conica equiarea e necessario fornecer tambem o centro de projecao (-40,-25) e

dois paralelos padrao (-40,-10) alem do tamanho do grafico (8cm): set pro = "-JB-40/-25/-40/-10/8c".

O tamanho dos graficos pode ser informado de duas maneiras. Em todos os exemplos deste texto o

tamanho final e diretamente estipulado. Para isso usamos uma letra maiuscula para identificar a projecao

(M) e informamos as unidades em centimetros (c), para trabalhar em polegadas use i. O outro metodo e

informar a escala, usando uma letra minuscula para identificar a projecao (m) e a escala em cm/grau (0.05c).

O comando pscoast serve para desenhar os contornos costeiros, continentes, rios, lagos e algumas fron-

teiras politicas. pscoast tem como parametros a regiao ($reg"r", o sufixo r faz o mapa retangular), a

projecao ($pro), os detalhes da grade e dos eixos ($grid) e as cores que queremos usar ($c).

pstext adiciona texto ao grafico. Neste exemplo a saida do comando echo e jogada como entrada do

pstext atraves do pipe (|). Os numeros indicam posicao x, posicao y, tamanho da fonte, angulo da fonte,

numero da fonte, justificacao e por fim o texto. Para um texto mais longo e conveniente salva-lo em um

arquivo.

O parametro -N indica que o texto fora do mapa nao deve ser deletado.

Este script deve produzir uma figura semelhante a figura 3.

50˚W 45˚W 40˚W 35˚W 30˚W

30˚S

27˚S

24˚S

21˚S

1) Cassini cylindrical

50˚W 45˚W 40˚W 35˚W 30˚W

30˚S

27˚S

24˚S

21˚S

2) Lambert azimuthal equal-area

50˚W 45˚W 40˚W 35˚W30˚S

27˚S

24˚S

21˚S

3) Mercator conformal

50˚W 45˚W 40˚W 35˚W 30˚W30˚W

30˚S

27˚S

24˚S

21˚S

4) Orthographic

50˚W 45˚W 40˚W 35˚W30˚S

27˚S

24˚S

21˚S

5) Peters cylindrical equal-area

50˚W 45˚W 40˚W 35˚W30˚S

27˚S

24˚S

21˚S

6) Albers conic equal-area

Figura 3: Exercicio comentado 4: Varias projecoes

18

Page 19: apostila_INPE2

7.5.1 Exercicio 4:

Produza 2 mapas globais na mesma pagina. Um mostrara a Terra em perpectiva, como se vista do infinito –

portanto 1 hemisferio – centrado em Sao Paulo. O outro mostrara os 2 hemisferios usando a projecao Eckert

IV, centrado de modo que o extremo Sul da Africa fique na borda esquerda.

7.6 Exercicio Comentado 5: Pontos e contornos em mapas

Este exercicio visa familiariza-los com: (1) o comando makecpt para criar palhetas de cores; (b) o uso do

awk para formatar um arquivo ASCII; (c) o uso do psxy para plotar dados de um arquivo ASCII em mapas;

e (d) o uso do pscontour para produzir isolinhas.

#!/bin/csh -f

gmtset HEADER_FONT_SIZE 12 DEGREE_FORMAT 3 FRAME_WIDTH 0.1c PAPER_MEDIA A4+

set F = fig5.ps

set R = "-R-50/-31/-30/-20"

set J = "-JL-40.5/-25/-30/-20/17c"

set B = "-Ba5f2.5g5/a3f3g3/WSne"

set G = "-G200/200/0 -W0.25p/0/0/250"

set C1 = "-Clixo1.cpt"

set C2 = "-Clixo2.cpt"

set col4 = "dados.2"

set tmp = "dados.2tmp"

makecpt -Crainbow -T0/.5/.05 >! lixo1.cpt

makecpt -Cjet -T-.3/.4/.01 >! lixo2.cpt

awk ’{printf " %3.0f %3.0f %5.2f %5.2f \n",$1,$2,$4/10,$3*$3/20 }’ $col4 >! $tmp

psxy $R $J $B -Sc $C2 $tmp -P -K -W1 >! $F

pscoast $R $J $B $G -K -O >> $F

echo ’-40 -19 12 0 1 2 Raio proporcional a coluna 3, cor a coluna 4’ | ...

... pstext $R $J -N -O -K >> $F

awk ’{printf " %3.0f %3.0f %5.2f \n",$1,$2,$3*$3/20}’ $col4 >! $tmp

pscontour $tmp $R $J $B $C1 -W+ -Y13c -K -O >> $F

pscoast $R $J $B $G -K -O >> $F

19

Page 20: apostila_INPE2

echo ’-40 -19 12 0 1 2 Contornos da coluna 3’ | pstext $R $J -N -O >> $F

/bin/rm $tmp lixo1.cpt lixo2.cpt

gs $F

O comando makecpt produz um arquivo ASCII que associa os intervalos indicados em -T0/.5/.05 com

as cores RGB. Por exemplo, digite cat lixo1.cpt. A primeira linha contem:

inicio vermelho verde azul final vermelho verde azul

0 255 0 255 0.05 255 0 255

portanto os dados entre 0 e 0.05 serao plotados em lilas. As 3 ultimas linhas indicam as cores para os

extremos superior e inferior (B,F) e para os dados inexistentes (N). Este arquivo pode ser editado para

manipulacao direta das cores, desde que se mantenha a estrutura geral do arquivo.

Uma maneira de se fazer operacoes matematicas simples em um arquivo ASCII e atraves do awk. No ex-

emplo acima o arquivo $col4 = dados.2 e reformatado pelo printf ..., que funciona como na linguagem

C ou no Matlab. As variaveis a imprimir correspondem as colunas 1,2, 4 dividida por 10 e 3 ao quadrado

dividida por 20. O resultado e jogado no arquivo ASCII $tmp = dados.2tmp, confira.

O comando psxy introduzido na secao 7.2 serve tambem para plotar simbolos em mapas, mudando-se

apenas a projecao . Compare este exemplo com o da secao 7.2. Neste caso ha mais um detalhe: como

fornecemos o nome de uma palheta de cores $C2 = -Clixo2.cpt os circulos -Sc sao pintados de acordo com

o valor da variavel da coluna 4 do arquivo de entrada.

No outro grafico temos os contornos coloridos criados por pscontour. A sintaxe geral e muito parecida

com a do psxy. A especificacao das linhas e feita pelo parametro -W+ que indica linha de espessura padrao

nas cores e intervalos especificados pela palheta de cores dada pela opcao $C1 = -Clixo1.cpt.

Este script deve produzir uma figura semelhante a figura. 4.

7.6.1 Exercicio 5:

Baseado no script acima produza um mapa de contornos com linhas azuis para valores acima de 0.25, uma

linha preta grossa para 0.25 e linhas de contorno vermelhas para valores abaixo de 0.25.

7.7 Exercicio Comentado 6: Vetores e interpolacao

Neste exemplo as ideias principais sao (a) selecionar colunas de dados usando awk; (b) plotar vetores; (c)

interpolar uma variavel para grade regular; e (d) a criar uma imagem com grdimage.

#!/bin/csh -f

20

Page 21: apostila_INPE2

50˚W 45˚W 40˚W 35˚W30˚S

27˚S

24˚S

21˚S

50˚W 45˚W 40˚W 35˚W30˚S

27˚S

24˚S

21˚S

Raio proporcional a coluna 3, cor a coluna 4

0.05

0.05

0.05

0.05

0.05

0.05

0.05

0.05

0.050.

05

0.05

0.05

0.05

0.050.05

0.1

0.1

0.1

0.1

0.1

0.1

0.1

0.1

0.1

0.1

0.1

0.1

0.1

0.1

0.1

0.15

0.15

0.15

0.15

0.15

0.150.

15

0.15

0.15

0.15

0.15

0.150.15

0.2

0.2

0.2

0.2

0.2

0.2

0.2

0.25

0.25

0.25

0.3

0.35

50˚W 45˚W 40˚W 35˚W30˚S

27˚S

24˚S

21˚S

50˚W 45˚W 40˚W 35˚W30˚S

27˚S

24˚S

21˚S

Contornos da coluna 3

Figura 4: Exercicio comentado 5: Pontos e contornos em mapas

gmtset HEADER_FONT_SIZE 12 DEGREE_FORMAT 3 FRAME_WIDTH 0.1c PAPER_MEDIA A4+

set inp = dados.3

set tmp1 = dados1.tmp

set tmp2 = dados2.tmp

set gtmp = dados.grd

set ctmp = tmp.cpt

set figura = fig4.ps

set regiao = "-R-53/-35/-32/-18"

set projecao = "-JM12c"

set grid = "-Ba5f2.5/a3f3/WSne"

set cores = "-G200/200/0 -W0.25p/0/0/250"

set topo = "-Y15c"

set desce = "-Y-12c"

set vai = "-X10c"

set volta = "-X-10c"

awk ’{print $1 " " $2 " " $3 " " $4/150}’ dados.3 >! $tmp1

pscoast $regiao $projecao $grid $cores -P -K $topo >! $figura

psxy $regiao $projecao $grid $tmp1 -Sv -G255/0/0 -W0/0/0/255 -K -O >> $figura

21

Page 22: apostila_INPE2

echo ’-46 -19 16 0 1 2 1) Vetores em grade irregular’ | ...

... pstext $regiao $projecao -N -O -K >> $figura

awk ’{print $1 " " $2 " " $4}’ dados.3 >! $tmp2

makecpt -Chaxby -T0/100/10 >! $ctmp

surface $tmp2 $regiao -I5m -G$gtmp -T0.25

grdimage $gtmp $projecao -C$ctmp $grid -K -O $desce >> $figura

pscoast $regiao $projecao $grid $cores -K -O >> $figura

psscale -D13c/4c/7.5c/.25c -C$ctmp -B10:Magnitude:/:cm/s: -E -K -O >> $figura

psxy $regiao $projecao $grid $tmp1 -Sv -G255/0/0 -W0/0/0/255 -K -O >> $figura

echo ’-46 -19 16 0 1 2 2) Magnitude interpolada’ | ...

... pstext $regiao $projecao -N -O >> $figura

/bin/rm $tmp1 $tmp2 $gtmp $ctmp

gs $figura

O arquivo original possui 4 colunas: longitude, latitude, direcao e magnitude de uma grandeza vetorial.

O awk e usado para escalar a coluna 4 para que os vetores plotados a seguir tenham um tamanho razoavel.

Os dados escalados sao jogados em um arquivo temporario ($tmp2 = dados2.tmp). O awk e usado uma

segunda vez para selecionar as colunas 1, 2 e 4 do arquivo de entrada.

No primeiro grafico sao criados vetores com o mesmo comando psxy usado anteriormente. Para plotar

vetores use o parametro -Sv. O psxy procurara a magnitude na coluna 4 e a direcao na coluna 3 em graus

no sentido anti-horario a partir da horizontal, ou convencao trigonometrica. Outra convencao

aceita pelo GMT (-SV) e o angulo como azimute em graus no sentido horario a partir do Norte.

Neste caso a direcao do vetor no papel dependera da projecao .

No segundo grafico e feita a interpolacao das magnitudes atraves do comando surface. A resolucao da

grade e definida no parametro -I5m, portanto 5 minutos. O surface cria uma superficie onde a curvatura

e minimizada, resolvendo a equacao abaixo para todo ponto z(x, y):

(1 − T )∇2(∇2(z)) + T ∗ ∇2(z) = 0 (1)

onde T e a tensao entre zero e um especificada com -T. Tensao -T0 resulta em curvatura minima, tensao

-T1 resulta numa superficie onde maximos e minimos so ocorrem sobre os dados originais.

Note que o arquivo de entrada no surface e ASCII mas o arquivo resultante ($gtmp = dados.grd)

indicado pelo parametro -G$gtmp e netCDF.

O comando grdimage e usado para plotar a superficie interpolada contida no arquivo dados.grd. Os

parametros nao apresentam novidade alguma.

Este script deve produzir uma figura semelhante a figura 5.

22

Page 23: apostila_INPE2

50˚W 45˚W 40˚W 35˚W

30˚S

27˚S

24˚S

21˚S

18˚S

50˚W 45˚W 40˚W 35˚W

30˚S

27˚S

24˚S

21˚S

18˚S1) Vetores em grade irregular

50˚W 45˚W 40˚W 35˚W

30˚S

27˚S

24˚S

21˚S

18˚S

50˚W 45˚W 40˚W 35˚W

30˚S

27˚S

24˚S

21˚S

18˚S2) Magnitude interpolada

0

10

20

30

40

50

60

70

80

90

100

Magnitude

cm/s

50˚W 45˚W 40˚W 35˚W

30˚S

27˚S

24˚S

21˚S

18˚S

Figura 5: Exercicio comentado 6: A magnitude dos vetores do grafico superior e interpolada em uma grade

regular e plotada como imagem sob os vetores do grafico inferior

7.7.1 Exercicio 6:

Usando o script anterior varie a tensao do interpolador entre 0 e 1 passo 0.25 e analize os 5 resultados. Faca

vetores com (a) pontas mais agudas e (b) coloridos de acordo com a magnitude usando uma palheta de cores

qualquer. Dica: de o comando makecpt no terminal para ver que palhetas de cores estao pre-definidas no

GMT.

7.8 Exercicio Comentado 7: Relevo iluminado de uma sub-regiao

Neste ultimo exercicio selecionamos uma sub-area do arquivo global de topografia ETOPO5 e criamos uma

imagem iluminada do relevo emerso e submerso. Alem de impressionar a torcida, este exemplo visa ilustrar

as vantagens do uso de arquivos .grd e demonstrar uma aplicacao estetica da funcao gradiente.

#!/bin/csh -f

gmtset HEADER_FONT_SIZE 22 ANOT_FONT_SIZE 12 LABEL_FONT_SIZE 14

23

Page 24: apostila_INPE2

gmtset DEGREE_FORMAT 3 PAPER_MEDIA A4+

#---------------------------------------------------------------------------

set in = etopo5.grd

set tmp = brasil.grd

set luz = tmp.grd

set F = fig7.ps

set R = "-R-50/-31/-30/-5"

set J = "-JM10c"

set B = "-Ba5f2.5/a3f3/WSne"

set G = "-W0.25p/0/160/250 -N2/2 -Ia/1/0/0/255"

set C = "-Clixo.cpt"

set E = -E150/60

#---------------------------------------------------------------------------

grdcut $R $in -G$tmp

grd2cpt $tmp -Csealand >! lixo.cpt

grdgradient $tmp -Nt1 -A45 -G$luz

grdview $tmp $R $J $B $C -K -P -Qsi -I$luz $E -Y6c >! $F

psscale -D7c/-1.5c/10c/0.5ch -O -K $C -I -E -B1000,:Altura:/:m: >> $F

pscoast $R $J $B,:."Topografia da Costa Brasileira": $G -O $E >> $F

#---------------------------------------------------------------------------

gs -sDEVICE=jpeg -dBATCH -dNOPAUSE -sOutputFile=fig7.jpg $F -q

xv fig7.jpg &

O arquivo $in = etopo5.grd e enorme, pois contem a topografia global com 5’ de resolucao . Para

extrairmos a parte que nos interessa, usamos o comando grdcut evidentemente com o parametro $R. O

arquivo gerado e bem menor (confira) e o processamento de arquivos netCDF e mais eficiente que o de

arquivos ASCII.

O comando grd2cpt e outro metodo de se criar uma palheta de cores, neste exemplo baseado apenas no

conteudo do arquivo de dados $tmp = brasil.grd e em uma palheta ”canonica”-Csealand.

O comando grdgradient calcula o gradiente do arquivo de entrada $tmp = brasil.grd. Neste caso

particular o gradiente e calculado na direcao φ indicada pelo parametro -A. Trocando em miudos, o arquivo

de saida contem z′ dado por:

z′(x, y) = −(∂z

∂xsinφ +

∂z

∂ycosφ) (2)

O sinal negativo gerara a iluminacao correta para ser usada no comando grdview. O parametro -Nt1 controla

a normalizacao do gradiente, fixando 1 como valor maximo.

grdview com o parametro -Qsi gera a imagem de uma superficie. A opcao padrao gera grades (mesh).

E possivel tambem controlar a resolucao dessa superficie para melhorar a impressao .

24

Page 25: apostila_INPE2

O parametro $E = -E150/60, aplicado a todos os comandos que geram mapas, controla a inclinacao e a

rotacao do grafico. Um grafico plano, normal, teria $E = -E180/90.

50˚W

45˚W

40˚W

35˚W

30˚S

27˚S

24˚S

21˚S

18˚S

15˚S

12˚S

9˚S

6˚S

-5000 -4000 -3000 -2000 -1000 0 1000

Altura

m

Topografia da Costa Brasileira

50˚W

45˚W

40˚W

35˚W

30˚S

27˚S

24˚S

21˚S

18˚S

15˚S

12˚S

9˚S

6˚S

Figura 6: Exercicio comentado 7: A iluminacao e obtida do gradiente da topografia. Note que rios, costa e

fronteiras estao presentes.

7.8.1 Exercicio 7:

No script anterior corrija a escala de cores de modo que a linha da costa coincida com a transicao do amarelo

para o verde, limitando a regiao para ressaltar a cadeia Vitoria-Trindade. Mude tambem a direcao daluz,

para que venha do Sul.

8 O proximo passo

Estes exercicios sao apenas uma maneira rapida de apresentar algumas caracteristicas do GMT. Neles uti-

lizamos uma pequena fracao do conjunto de programas que compoe o GMT e uma fracao ainda menor dos

comandos UNIX. Ha muito mais possibilidades do que as que foram aqui apresentadas. Para explora-las, a

melhor motivacao sao os problemas praticos que podem ser resolvidos com o uso destas ferramentas. Maos

a obra!

25