O documento discute a aplicação de geoprocessamento para um estudo de caso, incluindo tecnologias como VRaptor, Spring, JPA, Hibernate e OpenLayers. Ele também fornece detalhes sobre o Centro Internacional de Hidroinformática e seu trabalho com a UNESCO.
VRaptor 3, JPA, Hibernate, Geotools e OpenLayers, ajudando Pedro Alvares Cabral com geoprocessamento
1. Ajudando Pedro Alvares Cabral com
geoprocessamento.
Carlos Alberto Junior Spohr Poletto
http://carlos4web.wordpress.com
@carlosjrcabello
https://github.com/carlosjrcabello
2. Centro Internacional de Hidroinformática;
Aplicações de informações geográficas;
Tecnologias;
Aplicação de estudo de caso;
3. Apresentação sobre o trabalho do CIH;
Entendimento sobre aplicações voltadas a
geoprocessamento;
Função e papel das tecnologias utilizadas;
Aplicação para estudo de caso;
Clareamento das possibilidades com os recursos da
WEB atual;
4. Centro UNESCO - Categoria 2 (*)
(*) Rede mundial de 20 Centros Especializados,
credenciados pela UNESCO/PHI para trabalhar temas
relacionados com a gestão das águas.
CIH - Promover a HIDROINFORMÁTICA (*) aplicada em
gestão das águas.
(*) Ramo da Ciência da Computação dedicado a
gestão das águas.
5. • Dar Suporte aos Programas UNESCO-PHI: HELP,
FRIEND, ISI, ISARM, GRAPHIC e ao PHI-LAC,
COBRAPHI e CONAPHI – PY;
• Divulgar das boas práticas dos Governos Brasil e
Paraguai e da ITAIPU;
• Incentivar as relações e negócios de
desenvolvimento e inovação tecnológica no âmbito
do Parque Tecnológico Itaipu;
• Desenvolver ferramentas em Software Livre de
Código Aberto para garantir o acesso universal à
Hidroinformática e intensificar a difusão dessas
ferramentas.
6.
7. Acrônimo de GIS - Geographic Information System;
Manipulação e visualização de informações
geográficas como polígonos, linhas , pontos, etc.;
Análise e projeção destas informações;
Consultas espaciais ao invés do modelo relacional
tradicional;
Padrões definidos pela Open Geospatial Consortium,
exemplos: OGC, WMS, WFS, WCS, WPS, KML, KMZ,
OWC, etc.;
8. Mapeamento de casos de dengue;
Mapeamento de crimes ocorridos (WikiCrimes);
Viabilidade de implantação de biodigestores
(SigBiogás - CIH);
Sistemas de rotas e tráfego;
Georreferenciamento de áreas produtivas (glebas);
9. Já desenvolveu e/ou desenvolve para WEB ?
Java EE ?
Servidores de aplicação, Inversão de Controle e
injeção de dependências ?
Conhece e/ou já utilizou PostgreSQL e/ou Postgis?
Conhecimentos em dados espaciais, como
geometrias, servidores de mapas, etc.?
11. OpenLayers jQuery AJAX
XHTML
VRaptor 3.4
Spring framework 3.0 JPA 2
Outras APIs Geotools Hibernate Hibernate Spatial
Banco de dados
(relacional + geográfico)
12. Framework WEB focado em produtividade;
Encapsula a complexidade da API javax.servlet;
Pouca ou nenhuma dependência entre os seus
componentes nativos (core);
Boas práticas adotadas:
Convenção sobre configuração;
Injeção de dependências;
Forte orientação a objetos;
Framework Brasileiro, mantido pela Caelum e a
comunidade;
13. Separação de lógicas em forma de componentes
reutilizáveis;
Redirecionamentos e encaminhamentos de maneira
programática;
Mapeamento de URL’s amigáveis através de um
modelo REST;
Suporte aos contêiners Spring, Pico e Guice;
Serializadores e deserializadores para JSON, XML,
etc.;
15. Desenvolvimento de uma aplicação de
estudo de caso para consolidar o
entendimento sobre aplicações de
geoprocessamento.
16. Definição da regra de Dependências;
negócio; Configurações do
Diagramação da regra projeto;
de negócio (DER); Classes beans/pojo;
Estrutura do template,
CSS e bibliotecas
Javascript;
Codificação e mão na
massa
17. Cadastro de propriedades;
Cadastro de glebas;
Consulta das propriedades através de uma área
desenhada no mapa;
Upload de um shapefile;
18. CRUD de propriedades, a qual contém os campos:
Id – Long;
Nome da propriedade – String;
Ponto de localização – Geometry (Point);
Glebas – List das glebas da propriedade;
CRUD de glebas, a qual contém os campos:
Id – Long;
Descrição – String;
Propriedade – Referência da propriedade pertencente;
Área da gleba – Polígono (Geometry - Polygon);
19.
20. Persistência e acesso a dados:
JPA 2 (hibernate-jpa-2.0-api-1.0.0.Final.jar);
Hibernate (hibernate3.jar);
Hibernate Spatial (hibernate-spatial-1.1.jar e hibernate-spatial-
postgis-1.1.jar);
hibernate-validator-4.0.2.GA.jar
Geo
Geotools geotools 2.7.1 (http://goo.gl/ffaKf);
Contêiner:
Spring framework (aop, asm, aspects, beans, context, core,
expression, web) na versão 3.0;
VRaptor 3.4
21. Uma classe que será acessível no contexto WEB
deve estar anotada com @Resource;
Somente métodos públicos são acessíveis;
A partir do VRaptor 3.4 é possível injetar
dependências via parâmetros diretamente;
Carregamento automático por meio da anotação
@Load (Caelum – Lucas) ou @LoadObject (Carlos
A. Junior);
Se usar um redirectTo ou forwardTo não é
necessário um arquivo .jsp de saída;
23. Cada método público, pode ser anotado com:
@Get : acessível somente por requisições GET;
@Post : somente acessível por requisições POST;
@Path: acessível por GET e/ou POST (duplica a URL);
@Delete, @Put: devem utilizar o parâmetro _method em
uma requisição POST;
É possível colocar um caminho relativo na própria
classe com @Path;
24. Inclusão CSS, scripts Definição do idioma da
comuns, etc. página <fmt:locale>
Template HEADER – Código de abertura da página.
<cih:template path=“template” part=“header”/>
Trecho de código HTML/JSTL/JS da lógica do controlador.
<cih:template path=“template” part=“footer”/>
Template FOOTER – Código de fechamento da página.
Scripts comuns, Lógicas JS/JSTL de
importação, etc. fim de página.
25. Usar de preferência somente o JPA para operações
CRUD;
Em consultas usar a Criteria API do seu
framework de persistência, ou então ser cabra-macho
e usar a CriteriaBuilder do JPA para manter a
aplicação independente da camada de persistência;
Deixar o controle de transações para o próprio
VRaptor , sim, isso é possível, mas como ?
26. <context-param>
<param-name>br.com.caelum.vraptor.packages</param-name>
<param-value>br.com.caelum.vraptor.util.jpa</param-value>
</context-param>
Ou na versão programática registrando um componente.
@Override
protected void registerCustomComponents(ComponentRegistry registry) {
registry.register(EntityManagerCreator.class, EntityManagerCreator.class);
registry.register(EntityManagerFactoryCreator.class, EntityManagerFactoryCreator.class);
registry.register(JPATransactionInterceptor.class, JPATransactionInterceptor.class);
// ou uma factory minha, que esteja anotada com @Component.
registry.register(MinhaFactory.class, MinhaFactory.class);
}
27. Necessita da commons-fileupload;
Formulários HTML com o enctype definidos;
Abstração da lógica de upload através da interface
UploadedFile;
Configuração da leitura do shapefile com o
componente ShapefileReader;
29. Comunidade gvSIG;
GUJ;
Grupo de usuários VRaptor (Google groups);
Spring framework;
JPA 2 com outros frameworks de persistência;
OpenLayers;
jQuery e plugins;
HTML 5;
Servidores de mapas;
30. Cícero J. Bley Jr.
Coordenador do
Centro Internacional de Hidroinformática - ME
cbley@itaipu.gov.br
Ana Carolina Gossen
Coordenadora do
Centro Internacional de Hidroinformática - MD
gossen@itaipu.gov.py
31. Carlos Alberto Junior Spohr Poletto
Analista de Sistemas
carlosjrcabello@gmail.com
carlos@pti.org.br
@carlosjrcabello
carlos4web.wordpress.com