Skip to content
GEOSAT
Volver al blog
Open GIS
Open GIS2026-09-23GEOSAT6 min lectura

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

GeoServerPostGISOpen GIS

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.

ElementoEste ejercicioDecisión en producción
Identidad del conjuntopublish:parcelsNombre estable y política de retiro
IdentificadorEntero parcel_idEstable entre recargas y exportaciones
GeometríaPolígono EPSG:4326CRS real y transformaciones requeridas
Atributos públicosparcel_id, statusLista aprobada por el responsable
AccesoSolo lecturaPúblico, por grupo o por convenio
ConsumidoresQGIS y solicitudes HTTPAplicaciones 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.

Ejemplo de código
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:

Ejemplo de código
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

Ejemplo de código
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íntomaPrimera revisiónAcción siguiente
El almacén no conectaHost, red y rol de baseConsultar con el mismo usuario
WFS funciona y WMS queda vacíoExtensión, CRS y estiloUsar bbox exacta y estilo simple
El supuesto PNG contiene XMLExcepción OGCLeer el error antes de cambiar parámetros
Geometrías en otro paísCoordenadas originalesIdentificar CRS y transformar correctamente
Identificadores cambian al recargarClave de origen e importaciónPreservar identificador estable
QGIS funciona y otro cliente fallaVersión y parámetros solicitadosReproducir esa solicitud exacta
Se filtran campos privadosEsquema publicado y permisosCrear 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.

Artículos relacionados