Introducción a GeoServer

 

 

marti.pericay@geomatico.es
oscar.fonts@geomatico.es

www.geomatico.es

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?

GeoServer es un servidor open source para compartir datos geoespaciales.

 

http://www.geoserver.org

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

Instalando Geoserver

Instalando Geoserver

docker pull oscarfonts/geoserver

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

Instalando 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

  1. Subir el archivo al servidor
  2. Descomprimir y comprobar permisos
  3. 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
  • PDF

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              md5

Crear 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 *.jar

Instalando 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.gz

Formatos GDAL

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

  1. GeoTiff raramente va muy lento
  2. No reproyectar: mismo EPSG nativo que el utilizado
  3. Generar pirámides/overviews (GDAL)
  4. 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

  1. Choose 2-3 layers from your computer or download 2-3 layers from CNIG (use .shp or .tiff, not ECW)
  2. Publish at local Geoserver (http://localhost:8080/geoserver)
  3. Style via SLD (labels, filtering)
  4. Build a Leaflet web client that consumes the layers via WMS
  5. Cache the first levels of zoom of big layers with GeoWebCache

Gracias!

 

 

marti.pericay@geomatico.es

www.geomatico.es

Geoserver AMB - dia 1

By geomatico

Geoserver AMB - dia 1

  • 83