Introducción a GeoServer


Acerca de nosotros

Acerca de vosotros?

Formación AMB
BLOQUE 1: instalación, configuración y publicación en Geoserver
Instalación de Geoserver
Publicación de shapefiles
Simbolización básica con SLD
Publicación de PostGIS
Publicación de datos raster
BLOQUE 2: PostGIS y gestión de datos
Instalación y configuración
Uso de PostgreSQL/PostGIS
BLOQUE 3: rendimiento y caché en Geoserver
Caché de teselas con GeoWebCache
Estándares OGC para teselas raster: WFS, WMTS
Containerización, despliegue, escalado
BLOQUE 4: visualización avanzada con teselas vectoriales
Publicación y uso de teselas vectoriales
Rendimiento de VT
Geoserver bloque 1
1.1 Introducción
Instalación de Geoserver
Estado del servidor
Estructura de GEOSERVER_DATA_DIR
1.2 Publicación de shapefiles
Subiendo los archivos para publicar
Workspaces, data stores, layers
1.3. Simbolización básica con SLD
Simbolización de una capa de puntos
Simbolización de una capa de líneas
Simbolización de una capa de polígonos
Filtrado y etiquetas con SLD
Generación de SLD con QGIS
Documentación on-line sobre SLD
1.4 Publicación de PostGIS
Como subir capas a PostGIS desde QGIS
Creación de un almacén PostGIS
Beneficios de PostGIS
1.5 Publicación de datos raster
Preparación de los ficheros raster
Simbolización raster: rampas de color
Publicación de rasters pesados
1. ¿Qué es GeoServer?

Arquitectura

Geoserver
PostgreSQL/PostGIS

Arquitectura
¿Qué es un servidor de mapas?
Un servidor de mapas de Internet proporciona mapas a través de Internet, generalmente como imágenes (???). Una especificación estándar para dicho servidor es la OGC Web Map Service.
Wikipedia, 2006
¿Qué es un servidor de mapas?
Un servidor de cartografía digital (en inglés IMS: Internet Map Server) provee cartografía a través de la red tanto en modo vectorial como con imágenes. La especificación estándar para estos servidores es la OGC Web Map Service, (Open Geospatial Consortium Web Map Service).
Wikipedia actual
¿Qué es un servidor de mapas?

¿Qué es un servidor de mapas?

¿Qué es GeoServer?

Think free as in free speech, not free beer
R.Stallman
¿Qué es GeoServer?
Free / Open source software
¿Qué es GeoServer?
Al ser un proyecto impulsado por la comunidad, GeoServer es desarrollado, probado y respaldado por un grupo diverso de individuos y organizaciones de todo el mundo.
¿Qué es GeoServer?
Diseñado para la interoperabilidad, publica datos de diversas fuentes utilizando estándares abiertos.


¿Qué es GeoServer?

Estándares OGC
GeoServer serves data using standard protocols established by the Open Geospatial Consortium:
- The Web Map Service (WMS) supports requests for map images (and other formats) generated from geographical data.
- The Web Feature Service (WFS) supports requests for geographical feature data (with vector geometry and attributes).
- The Web Coverage Service (WCS) supports requests for coverage data (rasters).
Estándares OGC
WFS
Vectores
WMS
Imágenes

