Criando um banco de dados espacial com PostgreSQL + PostGIS

O Postgis é um excelente módulo espacial para o PostgreSQL. Serve tanto a aplicativos para publicação web, como o Mapserver, quanto para uso em intranets, com Grass, QGis etc.

[ Hits: 92.349 ]

Por: Fernão Lopes Ginez de Lara em 16/05/2006 | Blog: http://www.milharal.org


Habilitando tabela espacial e carregando seu banco



Com o Postgis preparado, vamos criar um banco de dados habilitado para dados e consultas espaciais:

# su postgres

Crie um usuário para os mapas e um banco de dados:

$ createuser usuariomapas
$ createdb bdmapas -U usuariomapas


A partir daí, adicionaremos as funções do Postgis ao banco:

$ createlang plpgsql bdmapas
$ psql -f lwpostgis.sql -d bdmapas


O arquivo lwpostgis, nessa instalação, fica no diretório share/contrib/, dentro da árvore do PostgreSQL instalado (no nosso caso, em /usr/local/pgsql/).

Se o Commit deu certo, está pronto: você já tem um banco de dados espacial com o PostGis.

Depois dessas alterações, colete as estatísticas - o que acelera suas consultas:

$ vacuumdb -z bdmapas

Carregando seu Banco de Dados


Existem diversos formatos para armazenar mapas. São arquivos que trabalham com vetores:

$ /usr/local/pgsql/bin/psql -f /usr/local/pgsql/share/contrib/lwpostgis.sql -d mapas
$ /usr/local/pgsql/bin/vacuumdb -z mapas


Usando o loader de shapes:

shp2pgsql [<options>] <shapefile> <tablename> <database name>

Carregando diretamente (do diretório dos shapes):

$ /usr/local/pgsql/bin/shp2pgsql -c QUADRAS_region quadras mapas | /usr/local/pgsql/bin/psql -d mapas

Ou via SQL dump:

$ shp2pgsql -D roads1 roads_table my_db > roads.sql
$ psql -d my_db -f roads.sql


Índices


Os índices servem para acelerar as buscas em uma tabela de banco de dados. No caso de um banco de dados espacial, os índices aceleram muito - às vezes, reduzem o tempo das buscas em até 70%. No entanto, não vale a pena indexar tabelas quando são poucos registros. Isso se chega na tentativa e erro, mas uma regra que costuma valer é que a partir da centena de registros, passa a valer a pena indexar.

O Postgis usa o índice GIST (Generalized Search Tree), que serve para dados irregulares (arranjos de números inteiros, dados espectrais, etc).

CREATE INDEX eixos_idx ON eixos USING gist (the_geom)

Onde:
  • CREATE INDEX -> cria o índice
  • eixos_idx -> nome para o seu índice
  • ON eixos -> define a tabela que se quer indexar
  • USING gist (the_geom) -> escolhe o índice a ser usado (gist) e o campo a que vai ser aplicado (the_geom)

Recomenda-se depois executar:

VACUUM ANALYZE nometabela nomecoluna;
SELECT UPDATE_GEOMETRY_STATS(nometabela, nomecoluna);

Onde baixar mapas


Existem mapas disponíveis para download na página do IBGE, na seção de downloads:
Página anterior     Próxima página

Páginas do artigo
   1. Uma breve introdução para a publicação de Mapas Digitais
   2. Por que um banco de dados espacial?
   3. Projeções cartográficas
   4. Análise espacial
   5. Instalando o PostgreSQL e o PostGIS (finalmente!)
   6. Habilitando tabela espacial e carregando seu banco
   7. Testando com qgis
Outros artigos deste autor

Linux como mudança de mentalidade

Leitura recomendada

PostgreSQL básico - Testado e pronto para ser usado

Como migrar banco de dados MySQL para PostgreSQL

PostgreSQL 9.4 - Replicação com slots

PostgreSQL no Slackware - Importando e Exportando arquivos TXT e CSV

Encoding do Postgres (latin1) e encoding do SO (Debian/Ubuntu)

  
Comentários
[1] Comentário enviado por fsc7 em 30/05/2006 - 21:00h

Olá,
Gostei do seu artigo. Tenho trabalhado ultimamente com Mapserver, Postgis e PHP e embora isso não seja novidade pra mim agora tenho certeza que irá beneficiar muita gente. Quem dera que eu tivesse lido isso há alguns meses atrás.
Parabéns.

[2] Comentário enviado por in54no em 01/09/2006 - 19:23h

Muito bom, otimo artigo...
Teh mais, fique com Deus!

[3] Comentário enviado por leloguitar em 29/11/2006 - 17:23h

mto bom...

agora como como compilar o postgresql com o contrib lo???

to precisando fazer essa compilação junto ao postgresql, no entanto nao sei, rs

agradeço desde ja sua ajuda...

[4] Comentário enviado por ruhanbidart em 08/07/2008 - 22:24h

Nunca trabalhei com geoprocessamente e não tinha noção de funcionamento.
Gostei muito do caráter introdutório do artigo, entendi razoávelmente como funciona o armazenamento de dados desses softwares de mapeamento espalhados pela internet.
Muito bom. Parabéns.

[5] Comentário enviado por qcyclop em 24/07/2008 - 11:05h

Realmente,

artigo muitooo bom. Eu estou tetando trabalhar na área já algum tempo, mas tinha várias dúvidas obre o assunto. Grande parte delas eu tirei lendo este artigo.

Parabéns, artigo de alto nível

Agradeço muito sua ajuda.

[6] Comentário enviado por comfaa em 14/10/2008 - 08:57h

muito bom !!

[7] Comentário enviado por B. Rodrigues em 29/03/2010 - 11:43h

Muito bom!

vai pro meu favoritos!!


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts