En este momento estás viendo Los secretos de GeoServer que debes saber (y cómo aplicarlos en tus proyectos GIS)

Los secretos de GeoServer que debes saber (y cómo aplicarlos en tus proyectos GIS)

  • Categoría de la entrada:Blog / Geoserver
  • Tiempo de lectura:17 minutos de lectura

¿Sabías que GeoServer no solo sirve para publicar capas, sino que también puede optimizar tus flujos de trabajo geoespacial, hacer conversiones de datos de forma inmediata y proteger tus servicios como un ninja? Si te suena increíble, quédate porque lo que viene en éste artículo te va a cambiar la forma como ves este servidor de mapas. Vamos a destapar sus secretos mejor guardados.

GeoServer es una de las herramientas más potentes del ecosistema GIS libre. Pero aquí va el problema: la mayoría solo lo usa para lo básico. Publicar capas WMS, WFS o WCS. ¿Y todo lo demás?

¿Qué significa publicar una capa?

Publicar una capa en GeoServer es ponerla disponible para ser consultada por otras aplicaciones o usuarios. Por ejemplo, puedes tener una capa de ríos en tu computadora, pero al publicarla en GeoServer, esa capa estará disponible vía internet o red local para ser usada en QGIS, una app web o incluso en un teléfono. Es como compartir un archivo, pero a lo grande, con estándares internacionales como WMS (mapas), WFS (datos vectoriales) y WCS (datos raster). Si quieres saber más sobre estos estándares puedes leer un artículo completo en https://johagis.com/estandares-ogc

En este artículo desbloquearemos el verdadero potencial de GeoServer.


1. El poder de los estilos: SLD y CSS

GeoServer no solo muestra mapas, sino que también los interpreta visualmente. ¿Sabías que puedes hacer que las autopistas se vean gruesas y los caminos más delgados solo con unas líneas de código?

Eso lo puedes lograr con SLD (Styled Layer Descriptor), un lenguaje XML para definir cómo se debe visualizar una capa. XML es un formato de texto estructurado usado para describir datos. Se parece a HTML y sirve para definir reglas, configuraciones y estilos, como en los ejemplos de SLD. Este es un ejemplo básico de SLD condicional:

<Rule>
  <Name>Autopistas</Name>
  <ogc:Filter>
    <ogc:PropertyIsEqualTo>
      <ogc:PropertyName>tipo</ogc:PropertyName>
      <ogc:Literal>autopista</ogc:Literal>
    </ogc:PropertyIsEqualTo>
  </ogc:Filter>
  <LineSymbolizer>
    <Stroke>
      <CssParameter name="stroke">#ff0000</CssParameter>
      <CssParameter name="stroke-width">5</CssParameter>
    </Stroke>
  </LineSymbolizer>
</Rule>

GeoCSS: CSS es un lenguaje que normalmente se usa para diseñar sitios web. Con GeoCSS, puedes aplicar esa misma lógica para definir estilos de capas en GeoServer:

tipo = 'autopista' {
  stroke: red;
  stroke-width: 5;
}

YSLD: Estilos legibles para humanos. YAML Styled Layer Descriptor es un formato más limpio y fácil de leer. Mira este ejemplo equivalente al anterior:

name: autopistas
rules:
  - filter: ${tipo = 'autopista'}
    symbolizers:
      - line:
          stroke-color: '#ff0000'
          stroke-width: 5

¿Ves qué limpio es? Además puedes agrupar condiciones, reutilizar valores y hasta comentar como si fuera un documento normal. Y sí, desde la interfaz de GeoServer puedes convertir un estilo SLD a YSLD en segundos.

¿Cómo usarlo?

Carga tu estilo desde la pestaña “Styles” de la interfaz web, pruébalo ahí mismo con “Layer Preview”, y luego asigna tu estilo a una capa desde la configuración de Layer. Para facilitar la edición, usa un editor de texto como VSCode con extensión YAML.


