Utilizando GeoTools para Manipulação de Dados Geográficos

Post on 25-Jan-2015

516 views 3 download

description

A partir da necessidade de controle de dados georreferenciados construir-se-á um aplicativo para atender as funcionalidades de um sistema SIG para Java desktop, ou seja, um aplicativo para leitura e manipulação de dados geográficos. Será possível o acesso a shapefiles ou a bancos de dados, pois o aplicativo oferece essas duas funcionalidades. O aplicativo desenvolvido disponibiliza um conjunto de ferramentas que auxilia na manipulação dos mapas. De acordo com os objetivos do atual projeto, conclui-se que o aplicativo será de grande utilidade na manipulação de dados geográficos.

Transcript of Utilizando GeoTools para Manipulação de Dados Geográficos

Uma aplicação utilizando Uma aplicação utilizando Geotools para manipulação Geotools para manipulação

de dados geográficosde dados geográficos

Gustavo Matos de Mello

Paulo Collares Moreira Neto

Sumário

O que é o Geotools? Shapefiles PostGIS JAI Exemplo de implementação

Objetivos

Desenvolver em software desktop GIS Aplicar os conhecimentos adquiridos em programação Mesclar esses conhecimentos em um assunto atual

O que é o Geotools?

Biblioteca Java Manipulação de dados para um SIG James Macgill Código livre Padrões internacionais (OGC)

Shapefiles

Formato de armazenamento digital para dados georreferenciados

ESRI em 1998 Pontos, linhas, polígonos abertos e polígonos fechados

Shapefiles

PostGIS

Suporte para processamento e armazenamento de dados geográficos ao banco PostgreSQL

Geração de scripts SQL para cargade dados presentes nos Shapefiles

C:\PostgresPlus\8.3\bin\shp2pgsql -s [SRID] [caminho do shapefile] [nome da tabela a ser criada] > [nome do arquivo SQL]

Geração de scripts SQL para cargade dados presentes nos Shapefiles

JAI (Java Advanced Imaging)

Ferramenta para processamento de imagens

Exemplo de implementação

Exemplo de implementaçãoJMapFrame

JMapFrame Janela Swing para exibir um mapa Disponível a partir do Geotools 2.6

JMapFrame mapFrame = new JMapFrame(MapContext map);mapFrame.setTitle(“Olá Mundo”);

mapFrame.enableTool(JMapFrame.Tool.ZOOM, JMapFrame.Tool.PAN,JMapFrame.Tool.RESET);

mapFrame.enableLayerTable(true);mapFrame.enableStatusBar(true);

MapContex Interface responsável por armazenar informações sobre a

exibição de um mapa Baseado nas especificações do OGC (Open Geospatial Consortium)

Exemplo de implementaçãoMapContex

MapContext map = new DefaultMapContext();

map.addLayer(FeatureSource featureSource, Style style);ou

map.addLayer(FeatureSource featureSource, null);

Exemplo de implementaçãoFeatureSource

FeatureSource Referencia um shapefile ou uma tabela do banco de dados Fontes distintas são manipuladas de forma idêntica

FeatureSource featureSource = null;

Importando de um shapefile

Exemplo de implementaçãoImportação de dados

File url= new File(“C:\shapefiles\br_uf\BR_UF.shp”);FileDataStore store=FileDataStoreFinder.getDataStore(url);

featureSource = store.getFeatureSource();map.addLayer(featureSource, null);

Importando de um banco de dados

Exemplo de implementaçãoImportação de dados

Map params = new HashMap();

params.put("dbtype", "PostGIS");params.put("host","localhost" );params.put("port", new Integer(5432));params.put("database", "mapas");params.put("user", "root");params.put("passwd", "12345678");

DataStore store = DataStoreFinder.getDataStore(params);featureSource = store.getFeatureSource(“mundo”);

map.addLayer(featureSource, null);

Importando de um banco de dados

Exemplo de implementaçãoImportação de dados

Styles Indicam como um dado geográfico deve ser mostrado Cores para as linhas, fundos e textos do mapa...

Consultas do CQL Filtra os dados para alterar os estilos Consultas simples

Exemplo de implementaçãoEstilos

CQL.toFilter("SIGLA Like 'SE'");CQL.toFilter("SIGLA Like 'NE'");CQL.toFilter("SIGLA Like 'CO'");CQL.toFilter("SIGLA Like 'NO'");CQL.toFilter("SIGLA Like 'SU'");

Consulta do CQL

Exemplo de implementaçãoEstilos

StyleBuilder sb = new StyleBuilder();Style style = sb.createStyle();

PolygonSymbolizer symbolizer = sb.createPolygonSymbolizer(Color.LIGHT_GREY, Color.BLACK, 1);

Rule rule = sb.createRule(new Symbolizer[]{symbolizer});

Filter filtro = CQL.toFilter(("SIGLA Like 'SE'");rule.setFilter(filtro);

FeatureTypeStyle fts = sb.createFeatureTypeStyle(null, rule);style.addFeatureTypeStyle(fts);

Conclusão

Aplicativo desenvolvido atinge os objetivos para o qual foi projetado

Os conhecimentos adquiridos serão de grande valor em nossa carreira profissional

Projetos futuros

Implantação de funcionalidades mais sofisticadas na área de geoprocessamento Cadastramento de informações Manter dados de uma determinada localidade Adicionar camadas manualmente

Pontos, linhas, áreas, textos e imagens

Cruzamentos de dados para estatísticas futuras Mapas on-line, como o Google Maps Versão para Web