Ferramentas GDAL: Conversão de Polígono para Raster com gdal_rasterize

GDAL

GDAL é uma biblioteca de tradução para formato de dados geoespaciais do tipo matriz. Para vetor, usamos OGR. GDAL/OGR não possuem interface gráfica amigável, porém uma grande parte de seus comandos podem ser executados através da interface gráfica do SIG Quantum GIS. A rotina para conversão de raster para vetor é muito limitada no SIG QGIS, portanto, vamos executar todos o comandos no GDAL mesmo.

Shapefile Utilizado no Tutorial:

Download da Versão 1.9 do GDAL

As últimas versões do GDAL são atualizadas constantemente no site Mapserver and GDAL. Fiz um download de um executável para Windows 64 Bits e coloquei no Dropbox.

Linha de Comando

Descompacte o arquivo ZIP e execute o programa SDKShell.bat. Daqui por diante, os processos vão rodar apenas na linha de comando. Usuários Linux não possuem nenhum problema com essa questão, pois aprenderam rápido a depender do Terminal.

De acordo com o seu nível de usuário, você pode passar diretamente para a linha de comando da rasterização.

Informações do Arquivo com gdalinfo

Localize o diretório onde o arquivo shapefile está localizado e copie todo o caminho:

diretório onde o arquivo shapefile está localizado

O comando cd do MS-DOS acessa diretórios. Na janela com o prompt de comando do GDAL, digite cd e cole o diretório de localização do shapefile original.

diretório de localização do shapefile original

Em seguida, pressione ENTER:

acesso ao diretório de localização do shapefile original

ogrinfo: Informações do Arquivo Shapefile em Texto

Para exibir informações do arquivo shapefile, digite a linha de comando do programa ogrinfo:

ogrinfo -al Ottobacias_Nivel4.shp > Ottobacias_Nivel4.txt

Um arquivo de texto com informações do shapefile será criado juntamente com os demais arquivos.

informações do shapefile

O texto informa que o shapefile que utilizamos nesse tutorial é um dado com geometria do tipo polígono e possui 9 entidades no Sistema de Coordenadas Geográficas SIRGAS 2000. Outro atributo notável na lista de informações do arquivo é o Extent (A Extensão do Arquivo, o mesmo que Retângulo Envolvente):

Metadados do shapefile

Para rasterizar o arquivo shapefile, mas o dado precisa ser reprojetado para o Sistema de Coordenadas Planas UTM. O Datum é o mesmo, SIRGAS 2000. Em relação ao fuso ou zona, você pode carregar qualquer articulação vetorial para identificar o fuso de sua localização caso você não tenha sido informado sobre essa informação. O shapefile da Articulação 1:250.000 possui um campo ind_nomencl cujo rótulo ou label indica que o shapefile está situado no Fuso 24 do Hemisfério Sul:

Feição no Fuso 24 Sul

ogr2ogr: Reprojeção de Arquivos Shapefile

O programa utilizado para reprojetar aquivos chama-se OGR2OGR. A reprojeção de arquivos com OGR2OGR ocorre com sucesso quando você informa o Sistema de Referência de Coordenadas de entrada e saída, dentre outros parâmetros. A lista de parâmetros EPSG mais utilizados no Brasil estão neste link. Digite o comando abaixo na janela do prompt:

ogr2ogr -f "ESRI Shapefile" -s_srs EPSG:4674 
-t_srs EPSG:31984 Ottobacias_Nivel4_UTM24S.shp Ottobacias_Nivel4.shp

O arquivo shapefile foi reprojetado para UTM.

Rasterização de Arquivos Shapefile com gdal_rasterize

A rasterização que vamos executar tem como base o campo FID do arquivo shapefile. Esse campo inicia-se com zero, o que quer dizer que, para nove entidades no mesmo arquivo shapefile, temos feições numeradas de 0 a 8.

Digite o comando abaixo na janela do GDAL:

gdal_rasterize -of GTiff -a FID -sql "select FID, * from Ottobacias_Nivel4_UTM24S" 
-tr 30 30 -a_srs "EPSG:31984" -a_nodata 255 -ot Byte 
Ottobacias_Nivel4_UTM24S.shp Ottobacias_Nivel4_UTM24S_Byte.tif
  • -of GTiff: Output File = GeoTIFF;
  • -a: Attribute Name – Identifica um atributo na tabela que será usado na rasterização;
  • -sql: Sentença SQL. Substitua aqui o nome do atributo e o nome do arquivo shapefile;
  • -tr: Target Resolution, resolução de saída. Determinei a resolução do Landsat (30m);
  • -a_srs: Substitui a projeção para o arquivo de saída;
  • -a_nodata: Atribui um valor específico para NODATA;
  • -ot: Output Type – Tipo de Dado de Saída. Especifiquei Byte (0 – 255);
  • Ottobacias_Nivel4_UTM24S.shp: Arquivo vetorial de entrada;
  • Ottobacias_Nivel4_UTM24S.tif: Arquivo raster de saída.

