Para amigos e estudantes da area de GEOPROCESSAMENTO!

Thursday, June 26, 2008

Conhecendo Geotools

Pessoal, não é querendo ser chato, dá mais credibilidade para nós todos vocês encaminharem suas dúvidas no grupo de estudos Geojava http://br.groups.yahoo.com/group/geojava Assim vocês podem ajudar outras pessoas que tenham as mesmas dúvidas que vocês. Então, por favor, não encaminhem e-mail para mim, e sim para o grupo de estudos Obrigado.

Para fazer o download do material do artigo clique aqui


Introdução.


Na modernidade, a evolução dos computadores convencionais, é um fato, a cada dia que passamos a ter mais poder de processamento e armazenamento de dados por um preço cada vez mais acessível, com isso também temos maiores exigências no que se dizem respeito a desenvolvimento de software, algumas delas são, maior aproveitamento dos recursos oferecidos pelo hardware e seja interativo ao usuário final (fácil entendimento). Com isso podemos definir um novo caminho para o desenvolvimento de softwares GIS (Geographic Information System) ou, como chamamos no Brasil, SIG (Sistema de Informação Geográfica). Segundo (PAREDES, 1994) representa a forma que os dados geoespaciais são mostrados para o usuário em um SIG. Tendo assim uma representação de um mundo real através de uma base de dados e ferramentas. Vemos nesta figura 2 as formas de como podem ser demonstrados os componentes básicos de um SIG, nesse exemplo vemos separadamente o usuário que por intermédio de ferramentas de um software SIG realiza a abstração de um mundo real com a ajuda de um banco de dados apropriado.

Figura 1. Ilustração dos principais componentes de um SIG.

Na figura 3 (PAREDES, 1994) explica um exemplo do que significa mundo real. Consiste de todos os objetos geográficos da superfície ou subsuperficie da terra e do meio cuja representação pode ser feita numérica ou graficamente, armazenada em formatos analógicos ou digitais de forma agregada (mapas) ou desagregada (layers). No caso desta demonstração podemos ter ruas, parques, áreas industriais e rios na superfície, e também até atributos mais profundos como lençóis freáticos, mares, argila, areia, rochas, rede de água e esgoto e resíduos, com estas representações podemos ter em mãos uma grande cadeia de informações georeferenciadas para visualização, pesquisa e edição de informações em um sofware SIG.


Figura 2. Representa os objetos de um mundo real.

Com isso, temos uma forma diferente de se demonstrar informações, diferente dos sistemas comuns, onde você só trata dados de formas convencionais, isto é em tabelas comuns, com consultas SQL padrão e campos string, inteiro, etc.
É preciso um conhecimento a mais sobre geografia e cartografia, no que se diz respeito à transformação de atributos em referencias reais, com o geoprocessamento.
.Assim, áreas tais como Geologia, Hidrologia, Agricultura, Urbanismo e as Engenharias Civis, de Transportes, de Minas, estão ligadas à atuação do homem sobre o meio físico em atividades de, por exemplo:
Projeto: de vias (rodovias, ferrovias, canais, etc), de irrigação, de loteamentos, drenagem, lavra, etc;
Operação: de redes de utilidades (água, esgoto, telefone, gás), redes de transporte, etc;
Planejamento: urbano, regional, agrícola e de transporte;
Análise: espacial ambiental, geológica, urbana, regional e de transporte;
Gerenciamento: dos processas agrícolas e de variados processos de distribuição e alocação
Monitoramento: de processos ambientais, urbanos e regionais;
Locação: de vias, redes de utilidades, equipamentos, plantio, etc;

O Geoprocessamento

Segundo (PAREDES, 1994) as características básicas de um GIS ou, como chamamos no Brasil, Sistema de Informação Geográfica (SIG) é a faculdade de armazenar, recuperar e analisar mapas num ambiente computacional. Um mapa é uma representação gráfica dos fenômenos geográficos. Num ambiente computacional, a noção do mapa deve ser estendida para incluir diferentes tipos de dados geográficos como imagens de satélite e módulo numérico de terreno.
Anatomia interna de um SIG. Numa visão abrangente, pode-se indicar que um SIG tem os seguintes componentes:

Interface com usuário.
Entrada e integração de dados.
Funções de processamento gráfico e de imagens
Banco de dados geográfico.

O uso de SGBD ou Banco de dados geográfico permite ainda a realizar, com maior facilidade, a interligação de banco de dados já existente com o sistema de geoprocessamento.
Como exemplo de SGBD veremos o PostgreSQL que segundo (Uchoa) integrado com o PostGIS que foi desenvolvido pela empresa canadense Refractions e licenciado livremente para a comunidade mundial de SL. Este módulo tem o objetivo de permitir o armazenamento e tratamento de dados geográficos no SGBD PostgreSQL, seguindo o padrão OpenGIS® Simple Features Specification (SFS – OGC). Também na categoria de software livre, o PostgreSQL é um SGBD objeto-relacional com recursos comparáveis ao Oracle®, porém ainda pouco conhecido pelos profissionais da área de GEO. Muitos profissionais de Tecnologia da Informação (TI) que trabalham com Linux, conhecem bem o potencial do PostgreSQL e tem dado preferência ao mesmo em substituição das plataformas proprietárias.

Instalando o PostgreSQL habilitando o PostGIS

O download pode ser feito no link, http://www.postgresql.org/
Somente é necessário habilitar os recursos do PostGIS ao instalar o banco de dados PostgreSql como segue no exemplo.























Figura 3. selecionando a linguagem.

Em seguida habilitar o PostGis para trabalhar com os recursos espaciais do banco de dados PostGreSQL






















Figura 4. Habilitando os recursos PostGIS do Banco de dados PostGreSQL.

Importando um arquivo espacial shapefile para dentro do banco PostgreSql.

São 3 arquivos obrigatórios shapefile o .shp (coordenadas espaciais), .dbf (tabela para armazenar os atributos) e .shx (que contem as propriedades do shapefile).

Copiando estes arquivos na pasta C:\Arquivos de programas\PostgreSQL\8.1\bin
A importação será feita da seguinte forma. No Windows execute.
Iniciar > Programas > PostgreSQL > Command
Depois digite a linha de comando abaixo com o nome do seu shapefile e banco de destino.

# shp2pgsql nomedoshapefile.shp nomedatabela nomedobanco > arquivo.sql

Após esse comando será gerado um arquivo.sql contendo as tabelas necessárias e os dados(objetos).
Para inserir os dados no banco basta digitar o seguinte comando:

# psql -d nomedobanco -f arquivo.sql

Abrindo a tabela criada no PgAdminIII, com os atributos carregados teremos uma coluna THE_GEOM que é a relação espacial da tabela.


Figura 5. Visualizando atributos criados no banco com o PgADminIII.

Entretanto é necessário um software de GIS para abrir estes atributos com georeferenciamento então utilizaremos o UDIG para abrir esta mesma tabela do Postgresql.

Instalando Udig.

Segue as instruções no link http://udig.refractions.net/confluence/display/UDIG/Home

Agora podemos importar uma tabela espacial do PostGreSQL da seguinte forma, ao executar o UDIG em Iniciar > Programas > UDIG, clique no menu File > New > New Layer.

Aparecerá a seguinte caixa de dialogo para você selecionar o tipo de layer que você ié criar, no caso deste exemplo criaremos um Lyer cujos dados estarão armazenados no PostGreSQL entretanto criaremos um Layer do tipo PostGIS.



Figura 6. Caixa de dialogo para criar um layer do tipo PostGIS no UDIG.

Passando os parâmetros necessários as banco de dados postgresql teremos uma conexão com seus atributos espaciais e o software se encarregará da renderização dos layers de acordo com as tabelas.





























Figura 7. Definindo as diretivas de conexão com o banco PostGreSQL.


Abrindo esta mesma tabela com o aplicativo UDIG teremos outro tipo de visualização.



