ARTECLABGeoServer 3 — De cero a producciónClase 5
1 / 12
Módulo 4 · Clase 5 ·

Estilos con
SLD y CSS

Simbología cartográfica profesional en GeoServer 3

⏱ 2 horas🎨 OGC SLD👨‍💻 Daniel Quisbert
Al finalizar esta clase
¿Qué vamos a lograr hoy?
1
Crear estilos SLD para polígonos, líneas y puntos
La jerarquía FeatureTypeStyle → Rule → Symbolizer.
2
Aplicar simbología categorizada por atributo
Un color diferente por cada categoría de datos.
3
Agregar etiquetas con TextSymbolizer
Nombres legibles sobre el mapa con halo para contraste.
4
Comparar SLD vs CSS — mismo resultado, menos código
El estilo CSS de GeoServer: más conciso y más legible.
DQ
Daniel Quisbert
ARTECLAB · danielquisbert.com
Sección 1 de 4
¿Qué es SLD?
El estándar OGC para describir la apariencia de las capas
Concepto
La jerarquía SLD
📄
UserStyle
El estilo con nombre y descripción
🎭
FeatureTypeStyle
Agrupa reglas para un tipo de geometría
📐
Rule
Una condición + un conjunto de simbolizadores
🖌️
Symbolizer
PolygonSymbolizer · LineSymbolizer · PointSymbolizer · TextSymbolizer
💡
Regla de oro
Una Rule = una condición (filtro) + cómo se ve (symbolizer). Para 9 categorías → 9 Rules, cada una con su filtro y su color.
SLD en práctica
Estilo para polígonos — departamentos
SLD — Una Rule con filtro
<Rule> <Name>La Paz</Name> <ogc:Filter> <ogc:PropertyIsEqualTo> <ogc:PropertyName>DEPTO</ogc:PropertyName> <ogc:Literal>LA PAZ</ogc:Literal> </ogc:PropertyIsEqualTo> </ogc:Filter> <PolygonSymbolizer> <Fill> <CssParameter name="fill">#1A237E</CssParameter> </Fill> <Stroke> <CssParameter name="stroke">#FFFFFF</CssParameter> <CssParameter name="stroke-width">1.5</CssParameter> </Stroke> </PolygonSymbolizer> </Rule>
Repite este bloque Rule para cada departamento con su color y filtro. 9 departamentos = 9 Rules.
🗺️
sld-departamentos-result.jpg
Resultado: mapa de departamentos con colores
Sección 2 de 4
Escala dependiente
y etiquetas
El mapa correcto en cada nivel de zoom
Técnica esencial
Escala dependiente + TextSymbolizer
Escala dependiente en una Rule
<Rule> <!-- Solo visible entre 1:1 y 1:5,000,000 --> <MinScaleDenominator>1</MinScaleDenominator> <MaxScaleDenominator>5000000</MaxScaleDenominator> <TextSymbolizer> <Label> <ogc:PropertyName>NOMBRE</ogc:PropertyName> </Label> <Halo> <Radius>2</Radius> <Fill><CssParameter name="fill">#FFFFFF</CssParameter></Fill> </Halo> <Fill><CssParameter name="fill">#0D1B3E</CssParameter></Fill> </TextSymbolizer> </Rule>
💡
¿Por qué escala dependiente?
No tiene sentido mostrar nombres de calles cuando el mapa muestra todo un país. La escala dependiente controla qué se ve según el zoom.
El Halo
El halo blanco alrededor del texto lo hace legible sobre cualquier fondo — imagen, color o mapa complejo.
Sección 3 de 4
CSS Styles:
menos código
El mismo resultado con 5 líneas en lugar de 40
CSS vs SLD
El mismo estilo — comparativa real
SLD — Red vial (extracto, ~40 líneas)
<Rule> <Name>Primaria</Name> <ogc:Filter>...</ogc:Filter> <LineSymbolizer> <Stroke> <CssParameter name="stroke">#E65100</CssParameter> <CssParameter name="stroke-width">3</CssParameter> </Stroke> </LineSymbolizer> </Rule> ... (30+ líneas más para secundaria y terciaria)
CSS — Red vial completa (9 líneas)
/* Estilo base */ * { stroke: #8B4513; stroke-width: 1px; } /* Por categoría */ [TIPO = 'PRIMARIA'] { stroke: #E65100; stroke-width: 3px; } [TIPO = 'SECUNDARIA'] { stroke: #FF8F00; stroke-width: 2px; } [TIPO = 'TERCIARIA'] { stroke: #FDD835; stroke-width: 1px; }
GeoServer convierte CSS a SLD internamente. El resultado es idéntico — el código no.
Raster
ColorMap para el DEM — elevación en colores
RasterSymbolizer con ColorMap de tipo ramp
<RasterSymbolizer> <ColorMap type="ramp"> <ColorMapEntry color="#006400" quantity="200" label="Tierras bajas"/> <ColorMapEntry color="#ADFF2F" quantity="1500" label="Altiplano bajo"/> <ColorMapEntry color="#8B4513" quantity="4000" label="Cordillera"/> <ColorMapEntry color="#FFFFFF" quantity="6542" label="Nevados"/> </ColorMap> </RasterSymbolizer>
🏔️
dem-colormap-result.jpg
DEM con gradiente de elevación verde → marrón → blanco
📊
type="ramp" = gradiente continuo. type="intervals" = bandas de color discretas. type="values" = solo valores exactos.
Resumen
Lo que aprendiste hoy
  • SLD estructura los estilos en: UserStyle → FeatureTypeStyle → Rule → Symbolizer
  • Simbología categorizada = una Rule con filtro + symbolizer por cada categoría
  • El Halo en TextSymbolizer hace legibles las etiquetas sobre cualquier fondo
  • La escala dependiente controla qué se ve según el nivel de zoom del mapa
  • CSS Styles produce el mismo resultado que SLD con 4-5 veces menos código
  • ColorMap type="ramp" crea gradientes continuos para datos raster como DEMs
🗄️
Próxima clase
PostGIS como fuente de datos para GeoServer. Los estilos que creamos hoy se aplicarán a capas que vienen directamente de la base de datos.
Fin de la Clase 5

Mapas con
identidad visual.

Próxima clase: PostGIS + GeoServer — publicación desde base de datos.

Cuestionario — Clase 5: Estilos
12 preguntas · 2 intentos
Ir al cuestionario →
🗓 Próxima: PostGIS + GeoServer📘 docs.geoserver.org/styling