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: 91.927 ]

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

Automação comercial livre no Slackware 12

Monitorando Banco de Dados Postgres com ZABBIX

PostgreSQL no Slackware - Importando e Exportando arquivos TXT e CSV

Sincronizando Dados do PostgreSQL no Elasticsearch

Como migrar banco de dados MySQL para PostgreSQL

  
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