O processo que rodei aqui resultou numa imagem de uma única banda, escala de cinza, georreferenciada e com 167 MB de tamanho de arquivo:

raster de uma única banda em escala de cinza

[984x728 pixels]

As feições da ANA foram digitalizadas na Escala do Milionésimo. A rasterização dos polígonos com resolução espacial de 30 m ficou excelente. Visualize o resultado em Alta resolução clicando na imagem abaixo:

[984x728 pixels]

[984x728 pixels]

Trabalhando com Mapa de Cores no GDAL

Você pode colorir manualmente o arquivo rasterizado em qualquer SIG atribuindo cores para as classes.

arquivo rasterizado classificado

[984x728 pixels]

O único problema é que o raster está em escala de cinza e as informações não serão gravadas. É possível editar e gravar a tabela de cores no GDAL da seguinte forma:

  • Criação de um Raster Virtual com gdal_translate;
  • Inserção dos novos valores no Raster Virtual
  • Conversão do Raster Virtual para GeoTIFF.

Criação de um Raster Virtual (VRT)

Digite o comando abaixo na janela do GDAL:

gdal_translate -of VRT Ottobacias_Nivel4_UTM24S_Byte.tif 
Ottobacias_Nivel4_UTM24S_Byte.vrt

O raster virtual é um arquivo de texto do tipo XML. Abra-o com o editor de texto simples e visualize seus atributos:

atributos do Raster Virtual

Nosso arquivo raster do exemplo possui 9 classes. O atributo que gerencia as cores está entre as tags ColorInterp. Substitua a string Gray por Palette:

Substituir a string Gray por Palette

Agora vamos inserir a tabela de cores. Cada “c” representa uma banda, de modo que o c4 refere-se ao canal alfa. Assim, temos a combinação RGBA.

A primeira linha está relacionada ao NODATA. As cores devem ser preenchidas a partir da segunda linha. O valor 255 atribuído ao alfa está presente em todas as classes. Você deve inserir suas cores anotando os valores RGB que correspondem a cor desejada.

Tenho 9 linhas no total, que estão relacionadas as nove classes do meu raster em escala de cinza. Estou repassando o arquivo TXT para que você possa copiar e colar os parâmetros acima.

Subsitua as classes de cores

Salve e feche o arquivo VRT. Transforme o raster virtual para GeoTIFF através do comando abaixo:

gdal_translate -of GTiff Ottobacias_Nivel4_UTM24S_Byte.vrt 
Ottobacias_Nivel4_UTM24S_Byte_color.tif

Resultado Final

Mapa de cores aplicado na imagem

[1024x695 pixels]

Conversão do Mapa de Cores para Raster RGB

Para converter o mapa de cores para raster RGB, digite o comando abaixo:

gdal_translate -of GTiff -expand rgb -scale Ottobacias_color.tif Ottobacias_RGB.tif

Ao expandir o arquivo para RGB, o mapa de cores pode sair diferente do original e o arquivo vai ampliar seu tamanho três vezes (representando as três bandas).

Ultimamente tenho trabalhado com paletas de cores para colorir relevo sombreado ou qualquer raster temático usando em classificação. Decifrar a combinação de cores é um arte e leva tempo para aprender, certamente.



Técnico em Cartografia, Blogueiro, Fascinado por Tecnologia e futuro Geógrafo, Jorge Santos atualmente trabalha com Geotecnologias no Rio de Janeiro. Seu objetivo é avançar sempre, sem esmorecer, rumo ao pleno conhecimento cartográfico.

2 Respostas para “Ferramentas GDAL: Conversão de Polígono para Raster com gdal_rasterize”

  1. Muito bom esse material. As novas versões do Mapwindow já apresentam essa ferramenta. Para mim ainda são um tabu. Mas vou procurar entender melhor essa rotina, e quem sabe possa aplicá-las lá também. Gostaria de te pedir para elaborar algo sobre calculadoras raster e seleção – exportação em .SHP dos resultados desses cálculos. Um abraço.

    Reply to this comment
    • Jorge Santos

      fev 21. 2013

      Assim que terminar esse série sobre Layout, vou iniciar a série sobre Álgebra de Mapas. Para cumprir uma promessa, vou repassar o material que tenho aqui para o seu e-mail. Os cálculos são feitos no ArcGIS, mas a lógica pode ser aplicada em qualquer SIG. Grande abraço, grande amigo!

      Reply to this comment

Deixe uma Resposta