Mejores Prácticas de PostGIS
Cómo Usar Esta Lista
- Aplica en cada tabla geoespacial nueva y en cada pipeline ETL.
- Revisa después de importar archivos shapefile o GeoJSON en masa.
- Combina con el artículo de índices espaciales antes del lanzamiento del mapa de producción.
A - Modelo de Datos
- Almacena el SRID con cada geometría. Usa
typmodgeometry(Type, 4326)o fuerzaST_SRID(geom) = 4326. - Valida las entradas en la ingesta. Restricción
ST_IsValid(geom)o tabla de cuarentena ETL para los rechazados. - Usa
geographypara radios en metros de GPS. Convierte o usa el tipo de columnageographyparaST_DWithinen metros. - Usa geometría proyectada para trabajo planar local. UTM para parcelas de ciudad, no distancia de geometría 4326.
- Documenta el orden lon/lat.
ST_MakePoint(longitud, latitud)en la guía de estilo del equipo.
B - Índices y Consultas
- Crea un índice GiST en las columnas usadas en
WHEREespacial.geomygeographysegún se consulten. - Prefiltra con el sobre
&&antes deST_Intersects. Patrón de dos etapas amigable para índices. - Usa
ST_DWithinen lugar de ordenar porST_Distanceen la tabla completa. Límite de radio y luego ordena un conjunto pequeño. - Construye índices
CONCURRENTLYen tablas grandes. PlanificaANALYZEdespués de la importación. - Aplica el filtro
tenant_idantes de la operación espacial. Reduce el rango de escaneo del índice en SaaS.
C - Rendimiento y APIs
- Almacena geometrías simplificadas para capas de bajo zoom.
ST_SimplifyPreserveTopologyfuera de línea. -
LIMITde características por solicitud de tile de mapa. Rechaza bounding boxes a escala mundial de los clientes. - Sirve tiles a través de un servidor de tiles cuando sea posible. PostGIS es la fuente de verdad, no un render farm.
- Emite GeoJSON en el límite de la API. No almacenes texto GeoJSON en lugar del tipo de geometría.
- Monitoriza
ST_NPointsen la ingesta. Polígonos complejos alertan antes de la hinchazón del GiST.
D - Operaciones
- Fija la versión de PostGIS en la lista blanca de ADR.
ALTER EXTENSION postgis UPDATEcon pruebas de humo. - Ejecuta
postgis_extensions_upgradecuando la documentación lo requiera. Después de saltos mayores de PG o menores de PostGIS. - REINDEX GiST después de cargas masivas de shapefiles. Programa
CONCURRENTLYdonde sea compatible. - Mantén PostGIS en el esquema
extensions. Evita el desorden ensearch_pathpúblico. - Prueba pares de distancias conocidos. Consulta de cordura geodésica de NYC a LA en CI staging.
Preguntas Frecuentes
¿Almacenamiento 4326 vs 3857?
Almacena 4326 o UTM local; 3857 solo para tiles de visualización.¿MakeValid en producción?
Arregla en ETL; registra WKT inválido en cuarentena.¿Tablas Raster?
Ruta de aprobación separada; modelo de copia de seguridad y tamaño diferente.¿RLS multi-tenant?
Combina la política de tenant con filtros espaciales en la misma consulta.¿Replicación?
Las versiones de extensión deben coincidir en todas las réplicas.¿pg_dump?
Los objetos PostGIS se restauran con la extensión presente en el destino.¿Extensión Topology?
Habilita solo si las características de topología son explícitamente requeridas.¿Jitter de GPS móvil?
Radio de buffer `ST_DWithin`; `ST_SnapToGrid` opcional en la ingesta.¿Licencias de código abierto?
Documenta las implicaciones de GPL en ADR para SaaS.¿Comprobaciones de CI?
El linting de migraciones impone `typmod SRID` y la creación de índices GiST.Relacionados
- Conceptos Básicos de PostGIS - Servidores Postgres vs. tiles
- Geometría vs. Geografía - Selección de tipo
- Índices Espaciales - Patrones GiST
- Rendimiento de PostGIS - Simplificar y prefiltrar
- Mejores Prácticas de Extensiones - Fijaciones de versión
Versiones de Stack: Esta página fue escrita para PostgreSQL 18.4 (estable 18, mantenimiento 17), pgvector 0.8+, PostGIS 3.5+, pgbouncer 1.x, y Patroni 3.x.