Você está na página 1de 8

TUTORIAL DE CRIAO DE BANCO DE DADOS ESPACIAL

Este tutorial tem por objetivo explicar a criao de bancos de dados espaciais usando o Postgis que a extenso espacial do PostgreSQL. Os passos que sero descritos aqui foram feitos no Linux, na distribuio Ubuntu e utilizou o gerenciador de banco de dados PgAdmin. Considerando que o pgadmin, o postgresql e o postgis j esto instalados no servidor (caso ainda no tenha instalado estes pacotes veja o tutorial de instalao do i3geo e execute os procedimentos descritos no item 4) siga os procedimentos a seguir:

CONEXO COM O BANCO DE DADOS POSTGRESQL


Abra o software PgAdmin e clique com o mouse no boto Adicionar conexo a um servidor, localizado no canto superior esquerdo. Na janela que ir abrir preencha os campos conforme instruo abaixo: a) Campo Nome: este campo ir denominar a sua conexo, o nome deve indicar o teor da conexo, como por exemplo trabalho ou pessoal ou desenvolvimento, entre outros. b) Campo Mquina: neste campo voc deve por o ip da mquina onde est o banco postgresql que ser conectado. Caso o banco esteja na sua mquina digite neste campo a palavra localhost, caso este banco esteja em outra mquina entre com o endereo IP desta, como por exemplo 10.1.0.20. c) Campo Porta: este campo especifica a porta de instalao dos postgresql, por padro a porta do postgresql a 5432. d) Campo Manuteno do BD: por default este campo vem preenchido com a opo postgres, mantenha esta opo. e) Campo Nome de Usurio: como esta sua primeira conexo voc apenas poder colocar o usurio postgres, pois este criado na instalao do banco. Nos prximos tpicos criaremos novos usurios que podero ser usados neste campo.

f) Campo Senha: senha do usurio postgres. Geralmente este usurio criado com a senha postgres. Aps estas configuraes clique em concluir e a sua conexo estar definida. Nota: Caso o conexo seja recusada pelo PgAdmin devido a senha do usurio postgres no estar correta faa os procedimentos abaixo: Abra o documento pg_hba.conf, digitando no terminal do Ubuntu o seguinte comando: ~$ sudo gedit /etc/postgresql/8.4/main/pg_hba.conf No final deste arquivo encontre as linhas mostradas abaixo:
# IPv4 local connections: host all all 127.0.0.1/32 md5

Altere a linha de conexo local da seguinte forma, onde estiver escrito md5 troque para trust, conforme segue abaixo:
# IPv4 local connections: host all all 127.0.0.1/32 trust

Salve e feche o arquivo pg_hba.conf, pare o servio do postgresql e depois inicie-o novamente, conforme segue: ~$ sudo /etc/init.d/postresql-8.4 stop. ~$ sudo /etc/init.d/postresql-8.4 start. Volte ao PgAdmin e refaa a conexo de acordo com os procedimentos acima.

USURIOS DO BANCO DE DADOS


Para criar novos usurios para o PostgreSQL basta seguir os procedimentos descritos abaixo: a) No PgAdmin entre na conexo que voc criou e com o boto direito do mouse clique no item Login Role e escolha a opo nova role de login.

b) Na janela que ir abrir, na guia Propriedades, coloque um nome para o novo usurio,e escolha uma senha para este novo usurio. c) V para a guia Role Privileges e atribua os privilgios para este novo usurio. Se este for um superusurio selecione todas as opes disponveis nesta guia. d) Clique com o mouse no boto ok e seu novo usurio est criado.

BASE DE DADOS
Aps a criao da conexo e do superusurio, o prximo passo a criao do banco de dados. Para criar um novo banco de dados siga os procedimentos descritos abaixo: a) Entre na sua conexo, com o boto direito do mouse clique em banco de dados e selecione a opo Novo Banco de Dados. b) Na janela que ir abrir preencha os campos conforme segue: 1. 2. Nome: crie um nome para o novo banco de dados. Dono: escolha o usurio que ser o dono do novo banco de dados. Este

usurio pode ser o usurio postgres ou um outro superusurio, como o que foi criado no item anterior deste tutorial. 3. 4. Modelo: deixe em branco. Tablespace: selecione a opo pg_default.

