Converter dados do PostGIS para File Geodatabase

Boa tarde pessoal,

Hoje iremos falar sobre como exportar os dados do PostGIS diretamente para um FileGDB utilizando nada mais do que a OGR, a ferramenta mais capaz de conversão de formatos que existe.

Independente se no linux ou Windows, você pode testar o suporte para a FileGDB API, usando:

ogrinfo --formats
Supported Formats:
 -> "ESRI Shapefile" (read/write)
     -> "MapInfo File" (read/write)
     -> "UK .NTF" (readonly)
     -> "SDTS" (readonly)
     -> "TIGER" (read/write)
     -> continua

Se a FileGDB, estiver disponível, você não precisa instalá-la.

Existem alguns passos importantes para que você consiga realizar esta exportação, principalmente no caso de sistemas operacionais Linux. Como a biblioteca FileGDB API, é proprietária da ESRI, ela não pode ser incluída na distribuição normal da GDAL/OGR, ou seja, precisamos instalar ela, antes de compilar nossa GDAL.

Vamos ao passo a passo:

  1. Faça download da API no site da ESRI;
  2. Descompacte-a no caminho /usr/local/lib/;
  3. Compile a GDAL, especificando o caminho da pasta no momento da compilação, através da flag –with-fgdb=/usr/local/lib/FileGDB_API
  4. Rode o comando “ogrinfo –formats” novamente para ver se o suporte está disponível;

Para utilizar a OGR para exportar os dados do PostGIS para um file geodatabase, você pode usar o comando ogr2ogr, com algumas opções. Vou dar um exemplo e explicar o que cada flag significa:

ogr2ogr -overwrite -nlt <LAYER_TYPE> -nln <NOME_TABELA_NOVA> -sql "SELECT * FROM <NOME_TABELA_BANCO>" -f "FileGDB" <CAMINHO_SAIDA.gdb> PG:"host=<SERVIDOR> port=<PORTA> dbname='<BANCO_DADOS>' user='<USUARIO>' password='<SENHA>'"

As opções:

  • -overwrite significa sobrescrever o File Geodatabase. Caso você exporte a mesma tabela duas vezes, ela será sobrescrita. Caso exporte duas tabelas diferentes, a ogr2ogr irá adicionar as Feature Classes ao mesmo geodatabase;
  • -nlt LAYER_TYPE: é o tipo da geometria;
  • -nçn NOME_TABELA_NOVA: é o nome que a tabela terá no File Geodatabase;
  • -sql: indica que você quer exportar os resultados de uma consulta SQL. Você pode ser criativo e criar consulta bem complexa antes da exportação;
  • -f “FileGDB”: formato de saída, FileGDB;
  • <CAMINHO_SAIDA.gdb>: caminho completo do FileGeodatabase de saída;
  • as outras opções são de conexão ao banco de dados do PostgreSQL;
  • lembrem-se, as variáveis estão listadas entre <>, que não devem aparecer na chamada;

Atualmente estamos usando esta solução para exportar dados para um ciente em FileGeodatabase, sem a necessidade de termos uma licença (bem cara) do ArcGIS Desktop (ou qual seja o nome que deram agora).

Uma outra boa notícia, é que estão desenvolvendo a Open FileGDB API. É uma implementação open-source, disponível também para a GDAL/OGR, mas que pelo momento é somente leitura. A API proprietária da ESRI suporta leitura e escrita.

Comentem no Facebook os exemplos de uso que vocês tem para a GDAL/OGR, uma ferramenta porreta.