Fundamentos de PostGIS
PostGIS es una extensión de Postgres que enseña a la base de datos cómo almacenar, comparar y buscar formas en el espacio, no solo filas de valores escalares.
Busca en todas las páginas de la documentación
PostGIS es una extensión de Postgres que enseña a la base de datos cómo almacenar, comparar y buscar formas en el espacio, no solo filas de valores escalares.
Esta página construye el modelo conceptual detrás de eso: qué es realmente un sistema de referencia de coordenadas, por qué geometry y geography existen como tipos separados y cómo el indexado espacial hace que "qué está cerca" sea una pregunta rápida en lugar de un escaneo completo de la tabla.
Un par de números como (-73.99, 40.75) no es una ubicación por sí solo; solo es una ubicación una vez que se sabe en qué sistema de coordenadas se miden esos números.
Ese sistema de coordenadas se llama sistema de referencia de coordenadas, o CRS, y define el origen, las unidades y la forma del modelo de la tierra contra el cual se grafican los números.
PostGIS identifica cada CRS con un SRID numérico, y el más común para GPS y mapas web es el SRID 4326, que representa latitud y longitud crudas en el modelo WGS84 de la tierra.
Cada valor de geometry o geography en PostGIS lleva su SRID consigo, por lo que dos formas solo pueden compararse de manera significativa una vez que la base de datos sabe que comparten, o pueden convertirse a, el mismo sistema de referencia.
PostGIS representa datos espaciales con dos tipos conceptualmente diferentes, y la diferencia no es cosmética.
geometry trata la tierra como un plano y realiza sus cálculos con geometría plana ordinaria, lo que es rápido y preciso siempre que el área cubierta sea lo suficientemente pequeña como para que la planitud sea una aproximación razonable.
geography trata la tierra como una esfera o esferoide y realiza sus cálculos con cálculos geodésicos, lo que se mantiene preciso a largas distancias a costa de más cómputo.
Una analogía útil es un mapa de papel frente a un globo terráqueo: un mapa de papel (geometry) es simple y rápido de medir, pero se distorsiona a medida que el área se agranda, mientras que un globo terráqueo (geography) se mantiene preciso en todas partes pero requiere más trabajo para calcular.
Elegir entre ellos es realmente una elección sobre cuánta curvatura de la tierra deben respetar los datos, no una elección sobre qué tipo es "mejor".
La mecánica profunda de esa elección, incluido qué SRID elegir para cada caso de uso, pertenece a la comparación de geometry vs geography en otra parte de esta sección, y esta página solo necesita la división conceptual para construir sobre ella.
PostGIS no existe como una base de datos espacial separada conectada a Postgres, existe como tipos y operadores registrados dentro del propio sistema de extensibilidad de Postgres.
Eso es importante porque significa que las columnas espaciales participan en las mismas transacciones, copias de seguridad y replicación que todas las demás columnas de la misma tabla.
Buscar "todo dentro de 5 kilómetros" de forma ingenua requeriría calcular una distancia exacta contra cada fila de una tabla, lo que no escala.
El indexado espacial existe para evitar eso, y funciona con una idea de dos fases: primero reducir los candidatos de manera económica, luego confirmar con precisión.
La primera fase económica reemplaza cada forma compleja con su bounding box (caja delimitadora), el rectángulo más pequeño que la contiene por completo, ya que comparar rectángulos es mucho más económico que comparar polígonos.
El método de acceso GiST (Generalized Search Tree) de Postgres es lo que convierte esa primera fase en un índice en lugar de un escaneo, organizando las cajas delimitadoras en un árbol donde las formas cercanas se agrupan en las mismas ramas.
Un índice espacial GiST elimina rápidamente las formas cuyas cajas delimitadoras no pueden satisfacer la consulta, dejando solo un pequeño conjunto de candidatos.
La segunda fase luego ejecuta la prueba geométrica exacta, como ST_DWithin o ST_Intersects, solo contra ese pequeño conjunto de candidatos para obtener una respuesta precisa.
Este patrón de dos fases es la razón por la que las consultas espaciales escalan: las costosas matemáticas exactas solo se ejecutan contra un puñado de filas en lugar de toda la tabla.
-- Conceptualmente, un predicado espacial se responde en dos fases:
-- 1. GiST reduce por superposición de cajas delimitadoras (el operador &&)
-- 2. La función exacta confirma la forma real
SELECT id FROM stores
WHERE geom && ST_Expand(:query_point, 5000) -- prefiltro económico de caja delimitadora
AND ST_DWithin(geom, :query_point, 5000); -- confirmación geométrica exactaEsta es también la razón por la que un índice espacial no se parece en nada a un B-tree: un B-tree asume que los valores se ordenan en una sola línea, mientras que GiST asume que los valores se superponen en un espacio multidimensional y no tiene un orden de clasificación único para apoyarse.
El sistema de tipos de PostGIS se generaliza más allá de geometry y geography a extensiones opcionales como postgis_topology para redes de bordes compartidos y postgis_raster para imágenes basadas en cuadrículas, y cada una extiende la misma idea central de datos espaciales tipificados con operadores e índices coincidentes.
Los errores del sistema de referencia de coordenadas son una de las fallas de producción más comunes en los sistemas espaciales, porque una consulta que mezcla SRID 4326 con un SRID proyectado puede devolver silenciosamente distancias numéricamente válidas pero geográficamente sin sentido.
A gran escala, almacenar cada forma con precisión total impone un costo real de índice y E/S, y simplificar las geometrías antes de indexarlas es una forma común de mantener económico el prefiltro de caja delimitadora sin cambiar el modelo de datos subyacente.
Los sistemas espaciales suelen dividir las responsabilidades entre Postgres como sistema transaccional de registro y un servidor de tiles dedicado para la renderización, porque PostGIS se optimiza para la corrección y las uniones, no para transmitir tiles de mapas pre-renderizados a un alto volumen de solicitudes.
La observabilidad de las características espaciales debe incluir auditoría de SRID y comprobaciones de ST_IsValid en la geometría ingerida, porque las formas inválidas o desajustadas tienden a fallar silenciosamente en lugar de lanzar errores obvios.
La línea arquitectónica es la misma que demuestra pgvector en otras partes de esta pila: una extensión obtiene un rendimiento real al extender el marco de tipos, operadores e índices existente de Postgres en lugar de trabajar en torno a él.
| Enfoque | Fortaleza | Debilidad | Mejor Ajuste |
|---|---|---|---|
| Columnas numéricas crudas de lat/lon | Simple, no requiere extensión | Sin indexación espacial ni operadores geométricos | Almacenar un solo punto sin consultas de proximidad |
| PostGIS geometry/geography con GiST | Consultas espaciales rápidas, indexadas y exactas dentro de transacciones | Requiere disciplina de SRID y mantenimiento de índices | Zonas de entrega, geocercas, uniones espaciales |
| Motor GIS externo o servicio de tiles | Optimizado para renderización y protocolos OGC estándar | Sistema separado, eventualmente consistente con Postgres | Servicio de tiles de mapas de alto volumen |
Añade tipos espaciales, operadores espaciales e indexación espacial para que "dónde" se convierta en una propiedad de primera clase y consultable de una fila.
Porque los mismos números pueden describir ubicaciones del mundo real diferentes dependiendo de en qué sistema de referencia de coordenadas se midieron, razón por la cual cada valor de PostGIS lleva un SRID.
Es un identificador numérico para un sistema de referencia de coordenadas específico, que le dice a Postgres exactamente cómo interpretar las coordenadas de una forma.
geometry modela la tierra como un plano para cálculos locales rápidos, mientras que geography la modela como una esfera para cálculos de larga distancia precisos, y cada uno se adapta a una escala de problemas diferente.
B-tree asume que los valores se ordenan en una sola línea, pero las formas espaciales se superponen en múltiples dimensiones sin un orden natural único, que es exactamente la estructura que GiST está construido para indexar.
No, el índice solo reduce los candidatos por caja delimitadora, y la consulta aún necesita una función exacta como ST_DWithin para confirmar la respuesta geométrica real.
La comparación se rechaza o es silenciosamente sin sentido, por lo que transformar a un sistema de referencia compartido antes de la comparación es importante.
Cuando las distancias necesitan mantenerse precisas en un área amplia, como las consultas de radio GPS globales, los cálculos esféricos de geography evitan la distorsión que la geometría plana introduce a esa escala.
PostGIS está optimizado para almacenamiento transaccional, uniones espaciales y corrección, mientras que la renderización de mapas favorece un pipeline dedicado y amigable con la caché construido para ese único trabajo.
Mezclar sistemas de referencia de coordenadas, como calcular la distancia en geometría 4326 no proyectada y leer el resultado como metros cuando en realidad son grados.
No, las formas de mayor precisión o más complejas hacen que el prefiltro de caja delimitadora sea menos selectivo y aumentan el costo de índice y almacenamiento, por lo que la simplificación a menudo vale la pena a escala.
Versiones de la pila: Esta página fue escrita para PostGIS 3.5+. Por lo demás, es conceptual y no está vinculada a una versión menor específica de PostgreSQL.
Revisado por Chris St. John·Última actualización: 15 jul 2026