Figura 8. Visualização da base georeferenciada armazenada dentro do banco PostGreSQL com um software SIG específico UDIG.

Conhecendo e utilizando o JAI.

Download
http://java.sun.com/products/java-media/jai/downloads/download-1_1_4.html

Extraindo os arquivos.
jai-1_1_4-pre-dr-b03-lib-windows-i586-12_Oct_2006.zip

Tem-se as seguintes bibliotecas e APIS java:
Colocando os arquivos .dll do JAI dentro da pasta system32 do windows.
mlib_jai.dll
mlib_jai_mmx.dll
mlib_jai_util

Adicionando arquivos .jar do JAI dentro da aplicação.
jai_codec.jar
jai_core.jar
mlibwrapper_jai.jar

Adicionando as bibliotecas do GEOTools2.2-RC0 dentro do projeto.
gt2-main.jar
gt2-postgis.jar
JTS-1.4.jar
geoapi-1.1.0alpha.jar
vecmath-1.2.1.jar
recente postgresql jdbc
geoapi-2.0.jar
geoapi-legacy-0.2.jar
postgis-driver.jar
units.jar
migrate.jar
opengis-legacy.jar

6.6–Criando uma classe para demonstração de como abrir um projeto SIG com o Netbeans5.0.


Figura 9. Criando uma classe java para visualização de uma base completa armazenada dentro do banco PostGreSQL com estilos de cor e tamanhos personalizados.

Nesse exemplo o nome da classe será PostGIS.

Copiaremos o seguinte código para dentro dela para abrirmos as bases espaciais criadas no banco de dados PostgreSql com os estilos apropriados.

package src;