c) Clique com o mouse no boto Ok e seu novo banco estar criado. Para tornar esta base de dados em um banco espacial, que armazenar as geometrias dos dados espaciais basta seguir os procedimentos a seguir: a) Selecione o novo banco de dados que voc criou e abra a ferramenta SQL Editor do PgAdmin. b) Crie a linguagem plpgsql no seu banco a partir do comando: create language plpgsql

Digite este comando no SQL Editor e clique com o mouse no boto Executar Consulta. Ou aperte a tecla F5 do teclado. c) Clique com o mouse no cone abrir arquivo. Na janela que ir se abrir voc deve procurar o arquivo postgis.sql, este arquivo, no Ubuntu 9.10 ou 10.04, encontra-se na pasta /usr/share/postgresql/8.4/contrib/postgis.sql. d) Aps localizar o arquivo clique com o mouse no boto Abrir e depois no boto executar consulta. e) Repita o procedimento acima para abrir o arquivo /usr/share/postgresql/8.4/contrib/ spatial_ref_sys.sql e clique com o mouse no boto executar consulta do SQL Editor. f) Feche o SQL Editor e abra o seu banco no PgAdmin. Entre no schema Public e verifique se foram criadas as tabelas geometry_columns e spatial_ref_sys. Verifique tambm o nmero de funes criadas, este nmero deve estar em torno de 686 funes. Se as tabelas e as funes tiverem sido criadas o seu banco espacial est pronto para receber os dados espaciais que sero usados pelo i3geo. Nota: Voc pode criar um novo schema para armazenar suas tabelas espaciais, como por exemplo, um schema denominado geodados . Para criar schemas no postgresql basta clicar com o boto direito do mouse no item Esquemas e selecionar a opo Novo Esquema. Na janela que ir se abrir preencha os campos Nome, com o nome do novo esquema e o campo Dono com o superusurio que ser o dono deste esquema e clique com o mouse no boto OK.

TABELAS COM DADOS ESPACIAIS


As tabelas que contm dados espaciais diferem das tabelas relacionais simplesmente pela presena da coluna geomtrica que responsvel pelo armazenamento dos objetos cartogrficos, pontos, linhas ou polgonos. Pode-se criar estas tabelas a partir da importao de arquivos ESRI shapefiles ou pela incluso dos dados via comandos em linguagem SQL. Este tpico tem o objetivo de demonstrar a criao destas tabelas.

IMPORTANDO ESRI SHAPEFILES NO BANCO POSTGRESQL / POSTGIS

A incluso de arquivos ESRI shapefiles no banco de dados postgresql/postgis no Linux feita a partir de um comando no terminal, usando o programa shp2pgsql do postgis. Para realizar a incluso destes arquivos siga os procedimentos abaixo: Abra o terminal do Ubuntu e digite o seguinte comando: shp2pgsql [<opes>] <shapefile>[schema.]<tabela> > nome.sql Sendo as opes mais utilizadas as seguintes: -c cria uma nova tabela e popula esta tabela. -a caso a tabela j exista coloque a opo -a em vez de -c assim o shapefile ser carregado na tabela existente. -s <srid> define o cdigo srid (referncia espacial, sistema de coordenadas e datum) do shapefile que ser importado para o banco postgresql/postgis. -I cria um index do tipo GIST na nova tabela. Se voc estiver carregando um shapefile em uma tabela existente esta opo no necessria. - W <encoding> voc pode especificar o encoding dos caracteres do shapefile a partir desta opo. -g esta opo tem a funo de especificar o nome da coluna geomtrica, por default o nome da coluna geomtrica no postgis the_geom, se voc deseja manter este nome no use esta opo. Aps definir as opes voc deve colocar o nome do arquivo shapefile, lembre-se de colocar o caminho completo do arquivo caso voc esteja em uma pasta diferente da localizao do arquivo shapefile. Seguindo, coloque o nome do schema do banco onde a tabela est ou onde ela ser criada e por fim acrescente o sinal de > e defina um nome com extenso .sql para este shapefile. O exemplo a seguir demonstra estes procedimentos. ~$ shp2pgsql -c -I -s 4291 -W LATIN1 uf.shp geodados.tb_uf > uf.sql No exemplo acima estamos criando um arquivo .sql com instrues para criar uma nova tabela (-c), criar um index GIST (-I), definindo o cdigo srid (-s) como 4291 (latitude e longitude com datum SAD69) e definindo o encoding dos caracteres do shapefile como

