1.1 Introducción
¿Qué es un servidor de mapas?
Estándares OGC
Open Source: ventajas y desventajas
Arquitectura
Repaso a la configuración
1.2 Publicación de shapefile
Estructura del GEOSERVER_DATA_DIR
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 básica 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 otros formatos
Como subir capas a PostGIS desde QGIS
Creación de un almacén de trabajo PostGIS
Publicación de datos raster
1.5 Uso del estándar WMS
Contenido de un documento GetCapabilities
Parámetros estándar de la operación GetMap
Formatos de respuesta y sus usos
Consumo desde QGIS y desde un visor web
Otros estándares OGC: WFS, WMTS, WCS ...
Geoserver
PostgreSQL/PostGIS
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
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
Think free as in free speech, not free beer
R.Stallman
Free / Open source software
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.
Diseñado para la interoperabilidad, publica datos de diversas fuentes utilizando estándares abiertos.
GeoServer serves data using standard protocols established by the Open Geospatial Consortium:
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
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
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. Entonces se tiene un árbol de trozos de información
<?xml version="1.0" encoding="UTF-8" ?>
<Edit_Mensaje>
<Mensaje>
<Remitente>
<Nombre>Nombre del remitente</Nombre>
<Mail> Correo del remitente </Mail>
</Remitente>
<Destinatario>
<Nombre>Nombre del destinatario</Nombre>
<Mail>Correo del destinatario</Mail>
</Destinatario>
<Texto>
<Asunto>
Este es mi documento con una estructura muy sencilla
no contiene atributos ni entidades...
</Asunto>
<Parrafo>
Este es mi documento con una estructura muy sencilla
no contiene atributos ni entidades...
</Parrafo>
</Texto>
</Mensaje>
</Edit_Mensaje>
Metadatos importantes para interoperabilidad!
Metadatos importantes para interoperabilidad!
Jetty (development):
https://docs.geoserver.org/stable/en/user/installation/win_installer.html
Tomcat (production, WAR): https://docs.geoserver.org/stable/en/user/installation/war.html
docker pull oscarfonts/geoserver
docker run -d -p 8080:8080 -v /path/to/local/data_dir:/var/local/geoserver
oscarfonts/geoserver
Balanceo de carga
N1
N2
N3
N4
GEOSERVER_DATA_DIR/logging.xml
logs/geoserver.log
User Administration Interface
Standalone platform Default/typical location
Windows (except XP) | C:\Program Files (x86)\GeoServer 2.16.x\data_dir |
Windows XP | C:Program Files\GeoServer 2.16.x\data_dir |
Mac OS X | /Applications/GeoServer.app/Contents/Resources/Java/data_dir |
Linux (Tomcat) | /var/lib/tomcat7/webapps/geoserver/data |
Todo se almacena en el data directory. Si:
=> PORTABILIDAD!
#uploading with SSH
scp local_file user@remote_host:remote_file
#example
scp aliseda.zip root@ide2.dip-caceres.geomati.co:/opt/ide_caceres/data/geoserver
#check permissions
ls -l
chmod 644 /tmp/myfile.zip
Workspace 1
Data Store A
Data Store B
Layer A1
Layer A2
Layer A3
Layer B1
Layer B2
Espacio de trabajo 1
Almacén A
Almacén B
Capa A1
Capa A2
Capa A3
Capa B1
Capa B2
Ir a Previsualización de capas y comprobar los siguientes formatos (Otros formatos) de la capa seleccionada:
Qué proyecciones estaran disponibles para las capas que hemos subido?
Publicar una capa en el Espacio de trabajo 'formacion'
Publicar una carpeta de shapefile en el Espacio de trabajo 'formacion'
<?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>
<?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>
<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>
Style:
Style:
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.
# 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
CREATE DATABASE nyc;
CREATE EXTENSION postgis;
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>
Que cada uno importe a PostGIS una capa SHP de Aliseda
1) Todos los abrevaderos de un municipio
2) Todos los abrevaderos a menos de 10kms de lon:-5.71 lat:39.79
Pista: usar ST_Distance o ST_Within
SELECT * FROM provincia.red_distr_abrevadero WHERE cod_mun='091'
SELECT *
FROM provincia.red_distr_abrevadero
WHERE ST_DWithin(
geom,
ST_Transform(ST_GeomFromText('POINT(-5.72 39.79)', 4326), 25830), 10000
);
PostgreSQL trigger can be specified to fire
PostgreSQL Triggers are database callback functions, which are automatically performed/invoked when a specified database event occurs.
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.
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
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
1. Subir archivo .tiff
2. Crear almacén de datos en Geoserver
3. Publicar capa
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
Ejemplo capa: cabu
Crear overviews (pyramids)
Ex: gdaladdo -r average abc.tif 2 4 8 16
Si es posible, crear cache con GeoWebCache!
Diseñado para la interoperabilidad, publica datos de diversas fuentes utilizando estándares abiertos.
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
REQUEST (GetMap, GetCapabilities ...)
RESPONSE (image/png, application/json, ...)
CLIENTE:
QGIS, ArcGIS, cliente web (OpenLayers, LeafletJS)
SERVIDOR:
GeoServer, MapServer, QGISServer, ...
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.
WMS REQUEST1
CLIENTE:
QGIS, ArcGIS, página web/ mashup (OpenLayers, LeafletJS)
SERVIDOR1
WFS REQUEST2
SERVIDOR2
WMS REQUEST3
SERVIDOR3
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.
https://volaya.github.io/libro-sig/chapters/IDE.html
Del libro "Sistemas de Información Geográfica" de Víctor Olaya https://volaya.github.io/libro-sig
Las IDE surgen para coordinar la producción cartográfica a nivel global y su uso por todo tipo de usuarios. No obstante, no resulta práctico ni organizativamente viable gestionar tal cantidad de trabajo e información a un único nivel, siendo necesario delegar en distintos niveles y establecer una estructura organizativa para distribuir las responsabilidades y tareas. Esto da lugar a una estructura en forma de red en la que se distinguen una serie de nodos interconectados, cada uno de los cuales lo administra un determinado organismo responsable. Las relaciones existentes dependerán de la posición y nivel del nodo en cuestión, así como el tipo de organismo responsable de este.
WMS requests can perform the following operations:
Operation | Description |
Exceptions | If an exception occur |
GetCapabilities | Retrieves metadata about the service, including supported operations and parameters, and a list of the available layers |
GetMap | Retrieves a map image for a specified area and content |
GetFeatureInfo(optional) | Retrieves the underlying data, including geometry and attribute values, for a pixel location on a map |
DescribeLayer(optional) | Indicates the WFS or WCS to retrieve additional information about the layer. |
GetLegendGraphic(optional) |
(Previsualización de capas)
https://docs.qgis.org/testing/en/docs/user_manual/working_with_ogc/ogc_client_support.html
GetCapabilities -> GetMap
Hacer mapa QGIS map con 3 capas WMS
Make a Leaflet map with 2 WMS layers
Defined in Style Editor. Make a custom legend (a static image) for subway_stations
Get all subway stations less than 2kms from lon:-73.85 lat:40.75 using CQL_FILTER
(localhost, LayerPreview)
WMS requests can perform the following operations:
GetCapabilities | Generates a metadata document describing a WFS service provided by server as well as valid WFS operations and parameters |
DescribeFeatureType | Returns a description of feature types supported by a WFS service |
GetFeature | Returns a selection of features from a data source including geometry and attribute values |
LockFeature | Prevents a feature from being edited through a persistent feature lock |
Transaction | Edits existing feature types by creating, updating, and deleting |
WMS requests can perform the following operations:
Operation | Description |
Exceptions | If an exception occur |
GetCapabilities | Retrieves metadata about the service, including supported operations and parameters, and a list of the available layers |
GetMap | Retrieves a map image for a specified area and content |
GetFeatureInfo(optional) | Retrieves the underlying data, including geometry and attribute values, for a pixel location on a map |
DescribeLayer(optional) | Indicates the WFS or WCS to retrieve additional information about the layer. |
GetLegendGraphic(optional) |
WFS descarga todos los datos: Nos conviene?
Las capas WFS son preferibles a las capas WMS si se necesita acceso directo a los atributos y geometrías de las capas. Sin embargo, teniendo en cuenta la cantidad de datos que deben descargarse (lo que genera problemas de velocidad y también escasez de servidores WFS públicos), no siempre es posible utilizar un WFS en lugar de un WMS.
Hacer un mapa QGIS con 1 capa WFS
y 1 capa WMS
GetFeature
Get nyc_neighbourhood that intersects with point lon:-73.85 lat:40.55 using WFS_Intersects
El servicio básico de Web Feature Service permite consultar y descargar elementos. El servicio transaccional Web Feature Service (WFS-T) permite además creación, eliminación y actualización de elementos.
GeoWebCache es un servidor de teselas. Se ejecuta como un proxy entre un cliente de mapas y un servidor de mapas, almacenando teselas a medida que se piden, eliminando solicitudes redundantes y ahorrando así grandes cantidades de tiempo de procesamiento.
No podemos almacenar todas las solicitudes de WMS GetMap, ¡la combinación de BBOX, WIDTH, HEIGHT y capas es enorme!
=> necesitamos TESELAS
Web Administration Interface
¿Qué formato usar?
La integración directa permite que las solicitudes WMS atendidas a través de GeoServer se almacenen en caché como si GeoWebCache las recibiera y procesara.
Con la integración directa, el almacenamiento en caché de teselas se habilita para todas las solicitudes WMS estándar que contienen el parámetro tiled=true y se ajustan a todos los parámetros necesarios.
Configurar teselas para nyc_census_blocks for EPSG:3857 (aka EPSG:900913).
Warning: keep ZOOM LEVEL below 15 ... it's just training!
geoserver_data_dir/gwc
Standalone platform Default/typical location
Windows (except XP) | C:\Program Files (x86)\GeoServer 2.16.x\data_dir |
Windows XP | C:Program Files\GeoServer 2.16.x\data_dir |
Mac OS X | /Applications/GeoServer.app/Contents/Resources/Java/data_dir |
Linux (Tomcat) | /var/lib/tomcat7/webapps/geoserver/data |
Instead of drawing on-demand
we get a few files from the server
Make a Leaflet map with 2 WMS layers and check it's cached with GeoWebCache header responses (HIT and MISS)
Previsualización en Tile Caching->Tile Layers
Las soluciones comunes del mercado masivo siguen implícitamente este perfil utilizando Google-Mercator CRS, un topLeftCorner común, el mismo conjunto de TileMatrices y una plantilla de URL fija.
QUIÉN DEFINIÓ ESTE ESTÁNDAR?
Make a Leaflet map with 1 local WMS layer and a basemap from