Geofield
Proporciona un tipo de campo de geolocalización para almacenar y gestionar datos geográficos, incluyendo puntos, líneas, polígonos y geometrías multitipo.
geofield
Install
composer require 'drupal/geofield:8.x-1.66'
Overview
Geofield es un módulo completo de campos geoespaciales para Drupal que permite el almacenamiento y gestión de datos geográficos. Soporta todos los tipos de geometría definidos por el Open Geospatial Consortium (OGC), incluyendo Points, MultiPoints, LineStrings, MultiLineStrings, Polygons y MultiPolygons.
El módulo almacena datos geográficos en formato Well Known Text (WKT) junto con metadatos calculados que incluyen coordenadas del centroide, valores del bounding box y geohash para consultas espaciales eficientes. Proporciona múltiples widgets de entrada para la introducción de datos (texto WKT, Latitud/Longitud, Grados-Minutos-Segundos y Bounding Box) y múltiples formateadores de salida para la visualización.
Geofield incluye una robusta integración con Views con capacidades de filtrado basado en proximidad, ordenación y visualización de campos utilizando la fórmula de Haversine para cálculos precisos de distancia. El módulo soporta múltiples backends de base de datos, incluyendo el almacenamiento WKT predeterminado y PostgreSQL con PostGIS para funcionalidad espacial mejorada.
Como módulo fundamental, Geofield se integra perfectamente con bibliotecas de mapas a través de módulos complementarios como Geofield Map y Leaflet, servicios de geocodificación a través del módulo Geocoder, y funcionalidad de búsqueda a través de Search API Location.
Features
- Almacena todos los tipos de geometría OGC: Point, MultiPoint, LineString, MultiLineString, Polygon, MultiPolygon
- Múltiples widgets de entrada: entrada de texto WKT, Latitud/Longitud con geolocalización HTML5, Grados-Minutos-Segundos (DMS) y Bounding Box
- Múltiples formateadores de salida: salida sin procesar en varios formatos (WKT, GeoJSON, KML, GPX, Google Geocode) y visualización Lat/Lon con formatos decimal, DMS y DM
- Integración completa con Views incluyendo manejadores de filtro, ordenación, campo y argumento de proximidad
- Filtro y argumento de límite rectangular para consultas geográficas basadas en Views
- Implementación de la fórmula de Haversine para cálculos precisos de distancia en varias unidades (kilómetros, metros, millas, yardas, pies, millas náuticas)
- Múltiples backends de almacenamiento: WKT predeterminado y geometría PostGIS para bases de datos PostgreSQL
- Sistema extensible de plugins de fuente de proximidad para definir puntos de origen (entrada manual, geolocalización del navegador del cliente, filtros de contexto, filtros de proximidad existentes)
- Soporte de migración desde Drupal 7 con plugins de proceso dedicados
- Integración con el módulo Feeds para importación masiva de datos geográficos
- Integración con el módulo Diff para comparar revisiones de campos geográficos
- Cálculo automático de valores de centroide, bounding box y geohash
- Integración con la API de Geolocalización HTML5 para detección automática de ubicación
Use Cases
Almacenar y mostrar ubicaciones de negocios
Añade un Geofield a un tipo de contenido 'Ubicación' para almacenar direcciones de negocios como puntos geográficos. Usa el widget de Latitud/Longitud con geolocalización HTML5 para entrada de datos fácil, y combínalo con los módulos Geofield Map o Leaflet para mostrar ubicaciones en un mapa interactivo.
Construir un localizador de tiendas
Crea una página de Views con un Filtro de Proximidad Geofield expuesto que permita a los visitantes introducir su ubicación o usar geolocalización del navegador. Ordena los resultados por distancia y muestra la proximidad calculada a cada tienda. Combínalo con el filtro de límite rectangular para búsquedas basadas en mapa.
Rastrear rutas de entrega
Usa Geofield para almacenar geometrías LineString que representen rutas de entrega. El módulo almacena la ruta completa como un linestring WKT mientras calcula el centroide y bounding box para consultas espaciales eficientes.
Definir límites geográficos
Almacena geometrías Polygon para definir territorios de ventas, áreas de servicio o límites administrativos. Usa el widget de Bounding Box para áreas rectangulares rápidas o el widget WKT para formas de polígono complejas.
Migrar datos de ubicación
Usa el plugin de proceso migrate geofield_latlon para combinar campos fuente separados de latitud y longitud en valores Geofield durante migraciones de Drupal.
Importación masiva de ubicaciones
Usa la integración con el módulo Feeds para importar datos de ubicación desde archivos CSV que contengan columnas lat/lon o cadenas de geometría WKT/GeoJSON.
Tips
- Usa punto (.) como separador decimal para coordenadas, no coma (,), para asegurar cálculos de proximidad precisos
- El widget de Latitud/Longitud solo soporta geometrías Point; usa el widget WKT para líneas y polígonos
- Habilita la validación de geometría en el widget WKT cuando aceptes entrada de usuario para prevenir datos inválidos
- Elige el backend PostGIS para bases de datos PostgreSQL para aprovechar funciones e índices espaciales nativos
- Los cálculos de proximidad usan la fórmula de Haversine que es precisa para la mayoría de casos de uso pero asume una Tierra esférica
- Los argumentos de proximidad de Views soportan sufijos de unidad: km (kilómetros), m (metros), mi (millas), yd (yardas), ft (pies), nmi (millas náuticas)
- La columna geohash permite indexación espacial eficiente y búsquedas cercanas sin cálculos complejos
- Para conjuntos de datos grandes, añade índices de base de datos en las columnas lat, lon y geohash para mejor rendimiento de consultas
Technical Details
Hooks 1
hook_field_views_data
Implementa datos de Views para campos Geofield, añadiendo manejadores de proximidad y límites.