Fundamentos de QGIS y Gestión de Formatos Geoespaciales

QGIS, conocido anteriormente como Quantum GIS, es una herramienta de escritorio de código abierto para Sistemas de Información Geográfica (SIG). Está desarrollado en C++ utilizando el framework Qt, lo que le permite ejecutarse de manera fluida en plataformas Windows, macOS, Linux y Unix.

Tipos de Datos Geográficos

El sistema gestiona principalmente dos categorías de datos:

  • Datos Ráster: Representaciones basadas en mallas de píxeles o celdas. Se utilizan comúnmente para imágenes satelitales, modelos digitales de elevación y mapas de distribución térmica. Los formatos habituales incluyen GeoTIFF, PNG y JPEG.
  • Datos Vectoriales: Estructuras basadas en coordenadas matemáticas que definen elementos geométricos. Se dividen en tres tipos de entidades:
    • Puntos: Ubicaciones específicas como ciudades o estaciones de servicio.
    • Líneas (Cadenas de líneas): Elementos lineales como redes viales o cauces de ríos.
    • Polígonos: Áreas cerradas que representan fronteras políticas, lagos o parcelas de tierra.

Persistencia en Bases de Datos Espaciales

Para el almacenamiento escalable, QGIS se integra con diversas bases de datos espaciales. Aunque es compatible con Oracle Spatial, MySQL y SQL Server, su integración nativa más robusta es con PostgreSQL mediante la extensión PostGIS.

Exportación y Formatos de Intercambio

QGIS permite la exportación de capas a formatos legibles por humanos y sistemas externos, como CSV y GeoJSON. Una de las representaciones más utilizadas para la interoperabilidad es el WKT (Well-Known Text), un estándar de marcado de texto para representar objetos geométricos vectoriales.

Ejemplo de Estructura GeoJSON


{
  "type": "Polygon",
  "coordinates": [
    [
      [67.406616, 31.219848],
      [66.968536, 31.312582],
      [66.386261, 30.934035],
      [67.406616, 31.219848]
    ]
  ]
}

Ejemplo de Estructura WKT Correspondiente


POLYGON ((67.406616 31.219848, 66.968536 31.312582, 66.386261 30.934035, 67.406616 31.219848))

Implementación de Conversión en Java con GeoTools

Para automatizar la transformación entre GeoJSON y WKT en aplicaciones backend, se utiliza la librería GeoTools. A continuación se prseentan las dependencias de Maven necesarias y la lógica de implementación.


<!-- Dependencias principales de GeoTools -->
<dependency>
    <groupId>org.geotools</groupId>
    <artifactId>gt-geojson</artifactId>
    <version>24.0</version>
</dependency>
<dependency>
    <groupId>org.locationtech.jts</groupId>
    <artifactId>jts-core</artifactId>
    <version>1.18.1</version>
</dependency>

La siguiente clase utilitaria permite realizar las conversiones bidireccionales:


import org.geotools.geojson.geom.GeometryJSON;
import org.locationtech.jts.geom.Geometry;
import org.locationtech.jts.io.WKTReader;
import java.io.StringWriter;
import java.io.Reader;
import java.io.StringReader;

public class ConversorEspacial {

    /**
     * Transforma una cadena en formato WKT a una representación GeoJSON.
     */
    public static String deWktAGeoJson(String textoWkt) {
        try {
            WKTReader lector = new WKTReader();
            Geometry geometria = lector.read(textoWkt);
            
            StringWriter salidaCodificada = new StringWriter();
            GeometryJSON geoJsonEngine = new GeometryJSON(15);
            geoJsonEngine.write(geometria, salidaCodificada);
            
            return salidaCodificada.toString();
        } catch (Exception e) {
            return "Error en procesamiento WKT: " + e.getMessage();
        }
    }

    /**
     * Transforma un objeto JSON a formato de texto plano WKT.
     */
    public static String deGeoJsonAWkt(String rawJson) {
        try {
            GeometryJSON gJson = new GeometryJSON();
            Reader flujoLectura = new StringReader(rawJson);
            Geometry objetoGeometria = gJson.read(flujoLectura);
            
            return objetoGeometria.toText();
        } catch (Exception e) {
            return "Error al convertir GeoJSON a WKT";
        }
    }
}

En un entorno Spring Boot, se puede exponer esta funcionalidad mediante un controlador REST para procesar peticiones de transformación de datos geográficos dinámicamente.

Etiquetas: qgis geotools geojson wkt gis

Publicado el 7-22 04:58