quinta-feira, setembro 27, 2007

Utilização do Mapserver no gerenciamento dos Recursos Hídricos do Estado da Paraíba

1. Introdução

A escassez da oferta hídrica é um dos problemas mais graves enfrentados a nível mundial. Na região nordeste do Brasil, este problema se agrava em função da variação climática, do crescimento da demanda e dos usos múltiplos da água, além da má distribuição dos Recursos hídricos no espaço e no tempo.

A Agência Executiva de Gestão das Águas do Estado da Paraíba (AESA) tem como principal atribuição, gerenciar com racionalidade os recursos hídricos do Estado, assegurando as demandas dos usuários, fazendo uso dos instrumentos das leis federal e estadual, resguardando o meio ambiente e o bem estar do homem, de forma a garantir o desenvolvimento sustentável.

Como ferramenta de apoio à tomada de decisão, os Sistemas de Informações Geográficas (SIG), possibilitam aos gestores uma série de funcionalidades que contribuem diretamente em um melhor gerenciamento dos recursos hídricos. Através do SIG é possível gerar mapas e cartas que mostrem, por exemplo, quais áreas estão desabastecidas, ou onde estão as localidades que necessitam de uma maior oferta hídrica, e a partir daí, realizar análises espaciais e estatísticas visando amenizar tais problemas.

No entanto, o usuário final deve ter acesso às informações processadas de um SIG de uma forma rápida e fácil em uma interface amigável. Neste contexto, os programas de Webmapping disponibilizam dados espaciais na Web, permitindo que qualquer pessoa, através de um navegador (browser), possa interagir com mapas dinâmicos através de comandos como zoom, pan, realizar consultas, além criar mapas temáticos e relatórios.

Com o objetivo de possibilitar ao visitante do Portal AESA acesso de forma rápida e fácil a diversas informações georreferenciadas do Estado, foi desenvolvida uma aplicação Webmapping utilizando Mapserver e o framework Pmapper. Através da interface deste aplicativo, batizado de SIGAESA-WEB qualquer pessoa pode consultar informações sobre bacias hidrográficas, sistemas aqüíferos, pluviometria média, adutoras, além das informações qualitativas e quantitativas sobre os rios e açudes, dentre outros níveis de informação.

2. Tecnologias Utilizadas

A base cartográfica disponibilizada pelo aplicativo é composta de elementos que foram obtidos junto ao IBGE, tais como: limites estaduais, divisão municipal e sedes municipais. Outras feições como, rios, açudes, bacias hidrográficas, postos fluviométricos, dentre outros, foram confeccionados na própria agência através de técnicas de digitalização e de classificação de imagens de satélite, utilizando imagens CBERS 2 CCD (2006), LANDSAT 7 (2006) e SRTM (2006).

Já os programas utilizados foram os seguintes:
  • Sistema operacional: Linux Fedora Core 7;
  • Servidor Apache com PHP;
  • Editor Web: NVU;
  • Editor de arquivos Mapfile: Scite;
  • Banco de Dados: PostgreSQL/PostGIS;
  • Pmapper v.3.1
3. Implementação do Sistema

A configuração do aplicativo iniciou-se com a instalação e configuração do servidor Apache com o PHP no Fedora, em seguida foram instalados a partir dos fontes as seguintes bibliotecas: proj, gd, libpng, libgeotiff, zlib, geos, postgresql, postgis, gdal e o mapserver, a medida que eram requeridas algumas dependências destas bibliotecas no processo de compilação, outros pacotes também foram baixados e instalados utilizando o comando yum, presente nesta distro.

O próximo passo foi exportar as feições geográficas que estavam no formato shapefile para o Banco de Dados Espaciais, tal procedimento foi realizado através do comando shp2pgsql, que gera um script SQL a partir da leitura dos arquivos shapes. Em seguida entrou em cena a configuração do pmapper, que é um framework de fácil configuração, já que para colocarmos a aplicação para “rodar”, necessitamos apenas criar o arquivo mapfile, o qual define a forma como os níveis de informação serão exibidos, e em seguida configurar a aplicação através dos arquivos de configuração do próprio pmapper. O tempo total gasto durante todo este processo, se somarmos a isso a customização do pmapper, foi de aproximadamente 70 horas de trabalho.

A figura 1 mostra o esquema de funcionamento do aplicativo SIGAESA-WEB.


Figura 1 – Esquema do funcionamento do aplicativo SIGAESA-WEB

4. Resultados

Através da interface do aplicativo, qualquer usuário tem acesso imediato a uma série de informações, dentre as quais destacam-se o monitoramento diário do volume dos açudes (figura 2).


