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.337 ]

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


Por que um banco de dados espacial?



Raster x Vector


Uma primeira distinção a ser feita, quando trabalhamos com mapas digitais, é a existência de dados vetoriais e dados raster.

Raster


O dado Raster é uma image, um mapa de pixels - um bitmap - com informações de cor em todos os pontos.

Uma imagem de 4x4 pixels, por exemplo:
| x || x || x || x |
| x || x || x || x |
| x || x || x || x |
| x || x || x || x |
Imagens de satélite e fotos aéreas são exemplos de dados Raster.

Vector / Vetor


Para informações mais "simples", utilizam-se vetores, que são arquivos infinitamente mais leves e fáceis de trabalhar, para determinados tipos de mapeamentos.

São possíveis formas de armazenamento de dados. Por exemplo, uma farmácia poderia ser definida com um ponto. Mas uma reserva florestal precisaria ser definida como um polígono... e uma estrada, como uma linha.

Shape x Banco de dados Espacial


Dentre os diversos formatos para armazenar mapas, o Shape, da ESRI, é o mais popular, servindo como um intercâmbio entre os vários programas. No entanto, é um formato proprietário. O mapa "Brasil", por exemplo, teria três arquivos:
  • brasil.shp (contém a informação vetorial)
  • brasil.shx (contém os índices)
  • brasil.dbx (banco de dados associado ao vetor)

No entanto, como podemos ver acima, o banco de dados está separado do arquivo que contém o mapa. Isso significa que, para operações mais complexas, é necessário possuir um aplicativo que faça essa integração, permitindo a realização de joins entre tabelas e análise espacial.

Num banco de dados espacial, isso fica muito mais simples, pois a informação do vetor é apenas mais uma coluna, do tipo "geometry". Seria algo como:

BRASIL

| cod_estado | nome_estado | uf   | pop_1991 | geometry |
| 01                 | Amazonas       | AM  | 4099021   | polygon (010600000001000000010300000001000000E200000093E00...) |

Nesse número gigantesco estão as coordenadas (latitude e longitude) do polígono do estado, no caso, Amazonas - em um hexadecimal legível para o Postgis.

Padrões


Segundo o Open Geospacial Consortium - OGC, são definidos 7 tipos para armazenamento, em WKT (well-known text):
  • Ponto - POINT(0 0)
  • Linha - LINESTRING(0 0,1 1,1 2)
  • Polígono - POLYGON((0 0,4 0,4 4,0 4,0 0),(1 1, 2 1, 2 2, 1 2,1 1))
  • Multiponto - MULTIPOINT(0 0,1 2)
  • Multilinha MULTILINESTRING((0 0,1 1,1 2),(2 3,3 2,5 4))
  • Multipolígono - MULTIPOLYGON(((0 0,4 0,4 4,0 4,0 0),(1 1,2 1,2 2,1 2,1 1)), ((-1 -1,-1 -2,-2 -2,-2 -1,-1 -1)))
  • Coleção de geometrias - GEOMETRYCOLLECTION(POINT(2 3),LINESTRING((2 3,3 4)))

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

Postgres e os Sistemas Alterdata

PostgreSQL 9.4 - Replicação com slots

Replicação de dados síncrona com Postgres

PostgreSQL - Instalação inicial no Debian Wheezy 64 bits

Microsiga Protheus com Postgres

  
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