Instalando e configurando PostGIS no PostgreSQL via Ubuntu 10.04

14 Maio 2010

Neste post veremos como adicionar a extensão para manipulação de dados espaciais que o PostgreSQL oferece, o PostGIS. Bem, após instalar e configurar o PostgreSQL 8.4 + pgAdmin III, instalamos o PostGIS pelo comando abaixo:

    
$ sudo apt-get install postgresql-8.4-postgis
    

Bem, na teoria já temos o PostGIS instalado. Nos próximos passos, iremos verificar na prática se a API dele realmente está integrada com o PostgreSQL e criaremos um exemplo simples. Isso pode ser feito via linha de comando, como veremos a seguir, ou via pgAdmin mesmo.

Primeiro passo

    
$ sudo su postgres
$ createdb postgistemplate
$ createlang plpgsql postgistemplate
$ psql -d postgistemplate -f /usr/share/postgresql/8.4/contrib/postgis.sql
$ psql -d postgistemplate -f /usr/share/postgresql/8.4/contrib/spatial_ref_sys.sql
$ createdb -T postgistemplate exemplo_gis
    

Cria-se um template para a associação das futuras databases com as funções espaciais do PostGIS, e, em seguida, cria-se um database que já possui a API espacial.

Segundo passo

    
$ psql exemplo_gis
exemplo_gis=# SELECT postgis_full_version();
    

Verifica-se a existência do postgis em relação ao database.

Terceiro passo (opcional)

    
exemplo_gis=# CREATE TABLE cidades (id serial NOT NULL, nome character varying );
    

Criamos uma tabela para armazenar cidades. Sim, mas onde fica a coluna que guardará os dados espaciais? Necessitamos adicioná-la por fora via comando SQL. No nosso caso, iremos adicionar uma geometria de POINT.

    
exemplo_gis=#  SELECT AddGeometryColumn('cidades', 'geometria', 29100, 'POINT', 2);
    

Pra quem não entendeu a ordem dos argumentos, eles significam:

  • ‘cidades’: nome da tabela;
  • ‘geometria’: nome da coluna que será adicionada a tabela;
  • 29100: srid referente ao SAD69 (padrão utilizado pelo IBGE até o momento);
  • ‘POINT’: tipo da geometria que será armazenada;
  • 2: dimensões da geometria.

Podemos inserir, então, alguns dados:

    
exemplo_gis=# INSERT INTO cidades (nome, geometria)  VALUES('João Pessoa', GeomFromText('POINT(5 5)', 29100));
exemplo_gis=# INSERT INTO cidades (nome, geometria)  VALUES('Campina Grande', GeomFromText('POINT(10 10)', 29100));
    

Para ver a API funcionando, podemos fazer uma consulta simples verificando a distância entre os dois pontos:

    
exemplo_gis=# SELECT distance(a.geometria, b.geometria) FROM cidades WHERE a.nome = 'João Pessoa' AND b.nome = 'Campina Grande';
    

Bem, isso foi apenas um exemplo do que se pode fazer com uma solução livre de um banco de dados com suporte a armazenamento e consultas espaciais. Quem estiver mais interessado em PostGIS, consulte o manual do mesmo que é muito bom.

Espero ter ajudado. Qualquer dúvida ou contribuição será bem vinda. :D

[]’s

Referência: http://www.paolocorti.net/2008/01/30/installing-postgis-on-ubuntu/

blog comments powered by Disqus