Figura 2 – Consulta ao volume de um açude
Estão também disponíveis dados sobre a qualidade da água dos rios e açudes monitorados pela Superintendência de Administração do Meio Ambiente do Estado – SUDEMA (figura 3).
Figura 3 – Consulta à qualidade da água de um rio
5. Conclusões

Antes da disponibilização deste aplicativo Webmapping no portal da AESA, não havia oportunidades de análise e identificação dos problemas hídricos pela população em geral. Porém após sua implementação, observou-se um crescente interesse da sociedade e também de outros órgãos do estado por tais informações, que antes estavam disponíveis apenas para os técnicos da agência, ou a pesquisadores e estudantes que tinham que se deslocar até a mesma. Desta forma o aplicativo também contribuiu para diminuir a burocracia de acesso a essas informações.

Do ponto de vista financeiro, a solução adotada utilizou apenas softwares livres, proporcionando uma grande economia na aquisição das licenças de programas proprietários similares.

O SIGAESA-WEB destacou-se como uma ferramenta de fácil manuseio, e alcançou seu principal objetivo, que é o de disseminar informações espaciais na Web para a sociedade de forma mais fácil e rápida, tanto para os gestores quanto para a sociedade como um todo.

Como trabalho futuro, deseja-se incluir no aplicativo os pontos outorgados e cadastrados dos usuários de recursos hídricos do estado.

Por fim, a AESA espera tornar-se em alguns anos um modelo regional na gestão de recursos hídricos através de ações que possibilitem avançar em torno do desenvolvimento sustentável e da gestão participativa.

Criando uma aplicação Webmapping com o Alov map

O Alov map é um publicador de mapas gratuito, desenvolvido através da linguagem Java que pode ser implementado na forma de applet ou servlet. Na versão servlet os dados ficam armazenados em um SGBD e são enviados ao cliente de forma incremental, através do botão de “ligar/desligar camada”, já na versão applet, todos os dados são enviados ao cliente no momento em que a página é carregada no browser.

Embora a versão servlet seja mais flexível, neste tutorial vamos trabalhar inicialmente na versão applet deste programa, que é bem mais fácil de configurar para usuários iniciantes. Mais detalhes sobre o alov podem ser encontrados no site
http://alov.org

Para visualizar a página que será criada neste tutorial é necessário que você tenha a máquina virtual Java (JVM), ou o JRE instalados no seu computador.

1o Passo – Download do Alov Map:

Para baixar o Alov é necessário que o usuário faça um registro na página de downloads do site, após este registro, baixe a versão applet do programa, como mostra a figura 1 abaixo:

Figura 1 – baixando a versão Applet.

Os dados deste tutorial podem ser baixados no site: http://geo.marcello.googlepages.com/municipios.zip

2oPasso – Preparando a aplicação:

Coloque os arquivos baixados em uma mesma pasta de sua escolha, não é necessário descompactar o arquivo shapefile zipado (municipios.zip). A seguir vamos criar dois arquivos para que o aplicativo funcione, um no formato XML e outro no formato HTML.

3o Passo – Criando o arquivo XML de configuração dos layers:

Neste arquivo iremos definir a forma na qual os dados serão apresentados no Alov, à medida que fomos passando para os outros tutoriais, este arquivo irá sendo alterado de forma gradativa. Através de um editor de texto de sua escolha, crie um arquivo chamado config.xml com o conteúdo abaixo:

<?xml version="1.0" encoding="ISO-8859-1"?>
<project zoomunits="km" mapunits="degrees">
<layer name="Municipios" visible="yes" showlegend="yes">
<dataset url="municipios.zip" />
<renderer>
<symbol fill="211:255:190" outline="38:115:0" />
</renderer>
</layer>
</project>

Explicando...

A linha 1 indica que este arquivo é um XML, e qual é a sua codificação.

Na linha 2 inicia-se a tag projeto, todos os dados que serão mostrados no aplicativo devem ser declarados em algum lugar dentro do projeto, também foram definidos dois atributos para essa tag, um indicando que as unidades de zoom estão em quilômetros (zoomunits="km") e outro indicando que as unidades do mapa estão em graus decimais (mapunits="degrees"). A linha 9 fecha o projeto iniciado na linha 2.

Na linha 3 inicia-se um layer, onde o seu nome foi definido como municípios (name="Municipios"), que estará visível quando o Alov for inicializado (visible="yes") e terá uma legenda mostrando a sua cor e/ou símbolos utilizados (showlegend="yes"). A linha 8 indica o final da definição do layer.

Na linha 4 é definido o local e nome do arquivo shapefile desta camada (url="municipios.zip"), observe que não é necessário descompactá-lo, já que o Alov é capaz de ler arquivos no formato zip.