import java.awt.Color;
import java.awt.Font;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import javax.swing.JApplet;
import javax.swing.JFrame;
import javax.swing.WindowConstants;
import org.geotools.data.DataStore;
import org.geotools.data.DataStoreFinder;
import org.geotools.data.FeatureSource;
import org.geotools.gui.swing.*;
import org.geotools.gui.swing.StyledMapPane;
import org.geotools.map.DefaultMapContext;
import org.geotools.map.MapContext;
import org.geotools.renderer.j2d.RenderedMapScale;
import org.geotools.styling.Graphic;
import org.geotools.styling.LineSymbolizer;
import org.geotools.styling.Mark;
import org.geotools.styling.PointSymbolizer;
import org.geotools.styling.PolygonSymbolizer;
import org.geotools.styling.Rule;
import org.geotools.styling.Style;
import org.geotools.styling.StyleBuilder;
import org.geotools.styling.Symbolizer;
import org.geotools.styling.TextSymbolizer;
/**
* Simples visualiador de mapas armazenados no banco postgresql.
* @author Jairo de Almeida
*/
public class SpearfishPostGIS{
public static void main(String[] args) throws Exception {
//create the PostGISDataStore
Map params = new HashMap();
params.put("dbtype", "postgis");
params.put("host", "localhost");
params.put("port", new Integer(5432));
params.put("database", "dadosbrasil");
params.put("user", "postgres");
params.put("passwd", "postgres");
DataStore pgDatastore = DataStoreFinder.getDataStore(params);
// preparando layer de rodovias
FeatureSource rodovias = pgDatastore.getFeatureSource("br_rodovias");
// preparando layer de estados
FeatureSource estados = pgDatastore.getFeatureSource("br_uf");
// preparando layer de regioes
FeatureSource regioes = pgDatastore.getFeatureSource("br_regioes");
// preparando layer de contorno
FeatureSource contorno = pgDatastore.getFeatureSource("br_contorno");
// Preparando estilos
StyleBuilder sb = new StyleBuilder();
// estilo de formatação para layers poliginais
LineSymbolizer lsStream = sb.createLineSymbolizer(Color.BLUE, 3);
Style streamsStyle = sb.createStyle(lsStream);
// estilo de formatação para o layer de rodovias
LineSymbolizer ls1 = sb.createLineSymbolizer(Color.YELLOW, 1);
LineSymbolizer ls2 = sb.createLineSymbolizer(Color.BLACK, 5);
Style roadsStyle = sb.createStyle();
roadsStyle.addFeatureTypeStyle(sb.createFeatureTypeStyle(null, sb.createRule(ls2)));
roadsStyle.addFeatureTypeStyle(sb.createFeatureTypeStyle(null, sb.createRule(ls1)));
// preparando layers ponto e multponto
Mark redCircle = sb.createMark(StyleBuilder.MARK_CIRCLE, Color.RED, Color.BLACK, 0);
Graphic grBugs = sb.createGraphic(null, redCircle, null);
PointSymbolizer psBugs = sb.createPointSymbolizer(grBugs);
Style bugsStyle = sb.createStyle(psBugs);
// estilo arqueologico
Mark yellowTri = sb.createMark(StyleBuilder.MARK_TRIANGLE, Color.YELLOW, Color.BLACK, 0);
Graphic grArch = sb.createGraphic(null, yellowTri, null, 1, 15, 0);
PointSymbolizer psArch = sb.createPointSymbolizer(grArch);
org.geotools.styling.Font font = sb.createFont(new Font("Arial", Font.PLAIN, 12));
TextSymbolizer tsArch = sb.createTextSymbolizer(Color.BLACK, font, "rodovia1");
tsArch.setHalo(sb.createHalo(Color.WHITE, 1, 2));
Rule archRule = sb.createRule(new Symbolizer[] {psArch, tsArch});
Style archStyle = sb.createStyle();
archStyle.addFeatureTypeStyle(sb.createFeatureTypeStyle(null, archRule));
// estilo da área interditado
PolygonSymbolizer restrictedSymb = sb.createPolygonSymbolizer(Color.LIGHT_GRAY, Color.BLACK, 0);
restrictedSymb.getFill().setOpacity(sb.literalExpression(0.7));
Style restrictedStyle = sb.createStyle(restrictedSymb);
// Construindo o mapa
MapContext map = new DefaultMapContext();
map.addLayer(estados, streamsStyle); //streamsStyle
map.addLayer(contorno, restrictedStyle); //restrictedStyle
map.addLayer(regioes, restrictedStyle); //bugsStyle
map.addLayer(rodovias, roadsStyle); //roadsStyle
StyledMapPane mapPane = new StyledMapPane();
mapPane.setMapContext(map);
mapPane.getRenderer().addLayer(new RenderedMapScale());
JFrame frame = new JFrame();
frame.setTitle("Prestação de serviços nas rodovias brasileiras");
frame.setContentPane(mapPane.createScrollPane());
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frame.setSize(640, 480);
frame.show();
}
}

Em seguida executaremos a classe para visualização das bases espaciais em uma janela, com seus respectivos estilos de cor, tamanho, etc.

Clicando com o botão direito em cima da classe e selecionando Run File teremos esta aparência como está na figura abaixo.

Nota: este exemplo não é a aplicação em si mais sim um exemplo de como abrir as bases georeferenciadas em uma forma limpa e compreensível.


Figura 10. Executando um exemplo simples de aplicação Gis implementado em java utilizando a API Geotools2.2RC0 e arquivos shapefiles baixados gratuitamente da internet.

Conclusão.

No desenvolvimento de SIG para a web, observando a grande necessidade da rapidez, capacidade de armazenamento e interatividade com o usuário final, esta proposta foi feita como uma forma ideal para quem quer desenvolver um site SIG dentro dos padrões OpenGis utilizando ferramentas gratuitas, desenvolvendo assim com estas ferramentas, softwares com preços mais acessíveis para o mercado, confiança em um padrão sólido de arquitetura, viabilidade sem compromisso de custo com ferramentas proprietárias e a instabilidade de ferramentas que são desenvolvidas por consórcios de profissionais da área. Também obtendo resultados mais satisfatórios com estas ferramentas por serem desenvolvidas em Java ganhando uma maior portabilidade no que se diz respeito a Sistemas Operacionais (SO) devido a sua Java Virtual Machine (JVM) e confiabilidade.

