514 o CÓDIGO FM 92-VIII EXT. GRIB E UTILITÁRIOS PARA CONVERSÃO ROSÃNGELA SAHER CORREA CINTRA CPTEC-CENTRO DE PREVISÃO DE TEMPO E ESTUDOS CLIMÁTICOS INPE/SCT - INSTITUTO DE PESQUISAS ESPACIAIS Avenida Dos Astronautas, 1758 12225 - São José dos Campos - SP Brasil RESUMO O padrão FM 92-GRIB (Gridded Binary) é um código binário para representação de daqos em pontos de grade, aprovado e recomendado pela O.M.M. (Organização Meteorológica Mundial WMO). A sua forma compacta de representação apresenta grandes vantagens sobre o código GRID, que utiliza caracteres, sob o ponto de vista computacional. Além disso, este código admite tabelas mais abrangentes de niveis e parâmetros, permitindo representação mais completa dos produtos. Apresentamos a seguir, a especificação do código GRIB e alguns utilitários de conversão para GRIB a partir de: (a) de dados GRID (FM 47 código de formato caracter para pontos de grade) e (b) de arquivos de matrizes numéricas de grade regular. I. INTRODUÇÃO Atualmente, computadores são largamente util izados na produção e intercâmbio de produtos de previsão e análise meteorológica, o que torna essencial o emprego de métodos eficientes para armazenamento e transferência de grandes volumes de dados. Como o GTS (Global Telecomunication System) permite uso de protocolos orientados a bit para transferência de dados entre Centros computadorizados, o padrão internacional FM 92-GRIB foi adotado pela OMM como formato binário global para dados em pontos de grade. Os dados altamente compactados possibilitam transmissões mais rápidas e redução do espaço requerido para armazenamento, o que diminui custos e aumenta a eficiência na execução dessas atividades. Como informações códificadas em GRIB não podem ser interpretadas visualmente, e ainda para facilitar um período de transição em que nem todos utilizam o novo código, surgiu a necessidade de conversores entre representações por caracteres e o GRIB.
515 11. DESCRIÇÃO GERAL DO GRIB Um campo GRIB consiste em um único parâmetro meteorológico para um nivel na atmosfera, com todas as informações necessárias para definir o produto e a representação dos dados. O formato do código é independente da máquina, pois as informações estão organizadas em octetos (bytes de 8 bits). Um produto codificado em GRIB consiste de seis seções, duas das quais são opcionais, e, como a transmissão é binária, não é um código visivelmente interpretável, exceto as seções O e 5: A. Seção O - Seção Indicadora Indica o início do campo GRIB, onde são codificados quatro octetos em caracteres representando a palavra "GRIB", conforme o Alfabeto Telegráfico Internacional n. 5 (CCITT-ITA). B. Seção 1 - Seção de Definição do Produto O tamanho desta seção não ultrapassa 24 octetos, contendo uma identificação binária da análise ou previsão, com informações sobre: identificação do Centro de origem e do modelo gerador dos dados, indicação de parâmetro, nível atmosférico, data e hora, unidade de tempo, período, etc., e ainda se serão ou não incluídas as seções opcionais. Todas as definições são codificadas de acordo com tabelas constantes da própria especificação dq código FM 92-GRIB. C. Seção 2 - Seção de Decrição da Grade (opcional) Esta deverá ser omitida se a descrição estiver publicada na Publicação n. 9 - Volume B e o número correspondente apropriado estiver definido na seçao 1. O conteúdo desta seção varia conforme a representação dos dados da seção 4. Para grade de latitude/longitude regulares, a seção conterá latitude e longitude de origem e do ponto extremo, o núm~ro de pontos latitude/meridiano, o incremento de direção e o sentido da ordenação dos pontos a partir da origem. O número de. octetos para definição de grades regulares ou Gaussianas é 32, para outros tipos de grade são usados 42 bytes,. e, se a definição for para coeficientes compostos, o tamanho da seção é de 52 octetos. D. Seção 3 - Seção do Mapa de Bits (opcional) ~sta seção, se usada, deverá conter um mapa de bits ou uma referência para um mapa de bits pré.".definido pelo Centro de origem. Este mapa de bits consiste de bits contíguos, um bit para cada ponto, ordenado da forma como.foi definido na grade. O tamanho da seção depende do seu conteúdo.
516 E. Seção 4 - Seção de Dados Na seção 4 são representados os dados numa forma compactada. Os métodos de compactação podem ser de dois tipos, simples ou complexo, dependendo dos pontos da grade, mas o princípio fundamental de compactação é o mesmo: o valor dado é codificado na forma de diferenças escalares não-negativas de um valor de referência. O valor de referência é armazenado em quatro octetos como um número de ponto flutuante. O bit de mais alta ordem é um bit de sinal onde O indica positivo e 1 negativo, os próximos sete bits são a característica, e os 24 bits de mais baixa ordem formam a mantissa. O valor de referência normalmente é o valor mínimo do conjunto de dados representados. O fator de escala é armazenado em 16 bits (1 bit de sinal e 15 bits para um número inteiro). Os valores dos parâmetros são codificados no número mínimo de bits requeridos para sua precisão, sendo compactados corno segue: y = R + (X) * 2 E, onde y = valor real R = valor de referência E fator de escala X = valor transmitido. O tamanho da seção depende do número de dados a serem transmitidos e da quantidade de bits para cada valor. F. Seção 5 - Seção Final Indica o fim do campo octetos com o caracter Telegráfico Internacional sequência "7777". GRIB e sempre é composto de quatro "7", de acordo com o AI f abeto n. 5 (CCITT ITA), formando a 111. VANTAGENS P~ra uso em computadores, como Ja foi dito, é importante que a tr'ansmissão de dados seja eficiente e segura, e que o armazenamento em arquivos magnéticos ocupe espaço reduzido, o que o formato GRIB permite por ser binário e fazer uso de compactação. Vamos comparar os códigos GRIB e GRID, j á que ambos são padrões para dados em ponto de grade, sendo o GRID em formato de caracteres: A. Economia de Espaço Para definir o produto, o GRIB utiliza, na sua Seção 1, vinte e quatro bytes, enquanto o GRID, para esta definição, utiliza a Seção O e a Seção 1, com variações que equivalem, para especificação mínima, a 50 caracteres, ou seja 50 bytes.
517 Quanto aos dados, para uma grade padrão (previamente definida na Publicação n.9 - WMO), são necessários 285 pontos, com os valores informados para cada ponto. Se estiverem na forma compactada, mesmo para valores superiores a três dígitos, este utiliza até dois octetos para cada dado; assim, o GRIB utilizará 570 bytes para representar seus valores. Já no GRID, estes pontos são representados em 15 linhas com 19 pontos para cada coordenada (linha). Se o valor possuir três dígitos, serão necessários 58 caracteres para os valores, mais 13 caracteres com informações sobre a linha, totalizando 1050 bytes. Se o dado tiver mais que três dígitos, o número de bytes necessários será ainda maior. Verificamos assim que um campo GRIB é bem menor que um campo GRID, podendo ser de 2 a 3 vezes menor, o que possibilita armazenar um maior número de arquivos no mesmo espaço reservado para tal, bem como aumenta a quantidade de informações transmitidas num mesmo espaço de tempo. Por exemplo: um arquivo convertido num arquivo GRIB transmiti-los por uma linha 142 segundos para o GRID e 65 B. Diversificação na Codificação GRID de 85207 bytes pode ser de 39424 bytes. Se tivermos que de 4800 bps, seriam necessários para o GRIB. Verificando ainda as definições GRID, notamos que, ao indicar o parâmetro, temos dois caracteres reservados para esta indicação, que poderá ser de 00 a 99, de acordo com sua tabela. Já no GRIB, é necessário apenas um octeto, que comporta valores de 00 a 254, o que, além de economizar 1 octeto, aumenta a quantidade de parâmetros possíveis de ser representados. O mesmo acontece com as indicações para níveis atmosféricos, dando maior diversidade para a codifição dos produtos. IV. APLICAÇÕES O uso do padrão GRIB tem sido muito difundido nos Centros Mundiais de previsão meteorológica por suas vantagens no armazenamento e na transmissão de dados. Dentro de alguns anos, segundo norma adotada pela OMM, o padrão universal para transferências de campos meteorológicos será unicamente o GRIB. Para facilitar o manuseio de arquivos GRIB e possibilitar o uso de outros tipos de representações em ambientes de aplicações voltados para GRIB, como por, exemplo o MicroMAGICS (software para visualização gráfica de campos meteorológicos), foram desenvolvidos alguns utilitários:
518 A. Con~ersor de GRID para GRIB Este utilitário, a partir de um arquivo de caracteres, identifica o campo GRID, se existir, e o decodifica, gerando vetores com a representação numérica dos dados. Após isso, suas informações são codificadas em formato binário, resultando um campo GRIB. Esta operação é repetida enquanto houver campos GRID no arquivo. A saída deste utilitário é um arquivo binário com campos GRIB, não visualmente interpretável, com as mesmas informações contidas no arquivo inicial. B. Montador de GRIB dada uma Matriz Numérica Este utilitário tem como entrada um arquivo que contém urna ou mais matrizes, em formato de caracteres, representando valores de pontos de grade, separados por um branco. É necessário ainda fornecer informações pertinentes ao produto, bem como uma descrição da grade, através do teclado. Estas informações e a matriz são transformadas em dados binários, resultando um campo GRIB. V. REFERÊNCIAS - Manual On Codes - Publicação WMO n. 306-Volume I - Binary Data Representation - FM 92-GRIB - ECMWF - Manual On The Global Telecomunication System -Publicação WMO n. 386 - Volume I - Publicação WMO n. 9 - Volume B. VI. AGRADECIMENTOS Agradeço ao Benício Pereira de Carvalho Filho e ao Dr. Pedro Leite Dias do CPTEC pela revisão do artigo e colaboração na sua redação.