A linha 5 inicia a tag renderer onde dentro dela, definiremos a aparência do layer através da tag symbol. Os atributos fill e outline definem respectivamente as cores de preenchimento e da cor da borda do polígono na escala RGB. A linha 8 fecha a tag renderer.

4o Passo – Criando o arquivo HTML:

No arquivo HTML será colocado a diretiva applet, responsável por carregar a janela do aplicativo. Para isso, crie um arquivo chamado mapa.html com o conteúdo abaixo:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Webmapping</title>
</head>
<body>
<applet codebase ="."
code="org.alov.viewer.SarApplet"
archive="alov_applet.jar"
width="650" height="400" align="center">
<param name="pid" value="config.xml">
</applet>
</body>
</html>

Explicando...

As linhas 1 e 2 indicam o doctype do arquivo HTML, a linha 3 inicia a tag html com o atributo namespace e a linha 16 fecha o tag html.

A linha 4 inicia a tag do cabeçalho (head), onde é definido o título do documento através da tag title, na linha 6. A linha 7 fecha a tag head.

O conteúdo da página é definido dentro do corpo (body), ou seja, entre as linhas 8 e 15.

A linha 9 inicia a tag applet, indicando que o arquivo alov_applet.jar está na mesma pasta em que o HTML se encontra (codebase =”.”), em seguida são informados o nome da classe java (linha 10) e o nome do arquivo que deve ser carregado (linha 11).

Na linha 12 são passados os parâmetros de largura, altura e alinhamento da janela do applet.

Por fim, na linha 13 temos a tag param, que informa o nome do applet (name=”pid”) e o nome do arquivo XML (value=”config.xml”), já a linha 14 fecha a tag applet.

5o Passo – Visualizando a aplicação:

Abra o arquivo mapa.html e veja como ficou sua primeira aplicação Alov Map, se não aparecer a página mostrada abaixo, verifique se não há algum erro no seu código, ou se a máquina virtual Java não está instalada no seu computador. No próximo post veremos como construir alguns mapas temáticos e como habilitar o modo de consulta por atributos. Um Abraço!

sexta-feira, março 09, 2007

Instalando o Mapserver com PHP Mapscript no Ubuntu

Umas das formas mais fáceis de se instalar o Mapserver no Ubuntu é através do gerenciador de pacotes synaptic, neste tutorial vamos ver que este processo, ao contrário do que muita gente acha, é bastante simples.

1. Instalando o Apache com PHP
No Gnome, clique em Sistema > Administração > Gerenciador de Pacotes Synaptic. Clique em procurar e digite apache, selecione os pacotes: apache2, apache2-common, apache2-doc. Clique em aplicar, e em aplicar novamente. Aguarde o download dos pacotes e a instalação. Repita o procedimento para instalar o PHP, escolhendo os pacotes: php5, libapache2-mod-php5, php5-cgi e php5-common.

2. Instalando o Mapserver com PHP mapscript
Ainda no Synaptic, clique em procurar e digite mapserver, selecione os seguintes pacotes para instalação: cgi-mapserver, mapserver-bin, mapserver-doc e php5-mapscript. Reinicie o servidor apache digitando no Terminal sudo /etc/init.d/apache2 restart .

Mude as permissões para a pasta onde serão armazenadas as páginas a serem criadas, digitando no Terminal sudo chmod 775 /var/www (enter).

3. Verificando a Instalação
Abra o seu navegador e digite: http://localhost/cgi-bin/mapserv, você verá uma página em branco com a seguinte mensagem:

No query information to decode. QUERY_STRING is set, but empty.

Isto indica que o mapserver foi instalado corretamente. Vamos agora verificar se o módulo PHP Mapscript também está OK, abra um editor de texto qualquer (gedit, VI, etc.) e digite o seguinte conteúdo:

<?php
phpinfo();
?>

Salve este arquivo em /var/www com o nome phpinfo.php. Para finalizar, digite no navegador http://localhost/phpinfo.php , ao carregar a página, procure pelo quadro mostrado na figura abaixo, contendo as informações sobre o módulo Mapscript.

No próximo post, vou mostrar como criar uma aplicação com Mapserver e PostGIS. Até lá!

terça-feira, março 06, 2007

Usando o Postgis com o Quantum Gis no Ubuntu

Dando seqüência ao último post, vamos agora importar um arquivo shapefile contendo o mapa do Brasil para o nosso BDG, depois iremos visualizar esta tabela no QGIS. Para este tutorial faça o download do arquivo que se encontra no link abaixo:

http://www.gismaps.com.br/divpol/divisao_politica.zip