Grupo de estudos GeoJava (Brasil).

É bom também comentar a criação do grupo de estudos GEOJAVA, http://br.groups.yahoo.com/group/geojava, a necessidade da criação desse fórum deu-se pelo fato das tecnologias para geoprocessamento especificadas no projeto serem novas no mercado e seu material em português ser escasso, então foi criado este grupo de estudos. O grupo GEOJAVA foi criado no yahoo grupos e tem no presente momento 50 usuários profissionais na área de geoprocessamento.

Referências Bibliográficas.

Nacionales, Pericles S. MAPSERVER 4.6 Tutorial. Updated 2005, 2006. http://hypnos.cbs.umn.edu/tutorial/

Armstrong, Eric
Ball, Jennifer
Bodoff, Stephanie
Carson, Debbie Bode
Evans, Ian
Green, Dale
Haase, Kim e
Jendrock, Eric

J2EE ™ 1.4 Tutorial. December 5, 2005. http://java.sun.com/j2ee/1.4/docs/tutorial/doc/

Kurniawan, Budi Java para a web com Servlets, JSP e EJB. Rio de Janeiro: Editora Ciência Moderna Ltda., 2002.

Eastman, J. Ronald IDRISI32 Relese 2 - Guide to GIS and image processing. Volume 1, 2001.

Uchoa, Helton Nogueira e Ferreira, Paulo Roberto Geoprocessamento com Software Livre. Versão 1.0, 26/10/2004. www.geolivre.org.br

Ferreira, Antonio Miguel Caetano, Dicionário do "INTERNETÊS", Maio 1995 / Notas Técnicas - CBPF.

Patzer, Andrew JSP Examples and best practices, 2002.

Goodman, Danny JavaScript bible, Gold Edition.

Uchoa, Helton Nogueira
Coutinho, Renata Juliana Cristal
Ferreira, Paulo Roberto
Filho, Luiz Carlos Teixeira Coelho
Brito, Jorge Luís Nunes e Silva

Análise do módulo PostGIS para armazenamento e tratamento de dados geográficos com alta performance e baixo custo. www.opengeo.com.br

Paredes, Evaristo Atencio, Sistema de informação geográfica, 1994.

Site Oficial do PostgreSQL, http://www.postgresql.org

Site Oficial do PostGIS, http://www.postgis.org

Site Oficial do UDig, http://udig.refractions.net/confluence/display/UDIG/Home

Site Oficial do GeoTools, http://geotools.codehaus.org/

Site Oficial do GeoServer, http://docs.codehaus.org/display/GEOS/Home

Site Oficial do PostgreSQL, http://www.postgresql.org/

Site Oficial do pgAdminIII, http://www.pgadmin.org/

3 comments:

Anonymous said...

You could easily be making money online in the underground world of [URL=http://www.www.blackhatmoneymaker.com]blackhat videos[/URL], You are far from alone if you have no clue about blackhat marketing. Blackhat marketing uses not-so-popular or misunderstood methods to build an income online.

Anonymous said...

top [url=http://www.xgambling.org/]casino[/url] hinder the latest [url=http://www.realcazinoz.com/]casino[/url] free no set aside reward at the best [url=http://www.baywatchcasino.com/]casino online
[/url].

Anonymous said...

[url=http://www.casino-online.gd]Online casinos[/url], also known as arranged casinos or Internet casinos, are online versions of acknowledged ("crony and mortar") casinos. Online casinos ok gamblers to dissemble and wager on casino games with the return the Internet.
Online casinos typically mechanism odds and payback percentages that are comparable to land-based casinos. Some online casinos command on higher payback percentages with a on preference for automobile games, and some promulgate payout behalf audits on their websites. Assuming that the online casino is using an aptly programmed indefinitely slew generator, offer games like blackjack obscene an established false edge. The payout fragment precise for these games are established during the rules of the game.
Uncountable online casinos sublease or in into the country of their software from companies like Microgaming, Realtime Gaming, Playtech, Supranational Prank Technology and CryptoLogic Inc.