2. Optimiza como un pro: Uso de Caching con GeoWebCache

Tus mapas mostrandose rápidamente bajo presión. GeoServer incluye GeoWebCache, que genera y guarda mosaicos (tiles) de tus capas para servirlas más rápido. Esto mejora el rendimiento, especialmente si tus capas tienen muchos detalles o son consultadas con frecuencia.

Tile es una pequeña imagen (por ejemplo de 256×256 píxeles) de una porción del mapa, que se guarda para que no se genere de nuevo cada vez que alguien hace zoom o pan.

¿Cómo usarlo?

Puedes precargar tiles desde la pestaña “Tile Caching” y evitar que el primer usuario tenga que esperar mientras se renderiza el mapa.

  • Activa “Tile Caching” para tu capa.
  • Define los niveles de zoom más usados.
  • Usa las URLs XYZ en Leaflet o Mapbox:
L.tileLayer('http://tugeoserver/geoserver/gwc/service/tms/1.0.0/workspace:capa@EPSG:3857@png/{z}/{x}/{y}.png').addTo(mapa);

Usa herramientas como curl (una utilidad de línea de comandos para transferir datos por URL), Fiddler (una herramienta gráfica para ver tráfico web) o GeoServer Metrics para hacer pruebas de carga y verificar que el cache esté funcionando. Puedes monitorear cuántos tiles se sirvieron desde caché y cuántos se generaron nuevos. Ejemplo de curl en Bash:

curl -u admin:geoserver -XPOST -H "Content-type: text/xml" 
  -d @capa.xml http://localhost:8080/geoserver/rest/workspaces/miworkspace/datastores/midatastore/featuretypes

curl es una herramienta muy útil para probar servicios web desde la terminal, permitiendo hacer solicitudes POST, GET, PUT y DELETE fácilmente.


3. Seguridad avanzada: Control de acceso por capas y atributos

Manten tu información espacial protegida. GeoServer permite definir roles de usuarios, y aplicar reglas de acceso a nivel de capa y de atributo.

Esto importa bastante porque no todos los usuarios deben ver todo. Imagina un operador municipal que solo puede acceder a datos de su localidad, o un técnico que no debe ver datos personales como nombres o coordenadas exactas.

¿Cómo usarlo?

Puedes restringir acceso a ciertas entidades o atributos. Por ejemplo, hacer que un operador vea solo puntos dentro de su municipio:

municipio = 'MiMunicipio'
  • Ve a “Security -> Data -> Layer Access Rules” para restringir acceso a capas según rol.
  • Usa “Attribute-level security” en la pestaña “Security” del workspace para ocultar atributos.

Combina filtros CQL con roles para una seguridad dinámica. Si un usuario se identifica como “tecnico_norte”, crea una regla que filtre automáticamente las entidades por zona geográfica.


4. Filtros CQL para consultas dinámicas

¿Querías filtros? Aquí puedes aplicarlos con CQL (Common Query Language) que es un lenguaje que permite hacer consultas avanzadas sobre los datos espaciales. Es como hacer preguntas a la base de datos, pero en la URL del servicio.

Puedes agregar un parametro cql filter en la URL de un WMS o WFS para filtrar resultados sin modificar el servicio ni el cliente.

¿Cómo usarlo?

Por ejemplo, para mostrar solo municipios con mas de 10.000 habitantes, debes contruir la url así:

.../geoserver/wfs?request=GetFeature&typename=capas:municipios&cql_filter=poblacion>10000

Tipos de consultas que puedes hacer:

  • Atributo: departamento='Antioquia'
  • Rango: altitud>1500
  • Combinación: region='norte' AND area<100

Integra CQL en QGIS, Leaflet o dashboards para filtrar sin recargar capas completas.


5. Publicar más que shapefiles: conectores JDBC, rasters y más

GeoServer no discrimina tipos de datos: lo que tengas, lo muestra. GeoServer permite conectar directamente a:

  • Bases de datos (PostGIS, Oracle, SQL Server)
  • Archivos raster (GeoTIFF, NetCDF, GRIB)

