Você está na página 1de 12

Conhecendo o GeoTools

Publicado por Tutoriais Admin em 19/08/2010 - 14.803 visualizações

 comentários: 1
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 (G eographic
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, perquisa 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 abilitando 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 língua.
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 shapafile 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 > Porgramas > 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.dllmlib_jai_mmx.dllmlib_jai_util
Adicionando arquivos .jar do JAI dentro da aplicação.
jai_codec.jarjai_core.jarmlibwrapper_jai.jar Adicionando as bibliotecas do GEOTools2.2-RC0
dentro do projeto. gt2-main.jar gt2-postgis.jarJTS-1.4.jar geoapi-1.1.0alpha.jar vecmath-
1.2.1.jarrecente postgresql jdbcgeoapi-2.0.jargeoapi-legacy-0.2.jarpostgis-
driver.jarunits.jarmigrate.jaropengis-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 CristalFerreira,
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/

Você também pode gostar