WCS
Análisis raster
{"type":"FeatureCollection","features":[{"type":"Feature","id":"fondo_lineas.1","geometry":{"type":"MultiLineString","coordinates":[[[182058.3406,4370370.6027,0],[182059.5583,4370393

Estándares OGC
Conectarse a un servicio WMS (con QGIS):
http://www.ign.es/wms-inspire/ign-base?
Ver las capabilities en un navegador:
http://www.ign.es/wms-inspire/ign-base?VERSION=1.3.0&REQUEST=GetCapabilities&SERVICE=WMS

Estándares OGC
¿Qué es XML?
La tecnología XML busca dar solución al problema de expresar información estructurada de la manera más abstracta y reutilizable posible.
Que la información sea estructurada quiere decir que se compone de partes bien definidas, y que esas partes se componen a su vez de otras partes. De esta manera se tiene un árbol de trozos de información

Geoserver y los estándares OGC
Diseñado para la interoperabilidad, publica datos de diversas fuentes utilizando estándares abiertos.


Estándares OGC
- The Web Map Service (WMS) supports requests for map images (and other formats) generated from geographical data.
- The Web Feature Service (WFS) supports requests for geographical feature data (with vector geometry and attributes).
- The Web Coverage Service (WCS) supports requests for coverage data (rasters).
Estándares OGC
WFS
Vectores
WMS
Imágenes

WCS
Raster
{"type":"FeatureCollection","features":[{"type":"Feature","id":"fondo_lineas.1","geometry":{"type":"MultiLineString","coordinates":[[[182058.3406,4370370.6027,0],[182059.5583,4370393

Estándares OGC
Paradigma: cada capa de información puede ser mantenida y publicada por su productor y consumida por múltiples clientes utilizando los Estándares OGC.
Estándares OGC
WMS REQUEST1
CLIENTE:
QGIS, ArcGIS, página web/ mashup (OpenLayers, LeafletJS)
SERVIDOR1
WFS REQUEST2
SERVIDOR2
WMS REQUEST3
SERVIDOR3
Web Map Service (WMS)
WMS proporciona una interfaz estándar para solicitar una imagen de mapa geoespacial. El beneficio de esto es que los clientes WMS pueden solicitar imágenes de múltiples servidores WMS y luego combinarlas en una sola vista para el usuario. El estándar garantiza que todas estas imágenes pueden superponerse entre sí como se verían en la realidad.
Parámetros específicos
de GeoServer
Parámetros específicos
de GeoServer
CQL_FILTER
https://docs.geoserver.org/latest/en/user/tutorials/cql/cql_tutorial.html
Prevsualización de datos: CQL_FILTER
Estándares OGC
Metadatos importantes para interoperabilidad!

Estándares OGC
Metadatos importantes para interoperabilidad!
1.1 Repaso a la configuración
Instalando Geoserver
Instalando Geoserver
Java 17 - GeoServer 2.22.x and above (OpenJDK tested, experimental only)
Java 11 - GeoServer 2.15.x and above (OpenJDK tested)
Java 8 - GeoServer 2.9.x to GeoServer 2.22.x (OpenJDK and Oracle JRE tested)
Java 7 - GeoServer 2.6.x to GeoServer 2.8.x (OpenJDK and Oracle JRE tested)
Java 6 - GeoServer 2.3.x to GeoServer 2.5.x (Oracle JRE tested)
Java 5 - GeoServer 2.2.x and earlier (Sun JRE tested)

Instalando Geoserver
Running in a production environment:
https://docs.geoserver.org/latest/en/user/production/index.html#production
Instalando Geoserver

Instalando Geoserver

docker pull oscarfonts/geoserver
docker run -d -p 8080:8080 -v /path/to/local/data_dir:/var/local/geoserver
oscarfonts/geoserverInstalando Geoserver

Balanceo de carga

N1
N2
N3
N4
Log file
GEOSERVER_DATA_DIR/logging.xml
logs/geoserver.log
User Administration Interface
Log file
Extensiones
1.2 Publicación de shapefile
Ubicación del data directory
Standalone platform Default/typical location
| Windows | C:\Program Files (x86)\GeoServer\data_dir |
| Mac OS X | /Applications/GeoServer.app/Contents/Resources/Java/data_dir |
| Linux (Tomcat) | /var/lib/tomcat7/webapps/geoserver/data |
Estructura del data directory
Data directory
Todo se almacena en el data directory. Si:
- Rutas relativas
- Archivos en la subcarpeta 'data'
=> PORTABILIDAD!
Workspaces, stores, layers
Workspace 1
Data Store A
Data Store B
Layer A1
Layer A2
Layer A3
Layer B1
Layer B2
Espacios de trabajo, almacenes de datos, capas
Espacio de trabajo 1
Almacén A
Almacén B
Capa A1
Capa A2
Capa A3
Capa B1
Capa B2
Publicación de shapefile
- Subir el archivo al servidor
- Descomprimir y comprobar permisos
- Publicar con User Administration Interface
Publicación de shapefile
Formatos de salida
Ir a Previsualización de capas y comprobar los siguientes formatos (Otros formatos) de la capa seleccionada:
- Openlayers
- GIF
- GeoTiff
- JPEG
- KML
Proyecciones
Qué proyecciones estaran disponibles para las capas que hemos subido?
Ejercicio: Publicación de shapefile
1) crear espacio de trabajo 'tu_nombre'
2) Publicar un shapefile en el espacio de trabajo
https://amb.geomatico.es/geoserver
User: admin
Pwd: ---
Ejercicio: Publicación de carpeta de shapefiles
Publicar una carpeta de shapefile en el Espacio de trabajo 'formacion'
Crear un grupo de capas
1.3 Simbolización con SLD
¿Qué es SLD?
Estilos

Estilos
Editor de estilos

Simbolización básica de una capa de puntos
<?xml version="1.0" encoding="ISO-8859-1"?>
<StyledLayerDescriptor version="1.0.0"
xsi:schemaLocation="http://www.opengis.net/sld StyledLayerDescriptor.xsd"
xmlns="http://www.opengis.net/sld"
xmlns:ogc="http://www.opengis.net/ogc"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<!-- a named layer is the basic building block of an sld document -->
<NamedLayer>
<Name>Default Point</Name>
<UserStyle>
<!-- they have names, titles and abstracts -->
<Title>Red Square point</Title>
<Abstract>A sample style that just prints out a red square</Abstract>
<!-- FeatureTypeStyles describe how to render different features -->
<!-- a feature type for points -->
<FeatureTypeStyle>
<Rule>
<PointSymbolizer>
<Graphic>
<Mark>
<WellKnownName>circle</WellKnownName>
<Fill>
<CssParameter name="fill">#FF0000</CssParameter>
</Fill>
<Stroke>
<CssParameter name="stroke">#000000</CssParameter>
<CssParameter name="stroke-width">2</CssParameter>
</Stroke>
</Mark>
<Size>6</Size>
</Graphic>
</PointSymbolizer>
</Rule>
</FeatureTypeStyle>
</UserStyle>
</NamedLayer>
</StyledLayerDescriptor>
Simbolización básica de una capa de líneas
<?xml version="1.0" encoding="ISO-8859-1"?>
<StyledLayerDescriptor version="1.0.0"
xsi:schemaLocation="http://www.opengis.net/sld StyledLayerDescriptor.xsd"
xmlns="http://www.opengis.net/sld"
xmlns:ogc="http://www.opengis.net/ogc"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<!-- a named layer is the basic building block of an sld document -->
<NamedLayer>
<Name>Default Line</Name>
<UserStyle>
<!-- they have names, titles and abstracts -->
<Title>BRed Line</Title>
<Abstract>A sample style that just prints out a blue line</Abstract>
<!-- FeatureTypeStyles describe how to render different features -->
<!-- a feature type for lines -->
<FeatureTypeStyle>
<Rule>
<LineSymbolizer>
<Stroke>
<CssParameter name="stroke">#FF0000</CssParameter>
<CssParameter name="stroke-width">3</CssParameter>
<CssParameter name="stroke-dasharray">5 2</CssParameter>
</Stroke>
</LineSymbolizer>
</Rule>
</FeatureTypeStyle>
</UserStyle>
</NamedLayer>
</StyledLayerDescriptor> Simbolización básica de una capa de polígonos
<FeatureTypeStyle>
<Rule>
<PolygonSymbolizer>
<Fill>
<CssParameter name="fill">#000080</CssParameter>
</Fill>
<Stroke>
<CssParameter name="stroke">#FFFFFF</CssParameter>
<CssParameter name="stroke-width">2</CssParameter>
</Stroke>
</PolygonSymbolizer>
</Rule>
</FeatureTypeStyle>Ejercicio
A partir de estilos genéricos o de SLD Cookbook:
- Línea marrón
- Punto con estrella
- Simbolizar polígonos como líneas
Documentación sobre SLD:
SLD Cookbook
Documentación sobre SLD:
SLD Reference
Etiquetado
Filtrado
Exportando SLD desde QGIS
Demo
Style:
- Crear estilo con etiquetas de estaciones de metro
Ejercicios categorización
- Crear estilo con lineas de metro con un color cada una
- Crear estilo de municipios de Catalunya coloreados por provincias
CSS: una alternativa
1.4 Publicación de
una tabla PostGIS
¿Qué es PostGIS?

¿Qué es PostGIS?
A spatial database is a database that is optimized for storing and querying data that represents objects defined in a geometric space. Most spatial databases allow the representation of simple geometric objects such as points, lines and polygons. Some spatial databases handle more complex structures such as 3D objects, topological coverages, linear networks, and TINs. While typical databases have developed to manage various numeric and character types of data, such databases require additional functionality to process spatial data types efficiently, and developers have often added geometry or feature data types.
Conectar a PostGIS desde QGIS
- Host: amb.geomatico.es
- Service:
- Database: formacion
- Port: 5432
- User: user_formacion
- Pwd: amb2025
Crear almacén de datos PostGIS desde GS
- Host: postgis
- Database: formacion
- Port: 5432
- User: geoserver
- Pwd: geoserver
Conectar via pgAdmin

pg_hba.conf
# TYPE DATABASE USER ADDRESS METHOD
local all postgres ident
local all all md5
#only localhost
host all all 127.0.0.1/32 md5
#everything open
host all all 0.0.0.0/32 md5
#open for a specific BD
host bd_abierta all 0.0.0.0/32 md5Crear base de datos
CREATE DATABASE nyc;
CREATE EXTENSION postgis;Herramientas para importar datos
- ogr2ogr
- shp2pgsql
- QGIS, Navicat ...
shp2pgsql (old way)
cd C:\Program Files\PostgreSQL \9.5\bin
shp2pgsql -I -s 26918 C:\Documents\postgis-workshop\data\roads.shp
roads | psql -U postgres -d <DBNAME>Subir capas a PostGIS
desde QGIS

Importar
Que cada uno importe a PostGIS una capa SHP
Crear un almacén de datos PostGIS (data store)
PostGIS: funciones
PostGIS triggers
PostgreSQL trigger can be specified to fire
- Before the operation is attempted on a row (before constraints are checked and the INSERT, UPDATE or DELETE is attempted)
- After the operation has completed (after constraints are checked and the INSERT, UPDATE, or DELETE has completed)
- Instead of the operation (in the case of inserts, updates or deletes on a view)
PostGIS triggers
PostgreSQL Triggers are database callback functions, which are automatically performed/invoked when a specified database event occurs.
1.5 Publicación de
datos raster
Formatos raster

Extensión GDAL

¿Qué es GDAL?
GDAL is a translator library for raster and vector geospatial data formats that is released under an X/MIT style Open Source License by the Open Source Geospatial Foundation.
Extensión GDAL
Instalando extensión GDAL
cd /var/lib/tomcat8/webapps/geoserver/WEB-INF/lib/
sudo wget https://sourceforge.net/projects/geoserver/files/GeoServer/2.14.2/extensions/geoserver-2.14.2-gdal-plugin.zip
sudo unzip geoserver-2.14.2-gdal-plugin.zip
rm *.txt *.TXT *.zip
chown tomcat8:tomcat8 *.jarInstalando librerías
nativas GDAL
cd /usr/local/geoserver/
mkdir gdal
cd gdal
wget http://demo.geo-solutions.it/share/github/imageio-ext/releases/1.1.X/1.1.8/gdal/gdal-data.zip
unzip gdal-data.zip
mkdir lib
cd lib
wget https://demo.geo-solutions.it/share/github/imageio-ext/releases/native/gdal/1.9.2/linux/gdal192-Ubuntu12-gcc4.6.3-x86_64.tar.gz
tar -xvf gdal192-Ubuntu12-gcc4.6.3-x86_64.tar.gzFormatos GDAL
- DTED, Military Elevation Data (.dt0, .dt1, .dt2): http://www.gdal.org/frmt_dted.html
- EHdr, ESRI .hdr Labelled: <http://www.gdal.org/frmt_various.html#EHdr>
- ENVI, ENVI .hdr Labelled Raster: <http://www.gdal.org/frmt_various.html#ENVI>
- HFA, Erdas Imagine (.img): <http://www.gdal.org/frmt_hfa.html>
- JP2MrSID, JPEG2000 (.jp2, .j2k): <http://www.gdal.org/frmt_jp2mrsid.html>
- MrSID, Multi-resolution Seamless Image Database: <http://www.gdal.org/frmt_mrsid.html>
- NITF: <http://www.gdal.org/frmt_nitf.html>
- ECW, ERDAS Compressed Wavelets (.ecw): <http://www.gdal.org/frmt_ecw.html>
- JP2ECW, JPEG2000 (.jp2, .j2k): http://www.gdal.org/frmt_jp2ecw.html
- AIG, Arc/Info Binary Grid: <http://www.gdal.org/frmt_various.html#AIG>
- JP2KAK, JPEG2000 (.jp2, .j2k): <http://www.gdal.org/frmt_jp2kak.html>
Publicación de un
GeoTiff RGB
1. Subir archivo .tiff
2. Crear almacén de datos en Geoserver
3. Publicar capa
Publicación de un
NDVI GeoTiff
1. Subir archivo rgb.tiff
2. Crear almacén de datos en Geoserver
3. Simbolizar (SLD o vía QGIS)
4. Publicar capa
Índice de vegetación de diferencia normalizada
Publicación de un
Mosaic GeoTiff
Ejemplo capa: irrilleida
Consejos trabajando con raster
- GeoTiff raramente va muy lento
- No reproyectar: mismo EPSG nativo que el utilizado
- Generar pirámides/overviews (GDAL)
- Usar cache (GeoWebCache)
Optimización con GDAL
o QGIS
Crear overviews (pyramids)
Ex: gdaladdo -r average abc.tif 2 4 8 16

Mejor consejo para rasters
Si es posible, crear cache con GeoWebCache!
1.6 Cómo progresar
con GeoServer
Documentación oficial
Manual de uso
Extensiones
Listas de correo
Reportar bugs
Seguimiento de issues
Ejercicio final
- Choose 2-3 layers from your computer or download 2-3 layers from CNIG (use .shp or .tiff, not ECW)
- Publish at local Geoserver (http://localhost:8080/geoserver)
- Style via SLD (labels, filtering)
- Build a Leaflet web client that consumes the layers via WMS
- Cache the first levels of zoom of big layers with GeoWebCache
Gracias!


Geoserver AMB - dia 1
By geomatico
Geoserver AMB - dia 1
- 83