Instalando e configurando PostGIS no PostgreSQL via Ubuntu 10.04
14 Maio 2010Neste 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/