PostGIS para catastro: modelo mínimo, geometría y controles de calidad
Construya un piloto catastral con claves estables, geometría verificable y límites claros frente a un modelo legal completo.
Revisión editorial: 2026-09-23
PostGIS permite almacenar y consultar geometría junto con datos relacionales. Una tabla de polígonos, sin embargo, no constituye un sistema catastral completo ni demuestra conformidad con LADM-COL. Esta guía crea un laboratorio mínimo para discutir claves, geometría y permisos; no contiene predios reales ni información de titulares.
Entorno y datos sintéticos
Use una base PostgreSQL de laboratorio con PostGIS habilitado por su administrador. No ejecute el ejemplo en producción: crea un esquema y una tabla. Trabaje con una versión soportada y registre el resultado de la primera consulta.
SELECT version(), PostGIS_Full_Version();
CREATE SCHEMA cadastre_lab;
CREATE TABLE cadastre_lab.parcels (
id bigint GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
code text NOT NULL UNIQUE,
status text NOT NULL CHECK (status IN ('draft', 'reviewed')),
geom geometry(Polygon, 4326) NOT NULL,
CHECK (ST_IsValid(geom))
);
INSERT INTO cadastre_lab.parcels (code, status, geom)
VALUES ('DEMO-001', 'draft', ST_GeomFromText(
'POLYGON((-75.57 6.24,-75.569 6.24,-75.569 6.241,-75.57 6.241,-75.57 6.24))',4326));
SELECT code, ST_IsValid(geom), ST_SRID(geom),
round(ST_Area(geom::geography)::numeric, 2) AS area_m2
FROM cadastre_lab.parcels;
Se espera una fila, geometría válida, SRID 4326 y área positiva en metros cuadrados. La conversión a geography calcula sobre el modelo geodésico; un flujo institucional puede exigir otro método o proyección. No use este resultado como área legal de un predio.
Claves y significado
La clave id identifica una fila técnica; code representa una clave de negocio sintética. No cambie la clave de negocio al recargar datos. Para un modelo real, separe unidades espaciales, derechos, restricciones, fuentes y relaciones según el modelo aplicable. Defina fechas de vigencia y trazabilidad antes de permitir correcciones.
Un CHECK de validez rechaza algunas geometrías mal formadas, pero no detecta por sí solo solapes entre predios, vacíos en una cobertura o desacuerdos con documentos. Esas reglas necesitan consultas adicionales, criterios de tolerancia y revisión responsable. Una geometría válida no certifica propiedad ni precisión del levantamiento.
Conecte QGIS
Cree una conexión mediante un servicio PostgreSQL y una cuenta de lectura. Abra cadastre_lab.parcels, compruebe la clave, el CRS y la posición. Habilite edición únicamente con una cuenta y un proceso previstos para ese fin. Configure un catálogo para status en el formulario; mantenga también la restricción en la base para proteger escrituras de otros clientes.
Antes de migrar un inventario
Compare recuentos, claves duplicadas, nulos, CRS, dimensiones y geometrías multipartes. Pruebe recuperación de una copia y edición concurrente. Un usuario público no debe recibir datos personales solo porque comparta tabla con una geometría: publique vistas que incluyan únicamente atributos autorizados. Mantenga el modelo mínimo como laboratorio y use los requisitos normativos del proyecto para diseñar el modelo definitivo.
Modelar un flujo predial que se pueda revisar
Parte de las decisiones de la entidad. Un polígono puede representar un lindero propuesto, una observación o una unidad espacial aceptada; esos estados no deben confundirse. Define quién crea borradores, revisa geometría y autoriza publicación. Mantén derechos, documentos y datos personales fuera de una vista pública salvo que las reglas aplicables autoricen divulgación.
Esta separación es un ejercicio de diseño, no un modelo jurídico catastral:
| Aspecto | Representación del piloto | Motivo de separación |
|---|---|---|
| Objeto espacial | Identificador, geometría y estado | Referencia cartográfica estable |
| Observación | Inspección vinculada al predio | Un predio puede tener varias observaciones |
| Fuente | Referencia documental y fecha | La geometría no debe borrar su origen probatorio |
| Revisión | Responsable, decisión y motivo | Editar y aprobar son acciones diferentes |
| Visualización pública | Vista restringida | Publicar no equivale a exponer toda la operación |
Esta separación permite evolucionar sin poner información de titularidad en atributos arbitrarios del polígono. Para trabajo institucional colombiano, analiza por separado el modelo exigido y su validación de entrega. El ejercicio genérico no implementa LADM-COL ni acredita cumplimiento de requisitos vigentes de una autoridad.
Agregar observaciones al ejemplo sintético
Ejecuta lo siguiente después del ejemplo cadastre_lab.parcels, en la misma base desechable. Crea una tabla hija y una observación ficticia. No representa personas ni propiedades reales.
CREATE TABLE cadastre_lab.observations (
id bigint GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
parcel_id bigint NOT NULL REFERENCES cadastre_lab.parcels(id),
observed_at timestamptz NOT NULL,
result text NOT NULL CHECK (result IN ('consistent', 'review')),
note text NOT NULL
);
INSERT INTO cadastre_lab.observations
(parcel_id, observed_at, result, note)
SELECT id, '2026-09-01T14:00:00Z', 'review',
'Ejemplo sintético: verificar fuente del lindero'
FROM cadastre_lab.parcels WHERE code = 'DEMO-001';
SELECT p.code, count(o.id) AS observation_count
FROM cadastre_lab.parcels AS p
LEFT JOIN cadastre_lab.observations AS o ON o.parcel_id = p.id
GROUP BY p.code;
Se espera una observación para DEMO-001. La clave foránea evita referenciar una clave predial inexistente; no demuestra que la observación corresponda al predio correcto en la realidad. Siguen importando formulario, revisor y fuente. Decide aparte si se admite eliminar predios; este ejemplo no elimina observaciones en cascada.
Detectar superposiciones sin rechazar bordes compartidos
Dos predios pueden compartir un borde legítimamente. ST_Intersects devuelve verdadero también en ese caso y no constituye por sí solo una regla de superposición prohibida. Esta consulta exige intersección entre interiores y devuelve cada pareja una vez:
SELECT a.code AS parcel_a, b.code AS parcel_b
FROM cadastre_lab.parcels AS a
JOIN cadastre_lab.parcels AS b
ON a.id < b.id AND a.geom && b.geom
WHERE ST_Relate(a.geom, b.geom, '2********');
Para polígonos, el patrón solicita una intersección de dimensión superficial entre interiores. La condición de cajas envolventes reduce candidatos. Con el único predio del laboratorio se esperan cero filas. Agrega un polígono sintético superpuesto en otra copia de práctica y verifica que se detecte. Resuelve primero geometrías inválidas antes de interpretar controles topológicos.
Una regla de producción necesita tolerancias, exclusiones y dominio definido. Predios en pisos diferentes, versiones históricas o representaciones jurídicas distintas pueden superponerse legítimamente. “Eliminar todas las superposiciones” destruiría significado. Detectar vacíos también exige un límite de cobertura declarado; un espacio por fuera no es automáticamente un error.
Diferenciar área geométrica y área autoritativa
Usa nombres separados para el área calculada desde geometría y la consignada en una fuente autoritativa. Una diferencia puede provenir de redondeo, método de levantamiento, proyección, captura o inconsistencia documental. Sobrescribir el valor registrado con un cálculo nuevo oculta la discrepancia.
En el ejemplo, ST_Area(geom::geography) calcula geodésicamente en metros cuadrados. Si el procedimiento institucional es proyectado, documenta la proyección y evalúa el cálculo plano correspondiente. Define tolerancia absoluta y, cuando corresponda, relativa; revisa predios muy pequeños donde un porcentaje puede resultar engañoso. No clasifiques una diferencia como incumplimiento legal basándote únicamente en este tutorial.
Diseñar el formulario QGIS alrededor de relaciones
- Conecta mediante un rol con lectura y una clave única explícita para cada capa.
- Carga predios y observaciones. Configura en propiedades del proyecto la relación
observations.parcel_idhaciaparcels.id. - Muestra los registros hijos dentro del formulario predial. El usuario debe ver el código de negocio aunque se guarde una clave técnica.
- Crea una segunda observación y comprueba que aparezca sin duplicar el polígono.
- Intenta guardar un
resultno permitido desde un cliente autorizado de prueba y confirma el rechazo.
Presenta errores de restricciones comprensibles. Una base que rechaza correctamente puede producir una mala operación si nadie identifica el campo inválido o recupera el trabajo pendiente. Prueba cancelación y rollback además de guardados exitosos.
Publicar una vista de lectura restringida
Construye vistas con los campos mínimos autorizados. Un piloto público podría exponer code, status y geom, ocultando notas de observación. Utiliza un rol específico para publicación; no entregues al servidor la cuenta propietaria. Comprueba qué serializa realmente el servicio: ocultar un campo en el formulario no lo elimina de la tabla.
La vista tiene límites. No anonimiza automáticamente geometría, impide inferencias ni sustituye la decisión de publicar. Inspecciona descargas, identificación y consultas de objetos además del mapa. La guía de publicación GeoServer continúa el flujo de servicios.
Aceptación antes de hablar de migración
| Pregunta | Evidencia requerida |
|---|---|
| ¿Se preservan identidades? | Conciliación de claves, incluidos ceros iniciales |
| ¿Funcionan las relaciones? | El predio conocido devuelve sus observaciones correctas |
| ¿La geometría es utilizable? | CRS, dimensiones, validez y reglas acordadas |
| ¿La edición está controlada? | El lector no edita; el editor no cambia campos prohibidos |
| ¿Se puede recuperar? | Una restauración nueva abre en QGIS con los registros esperados |
| ¿La publicación está limitada? | Respuestas públicas contienen solo geometrías y atributos aprobados |
Ensaya un guardado fallido y una recuperación fallida de manera deliberada. Consultar la base original no demuestra restaurabilidad. Usa la guía de respaldos para definir recuperación y el laboratorio descargable como ejemplo sintético independiente orientado a activos.
¿PostGIS reemplaza toda una plataforma catastral?
Proporciona almacenamiento y operaciones espaciales dentro de PostgreSQL. La plataforma completa también requiere modelo aplicable, flujo, evidencia, identidad, revisión, integraciones y soporte. Mantén esas responsabilidades visibles al comparar costos.
¿ArcGIS y QGIS pueden usar la misma base?
Existen patrones de acceso PostgreSQL/PostGIS, pero soporte, edición y comportamiento de geodatabase dependen de versiones concretas. Valida el contrato en la guía de coexistencia. No habilites escritura directa sobre un esquema administrado por Esri solo porque una tabla se pueda leer.
Referencias específicas: patrones de relación PostGIS, validez geométrica y restricciones PostgreSQL.
Fuentes y documentación
Siguiente paso
Continúe en la colección Open GIS. Para comparar un proyecto concreto, use la calculadora de costo total y solicite una evaluación.