Com estas ferramentas e com o auxílio do Hibernate Spatial, veremos como se torna muito mais simples a tarefa de desenvolver uma aplicação capaz de persistir e consultar dados baseados em coordenadas de um sistema geográfico, para posteriormente exibi-los, por exemplo, no Google Maps.
Por volta do ano 2008, aplicativos que fazem uso de dados de localização espacial utilizando recursos do Sistema de Posicionamento Global (GPS), combinados com tecnologias de transferência de dados (3G), começaram a surgir de forma tímida em dispositivos móveis, sendo o FourSquare uma das primeiras apps a alavancar o uso dessas tecnologias.
Hoje, apenas seis anos após o lançamento do iPhone 3G e do FourSquare, é praticamente incontável o número de aplicativos baseados no uso de posicionamento, tentando fazer com que este tipo de serviço revele-se um grande diferencial na experiência do usuário final.
Como as possibilidades de se oferecer informações baseadas em posicionamento são praticamente ilimitadas, os aplicativos que lidam com localização espacial tendem a se especializar com o objetivo de responder com eficiência um pequeno conjunto de perguntas, relacionadas a categorias de objetos georreferenciados bem definidas, que no geral podem ser resumidas a: “Dada uma posição P, quais são os objetos de determinada categoria de meu interesse mais próximos?”.
Estas categorias podem ser lojas, amigos, bares, enfim, qualquer coisa que esteja situada entre a superfície e a exosfera da Terra!
Outro benefício oferecido por tecnologias de localização é a sinergia, ou seja, a capacidade de se combinar com recursos já existentes de uma aplicação de forma a oferecer uma experiência superior ao usuário final.
A inclusão da informação de posicionamento pode melhorar desde os mais simples detalhes de sistemas, como “descobrir” o idioma a ser utilizado baseado no local em que o programa é executado, como vir a ser a funcionalidade central dos mesmos.
O sucesso de muitos aplicativos baseados em crowd sourcing, como o Waze, onde os usuários são os principais responsáveis por alimentar os dados do sistema, se deve à qualidade da harmonização dos dados de posicionamento geográfico com as outras fontes de informação.
Neste artigo vamos estudar os principais conceitos envolvidos para desenvolver aplicações com georreferenciamento em Java, iniciando pelos fundamentos de Geometria da Java Topology Suite, a qual permite realizar operações com pontos, linhas e polígonos em um plano cartesiano, passando por breves noções de cartografia do GeoTools, que dá a capacidade de trabalhar com informações de posicionamento reais sobre o globo terrestre, e finalmente veremos como é simples persistir e consultar estes tipos de dados a partir do Hibernate Spatial.
Java Topology Suite (JTS)
A API Java Topology Suite foi a primeira biblioteca escrita em Java para lidar com formas geométricas, estando disponível desde 2002. As classes contidas no JTS permitem a construção de objetos que representam Pontos, Linhas e Polígonos, e também proveem dezenas de métodos para lidar com operações de geometria, como intersecção e cálculo de distância.
O JTS define Geometria como uma coleção de Coordenadas, que por sua vez podem ser pensadas como pontos em um sistema de coordenadas cartesiano. A hierarquia das classes fundamentais do JTS é ilustrada no diagrama da Figura 1 e o significado de cada componente do mesmo está elencado logo a seguir:
· Geometry (Geometria): Classe que define uma geometria como sendo uma sequência de coordenadas e operações. Esta classe declara um atributo chamado SRID (Spatial Reference System Id), que não é utilizado pela API do JTS e sim por extensões espaciais de bancos de dados, como veremos mais à frente;
· Point (Ponto): uma única coordenada no espaço;
· LineString (Linha): coleção de duas ou mais coordenadas. Linhas definem o conceito de comprimento, que pode ser calculado pela soma da distância de cada par de segmentos que a compõe. Por exemplo, se a linha for formada por três coordenadas (A, B e C) o comprimento da linha é a distância do segmento (A, B) somada à distância do segmento (B, C);
· LinearRin ...
Desbloqueie toda a DevMedia
-
+2000 artigos e vídeos
-
+40 trilhas sobre Front-end, Back-end, IA e muito mais
-
+5000 exercícios práticos
-
Mentorias ao vivo individuais