Professional Documents
Culture Documents
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:
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.
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.
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:
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.
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)).