Ferramentas OGR: Modificar a Codificação de Caracteres de LATIN1 para UTF-8

0

O problema de codificação de caracteres

Uma base de dados formatada para o padrão ISO-8859-1 ou informalmente Latin1 pode apresentar problemas nos caracteres acentuados. Abaixo temos um pequeno exemplo:

ogr_codificacao_latin1_para_utf8_01

Para solucionar essa questão, vamos utilizar a biblioteca OGR e migrar essa base para o padrão UTF-8.

Sobre a Biblioteca GDAL/OGR

GDAL/OGR são bibliotecas de código aberto responsáveis pela tradução de formatos vetorial e raster. Enquanto a biblioteca GDAL suporta o processamento de arquivos raster, os arquivos vetoriais que podem ser processados pelas ferramentas OGR.

  • Alguns formatos de raster (GDAL): TIF, PNG, JPG, ECW, IMG, etc.
  • Alguns formatos de vetor (OGR): SHP, DGN, KML, TAB, GML, etc.

Sobre o padrão Unicode UTF-8

Unicode Transformation Format (UTF) é um padrão de codificação de caracteres muito utilizado pela indústria. Existem várias versões de UTF como UTF-8, UTF-16 e UTF-32, sendo que destes, o padrão UTF-8 é o mais estável e o mais utilizado na atualidade.

Transformação LATIN1 para UTF-8 (único arquivo)

Todo o processo será executado através da linha de comando. Para prosseguir, acesse o componente OSGeo4W Shell que faz parte do pacote de instalação do QGIS.

ogr_importacao_de_shapefile_para_o_banco_de_dados_postgresql_02

Segue abaixo o comando OGR que transforma um dado de Latin1 para UTF-8:

ogr2ogr saida.shp entrada.shp -lco ENCODING=UTF-8

Posicione seus dados em diretórios curtos como a pasta C:\tmp\encode

ogr_codificacao_latin1_para_utf8_02

Na janela OSGeo4W Shell, é necessário digitar o parâmetro cd do MS-DOS que permite acesso a um diretório. Logo, você deve digitar cd tmp\encode para acessar a pasta:

Pressione Enter para confirmar a execução do comando. Considerando que temos o arquivo Aguas_da_Prata.shp alocado nesta pasta, digite o comando abaixo para transformar a codificação de caracteres em UTF-8:

ogr2ogr Aguas_da_Prata_utf8.shp Aguas_da_Prata.shp -lco ENCODING=UTF-8

ogr_codificacao_latin1_para_utf8_04

Resultado: o arquivo gerado será gravado na mesma pasta:

ogr_codificacao_latin1_para_utf8_05

Nos comandos OGR, deve-se especificar em primeiro lugar o nome do arquivo de saída para em seguida informar o nome da camada vetorial de entrada.

Explicação para os comandos utilizados

ogr2ogr: comando OGR utilizado para realizar a transformação entre formatos vetoriais.

Aguas_da_Prata_utf8.shp: nome do arquivo de saída gerado na codificação UTF-8.

Aguas_da_Prata.shp: nome do arquivo de entrada que possui a codificação Latin1.

-lco ENCODING=UTF-8: Layer Creation Options (Opções de Criação de Camada). Neste caso, este é um parâmetro importante para gerar o dado em UTF-8.

Transformação LATIN1 para UTF-8 (processamento em lote)

Para aplicar este processo para um número elevado de arquivos, temos que executar o comando OGR dentro de uma repetição. Além disso, vamos utilizar a mesma pasta para armazenar os 645 municípios de São Paulo que totalizam 3.225 arquivos.

ogr_codificacao_latin1_para_utf8_06

Este é o comando OGR utilizado para conversão UTF-8 em lote:

for %f in (*.shp) do ogr2ogr %~nf_utf8.shp %f -lco ENCODING=UTF-8

Acesse o utilitário OSGeo4W e execute o comando. Aguarde.

ogr_codificacao_latin1_para_utf8_08

Explicação para os comandos utilizados

for: instrução necessária para definir o processo em modo de repetição ou looping. Significa que o comando OGR deve ser executado até o último arquivo presente na pasta.

%f: variável que indica um número N de arquivos shapefile de entrada.

in: significa “dentro”. Faz parte da declaração com objetivo de ordenar os arquivos.  Ela direciona a repetição para todos os arquivos com extensão SHP dentro de uma lista.

(*.shp): Condição para execução do comando (somente arquivos shapefle). 

do: significa “fazer” ou “executar”. Faz parte da instrução determinada pelo for. Trata-se de uma instrução do tipo “execute este bloco de comando e então, continue com o looping enquanto a condição for verdadeira.

ogr2ogr: comando OGR utilizado para realizar a transformação entre formatos vetoriais.

%~nf_utf8.shp: variável que indica um número N de arquivos shapefile de saída. Significa que todos os arquivos de saída vão receber um sufixo _utf8.

-lco ENCODING=UTF-8: Layer Creation Options (Opções de Criação de Camada). Neste caso, este é um parâmetro importante para gerar o dado em UTF-8.

Na tradução livre, essa instrução quer dizer mais ou menos o seguinte: “Para todos os arquivos de extensão *.shp listados, executar o ogr2ogr para gravar todos os arquivos na codificação UTF-8”.

Esta foi mais um dica sobre processamento de dados espaciais através da linha de comando. Ainda temos muitas novidades para apresentar sobre este tema. Aproveite!


Gostou do artigo? Então, aproveite a oportunidade e inscreva-se no nosso canal no Youtube:
https://www.youtube.com/c/ProcessamentoDigitalGeo

Fique por dentro das novidades do site através da nossa Newsletter:
http://www.processamentodigital.com.br/assinatura

Curta nossa página no Facebook:
http://www.facebook.com/ProcessamentoDigital

Siga nossa página no LinkedIn. Vamos divulgar muitas novidades nessa rede:
http://www.linkedin.com/company/processamento-digital


Dúvidas e sugestões podem ser enviadas para o e-mail contato@processamentodigital.com.br

DEIXE UMA RESPOSTA