Após baixar o arquivo, é só descompactá-lo
em um diretório da sua escolha.

1. Utilizando o comando shp2pgsql para converter os shapes

No Terminal, vá até a pasta em que você salvou o arquivo e depois digite shp2pgsql -s 4291 BRASIL.shp estados_br > estados_br.sql (enter)
Onde:

-s 4291 indica o SRID (Identificação do Sistema de Referência Espacial) referente ao Datum SAD69 e as coordenadas geográficas.
BRASIL.shp é o nome do arquivo shapefile que iremos converter em sql.
estados_br é o nome da tabela que será criada no banco.
estados_br.sql é o nome do arquivo sql a ser gerado neste mesmo diretório.

Se você não errou nada, verá a mensagem abaixo, indicando que o arquivo sql foi criado.
Shapefile type: Polygon
Postgis type: MULTIPOLYGON[2]

Criado o arquivo estados.sql, vamos importá-lo para o banco, digite psql -f estados_br.sql -d gis (enter).

2. Vizualizando a tabela no QGIS

Baixe e instale o QGIS pelo synaptic, após sua instalação, abra-o, e vá até o ícone Add a PostGIS Layer. Agora clique em novo e informe os parâmetros da conexão, como mostra a figura abaixo:



Clique agora em conectar, escolha a tabela e clique em adicionar para visualizar o mapa do Brasil, como mostra a figura abaixo:

segunda-feira, março 05, 2007

Instalando a Extensão Espacial PostGIS no Ubuntu – Guia Rápido

Este passo a passo mostra uma das formas de se instalar o PostgreSQL + PostGIS no Ubuntu.

Atenção! Esta postagem foi atualizada: http://profmarcello.blogspot.com.br/2013/10/instalacao-do-postgis-20-no-ubuntu-via.html

1. Editando a lista de repositórios:
No Gnome, vá até Aplicações > Acessórios > Terminal e digite sudo gedit /etc/apt/sources.list (enter) em seguida informe a senha de root.
Retire agora o caractere # das linhas que começam com a palavra deb para "descomentá-las", salve e feche o arquivo.

No Terminal digite sudo apt-get update (enter) para atualizar a lista de repositórios. Terminado a atualização, vamos agora até o Synaptic começar o processo de instalação dos pacotes.
2. Baixando e instalando os pacotes:
Vamos abrir o Synaptic, para isso siga até Preferências > Administração > Gerenciador de Pacotes Synaptic, em seguida entre com a senha de root (caso seja requisitada).
No Synaptic, clique em procurar, e digite postgis. Aparecerá as opções da figura abaixo:



Selecione os pacotes para instalação postgresql-x-postgis (onde x é a versão mais recente) e postgis, bem como as dependências sugeridas, clique em aplicar e aguarde o download e instalação dos pacotes.
Terminado a instalação destes pacotes, instale agora o pgadmin3 através do mesmo procedimento anterior.

3. Criando um Banco de Dados e um usuário:
Nesta etapa voltaremos até o Terminal para configurar o banco que será criado, para isso digite sudo su (enter), entre com a senha de root, depois su postgres (enter). Agora com o usuário postgres poderemos criar nosso primeiro BD.
Digite createdb gis (enter), onde gis é o nome do nosso banco.

Agora vamos criar um usuário do postgresql, digite createuser nome_do_usuario (enter), onde nome_do_usuario pode ser o seu login do Linux, no meu caso o comando ficou assim: createuser marcello, surgirá a seguinte pergunta no Terminal:
A nova role poderá criar um super-usuário? (s/n) digite s (enter).
CREATE ROLE

Agora volte para o seu usuário digitando su seu_login (enter), em seguida digite psql gis (enter) para acessar o banco criado.
Já no banco, vamos definir uma senha para o usuário criado anteriormente, no meu caso foi feito da seguinte forma:

gis=# ALTER USER marcello PASSWORD 'nova_senha' ; (enter)
ALTER ROLE

Finalizada esta estapa, vamos agora instalar a extensão geográfica.

4. Carregando a Extensão PostGIS
Vá até o diretório onde se encontram os arquivos SQL necessários para carregar a extensão PostGIS, para isso, digite no terminal cd /usr/share/postgresql/8.4/contrib/postgis-x (enter).
Em seguida criaremos a linguagem plpgsql necessária para o funcionamento do PostGIS, digite
createlang plpgsql gis (enter)
Para carregar as extensões digite os comandos: psql -f postgis.sql -d gis (enter) e para finalizar psql -f spatial_ref_sys.sql -d gis (enter).
Caso não tenha ocorrido nenhum problema nos passos anteriores, o postgis foi instalado corretamente.