Publicado por: cesargdiniz | setembro 16, 2013

Exportando shapefile do PostGIS

pgsql

Dando continuidade aos procedimentos de gestão e manipulação de bancos de dado, como no post anterior PostgreSQL-to-Excel. Vou demonstrar como exportar dados vetoriais de um banco de dados, usando consultas SQL.

Para o exemplo aqui exposto trabalharemos com um banco de dados necessariamente PostGIS. Lançaremos mão de uma função PostGIS para exportação e conversão de vetores em shapefile, chamada pgsql2shp, e uma função SQL conhecida como UNION ALL, que funcionará de maneira similar à um merge espacial.

Assumindo que temos PostrgeSQL/PostGIS instalados, e um banco de dados com vetores diversos, prosseguiremos da seguinte forma:

1 – Via linha de comando, configuraremos a função pgsql2shp para conectar ao banco desejado, está função se encontra no diretório: “C:\Program Files (x86)\PostgreSQL\8.4\bin\pgsql2shp.exe”. Para compreender melhor o funcionamento da mesma, digite no CMD todo o caminho e aperte enter.

PGSQL2SHP

Logo, para criamos um shapefile, a partir de dados de um banco PostGIS, teremos:

pgsql2shp [<options>] <database> <query>

Exemplo:

pgsql2shp -f “G:\Carros_2013\Vendas\Agosto\Carros_20130804_311084_A.shp” -h 150.163.54.230 -u postgres -P postgres CARROS_2013_PGIS <query> (Query em SQL)

Onde;

pgsql2shp: função de exportação PostGIS para shapefile.

-f “nome do arquivo”: Local de criação do shape e o nome a ser adotado

-h : endereço IP do servidor

-u : usuário do banco de dados

-P (notar que este P é maiúsculo): senha de acesso do usuário

E por ultimo o nome do banco de dados, aqui chama-se CARROS_2013_PGIS.

As etapas acima garantem a conexão ao banco CARROS_2013_PGIS, pelo usuário postgres, de senha postgres, no servidor 150.163.54.230, com a intenção de criar o shapefile Carros_20130804_311084_A.shp, no diretório do seu pc G:\Carros_2013\Vendas\Agosto\ . Entretendo para que se crie um shape contendo vetores uma Query SQL deve ser informada ao final da linha, aqui usaremos a função UNION ALL para extrair vetores de layers diferentes e exporta-los para o arquivo shape indicado, Carros_20130804_311084_A.shp.

UNION_ALL

Assim teremos:

“SELECT * FROM carros_luxo WHERE valor >= ‘100000’ AND cor = ‘Prata’ AND marca = ‘BMW’ UNION ALL SELECT * FROM carros_populares WHERE valor <= ‘35000’  AND    cor = ‘Preto’ AND marca = ‘FIAT'”

SQL_UNION_ALL

Como resultado termos um arquivo em formato shape exportados via pgsql2shp, contendo dados de layers distintos agregados via SQL (UNION ALL).

Abraço a todos

Cesar Diniz

Veja os vídeos:

Inserir imagem pelo Raster2pgsql – PostGIS

Usuário Bloqueado e Admin – PostGIS to QGIS

Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

Categorias

%d blogueiros gostam disto: