Geolocalização e mapas em Java: visão geral de ferramentas e bibliotecas
Trabalhar com dados geográficos e exibir mapas é uma tarefa demandada em aplicações Java modernas: desde sistemas logísticos até rastreadores de atividade e serviços de geoinformação. Neste artigo, vamos explorar as principais bibliotecas e ferramentas para Java que permitem processar dados de geolocalização, trabalhar com coordenadas e visualizar mapas. Você aprenderá como conectar essas bibliotecas e verá exemplos de código para tarefas típicas.
1. GeoTools — poderosa biblioteca geoespacial
GeoTools é uma biblioteca Java de código aberto (LGPL) que fornece ferramentas para trabalhar com dados geoespaciais. Ela suporta os padrões do Open Geospatial Consortium (OGC), leitura e escrita de vários formatos (Shapefile, GeoJSON, GML, PostGIS) e realiza operações espaciais complexas: interseção, bufferização, transformação de coordenadas.
Principais recursos:
- Suporte a mais de 30 formatos de dados geoespaciais.
- Trabalho com sistemas de coordenadas (EPSG) e transformação de projeções.
- Filtragem e consultas a dados espaciais (CQL, ECQL).
- Visualização de mapas via Swing (JMapPane).
Exemplo: leitura de Shapefile e exibição da contagem de feições
import org.geotools.data.FileDataStore;import org.geotools.data.FileDataStoreFinder;import org.geotools.data.simple.SimpleFeatureSource;import org.geotools.map.FeatureLayer;import org.geotools.map.MapContent;import org.geotools.styling.SLD;import org.geotools.styling.Style;import org.geotools.swing.JMapFrame;import java.io.File;
public class GeoToolsExample { public static void main(String[] args) throws Exception { File file = new File("path/to/your/file.shp"); FileDataStore store = FileDataStoreFinder.getDataStore(file); SimpleFeatureSource featureSource = store.getFeatureSource();
System.out.println("Quantidade de feições: " + featureSource.getCount());
// Exibindo o mapa MapContent map = new MapContent(); map.setTitle("Meu mapa"); Style style = SLD.createSimpleStyle(featureSource.getSchema()); FeatureLayer layer = new FeatureLayer(featureSource, style); map.addLayer(layer); JMapFrame.showMap(map); }}Para trabalhar com GeoTools, adicione a dependência Maven:
<dependency> <groupId>org.geotools</groupId> <artifactId>gt-main</artifactId> <version>30.2</version></dependency>2. JMapViewer — componente leve para OpenStreetMap
JMapViewer é uma biblioteca Java simples para incorporar mapas do OpenStreetMap em aplicações Swing. Ela não requer conexão com APIs externas (exceto para carregar tiles) e é ideal para prototipagem rápida.
Características:
- Suporte a camadas (marcadores, linhas, polígonos).
- Carregamento automático de tiles OSM.
- Tratamento de cliques e movimentos do mouse.
Exemplo: exibindo um mapa com um marcador
import org.openstreetmap.gui.jmapviewer.JMapViewer;import org.openstreetmap.gui.jmapviewer.MapMarkerDot;import org.openstreetmap.gui.jmapviewer.Coordinate;import javax.swing.*;import java.awt.*;
public class JMapViewerExample { public static void main(String[] args) { JFrame frame = new JFrame("Mapa OSM"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(800, 600);
JMapViewer map = new JMapViewer(); map.setDisplayPosition(new Coordinate(55.7558, 37.6173), 10); // Moscou, zoom 10
// Adicionando um marcador map.addMapMarker(new MapMarkerDot(55.7558, 37.6173));
frame.add(map, BorderLayout.CENTER); frame.setVisible(true); Também na biblioteca
Framework CLI para C++: cppcli — criação de aplicações de console
Trabalho com S3 e armazenamentos em nuvem em Java: AWS SDK e MinIO
Crypto-js para JavaScript (Node.js): guia completo com exemplos