sendo LATIN1. Aps as opes colocamos o caminho correto para o arquivo shapefile uf.shp e por fim dizemos que este arquivo ser importado para o schema geodados na tabela tb_uf e ento geramos o arquivo uf.sql Para carregar este arquivo .sql no banco de dados postgresql/postgis digitamos no terminal o seguinte comando: psql -h <host> -p <porta> -d (banco de dados) -U <usurio> -f <arquivo.sql> Onde: -h nome do host, se a conexo for local use localhost ou ento digite o IP da mquina onde est o banco. -p porta do postgresql, por default o postgresql usa a porta 5432. -d nome do banco de dados com postgis que receber os dados espaciais. -U nome do superusurio dono do banco de dados. -f nome do arquivo .sql que ser carregado no banco. Desta forma, veja o exemplo abaixo: psql -h localhost -p 5432 -d exemplo -U postgres -f uf.sql No exemplo acima, estamos carregando o arquivo uf.sql no banco de dados exemplo que est na mquina local (localhost) na porta 5432. Nota 01: pode-se importar arquivos shapefiles para o postgresql/postgis a partir de softwares de geoprocessamento como o gvSIG e o Quantum Gis, pois estes programas fazem a importao direto para o postgresql. Nota 02: pode-se fazer o processo inverso, exportar uma tabela postgresql para shapefile a partir do comando pgsql2shp da seguinte forma:

pgsql2shp -h <host> -p <porta> -u <usuario> -f <nome.shp> -P <senha do usuario> [nome do banco]<schema.tabela>

O exemplo a seguir demonstra este comando: pgsql2shp -h localhost -p 5432 -u postgres -f uf.shp -P postgres exemplo geodados.tb_uf No exemplo acima, estamos exportando a tabela estados do schema geodados que est no banco de dados exemplo que est na mquina local (localhost) e na porta 5432, gerando o arquivo estados.shp.

CRIANDO TABELAS A PARTIR DE COMANDOS NA LINGUAGEM SQL.

Pode-se criar tabelas espaciais a partir do PgAdmin e popul-las por comandos na linguagem SQL, tanto no SQL Editor como em aplicao de carga de dados que podem ser desenvolvidas em PHP por exemplo. Para criar estas tabelas siga os procedimentos abaixo: a) Abra o PgAdmin, entre na sua conexo e depois abra seu banco. Abra o SQL Editor e digite o seguinte comando para criar a tabela: create table geodados.tb_ponto_exemplo (gid serial primary key,no_ponto varchar) b) O prximo procedimento registrar esta nova tabela espacial na tabela geometry_columns do esquema public, para isto digite o comando abaixo: select AddGeometryColumn('geodados','tb_ponto_exemplo','the_geom',4291,'POINT',2) c) Sua nova tabela de ponto est criada e registrada na tabela geometry_columns no esquema geodados sob o nome tb_ponto_exemplo, com a coluna geometrica denominada de the_geom, o srid foi definido como 4291 (latitude e longitude com datum SAD69) e armazena pontos em duas dimenses. d) Para criar tabelas de linhas ou polgonos repita os procedimentos acima e substitua o 'POINT' por 'LINESTRING' ou 'POLYGON'. Voc pode trabalhar com geometrias mltiplas, para isto basta especific-las na criao da tabela como 'MULTIPOINT',

'MULTILINESTRING' ou 'MULTIPOLYGON'. Para inserir dados na tabela criada use o seguinte comando SQL: insert into geodados.tb_ponto_exemplo (no_ponto,the_geom) values ('ponto1',GEOMETRYFROMTEXT('POINT(-33.45 -45.33)', 4291)) Nota 01: para inserir linhas voc deve utilizar no lugar de 'POINT' a expresso LINESTRING ou MULTILINESTRING e os pares de coordenadas devem ser separados por vrgula. GEOMETRYFROMTEXT('LINESTRING(-33.45 -45.33, -33.55 -45.38)', 4291)). Nota 02: para inserir polgonos voc deve utilizar no lugar de 'POINT' a expresso POLYGON ou MULTIPOLYGON, os pares de coordenadas devem ser separados por vrgula e o ltimo ponto deve ser igual ao primeiro. GEOMETRYFROMTEXT('POLYGON(-77.45 -45.33, -54.43 -33.12, 0 0, -77.45 -45.33)', 4291)).