Geolocalización y mapas en Java: revisión de herramientas y bibliotecas
Trabajar con datos geográficos y visualizar mapas es una tarea demandada en las aplicaciones Java modernas: desde sistemas logísticos hasta rastreadores de actividad y servicios de información geográfica. En este artículo, revisaremos las bibliotecas y herramientas clave para Java que permiten procesar datos de geolocalización, trabajar con coordenadas y visualizar mapas. Aprenderá cómo conectar estas bibliotecas y verá ejemplos de código para tareas típicas.
1. GeoTools — potente biblioteca geoespacial
GeoTools es una biblioteca Java de código abierto (LGPL) que proporciona herramientas para trabajar con datos geoespaciales. Es compatible con los estándares del Open Geospatial Consortium (OGC), lee y escribe múltiples formatos (Shapefile, GeoJSON, GML, PostGIS) y realiza operaciones espaciales complejas: intersección, buffer, transformación de coordenadas.
Características principales:
- Soporte para más de 30 formatos de datos geoespaciales.
- Trabajo con sistemas de coordenadas (EPSG) y transformación de proyecciones.
- Filtrado y consultas a datos espaciales (CQL, ECQL).
- Visualización de mapas a través de Swing (JMapPane).
Ejemplo: leer un Shapefile y mostrar el número de elementos
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("Número de elementos: " + featureSource.getCount());
// Visualización del mapa MapContent map = new MapContent(); map.setTitle("Mi mapa"); Style style = SLD.createSimpleStyle(featureSource.getSchema()); FeatureLayer layer = new FeatureLayer(featureSource, style); map.addLayer(layer); JMapFrame.showMap(map); }}Para trabajar con GeoTools, agregue la dependencia Maven:
<dependency> <groupId>org.geotools</groupId> <artifactId>gt-main</artifactId> <version>30.2</version></dependency>2. JMapViewer — componente ligero para OpenStreetMap
JMapViewer es una biblioteca Java simple para integrar mapas de OpenStreetMap en aplicaciones Swing. No requiere conexión a APIs externas (excepto para la carga de teselas) y es ideal para prototipado rápido.
Características:
- Soporte para capas (marcadores, líneas, polígonos).
- Carga automática de teselas OSM.
- Manejo de clics y movimientos del ratón.
Ejemplo: mostrar un mapa con un 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); // Moscú, zoom 10
// Añadir marcador map.addMapMarker(new MapMarkerDot(55.7558, 37.6173));
frame.add(map, BorderLayout.CENTER); frame.setVisible(true);