¿Por qué usar JDBC? Te permite acceder a tablas y vistas directamente desde la base de datos, sin exportar shapefiles. Es ideal para datos actualizados en tiempo real.

¿Cómo usarlo?

Puedes publicar vistas SQL como capas. Ideal para filtrar o combinar datos directamente desde la base. Configuración JDBC para PostGis:

  1. Ve a “Stores” -> “PostGIS”.
  2. Llena todos los datos de conexión a tu base de datos.
  3. Publica una tabla o vista.

Usa índices y evita joins complejos. Si tu consulta SQL tarda mucho, tu capa será lenta.


6. REST API: Automatización para humanos ocupados

Tu DevOps interior te lo va a agradecer. GeoServer tiene una REST API que permite automatizar casi todo. Por ejemplo:

  • Crear workspaces
  • Subir capas
  • Modificar estilos
  • Borrar configuraciones

¿Cómo usarlo?

Puedes integrar GeoServer con scripts en Bash, Python o herramientas como Jenkins.

Ejemplo con curl para cargas masivas de capas a Geoserver teniendo las tablas con datos de capas en Postgres:

  1. Abre CMD en Windows.
  2. Crear el “workspace” o “espacio de trabajo” llamado “cursoSIG2”
curl -u admin:geoserver -X POST -H "Content-type: text/xml" -d "cursoSIG2" http://localhost:8080/geoserver/rest/workspaces

3. Tener creado un archivo datastore.xml

4. Ejecutar lo siguiente para crear el datastore “datastoreCali”:

curl -u admin:geoserver -X POST -H "Content-type: text/xml" -d @datastore.xml http://localhost:8080/geoserver/rest/workspaces/cursoSIG2/datastores

5. Tener la tabla en Postgres creada.

6. Tener creado un archivo capa.xml

<featureType>
  <name>geoserver_barrios_cali</name>
  <nativeName>Barrios_Cali</nativeName>
  <srs>EPSG:4326</srs>
</featureType>

6. Ejecutar lo siguiente para publicar la capa “geoserver_barrios_cali” en Geoserver desde la tabla “Barrios_Cali” de Postgres:

curl -u admin:geoserver -XPOST -H "Content-type: text/xml" -d @capa.xml http://localhost:8080/geoserver/rest/workspaces/cursoSIG2/datastores/datastoreCali/featuretypes

6. Verificar en Geoserver:

Automatiza cargas masivas de capas, backups, publicación programada, cambios de estilos o limpieza de capas antiguas.


7. Publicar capas vectoriales como vectores interactivos (GeoJSON, MVT)

Más allá del WMS, hacia la era vectorial. GeoServer puede publicar datos modernos como:

  • GeoJSON: formato ligero para datos vectoriales basado en Json.
  • Mapbox Vector Tiles (MVT): ideal para visualización moderna y renderizar grandes volumenes de datos en clientes web.

¿Cómo usarlo?

Para usar MVT, debes instalar la extensión correspodiente en GeoServer. MVT permite zoom y estilos más fluidos en apps como Mapbox GL o Deck.gl, porque se renderizan en cl cliente, no en el servidor.

Úsalo para dashboards, mapas interactivos o aplicaciones que requieren rendimiento top.


Saber usar GeoServer bien no solo te ahorra tiempo, te da una ventaja competitiva. Deja de usarlo solo como un servidor de mapas y empieza a verlo como una herramienta de publicación, control y automatización geoespacial.

🎁 Descarga gratis la guía para crear un mapa desde 0 con Leaflet: https://johagis.com/descargar-guia

👉 ¿Ya usabas alguno de estos? Cuéntamelo en Discord y sigamos aprendiendo juntos.

🔗 Visita mi canal de YouTube: https://www.youtube.com/channel/UCbiz5hEvp5O2OSCB_3VVGww