Publicar una capa PostGIS con GeoServer y verificar WMS y WFS
Publique PostGIS mediante WMS/WFS, verifique identificadores e imagen y diagnostique errores de CRS, almacén y cliente en GeoServer.
Revisión editorial: 2026-09-23
Resultado: publicar una capa sintética de PostGIS mediante WMS y WFS, revisar geometrías e imágenes y conectarla desde un cliente de escritorio. Es la primera prueba de migración a nivel de servicio: un mapa que se ve bien no demuestra que identificadores, atributos, permisos y consultas se hayan conservado.
Use una base desechable y GeoServer local. El laboratorio Open GIS descargable incluye datos sintéticos y distingue las comprobaciones realmente ejecutadas. El SQL siguiente es un ejercicio independiente y crea el esquema publish_lab; no lo ejecute sobre una base de un cliente ni confunda sus nombres con los de otro laboratorio.
1. Defina el contrato que publicará
Escriba el resultado esperado: “Una persona anónima puede ver dos predios ficticios, consultar su identificador y estado, y dibujarlos en la ubicación prevista. No puede editarlos ni consultar nombres de propietarios”. Esa frase separa la capa de publicación de una tabla maestra catastral.
| Elemento | Este ejercicio | Decisión en producción |
|---|---|---|
| Identidad del conjunto | publish:parcels | Nombre estable y política de retiro |
| Identificador | Entero parcel_id | Estable entre recargas y exportaciones |
| Geometría | Polígono EPSG:4326 | CRS real y transformaciones requeridas |
| Atributos públicos | parcel_id, status | Lista aprobada por el responsable |
| Acceso | Solo lectura | Público, por grupo o por convenio |
| Consumidores | QGIS y solicitudes HTTP | Aplicaciones y versiones concretas |
GeoServer publica servicios sobre fuentes de datos; no reconstruye automáticamente mapas web, grupos, formularios o aplicaciones de ArcGIS. Registre esas dependencias en la matriz de migración de servicios.
2. Prepare una fuente pequeña y verificable
La base debe tener PostGIS instalado por su administrador. Ejecute este SQL con un rol que pueda crear objetos en la base desechable. Las coordenadas son inventadas cerca de Medellín: no representan linderos reales.
CREATE SCHEMA publish_lab;
CREATE TABLE publish_lab.parcels (
parcel_id integer PRIMARY KEY,
status text NOT NULL CHECK (status IN ('review', 'approved')),
geom geometry(Polygon, 4326) NOT NULL
);
INSERT INTO publish_lab.parcels VALUES
(1, 'review', ST_GeomFromText(
'POLYGON((-75.572 6.238,-75.570 6.238,-75.570 6.240,-75.572 6.240,-75.572 6.238))',4326)),
(2, 'approved', ST_GeomFromText(
'POLYGON((-75.569 6.241,-75.567 6.241,-75.567 6.243,-75.569 6.243,-75.569 6.241))',4326));
CREATE INDEX parcels_geom_idx ON publish_lab.parcels USING gist(geom);
ANALYZE publish_lab.parcels;
SELECT count(*) AS rows, count(DISTINCT parcel_id) AS unique_ids,
bool_and(ST_IsValid(geom)) AS valid,
min(ST_SRID(geom)) AS srid
FROM publish_lab.parcels;
Los valores esperados son 2, 2, true y 4326. Una inserción exitosa no basta: compruebe cantidad, clave y geometría antes de depurar el servidor. La guía de carga y validación PostGIS amplía estas pruebas para archivos importados.
Solicite al administrador un usuario exclusivo para GeoServer. Otórguele CONNECT a la base, USAGE sobre publish_lab y SELECT sobre la tabla. No use el propietario ni un superusuario. Guarde la contraseña en la configuración privada del entorno, nunca en una URL publicada ni en Git. Si después se habilita edición, cree un rol separado y pruebe sus permisos expresamente.
3. Configure workspace, almacén y capa
En la administración de GeoServer cree el workspace publish y el URI urn:geosat:publish-lab. El URI identifica un espacio de nombres; no necesita ser una página web. Añada dentro de él un almacén PostGIS con host, puerto, base, esquema publish_lab y credenciales de lectura. Verifique la conexión antes de publicar.
Seleccione parcels y publique. Confirme nombre nativo, columna geométrica y clave primaria detectada. Declare EPSG:4326 porque las coordenadas del ejercicio están realmente expresadas en longitud y latitud. Calcule las extensiones nativa y geográfica desde los datos. Si una capa real aparece en otro país, investigue el CRS de origen: cambiar la etiqueta no transforma las coordenadas.
Asigne un estilo sencillo de polígonos y guarde. Primero demuestre que el dato funciona; después añada etiquetas, filtros y reglas por escala. El tutorial oficial de publicación PostGIS explica las pantallas del almacén y la capa.
4. Revise descubrimiento y objetos
Los comandos suponen GeoServer local en el puerto 8080. Consulte capacidades del workspace antes de distribuir una URL:
curl --fail --get 'http://127.0.0.1:8080/geoserver/publish/ows' \
--data-urlencode 'service=WFS' \
--data-urlencode 'version=2.0.0' \
--data-urlencode 'request=GetCapabilities' --output capabilities.xml
curl --fail --get 'http://127.0.0.1:8080/geoserver/publish/ows' \
--data-urlencode 'service=WFS' \
--data-urlencode 'version=2.0.0' \
--data-urlencode 'request=GetFeature' \
--data-urlencode 'typeNames=publish:parcels' \
--data-urlencode 'count=1' \
--data-urlencode 'outputFormat=application/json' --output parcel.json
Abra el JSON: debe contener un FeatureCollection, un polígono, un identificador estable y los campos públicos previstos. Repita con un límite que devuelva los dos registros y compare sus identificadores con SQL. En una migración real revise también valores nulos, fechas y zona horaria, precisión decimal y dominios. Solicite una capa inexistente: no debería recibir datos de otra capa ni credenciales en el error.
WFS 2.0 utiliza typeNames y count. No traslade parámetros entre versiones sin revisar la referencia WFS. Una respuesta HTTP 200 puede contener una excepción OGC: examine el cuerpo y el tipo de contenido.
5. Compruebe el mapa de forma independiente
curl --fail --get 'http://127.0.0.1:8080/geoserver/publish/wms' \
--data-urlencode 'service=WMS' \
--data-urlencode 'version=1.1.1' \
--data-urlencode 'request=GetMap' \
--data-urlencode 'layers=publish:parcels' \
--data-urlencode 'styles=' \
--data-urlencode 'srs=EPSG:4326' \
--data-urlencode 'bbox=-75.574,6.236,-75.565,6.245' \
--data-urlencode 'width=600' \
--data-urlencode 'height=600' \
--data-urlencode 'format=image/png' --output parcels.png
Abra parcels.png; debe mostrar dos polígonos dentro de la extensión solicitada. El ejemplo usa WMS 1.1.1 y bbox en orden longitud/latitud. Para WMS 1.3.0 revise el parámetro CRS y el orden de ejes; cambiar solo la versión puede producir una imagen vacía. Consulte la referencia WMS.
En QGIS cree una conexión WMS con la raíz del servicio y seleccione publish:parcels. Añada WFS por separado. Desplace el mapa, abra atributos, identifique un predio y exporte una muestra. Si ArcGIS Pro seguirá consumiendo información, repita allí descubrimiento, selección, extensión, dibujo e identificación. Alcanzar el endpoint no prueba que el cliente dibuje la capa.
6. Diagnostique desde el punto donde falla
| Síntoma | Primera revisión | Acción siguiente |
|---|---|---|
| El almacén no conecta | Host, red y rol de base | Consultar con el mismo usuario |
| WFS funciona y WMS queda vacío | Extensión, CRS y estilo | Usar bbox exacta y estilo simple |
| El supuesto PNG contiene XML | Excepción OGC | Leer el error antes de cambiar parámetros |
| Geometrías en otro país | Coordenadas originales | Identificar CRS y transformar correctamente |
| Identificadores cambian al recargar | Clave de origen e importación | Preservar identificador estable |
| QGIS funciona y otro cliente falla | Versión y parámetros solicitados | Reproducir esa solicitud exacta |
| Se filtran campos privados | Esquema publicado y permisos | Crear vista pública y probar todas las rutas |
7. Entregue una prueba que otro equipo pueda repetir
Conserve consultas SQL, solicitudes, muestra de respuestas y una captura por cliente con su versión. La aceptación exige que las lecturas autorizadas funcionen, las consultas y ediciones prohibidas fallen, los recursos inexistentes produzcan errores útiles y los límites impidan exportaciones sin control. Continúe con seguridad y proxy y una restauración del servicio antes de abrirlo al público.
Este procedimiento no es un benchmark ni certifica todas las combinaciones de clientes y versiones. Para dimensionar una migración, lleve a la evaluación GeoSAT el inventario de servicios, consumidores, volumen, frecuencia de actualización y modelo de acceso. El número de capas, por sí solo, no permite estimar el trabajo.