Você está na página 1de 8

TUTORIAL DE CRIAÇÃO DE BANCO DE DADOS ESPACIAL

Este tutorial tem por objetivo explicar a criação de bancos de dados espaciais usando o Postgis que é a extensão espacial do PostgreSQL. Os passos que serão descritos aqui foram feitos no Linux, na distribuição Ubuntu e utilizou o gerenciador de banco de dados PgAdmin. Considerando que o pgadmin, o postgresql e o postgis já estão instalados no servidor (caso ainda não tenha instalado estes pacotes veja o tutorial de instalação do i3geo e execute os procedimentos descritos no item 4) siga os procedimentos a seguir:

CONEXÃO COM O BANCO DE DADOS POSTGRESQL

Abra o software PgAdmin e clique com o mouse no botão “Adicionar conexão a um servidor”, localizado no canto superior esquerdo. Na janela que irá abrir preencha os campos conforme instrução abaixo:

a) Campo Nome: este campo irá denominar a sua conexão, o nome deve indicar o teor

da conexão, como por exemplo “trabalho” ou “pessoal” ou “desenvolvimento”, entre outros.

b) Campo Máquina: neste campo você deve por o ip da máquina onde está o banco

postgresql que será conectado. Caso o banco esteja na sua máquina digite neste campo a palavra “localhost”, caso este banco esteja em outra máquina entre com o endereço IP desta, como por exemplo 10.1.0.20.

c) Campo Porta: este campo especifica a porta de instalação dos postgresql, por padrão

a porta do postgresql é a 5432.

d) Campo Manutenção do BD: por default este campo vem preenchido com a opção

postgres, mantenha esta opção.

e) Campo Nome de Usuário: como esta é sua primeira conexão você apenas poderá

colocar o usuário postgres, pois este é criado na instalação do banco. Nos próximos

tópicos criaremos novos usuários que poderão ser usados neste campo.

f) Campo Senha: senha do usuário postgres. Geralmente este usuário é criado com a senha “postgres”. Após estas configurações clique em concluir e a sua conexão estará definida.

Nota: Caso o conexão seja recusada pelo PgAdmin devido a senha do usuário postgres não estar correta faça 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 conexão 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 serviço 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 refaça a conexão de acordo com os procedimentos acima.

USUÁRIOS DO BANCO DE DADOS

Para criar novos usuários para o PostgreSQL basta seguir os procedimentos descritos abaixo:

a) No PgAdmin entre na conexão que você criou e com o botão direito do mouse clique no item Login Role e escolha a opção nova role de login.

b) Na janela que irá abrir, na guia Propriedades, coloque um nome para o novo usuário,e

escolha uma senha para este novo usuário.

c) Vá para a guia Role Privileges e atribua os privilégios para este novo usuário. Se este

for um superusuário selecione todas as opções disponíveis nesta guia.

d) Clique com o mouse no botão “ok” e seu novo usuário está criado.

BASE DE DADOS

Após a criação da conexão e do superusuário, o próximo passo é a criação do banco de dados. Para criar um novo banco de dados siga os procedimentos descritos abaixo:

a) Entre na sua conexão, com o botão direito do mouse clique em banco de dados e

selecione a opção Novo Banco de Dados.

b) Na janela que irá abrir preencha os campos conforme segue:

1. Nome: crie um nome para o novo banco de dados.

2. Dono: escolha o usuário que será o dono do novo banco de dados. Este

usuário pode ser o usuário postgres ou um outro superusuário, como o que foi

criado no item anterior deste tutorial.

3. Modelo: deixe em branco.

4. Tablespace: selecione a opção pg_default.

c) Clique com o mouse no botão 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 botão 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) Após localizar o arquivo clique com o mouse no botão Abrir e depois no botão 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 botão 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

também o número de funções criadas, este número deve estar em torno de 686 funções. Se as tabelas e as funções tiverem sido criadas o seu banco espacial está pronto para receber os dados espaciais que serão 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 botão direito do mouse no item Esquemas e selecionar a opção Novo Esquema. Na janela que irá se abrir preencha os campos Nome, com o nome do novo esquema e o campo Dono com o superusuário que será o dono deste esquema e clique com o mouse no botão OK.

TABELAS COM DADOS ESPACIAIS

As tabelas que contém dados espaciais diferem das tabelas relacionais simplesmente pela presença da coluna geométrica que é responsável pelo armazenamento dos objetos cartográficos, pontos, linhas ou polígonos. Pode-se criar estas tabelas a partir da importação de arquivos ESRI shapefiles ou pela inclusão dos dados via comandos em linguagem SQL. Este tópico tem o objetivo de demonstrar a criação destas tabelas.

IMPORTANDO ESRI SHAPEFILES NO BANCO POSTGRESQL / POSTGIS

A inclusão 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 inclusão destes arquivos siga os procedimentos abaixo:

Abra o terminal do Ubuntu e digite o seguinte comando:

shp2pgsql [<opções>] <shapefile>[schema.]<tabela> > nome.sql

Sendo as opções mais utilizadas as seguintes:

-c → cria uma nova tabela e popula esta tabela. -a → caso a tabela já exista coloque a opção -a em vez de -c assim o shapefile será carregado na tabela existente. -s <srid> → define o código srid (referência 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 opção não é necessária. - W <encoding> → você pode especificar o encoding dos caracteres do shapefile a partir desta opção. -g → esta opção tem a função de especificar o nome da coluna geométrica, por default o nome da coluna geométrica no postgis é the_geom, se você deseja manter este nome não use esta opção. Após definir as opções 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 localização 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 extensão .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 instruções para criar uma nova tabela (-c), criar um index GIST (-I), definindo o código srid (-s) como 4291 (latitude e longitude com datum SAD69) e definindo o encoding dos caracteres do shapefile como

sendo LATIN1. Após as opções 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 então 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 <usuário> -f <arquivo.sql>

Onde:

-h → nome do host, se a conexão for local use localhost ou então digite o IP da máquina 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 superusuário 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 máquina 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 importação 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 máquina 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 aplicação 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 conexão 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 próximo 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 dimensões.

d) Para criar tabelas de linhas ou polígonos repita os procedimentos acima e substitua o

'POINT' por 'LINESTRING' ou 'POLYGON'. Você pode trabalhar com geometrias múltiplas, para isto basta especificá-las na criação 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 expressão

LINESTRING ou MULTILINESTRING e os pares de coordenadas devem ser separados

por vírgula.

GEOMETRYFROMTEXT('LINESTRING(-33.45 -45.33, -33.55 -45.38)', 4291)).

Nota 02: para inserir polígonos você deve utilizar no lugar de 'POINT' a expressão POLYGON ou MULTIPOLYGON, os pares de coordenadas devem ser separados por vírgula 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)).