Etiquetas

GeoServer(Usando la interfaz de administración web)




Descripción general

GeoServer es un servidor de software de código abierto escrito en Java que permite a los usuarios compartir y editar datos geoespaciales.Diseñado para la interoperabilidad, publica datos de cualquier fuente importante de datos espaciales utilizando estándares abiertos.

Al ser un proyecto impulsado por la comunidad, GeoServer es desarrollado, probado y respaldado por un grupo diverso de personas y organizaciones de todo el mundo.


Conceptos básicos de la interfaz

Esta sección presentará los conceptos básicos de la interfaz de administración web (generalmente abreviada como "administrador web").

Pagina de bienvenida

Para la mayoría de las instalaciones, GeoServer iniciará un servidor web en localhost en el puerto 8080, accesible en la siguiente URL:

http://localhost:8080/geoserver/web

Nota

Esta URL depende de su instalación de GeoServer.Cuando utilice la instalación WAR, por ejemplo, la URL dependerá de la configuración de su contenedor.

Cuando esté configurado correctamente, se abrirá una página de bienvenida en su navegador.


Pagina de bienvenida

La página de bienvenida contiene enlaces a varias áreas de la configuración de GeoServer.LasecciónAcerca de GeoServer en el menúServidorproporciona enlaces externos a la documentación, la página de inicio y el rastreador de errores de GeoServer.La página también proporciona acceso de inicio de sesión a la consola del geoservidor.Esta medida de seguridad evita que usuarios no autorizados realicen cambios en la configuración de su GeoServer.El nombre de usuario y la contraseña predeterminados sonadminygeoserver.Estos sólo se pueden cambiar editando elsecurity/users.propertiesarchivo en elDirectorio de datos del GeoServer.


Acceso

Independientemente del acceso autorizado, el menú de administración web enlaza con la partede demostraciónyvista previa de capasde la consola.La páginaDemoscontiene enlaces a varias páginas de información, mientras que la páginaVista previa de capaproporciona datos espaciales en varios formatos de salida.

Cuando inicie sesión, se presentarán opciones adicionales.


Opciones adicionales al iniciar sesión

También se puede acceder a las especificaciones de configuración del Geoserver Web Coverage Service (WCS), Web Feature Service (WFS) y Web Map Service (WMS) desde esta página de bienvenida.Para más información, consulte el apartado deServicios.

Listar páginas

Algunas páginas de administración web muestran vistas de lista de elementos de tipo de datos de configuración disponibles en la instancia de GeoServer.La página muestra enlaces a los artículos y, cuando corresponda, también a sus artículos principales.Para facilitar el trabajo con grandes conjuntos de elementos, las vistas de lista permiten ordenar y buscar en todos los elementos del tipo de datos.

En el siguiente ejemplo, la páginaCapasmuestra una lista de capas junto con enlaces a susTiendasyEspacios de trabajoprincipales .


Página de lista de capas

Clasificación

Para ordenar una columna alfabéticamente, haga clic en el encabezado de la columna.


Columnas sin clasificar (izquierda) y ordenadas (derecha)

buscando

La búsqueda se puede utilizar para filtrar la cantidad de elementos mostrados.Esto resulta útil para trabajar con tipos de datos que contienen una gran cantidad de elementos.

Para buscar elementos de tipo de datos, ingrese la cadena de búsqueda en el cuadro de búsqueda y haga clic en Entrar.GeoServer buscará el tipo de datos para elementos que coincidan con su consulta y mostrará una vista de lista que muestra los resultados de la búsqueda.


Resultados de búsqueda para la consulta "arriba" en la página del espacio de trabajo


Servidor

La sección Servidor de laInterfaz de administración webproporciona acceso a las herramientas de configuración y diagnóstico de GeoServer, que pueden resultar útiles para la depuración.

Estado

Descripciones de los campos de estado

Descripciones de campos de marcas de tiempo

Información del contacto

Campos de información de contacto

Ajustes globales

Mensajes detallados

Informes detallados de excepciones

Habilitar servicios globales

Manejar problemas de datos y configuración.

Número de decimales

Conjunto de caracteres

URL base de proxy

Perfil de registro

Iniciar sesión en StdOut

Ubicación del registro

Búfer de registro de solicitudes XML POST

Entidades XML

Tamaño de caché del tipo de característica

Bloqueo de archivos

REST Desactivar Recurso no encontrado Registro

Ruta del directorio raíz de REST PathMapper

Configuración de acceso a la cobertura

Configuración del ejecutor del grupo de subprocesos

Configuración de ImagenIO

jai

Memoria y mosaico

JAI-EXT

Configuración DESCANSO



Estado

La página Estado del servidor proporciona un resumen de los parámetros de configuración del servidor y el estado de tiempo de ejecución.Proporciona una herramienta de diagnóstico útil en un entorno de prueba.


Página de estado

Descripciones de los campos de estado

La siguiente tabla describe los indicadores de estado actuales.

Opción

Descripción

Cerraduras

Un WFS tiene la capacidad de bloquear funciones para evitar que más de una persona actualice la función a la vez.Si los datos están bloqueados, las ediciones se pueden realizar con un único editor WFS.Cuando se publican las ediciones, los bloqueos se liberan y otros editores de WFS pueden editar las funciones.Un cero en el campo de bloqueos significa que todos los bloqueos están liberados.Si los bloqueos no son cero, al presionar "bloqueos libres" se liberan todos los bloqueos de funciones actualmente ayudados por el servidor y se actualiza el valor del campo a cero.

Conexiones

Se refiere a la cantidad de almacenes de vectores, en el caso anterior 4, que pudieron conectarse.

Uso de memoria

La cantidad de memoria actual utilizada por GeoServer.En el ejemplo anterior, se utilizan 55,32 MB de memoria.Al hacer clic en el botón "Liberar memoria", se limpia la memoria marcada para su eliminación ejecutando el recolector de basura.

Versión JVM

Indica qué versión de JVM (máquina virtual Java) se ha utilizado para alimentar el servidor.Aquí la JVM es Apple Inc.: 1.5.0_16.

JAI nativo

GeoServer utiliza el marcoJava Advanced Imaging(JAI) para la representación de imágenes y la manipulación de cobertura.Cuando se instala correctamente (verdadero), JAI hace que el rendimiento de WCS y WMS sea más rápido y eficiente.

Imagen JAI nativaIO

GeoServer utiliza el marcoJAI Image IO(JAI) para la carga de datos ráster y codificación de imágenes.Cuando se instala correctamente (verdadero), JAI Image I/O hace que el rendimiento de WCS y WMS sea más rápido y eficiente.

Memoria máxima JAI

Expresa en bytes la cantidad de memoria disponible para la caché de mosaicos, en este caso 33325056 bytes.El valor de memoria máxima de JAI debe estar entre 0,0 y {0}

Uso de la memoria JAI

La cantidad de memoria en tiempo de ejecución se utiliza para la caché de mosaicos.Al hacer clic en el botón “Liberar memoria”, se borra la memoria JAI disponible ejecutando el vaciado de caché de mosaicos.

Umbral de memoria JAI

Se refiere al porcentaje, por ejemplo, 75, de memoria caché que se conservará durante la eliminación del mosaico.El valor del umbral de memoria JAI debe estar entre 0,0 y 100.

Número de hilos de baldosas JAI

El número de subprocesos paralelos utilizados por el programador para manejar mosaicos.

Prioridad del hilo del mosaico JAI

Programa la prioridad del programador de mosaicos global.El valor de prioridad predeterminado es 5 y debe estar entre 1 y 10.

Secuencia de actualización

Se refiere al número de veces (60) que se ha modificado la configuración del servidor.

Caché de recursos

GeoServer no almacena datos en caché, pero también almacena en caché conexiones a tiendas, definiciones de tipos de características, gráficos externos, definiciones de fuentes y definiciones de CRS.El botón "Borrar" obliga a vaciar esos cachés y hace que GeoServer vuelva a abrir los almacenes y vuelva a leer la información de imágenes y fuentes, así como las definiciones CRS personalizadas almacenadas en${GEOSERVER_DATA_DIR}/user_projections/epsg.properties.

Configuración y catálogo

GeoServer mantiene en memoria todos sus datos de configuración.Si por alguna razón la información de configuración se ha vuelto obsoleta (por ejemplo, una utilidad externa ha modificado la configuración en el disco), el botón "Recargar" obligará a GeoServer a recargar toda su configuración desde el disco.

Descripciones de campos de marcas de tiempo

Opción

Descripción

GeoServidor

Actualmente un marcador de posición.Se refiere al día y hora de la instalación actual de GeoServer.

Configuración

Actualmente un marcador de posición.Se refiere al día y hora del último cambio de configuración.

XML

Actualmente un marcador de posición.




Información del contacto

La Información de Contacto se utiliza en el documento de Capacidades del servidor WMS y es de acceso público.Por favor complete este formulario con la información relevante.


Pagina de contacto

Campos de información de contacto

Campo

Descripción

Contacto

Información de contacto del webmaster

Organización

Nombre de la organización a la que está afiliado el contacto.

Posición

Posición del contacto dentro de su organización

Tipo de dirección

Tipo de dirección especificada, como postal

DIRECCIÓN

Dirección real

Ciudad

Ciudad de la dirección

Estado

Estado o provincia de la dirección

Código postal

Código postal de la dirección

País

País de la dirección

Teléfono

Teléfono de contacto

Fax

Número de fax de contacto

Correo electrónico

Correo electrónico de contacto

Ajustes globales

La página Configuración global configura la mensajería, el registro, los caracteres y el proxy para todo el servidor.


Página de configuración global

Mensajes detallados

Los mensajes detallados, cuando están habilitados, harán que GeoServer devuelva XML con nuevas líneas y sangrías.Debido a que dichas respuestas XML contienen una mayor cantidad de datos y, a su vez, requieren una mayor cantidad de ancho de banda, se recomienda utilizar esta opción sólo con fines de prueba.

Informes detallados de excepciones

Verbose Exception Reporting devuelve excepciones de servicio con seguimientos completos de la pila de Java.Escribe en el archivo de registro de GeoServer y ofrece una de las opciones de configuración más útiles para la depuración.Cuando está deshabilitado, GeoServer devuelve mensajes de error de una sola línea.

Habilitar servicios globales

Cuando está habilitado, permite el acceso tanto a servicios globales comoa servicios virtuales.Cuando esté deshabilitado, los clientes solo podrán acceder a servicios virtuales.Deshabilitar es útil si GeoServer aloja una gran cantidad de capas y desea asegurarse de que el cliente siempre solicite listas de capas limitadas.Deshabilitarlo también es útil por razones de seguridad.

Manejar problemas de datos y configuración.

Esta configuración determina cómo responderá GeoServer cuando una capa se vuelva inaccesible por algún motivo.De forma predeterminada, cuando una capa tiene un error (por ejemplo, cuando se elimina el estilo predeterminado de la capa), se imprime una excepción de servicio como parte del documento de capacidades, lo que invalida el documento.Para los clientes que dependen de un documento de capacidades válido, esto puede hacer que un GeoServer parezca estar "fuera de línea".

Es posible que un administrador prefiera configurar GeoServer para que simplemente omita la capa problemática del documento de capacidades, conservando así la integridad del documento y permitiendo a los clientes conectarse a otras capas publicadas.

Hay dos opciones:

OGC_EXCEPTION_REPORT: este es el comportamiento predeterminado.Cualquier error de capa aparecerá como Excepciones de servicio en el documento de capacidades, lo que lo invalidará.

SKIP_MISCONFIGURED_LAYERS: Con esta configuración, GeoServer elegirá simplemente no describir la capa problemática en absoluto, eliminándola del documento de capacidades y preservando la integridad del resto del documento.Tenga en cuenta que tener una capa "desaparecida" puede provocar otros errores en la funcionalidad del cliente.

Número de decimales

Se refiere al número de decimales devueltos en una respuesta GetFeature.También es útil para optimizar el ancho de banda.El valor predeterminado es8.

Conjunto de caracteres

Especifica la codificación de caracteres global que se utilizará en las respuestas XML.El valor predeterminado esUTF-8, recomendado para la mayoría de los usuarios.Una lista completa de los conjuntos de caracteres admitidos está disponible en el Registro de conjuntos de caracteres de la IANA.

URL base de proxy

GeoServer puede hacer que los documentos de capacidades informen un proxy correctamente.El campo URL base de proxy es la URL base que se ve más allá de un proxy inverso.

Perfil de registro

El perfil de registro corresponde a un archivo de configuración log4j en el directorio de datos de GeoServer.(Apachelog4jes una utilidad de registro basada en Java). De forma predeterminada, hay cinco perfiles de registro en GeoServer;Se pueden agregar perfiles personalizados adicionales editando el archivo log4j.

Hay seis niveles de registro utilizados en el propio registro.Van desde el TRACE menos grave, pasando por DEBUG, INFO, WARN, ERROR y finalmente el más grave, FATAL.Los perfiles de registro de GeoServer combinan niveles de registro con operaciones específicas del servidor.Los cinco perfiles de registro prediseñados disponibles en la página de configuración global son:

Registro predeterminado(DEFAULT_LOGGING): proporciona una buena combinación de detalles sin ser DETALLE.El registro predeterminado habilita INFO en todos los niveles de GeoTools y GeoServer, excepto ciertos paquetes (conversadores) de GeoTools que requieren WARN.

Registro de desarrollador de GeoServer(GEOSERVER_DEVELOPER_LOGGING): un perfil de registro detallado que incluye información de DEBUG en GeoServer y VFNY.Se recomienda este perfil de desarrollador para la depuración activa de GeoServer.

Registro de desarrollador de GeoTools(GEOTOOLS_DEVELOPER_LOGGING): un perfil de registro detallado que incluye información de DEBUG solo en GeoTools.Se recomienda este perfil de desarrollador para la depuración activa de GeoTools.

El registro de producción(PRODUCTION_LOGGING) es el perfil de registro mínimo, con solo WARN habilitado en todos los niveles de GeoTools y GeoServer.Con este tipo de registro a nivel de producción, sólo se escriben los problemas en los archivos de registro.

Registro detallado(VERBOSE_LOGGING): proporciona más detalles al habilitar el registro de nivel DEBUG en GeoTools, GeoServer y VFNY.

Iniciar sesión en StdOut

La salida estándar (StdOut) determina dónde escribe un programa sus datos de salida.En GeoServer, la configuración Iniciar sesión en StdOut permite iniciar sesión en el terminal de texto que inició el programa.Si está ejecutando GeoServer en un contenedor J2EE grande, es posible que no desee que los registros de todo el contenedor se llenen con información de GeoServer.Al borrar esta opción se suprimirá la mayoría de los registros de GeoServer, y solo se enviarán excepciones FATAL al registro de la consola.

Ubicación del registro

Establece la ubicación de salida escrita para los registros.Una ubicación de registro puede ser un directorio o un archivo y se puede especificar como una ruta absoluta (por ejemplo,C:\GeoServer\GeoServer.log) o relativa (por ejemplo,GeoServer.log).Las rutas relativas son relativas al directorio de datos de GeoServer.El valor predeterminado eslogs/geoserver.log.

Búfer de registro de solicitudes XML POST

En niveles de registro más detallados, GeoServer registrará el cuerpo de las solicitudes POST XML (y otros formatos).Sin embargo, solo registrará la parte inicial de la solicitud, ya que tiene que almacenar (en un buffer) todo lo que se registra para su uso en las partes de GeoServer que lo usan normalmente.Esta configuración establece el tamaño de este búfer, en caracteres.Una configuración de0deshabilitará el búfer de registro.

Entidades XML

Las solicitudes XML enviadas a GeoServer pueden incluir referencias a otros documentos XML.Dado que GeoServer procesa estos archivos, la función podría usarse para acceder a archivos en el servidor.

Esta opción solo es útil con las extensiones del esquema de la aplicación.

Tamaño de caché del tipo de característica

GeoServer puede almacenar en caché conexiones y esquemas del almacén de datos en la memoria por motivos de rendimiento.El tamaño de la caché generalmente debe ser mayor que la cantidad de tipos de funciones distintas a las que se espera que se acceda simultáneamente.Si es posible, haga que este valor sea mayor que el número total de tipos de funciones en el servidor, pero una configuración demasiado alta puede producir errores de falta de memoria.Por otro lado, un valor inferior al número total de tipos de funciones registrados puede borrar y recargar la caché de recursos con más frecuencia, lo que puede resultar costoso y, por ejemplo, retrasar las solicitudes WFS mientras tanto.El valor predeterminado para el tamaño de caché del tipo de característica es 100.

Bloqueo de archivos

Esta configuración permite controlar el tipo de bloqueo de archivos utilizado al acceder al directorio de datos de GeoServer.Esta configuración se utiliza para proteger la configuración de GeoServer contra la corrupción por parte de varias partes que editan simultáneamente.Se debe emplear el bloqueo de archivos cuando se utiliza la API REST para configurar GeoServer y se puede proteger GeoServer cuando más de un administrador realiza cambios simultáneamente.

Hay tres opciones:

Bloqueo de archivos NIO: utiliza nuevos bloqueos de archivos IO de Java adecuados para su uso en un entorno agrupado (con varios GeoServers que comparten el mismo directorio de datos).

Bloqueo en proceso: se utiliza para garantizar que los archivos de configuración individuales no puedan ser modificados por dos sesiones de administración web o REST al mismo tiempo.

Desactivar bloqueo: no se utiliza ningún bloqueo de archivos.

REST Desactivar Recurso no encontrado Registro

Este parámetro se puede utilizar para silenciar el registro de excepciones cuando se realizan operaciones REST y el recurso solicitado no está presente.Esta configuración predeterminada se puede anular agregando a una llamada REST el siguiente parámetro:quietOnNotFound=true/false.

Ruta del directorio raíz de REST PathMapper

La API RESTful utiliza este parámetro comodirectorio raízpara los archivos recién cargados, siguiendo la estructura:

${rootDirectory}/workspace/store[/<archivo>]




Configuración de acceso a la cobertura

La página Configuración de acceso a la cobertura en el menú Servidor de laInterfaz de administración webproporciona opciones de configuración para personalizar los ejecutores del grupo de subprocesos y la memoria caché de ImageIO.


Configuración de acceso a la cobertura

Configuración del ejecutor del grupo de subprocesos

El lector imageMosaic podrá cargar, en paralelo, distintos archivos que componen el mosaico mediante unThreadPoolExecutor.Todos los lectores que admiten y utilizan lecturas simultáneas comparten una instancia global de ThreadPoolExecutor.Esta sección de la página de administración de Configuración de acceso a la cobertura permite la configuración de los parámetros del Ejecutor.

Tamaño del grupo central: establece el tamaño del grupo central del ejecutor del grupo de subprocesos.Se debe especificar un número entero positivo.

Tamaño máximo del grupo: establece el tamaño máximo del grupo del ejecutor del grupo de subprocesos.Se debe especificar un número entero positivo.

Keep Alive Time: establece el tiempo que debe esperar el ejecutor antes de finalizar un subproceso inactivo en caso de que haya más subprocesos quecorePoolSize.

Tipo de cola: el servicio ejecutor utilizaBlockingQueuepara administrar las tareas enviadas.Se recomienda utilizar una colailimitadaque permita poner en cola todas las solicitudes pendientes sin límites (ilimitada).Con un tipodirecto, las solicitudes entrantes se rechazarán cuando ya existan subprocesos ocupadosde MaximumPoolSize.

Nota

Si se envía una nueva tarea a la lista de tareas a ejecutar y se están ejecutandomenos subprocesosde corePoolSize , se crea un nuevo subproceso para manejar la solicitud.Las tareas entrantes se ponen en cola en caso de que se estén ejecutandocorePoolSizeo más subprocesos.

Nota

Si una solicitud no se puede poner en cola o hay menos subprocesosde corePoolSizeen ejecución, se crea un nuevo subproceso a menos que excedael tamaño máximo de PoolSize.

Nota

Si el grupo actualmente tiene más subprocesoscorePoolSize, los subprocesos sobrantes se terminarán si han estado inactivos durante más dekeepAliveTime.

Nota

Si se envía una nueva tarea a la lista de tareas a ejecutar y hay más subprocesos quecorePoolSizepero menos queMaximumPoolSizeen ejecución, se creará un nuevo subproceso solo si la cola está llena.Esto significa que cuando se utiliza una colailimitada, nose ejecutarán más subprocesos quecorePoolSize ykeepAliveTimeno tiene influencia.

Nota

SicorePoolSizeyMaximumPoolSizeson iguales, se utiliza un grupo de subprocesos de tamaño fijo.

Configuración de ImagenIO

Las solicitudes WMS suelen producir imágenes relativamente pequeñas, mientras que las solicitudes WCS suelen tratar conjuntos de datos más grandes.Guardar la imagen en caché en la memoria antes de codificarla puede resultar útil cuando el tamaño de la imagen no es demasiado grande.Para una imagen enorme (como una producida por una gran solicitud de WCS), sería mejor almacenar en caché un archivo temporal con respecto al almacenamiento en caché en la memoria.Esta sección permite especificar un tamaño de imagen umbral para permitir que GeoServer decida si utilizarMemoryCacheImageOutputStreamoFileCacheImageOutputStreamal codificar las imágenes.

Umbral de memoria de caché de ImageIO: establece el tamaño del umbral (expresado en kilobytes) que hará que GeoServer elija entre caché de archivos o caché basado en memoria.Si el tamaño estimado de la imagen que se va a codificar es menor que el valor umbral,se utilizará unMemoryCacheImageOutputStream , lo que permitirá almacenar en caché la imagen en la memoria.Si el tamaño estimado de la imagen a codificar es mayor que el valor umbral,se utilizaráFileCacheImageOutputStream .




jai

Java Advanced Imaging(JAI) es una biblioteca de manipulación de imágenes creada por Sun Microsystems y distribuida con una licencia de código abierto.JAI Image I/O Toolsproporciona complementos de lectura, escritura y transmisión para el marco estándar Java Image I/O.En la página de configuración de JAI se pueden configurar varios parámetros de JAI, utilizados por las operaciones WMS y WCS.


Configuración de JAI

Memoria y mosaico

Cuando se admiten imágenes grandes, resulta eficaz trabajar en subconjuntos de imágenes sin cargar todo en la memoria.Un enfoque ampliamente utilizado es el mosaico, que básicamente construye un mosaico de la imagen original para que los datos de la imagen se puedan leer en partes y no en su totalidad.Dado que muy a menudo el procesamiento de un mosaico implica mosaicos circundantes, el mosaico debe ir acompañado de un mecanismo de almacenamiento en caché de mosaicos.Los siguientes parámetros JAI le permiten administrar el mecanismo de caché JAI para un rendimiento optimizado.

Capacidad de memoria: para la asignación de memoria para mosaicos, JAI proporciona una interfaz llamada TileCache.La capacidad de memoria establece el JAI TileCache global como un porcentaje del montón disponible.Un número entre 0 y 1 exclusivo.Si la capacidad de la memoria es menor que la capacidad actual, los mosaicos en el caché se vacían para lograr la configuración deseada.Si configura una gran cantidad de memoria para la caché de mosaicos, las operaciones interactivas son más rápidas, pero la caché de mosaicos se llena muy rápidamente.Si configura una cantidad baja de memoria para la caché de mosaicos, el rendimiento se degrada.

Umbral de memoria: establece el umbral de memoria JAI TileCache global.Se refiere a la cantidad fraccionaria de memoria caché que se retendrá durante la eliminación de mosaicos.El valor del umbral de memoria JAI debe estar entre 0,0 y 1,0.El umbral de memoria visible en la páginaEstado.

Tile Threads: JAI utiliza un TileScheduler para el cálculo de mosaicos.El cálculo de mosaicos puede utilizar subprocesos múltiples para mejorar el rendimiento.El parámetro Tile Threads establece TileScheduler, indicando el número de subprocesos que se utilizarán al cargar mosaicos.

Prioridad de subprocesos de mosaico: establece las prioridades de subprocesos globales del Programador de mosaicos JAI.Los valores varían de 1 (Min) a 10 (Max), con la prioridad predeterminada establecida en 5 (Normal).

Reciclaje de mosaicos: habilitar/deshabilitar el reciclaje de mosaicos de caché JAI.Si se selecciona, Tile Recycling permite a JAI reutilizar mosaicos ya cargados, lo que puede proporcionar una mejora significativa del rendimiento.

Aceleración nativa: para mejorar la velocidad de cálculo de las aplicaciones de procesamiento de imágenes, JAI viene con código Java y código nativo para muchas plataformas.Si la máquina virtual Java (JVM) encuentra el código nativo, se utilizará.Si el código nativo no está disponible, se utilizará el código Java.Como tal, el paquete JAI puede proporcionar implementaciones optimizadas para diferentes plataformas que pueden aprovechar las capacidades de cada plataforma.

Aceleración nativa JPEG:habilita/deshabilita la aceleración nativa JAI JPEG.Cuando se selecciona, habilita el código nativo JPEG, que puede acelerar el rendimiento, pero compromete la seguridad y la protección contra fallas.

Tipo de codificador PNG: proporciona una selección del codificador PNG entre el codificador propio de Java, el nativo JAI ImageIO y unobasado enPNGJ :

El codificador estándar de Java siempre está configurado en la compresión máxima.Proporciona las imágenes de salida más pequeñas, equilibradas con un alto coste de rendimiento (hasta seis veces más lento que las otras dos alternativas).

El codificador nativo ImageIO, disponible solo cuando las extensiones nativas de ImageIO están instaladas, proporcionó un mayor rendimiento, pero también generó imágenes PNG significativamente más grandes.

El codificador basado en PNGJ proporciona el mejor rendimiento y genera imágenes PNG que son ligeramente más grandes que el codificador estándar de Java.Es la opción recomendada, pero también es más nueva que las otras dos, por lo que en caso de mal comportamiento los otros dos codificadores quedan como opción para el administrador.

Aceleración nativa de mosaico: para reducir la sobrecarga de su manejo, los conjuntos de datos grandes a menudo se dividen en fragmentos más pequeños y luego se combinan para crear un mosaico de imágenes.Un ejemplo de esto son las imágenes aéreas, que normalmente comprenden miles de imágenes pequeñas de muy alta resolución.Se proporcionan implementaciones de mosaico tanto nativas como JAI.Cuando se selecciona, Mosaic Native Acceleration utiliza la implementación nativa para crear mosaicos.

Aceleración nativa Warp: también para la operación Warp se proporcionan implementaciones nativas y JAI.Si la casilla de verificación está habilitada, entonces se utiliza la operación nativa para la operación de deformación.

Es muy importante recordar que los codificadores más rápidos no necesariamente mejorarán visiblemente el rendimiento; si la carga y el procesamiento/renderizado de datos dominan el tiempo de respuesta, elegir un mejor codificador probablemente no proporcionará los beneficios esperados.

JAI-EXT

Citando lapágina del proyecto JAI-EXT,JAI-EXT es un proyecto de código abierto que tiene como objetivo reemplazar a largo plazo el proyecto JAI.

La principal diferencia entre las operacionesJAIyJAI-EXTes la compatibilidad conROIexternas yNoDatade imagen enJAI-EXT.

De forma predeterminada, las operacionesJAI-EXTestán deshabilitadas.Agregue la siguiente opción de Java al script de inicio de GeoServer y reinicie GeoServer para habilitarlos.

-Dorg.geotools.coverage.jaiext.enabled=true

Una vez hecho esto, el siguiente panel estará disponible en la parte inferior de la página de configuración de JAI.

Panel de configuración JAI/JAIEXT

Este panel se puede utilizar para elegir qué operaciones deben registrarse comoJAIoJAI-EXT.Los usuarios pueden seleccionar las operaciones y moverlas de JAI-EXT a la lista JAI o viceversa.


Selección de operaciones JAI/JAIEXT

Al hacer clic enGuardar, GeoServer reemplazará internamente las operacionesJAI/JAI-EXTy las deGeoToolsasociadas .

Advertencia

Los usuarios deben tener cuidado de que JAI-EXTno admita las bibliotecas nativas deJAI, ya queJAI-EXTes una API de Java pura



Configuración DESCANSO

La API RESTful permite crear nuevas tiendas y agregar nuevos gránulos a los mosaicos mediante la carga de archivos.De forma predeterminada, los nuevos almacenes y gránulos se guardan con la siguiente estructura de directorios:

$GEOSERVER_DATA_DIR/data/<espacio de trabajo>/<tienda>[/<archivo>]

Para cambiar eldirectorio raízde$GEOSERVER_DATA_DIR/dataa otro directorio, el usuario puede definir un parámetro llamadoruta del directorio raízdentro dela página de configuración globalyla página de configuración del espacio de trabajo.

Para evitar la contaminación entre espacios de trabajo, el camino final siempre será:

${rootDirectory}/workspace/store[/<archivo>]

La reasignación de rutas se logra utilizando la implementación predeterminada de la interfazRESTUploadPathMapper.Esta interfaz brinda la posibilidad de mapear también la posición del archivo dentro del almacén, lo que podría ser útil para recolectar archivos en un DataStore de mosaico existente.




Vista previa de capa

Esta página proporciona vistas de capas en varios formatos de salida.Se debe habilitar una capa para obtener una vista previa.

Página de vista previa de capa

Cada fila de capa consta de un tipo, nombre, título y formatos disponibles para su visualización.

Campo

Descripción


Capa ráster (cuadrícula)


Capa vectorial (característica)


grupo de capas

Nombre se refiere al Espacio de trabajo y Nombre de capa de una capa, mientras que Título se refiere a la breve descripción configurada en el panelEditar capa: Datos.En el siguiente ejemplo, nurc se refiere al espacio de trabajo, Arc_Sample se refiere al nombre de la capa y se especifica "Un campo ArcGrid de muestra" en el panel Editar datos posteriores.


Fila de vista previa de una sola capa

Formatos de salida

La página Vista previa de capa admite una variedad de formatos de salida para su uso posterior o para compartir datos.Puede obtener una vista previa de los tres tipos de capas en los formatos comunes OpenLayers y KML.De manera similar, utilizando el menú "Todos los formatos" puede obtener una vista previa de todos los tipos de capas en siete formatos de salida adicionales: AtomPub, GIF, GeoRss, JPEG, KML (comprimido), PDF, PNG, SVG y TIFF.Solo las capas vectoriales proporcionan vistas previas de salida WFS, incluido el GML común, así como los formatos CSV, GML3, GeoJSON y Shapefile.La siguiente tabla proporciona una breve descripción de todos los formatos de salida admitidos, organizados por tipo de salida (imagen, texto o datos).

Salidas de imagen

Todas las salidas de imágenes se pueden iniciar desde una solicitud getMap de WMS en datos ráster, vectoriales o de cobertura.WMS son métodos que permiten la visualización visual de datos espaciales sin necesariamente proporcionar acceso a las características que componen esos datos.

Formato

Descripción

KML

KML (Keyhole Markup Language) es un esquema de lenguaje basado en XML para expresar datos geográficos en un navegador Earth, como Google Earth o Google Maps.KML utiliza una estructura basada en etiquetas con elementos y atributos anidados.Para GeoServer, los archivos KML se distribuyen como KMZ, que es un archivo KML comprimido.

JPEG

Salida WMS en formato rasterizado.El JPEG es un formato de archivo gráfico comprimido, con cierta pérdida de calidad debido a la compresión.Se utiliza mejor para fotografías y no se recomienda para la reproducción exacta de datos.

GIF

Salida WMS en formato rasterizado.El GIF (Formato de intercambio de gráficos) es un formato de imagen de mapa de bits más adecuado para arte lineal con bordes nítidos y un número limitado de colores.Esto aprovecha la compresión sin pérdidas del formato, que favorece áreas planas de color uniforme con bordes bien definidos (a diferencia de JPEG, que favorece gradientes suaves e imágenes más suaves).GIF está limitado a una paleta de 8 bits o 256 colores.

SVG

Salida WMS en formato vectorial.SVG (Scalable Vector Graphics) es un lenguaje para modelar gráficos bidimensionales en XML.Se diferencia del GIF y JPEG en que utiliza objetos gráficos en lugar de puntos individuales.

PELEA

Salida WMS en formato rasterizado.TIFF (formato de archivo de imagen etiquetado) es un formato flexible y adaptable para manejar múltiples datos en un solo archivo.GeoTIFF contiene datos geográficos incrustados como etiquetas dentro del archivo TIFF.

PNG

Salida WMS en formato rasterizado.El formato de archivo PNG (Portable Network Graphics) se creó como el sucesor gratuito y de código abierto del GIF.El formato de archivo PNG admite color verdadero (16 millones de colores), mientras que el GIF solo admite 256 colores.El archivo PNG sobresale cuando la imagen tiene áreas grandes y de colores uniformes.

Capas abiertas

La solicitud WMS GetMap genera una ventana de vista previa simple de OpenLayers.OpenLayerses una biblioteca JavaScript de código abierto para mostrar datos de mapas en navegadores web.La salida de OpenLayers tiene algunos filtros avanzados que no están disponibles cuando se utiliza una versión independiente de OpenLayers.Además, la vista previa generada contiene un encabezado con opciones de configuración sencillas para su visualización.La versión 3 de la biblioteca OpenLayers se utiliza de forma predeterminada.La versión 3 se puede desactivar con la opción de formatoENABLE_OL3(verdadero/falso) o la propiedad del sistema.Para navegadores más antiguos que no son compatibles con OpenLayers 3, se utiliza la versión 2 independientemente de la configuración.

PDF

Un PDF (formato de documento portátil) encapsula una descripción completa de un documento 2D de diseño fijo, incluido cualquier texto, fuentes, imágenes rasterizadas y gráficos vectoriales 2D.


Salida de imagen de muestra: una vista previa de OpenLayers de nurc:Pk50095

Salidas de texto

Formato

Descripción

ÁtomoPub

Salida WMS de datos espaciales en formato XML.AtomPub (Protocolo de publicación Atom) es un protocolo a nivel de aplicación para publicar y editar recursos web utilizando HTTP y XML.Desarrollado como reemplazo de la familia de estándares RSS para la distribución de contenido, Atom permite la suscripción de datos geográficos.

GeoRss

WMS GetMap solicita la salida de datos vectoriales en formato XML.RSS (Rich Site Summary) es un formato XML para entregar contenido web que cambia periódicamente.GeoRsses un estándar para codificar la ubicación como parte de una fuente RSS. Admite Layers Preview y produce documentos RSS 2.0, con GeoRSS con geometrías simples que utilizan Atom.

GeoJSON

La notación de objetos JavaScript(JSON) es un formato ligero de intercambio de datos basado en el lenguaje de programación JavaScript.Esto lo convierte en un formato de intercambio ideal para aplicaciones basadas en navegador, ya que se puede analizar directa y fácilmente en javascript.GeoJSON es un formato de salida de texto sin formato que agrega tipos geográficos a JSON.

CSV

Salida WFS GetFeature en texto delimitado por comas.Los archivos CSV (valores separados por comas) son archivos de texto que contienen filas de datos.Los valores de datos de cada fila están separados por comas.Los archivos CSV también contienen una fila de encabezado separada por comas que explica el orden de los valores de cada fila.Los CSV de GeoServer se transmiten completamente, sin limitación en la cantidad de datos que se pueden generar.

Un fragmento de un GeoRSS simple para nurc:Pk50095 usando Atom:

<?xml versión="1.0" codificación="UTF-8"?>

<rss xmlns:atom="http://www.w3.org/2005/Atom"

xmlns:georss="http://www.georss.org/georss" versión="2.0">

<canal>

<título>Pk50095</título>

<description>Feed generado automáticamente por GeoServer</description>

<enlace></enlace>

<elemento>

<título>fid--f04ca6b_1226f8d829e_-7ff4</título>

<georss:polígono>46.722110379286 13.00635746384126

46.72697223230676 13.308182612644663 46.91359611878293

13.302316867622581 46.90870264238999 12.999446822650462

46.722110379286 13.00635746384126

</georss:polígono>

</elemento>

</canal>

</rss>

Salidas de datos

Todas las salidas de datos se inician a partir de una solicitud WFS GetFeature en datos vectoriales.

Formato

Descripción

GML2/3

GML (Geography Markup Language) es la gramática XML definida por elOpen Geospatial Consortium(OGC) para expresar características geográficas.GML sirve como lenguaje de modelado para sistemas geográficos, así como un formato de intercambio abierto para compartir datos geográficos.GML2 es el formato de salida predeterminado (común), mientras que GML3 está disponible en el menú "Todos los formatos".

Archivo de forma

El ESRI Shapefile, o simplemente un shapefile, es el formato más utilizado para intercambiar datos SIG.GeoServer genera archivos de forma en formato zip, con un directorio de archivos .cst, .dbf, .prg, .shp y .shx.



Suite OpenGeo»


GeoServidor»


Interfaz de administración web»


Datos



Datos

Esta sección es la más grande y quizás la más importante de la Interfaz de administración web.Describe los tipos de datos de configuración principales que utiliza GeoServer para acceder y publicar información geoespacial.Cada subsección describe las páginas de tipos de datos que brindan capacidades para agregar, ver, editar y eliminar.

La página principal para cada tipo de datos es una vista de lista que muestra los elementos de ese tipo de datos configurados en la instancia de GeoServer.Para obtener información sobre cómo utilizar estas páginas, consulteLista de páginas.

Espacios de trabajo

Editar un espacio de trabajo

Agregar un espacio de trabajo

Eliminar un espacio de trabajo

Historias

Tipos de tienda

Editar una tienda

Agregar una tienda

Eliminar una tienda

Capas

Tipos de capa

Agregar una capa

Quitar una capa

Editar capa: datos

Editar capa: publicación

Editar capa: dimensiones

Grupos de capas

Modos de grupo de capas

Editar un grupo de capas

Agregar un grupo de capas

Eliminar un grupo de capas

Estilos

Editar un estilo

Agregar un estilo

Eliminar un estilo




Espacios de trabajo

Esta sección describe cómo ver y configurar espacios de trabajo.De manera análoga a un espacio de nombres, un espacio de trabajo es un contenedor que organiza otros elementos.En GeoServer, a menudo se utiliza un espacio de trabajo para agrupar capas similares.Se puede hacer referencia a las capas por el nombre de su espacio de trabajo, dos puntos o el nombre de la capa (por ejemplotopp:states).Dos capas diferentes pueden tener el mismo nombre siempre que pertenezcan a espacios de trabajo diferentes (por ejemplosf:statesytopp:states).


Página de espacios de trabajo

Editar un espacio de trabajo

Para ver o editar un espacio de trabajo, haga clic en el nombre del espacio de trabajo.Se mostrará una página de configuración del espacio de trabajo.


Espacio de trabajo llamado "topp"

Un espacio de trabajo se define mediante un nombre y un URI de espacio de nombres (identificador uniforme de recursos).El nombre del espacio de trabajo está limitado a diez caracteres y no puede contener espacios.Un URI es similar a una URL, excepto que los URI no necesitan apuntar a una ubicación real en la web y solo deben ser un identificador único.Para un URI de espacio de trabajo, recomendamos utilizar una URL asociada con su proyecto, quizás con un identificador final diferente.Por ejemplo,http://www.openplans.org/toppes el URI del espacio de trabajo "topp".

Directorio raíz para REST PathMapper


Parámetro del directorio raíz del espacio de trabajo

La API RESTful utiliza este parámetro comodirectorio raízpara los archivos cargados, siguiendo la estructura:

${rootDirectory}/workspace/store[/<archivo>]

Nota

Este parámetro es visible solo cuando elparámetroHabilitado de la secciónConfiguraciónestá marcado.

Agregar un espacio de trabajo

Los botones para agregar y eliminar un espacio de trabajo se pueden encontrar en la parte superior de la página de vista Espacios de trabajo.


Botones para agregar y quitar

Para agregar un espacio de trabajo, seleccione el botónAgregar nuevo espacio de trabajo.Se le pedirá que ingrese el nombre del espacio de trabajo y el URI.


Nueva página de espacio de trabajo con ejemplo

Eliminar un espacio de trabajo

Para eliminar un espacio de trabajo, selecciónelo haciendo clic en la casilla de verificación junto al espacio de trabajo.Se pueden seleccionar varios espacios de trabajo o se pueden seleccionar todos haciendo clic en la casilla de verificación en el encabezado.Haga clic en el botónEliminar espacios de trabajo seleccionados.Se le pedirá que confirme o cancele la eliminación.Al hacer clic enAceptar,se eliminan los espacios de trabajo seleccionados.


Confirmación de eliminación del espacio de trabajo


Historias

Una tienda se conecta a una fuente de datos que contiene datos ráster o vectoriales.Una fuente de datos puede ser un archivo o grupo de archivos, una tabla en una base de datos, un único archivo ráster o un directorio (por ejemplo, una biblioteca de formato de producto vectorial).La construcción de la tienda permite definir los parámetros de conexión una vez, en lugar de para cada conjunto de datos en una fuente.Como tal, es necesario registrar una tienda antes de configurar conjuntos de datos dentro de ella.


Vista de tiendas

Tipos de tienda

Si bien existen muchos formatos potenciales para fuentes de datos, sólo existen cuatro tipos de almacenes.Para datos ráster, un almacén puede ser un archivo.Para datos vectoriales, un almacén puede ser un archivo, una base de datos o un servidor.

Icono de tipo

Descripción


datos ráster en un archivo


datos vectoriales en un archivo


datos vectoriales en una base de datos


servidor de vectores (servidor de funciones web)

Editar una tienda

Para ver o editar una tienda, haga clic en el nombre de la tienda.Se mostrará una página de configuración de la tienda.El contenido exacto de esta página depende del formato específico de la tienda.Consulte las seccionesTrabajar con datos vectoriales,Trabajar con datos rásteryTrabajar con bases de datospara obtener información sobre formatos de datos específicos.El ejemplo muestra la configuración de lanurc:ArcGridSampletienda.


Editar un almacén de datos ráster

Información básica de la tienda

La información básica es común para todos los formatos.

Espacio de trabajo: la tienda se asigna al espacio de trabajo seleccionado

Nombre de la fuente de datos: el nombre de la tienda tal como aparece en la página de visualización

Descripción: (opcional) una descripción que se muestra en la interfaz de administración.

Habilitado: habilita o deshabilita el acceso a la tienda, junto con todos los conjuntos de datos definidos para ella.

Parámetros de conexión

Los parámetros de conexión varían según el formato de los datos.

Agregar una tienda

Los botones para agregar y eliminar una tienda se pueden encontrar en la parte superior de la página Tiendas.

Botones para agregar y eliminar una Tienda

Para agregar una tienda, seleccione el botónAgregar nueva tienda.Se le pedirá que elija una fuente de datos.GeoServer admite de forma nativa muchos formatos (y hay más disponibles a través de extensiones).Haga clic en la fuente de datos adecuada para continuar.

Elegir la fuente de datos para una nueva tienda

La siguiente página configura la tienda.Dado que los parámetros de conexión difieren entre las fuentes de datos, el contenido exacto de esta página depende del formato específico de la tienda.Consulte las seccionesTrabajar con datos vectoriales,Trabajar con datos rásteryTrabajar con bases de datospara obtener información sobre formatos de datos específicos.El siguiente ejemplo muestra la página de configuración ráster de ArcGrid.

Página de configuración para una fuente de datos ráster de ArcGrid

Eliminar una tienda

Para eliminar una tienda, haga clic en la casilla de verificación junto a la tienda.Se pueden seleccionar varias tiendas o se pueden seleccionar todas haciendo clic en la casilla de verificación en el encabezado.

Tiendas seleccionadas para su eliminación

Haga clic en el botónEliminar tiendas seleccionadas.Se le pedirá que confirme la eliminación de la configuración de las tiendas y todos los recursos definidos en ellas.Al hacer clic enAceptar, se eliminan las tiendas seleccionadas y se regresa a la página Tiendas.

Confirmar eliminación de tiendas




Capas

En GeoServer, el término "capa" se refiere a un conjunto de datos ráster o vectorial que representa una colección de características geográficas.Las capas vectoriales son análogas a los "tipos de características" y las capas ráster son análogas a las "coberturas".Todas las capas tienen una fuente de datos, conocida como Tienda.La capa está asociada al Espacio de Trabajo en el que está definida la Tienda.

En la sección Capas de la interfaz web, puede ver y editar capas existentes, agregar (registrar) una nueva capa o eliminar (anular el registro) una capa.La página Vista de capas muestra la lista de capas y el Almacén y el Espacio de trabajo en el que se encuentra cada capa.La página Ver también muestra el estado de la capa y el SRS nativo.

Vista de capas

Tipos de capa

Las capas se pueden dividir en dos tipos de datos: ráster y vectoriales.Estos dos formatos se diferencian en cómo almacenan la información espacial.Los tipos de vectores almacenan información sobre tipos de entidades como rutas matemáticas: un punto como una sola coordenada x,y, líneas como una serie de coordenadas x,y y polígonos como una serie de coordenadas x,y que comienzan y terminan en el mismo lugar.Los datos en formato ráster son una representación basada en celdas de características de la superficie terrestre.Cada celda tiene un valor distinto y todas las celdas con el mismo valor representan una característica específica.

Campo

Descripción


trama (cuadrícula)


vector (característica)

Agregar una capa

En la esquina superior izquierda de la página de vista de capas hay dos botones para agregar y eliminar capas.El botón verde más le permite agregar una nueva capa (denominadarecurso).El botón rojo menos le permite eliminar las capas seleccionadas.

Botones para agregar y quitar una capa

Al hacer clic en el botónAgregar un nuevo recurso,aparece un panelSelector de nueva capa.El menú muestra todas las tiendas actualmente habilitadas.En este menú, seleccione la Tienda donde se debe agregar la capa.

Lista de todas las tiendas actualmente habilitadas

Al seleccionar una tienda, se muestra una lista de recursos dentro de la tienda.Los recursos que ya se han publicado como capas se enumeran primero, seguidos de otros recursos que están disponibles para publicarse.En este ejemplo,giant_polygon,poiypoly_landmarkssontiger_roadstodas capas existentes dentro de la tienda de Nueva York.

Lista de recursos publicados y disponibles en una tienda

Para agregar una capa para un recurso disponible, haga clic enPublicar.Para agregar una nueva capa para un recurso publicado, haga clic enPublicar nuevamente.(Tenga en cuenta que al volver a publicar, es posible que sea necesario modificar el nombre de la nueva capa para evitar conflictos con una capa existente). Las acciones muestran una páginaEditar capapara ingresar la definición de la nueva capa.

Quitar una capa

Para eliminar una capa, selecciónela haciendo clic en la casilla de verificación junto a la capa.Como se muestra a continuación, se pueden seleccionar varias capas para la eliminación por lotes.Tenga en cuenta que las selecciones para eliminar no persistirán de una página de resultados a la siguiente.

Algunas capas seleccionadas para eliminar

Todas las capas se pueden seleccionar para su eliminación haciendo clic en la casilla de verificación en el encabezado.

Todas las capas seleccionadas para su eliminación

Una vez seleccionadas las capas,se activa el enlaceEliminar recursos seleccionados .Una vez que haya hecho clic en el enlace, se le pedirá que confirme o cancele la eliminación.Al seleccionarAceptarse eliminan las capas seleccionadas.

Editar capa: datos

Para ver o editar una capa, haga clic en el nombre de la capa.Se mostrará una página de configuración de capas.La pestañaDatos, activada de forma predeterminada, le permite definir y cambiar los parámetros de datos de una capa.

Editar capa: pestaña Datos

Información básica

Las secciones iniciales (Información básica de recursos, palabras clave y enlace de metadatos) son análogas a la secciónMetadatos de serviciopara WCS, WFS y WMS.Estas secciones proporcionan "datos sobre los datos", específicamente información textual que hace que los datos de la capa sean más fáciles de entender y trabajar.La información de metadatos aparecerá en los documentos de capacidades que hacen referencia a la capa.


Nombre: identificador utilizado para hacer referencia a la capa en solicitudes WMS.(Tenga en cuenta que, para una nueva capa de un recurso ya publicado, se debe cambiar el nombre para evitar conflictos).



Título: descripción legible para identificar brevemente la capa para los clientes (obligatorio)



Resumen:describe la capa en detalle.



Palabras clave: lista de palabras cortas asociadas con la capa para ayudar en la búsqueda en el catálogo.



Enlaces de metadatos: permite vincular a documentos externos que describen la capa de datos.Actualmente sólo son válidos dos tipos de formato estándar: TC211 y FGDC.TC211 se refiere a la estructura de metadatos establecida por elComité Técnico de Información Geográfica/Geomática de ISO(ISO/TC 211) mientras que FGDC se refiere a los establecidos por elComité Federal de Datos Geográficos(FGDC) de Estados Unidos.




Agregar un enlace de metadatos en formato FGDC


Sistemas de referencia de coordenadas

Un sistema de referencia de coordenadas (CRS) define cómo los datos espaciales georreferenciados se relacionan con ubicaciones reales en la superficie de la Tierra.Los CRS son parte de un modelo más general llamado Sistemas de Referencia Espacial (SRS), que incluye referencias por coordenadas e identificadores geográficos.GeoServer necesita conocer el sistema de referencia de coordenadas de sus datos.Esta información se utiliza para calcular el cuadro delimitador de latitud/longitud y reproyectar los datos durante las solicitudes WMS y WFS.

Sistema de referencia de coordenadas de una capa.

SRS nativo:especifica el sistema de coordenadas en el que está almacenada la capa. Al hacer clic en el enlace de proyección se muestra una descripción del SRS.

SRS declarado: especifica el sistema de coordenadas que GeoServer publica para los clientes.

Manejo de SRS: determina cómo GeoServer debe manejar la proyección cuando los dos SRS difieren.

Cuadros delimitadores

El cuadro delimitador determina la extensión de los datos dentro de una capa.

Cuadro delimitador nativo: los límites de los datos especificados en el SRS nativo.Estos límites se pueden generar haciendo clic en el botónCalcular a partir de datos.

Cuadro delimitador Lat/Lon: los límites especificados en coordenadas geográficas.Estos límites se pueden calcular haciendo clic en el botónCalcular desde límites nativos.

Cuadros delimitadores de una capa

Parámetros de cobertura (ráster)

Los parámetros de cobertura opcionales son posibles para ciertos tipos de datos ráster.Por ejemplo, los formatos WorldImage solicitan un rango válido de coordenadas de cuadrícula en dos dimensiones conocido comoReadGridGeometry2D.Para ImageMosaic, puede utilizarInputImageThresholdValue,InputTransparentColoryOutputTransparentColorpara controlar la representación del mosaico en términos de umbral y transparencia.

Soporte de curvas (Vector)

GeoServer puede manejar geometrías que contienen arcos circulares (inicialmente sólo de Oracle Spatial y el "almacén de datos de propiedades", aunque se planean más fuentes de datos).

Estas geometrías se mantienen en la memoria en su representación circular durante el mayor tiempo posible, se representan visualmente correctamente en WMS y se codifican en GML 3.x como curvas.

Hay dos opciones relacionadas con los arcos circulares:

Se debe marcar Las geometrías lineales pueden contener arcos circularespara informar al codificador GML que la capa puede contener arcos circulares entre otros segmentos lineales en las geometrías y, por lo tanto, usar “gml:Curve” en lugar de “gml:LineString” en el formato de salida GML 3.1. .Esto es necesario porque no existe una forma rápida de saber a partir de las fuentes de datos si las geometrías lineales contienen arcos circulares, y la elección de los elementos GML de nivel superior influye en si es posible, o no, representar arcos circulares en su forma natural.

La tolerancia de linealizacióncontrola la precisión con la que la versión linealizada de las geometrías coincide con la versión circular original de las mismas.La tolerancia se puede expresar como un número absoluto en la unidad de medida nativa de los datos, o se puede expresar en metros o pies usando los sufijos “m” y “ft” (como “10m” o “15ft”).

Control de geometría curva

Detalles del tipo de característica (vector)

Las capas vectoriales tienen una lista dedetalles del tipo de característica.Estos incluyen lapropiedadyel tipode una fuente de datos.Por ejemplo, lasf:archsitescapa que se muestra a continuación incluye una geometría (the_geom) de tipo “punto”.

Detalles del tipo de característica

La opciónNillablese refiere a si la propiedad requiere un valor o puede marcarse como nula.Mientras tanto,las apariciones mínimas y máximasse refieren a cuántos valores se le permite tener a un campo.Actualmente, tanto las ocurrenciasanulablescomolas mínimas y máximasestán configuradastruey0/1pueden ampliarse con trabajos futuros en funciones complejas.

Restringir las funciones que aparecen en la capa

De forma predeterminada, GeoServer publicará todas las funciones disponibles en la capa.Es posible restringir las funciones a un subconjunto especificando un filtro CQL en la configuración:

Restringir las funciones en la capa mediante el filtro CQL

Nota

Se recomienda utilizar esta configuración para capas que no deben editarse.El filtro solo se aplica a las lecturas; si una inserción WFS-T agrega una característica que no coincide con el filtro, se agregará a la tienda de todos modos, pero no aparecerá en ninguna de las salidas.

Editar capa: publicación

La pestaña Publicación configura los ajustes HTTP y WMS/WFS/WCS.

Editar capa: pestaña Publicar

Habilitado: una capa que no está habilitada no estará disponible para ningún tipo de solicitud, solo aparecerá en la configuración (y en la configuración REST).

Anunciada: una capa se anuncia de forma predeterminada.Una capa no anunciada estará disponible en todas las solicitudes de acceso a datos (por ejemplo, WMS GetMap, WMS GetFeature) pero no aparecerá en ningún documento de capacidades ni en la vista previa de la capa.

Configuración HTTP

Parámetros de caché que se aplican a la respuesta HTTP de las solicitudes de los clientes.

Encabezados de caché de respuesta: si se selecciona, GeoServer no solicitará el mismo mosaico dos veces dentro del tiempo especificado enTiempo de caché.Una hora medida en segundos (3600) es el valor predeterminado parael tiempo de caché.

Configuración de WMS

Establece los parámetros de publicación específicos de WMS.

Configuración de WMS

Consultable: controla si la capa se puede consultar medianteGetFeatureInfosolicitudes WMS.

Estilo predeterminado: estilo que se utilizará cuando el cliente no especifique un estilo con nombre en las solicitudes de GetMap.

Estilos adicionales: otros estilos que se pueden asociar con esta capa.Algunos clientes (y la Vista previa de capa de GeoServer) los presentarán al usuario como alternativas de estilo para esa capa.

Búfer de representación predeterminado: valor predeterminado delbufferparámetro de proveedor GetMap/GetFeatureInfo.Consulte losparámetros del proveedor de WMSpara obtener más detalles.

Ruta WMS predeterminada: ubicación de la capa en el árbol de capas de capacidades WMS.Útil para crear grupos de capas no opacas

Atribución WMS

Establece la publicación de información sobre proveedores de datos.

Atribución WMS

Texto de atribución:texto legible por humanos que describe al proveedor de datos.Esto podría usarse como texto para un hipervínculo al sitio web del proveedor de datos.

Enlace de atribución: URL al sitio web del proveedor de datos.

URL del logotipo: URL de una imagen que sirve como logotipo para el proveedor de datos.

Tipo, ancho y alto del contenido del logotipo: estos campos brindan información sobre la imagen del logotipo que los clientes pueden usar para ayudar con el diseño.GeoServer detectará automáticamente estos valores si hace clic en el enlaceDetectar automáticamente el tamaño y el tipo de imagenen la parte inferior de la sección.El texto, el enlace y la URL se anuncian en el documento de capacidades WMS, si se proporcionan.Algunos clientes WMS mostrarán esta información para informar a los usuarios qué proveedores proporcionan un conjunto de datos en particular.Si omite algunos de los campos, los que se proporcionen se publicarán y los que no se omitirán del documento de Capacidades.

Configuración de WFS


Límite de funciones por solicitud:establece la cantidad máxima de funciones para una capa que debe generar una operación GetFeature de WFS (independientemente de la cantidad real de aciertos de consulta).



Número máximo de decimales: establece el número máximo de decimales en la salida GML.


Nota


También es posible anular laOtherSRS/OtherCRSlista configurada en el servicio WFS, incluso anularla con una lista vacía si es necesario.El área de entrada aceptará una lista de códigos EPSG separados por comas:



Anulación de WFS otherSRS/otherCRS


La lista se usará solo para la generación de documentos de capacidades, pero no se usará para limitar el uso real de SRS objetivo en las solicitudes GetFeature.


Configuración de WCS

Solicitar SRS: proporciona una lista de SRS a los que se puede convertir la capa.New Request SRSle permite agregar un SRS a esa lista.

Métodos de interpolación: establece el proceso de renderizado ráster, si corresponde.

Formatos:enumera los formatos de salida que admite una capa.

GeoSearch: cuando está habilitado, permite que el rastreador de Google Geosearch indexe desde esta capa en particular.Consulte¿Qué es un mapa de sitio geográfico? para más información.

Configuración de formato KML

Limita las funciones según ciertos criterios, también conocido comoregión.

Atributo de región predeterminado: elija qué característica debe aparecer más destacada que otras.

Métodos de región: existen cuatro tipos de métodos de región:

clasificación externa:crea una base de datos auxiliar temporal dentro de GeoServer.La primera solicitud para crear un índice lleva más tiempo que las solicitudes posteriores.

geometría: ordena externamente por longitud (si son líneas) o área (si son polígonos)

clasificación nativa: utiliza el algoritmo de clasificación predeterminado del backend donde se alojan los datos.Es más rápido que la clasificación externa, pero sólo funcionará con almacenes de datos PostGIS.

aleatorio:utiliza el orden existente de los datos y no los ordena.

Editar capa: dimensiones

GeoServer admite la adición de dimensiones específicas a las capas WMS, como se especifica en los estándares WMS 1.1.1 y WMS 1.3.0.Hay dos dimensiones predefinidas en los estándares WMS mencionados anteriormente,TIEMPOyELEVACIÓN.Habilitar dimensiones para una capa permite a los usuarios especificarlas como parámetros adicionales en las solicitudes GetMap, útiles para crear mapas o animaciones a partir de datos multidimensionales subyacentes.

Estas dimensiones se pueden habilitar y configurar en la pestaña Dimensiones.

Dimensión TIME habilitada para una capa WMS

Para cada dimensión habilitada están disponibles las siguientes opciones de configuración:

Atributo: nombre del atributo para seleccionar el valor de esta dimensión (solo vector).Esto se trata al inicio del rango sitambién se proporcionael atributo Fin .

Atributo final: nombre del atributo para seleccionar el final del rango de valores para esta dimensión (opcional, solo vectorial).

Presentación: el tipo de presentación de los valores disponibles en el documento de capacidades.Ocada valor por separado (lista),intervalo y resolución, ointervalo continuo.

Valor predeterminado:valor predeterminado que se utilizará para esta dimensión si no se proporciona ninguno con la solicitud.Seleccione una de las cuatro estrategias:

valor de dominio más pequeño: utiliza el valor más pequeño disponible de los datos

mayor valor de dominio: utiliza el mayor valor disponible de los datos

más cercano al valor de referencia: selecciona el valor de datos más cercano al valor de referencia dado

valor de referencia: intenta utilizar el valor de referencia dado tal como está, independientemente de si está realmente disponible en los datos o no.

Valor de referencia: el especificador de valor predeterminado.Solo se muestra para las estrategias de valor predeterminado donde se usa.

Para la dimensión de tiempo, el valor debe estar en formato FechaHora ISO 8601.yyyy-MM-ddThh:mm:ss.SSSZPara la dimensión de elevación, el valor debe ser un número entero de punto flotante.

Nota

Para obtener más información sobre cómo especificar tiempos, consulte la sección sobreSoporte de tiempo en GeoServer WMS.




Grupos de capas

Un grupo de capas es un contenedor en el que las capas y otros grupos de capas se pueden organizar en una estructura jerárquica.Se puede hacer referencia a un grupo de capas con un solo nombre en las solicitudes WMS.Esto permite solicitudes más simples, ya que se puede especificar una capa en lugar de varias capas individuales.Un grupo de capas también proporciona un orden fijo y coherente de las capas que contiene y puede especificar estilos alternativos (no predeterminados) para las capas.

Modos de grupo de capas

El comportamiento del grupo de capas se puede configurar estableciendo sumodo.Hay 4 valores disponibles:

single: el grupo de capas se expone como una sola capa con un nombre.

Árbol con nombre: se puede hacer referencia al grupo de capas con un nombre, pero también expone sus capas y grupos anidados en el documento de capacidades.

Árbol contenedor: el grupo de capas está expuesto en el documento de capacidades, pero no tiene nombre, lo que hace imposible representarlo por sí solo.Esto se denomina "categoría contenedora" en la especificación WMS.

Árbol de observación de la Tierra: un tipo especial de grupo creado para gestionar los requisitos de observación de la Tierra del WMS.Este grupo no representa sus capas y grupos anidados, sino sólo una "capa de vista previa" llamada Capa raíz.Cuando se elige este modo, se expondrá un nuevo campo "Capa raíz" en la interfaz de usuario de configuración.

Si una capa se incluye en cualquier grupo que no sea de modoúnico, ya no aparecerá en la lista de capas planas.Aún será posible incluir la capa en otros grupos de capas.


Página Grupos de capas

Editar un grupo de capas

Para ver o editar un grupo de capas, haga clic en el nombre del grupo de capas.Se mostrará una página de configuración del grupo de capas.Los campos iniciales le permiten configurar el nombre, título, resumen, espacio de trabajo, límites, proyección y modo del grupo de capas.Para configurar automáticamente el cuadro delimitador, seleccione el botónGenerar límites.También puede proporcionar sus propias extensiones de cuadro delimitador personalizadas.Para seleccionar una proyección adecuada, haga clic en el botónBuscar.

Nota

Un grupo de capas puede contener capas con límites y proyecciones diferentes.GeoServer reproyecta automáticamente todas las capas a la proyección del grupo de capas.

Página de edición de grupos de capas

La tabla en la parte inferior de la página enumera las capas y grupos contenidos dentro del grupo de capas actual.Nos referimos a capas y grupos de capas comoelementos publicables.Cuando se procesa un grupo de capas, las capas se representan en el orden proporcionado, por lo que loselementos publicablesen la parte inferior de la lista se representarán en último lugar y se mostrarán encima de los demáselementos publicables.

Unelemento publicablese puede colocar más arriba o más abajo en esta lista haciendo clic en las flechas verdes hacia arriba o hacia abajo, respectivamente.La capa en la parte superior de la lista es la primera que se pintará, la capa debajo se pintará en segundo lugar, y así sucesivamente, la última capa se pintará encima de todas las demás (este es el llamado "modelo del pintor"). ).

La columnaEstilomuestra el estilo asociado con cada capa.Para cambiar el estilo asociado con una capa, haga clic en el enlace de estilo apropiado.Se mostrará una lista de estilos habilitados.Al hacer clic en el nombre de un estilo, se reasigna el estilo de la capa.

Edición de estilo para una capa dentro de un grupo de capas

Para eliminar unelemento publicabledel grupo de capas, seleccione su botón en lacolumnaEliminar .Ahora se le pedirá que confirme o cancele esta eliminación.

Se puede agregar una capa a la lista haciendo clic en el botónAgregar capa...en la parte superior de la tabla.De la lista de capas, seleccione la capa que desea agregar haciendo clic en el nombre de la capa.La capa seleccionada se agregará al final de la listapublicable.

Diálogo para agregar una capa a un grupo de capas

Se puede agregar un grupo de capas haciendo clic en el botónAgregar grupo de capas...en la parte superior de la tabla.De la lista de grupos de capas, seleccione el grupo de capas que desea agregar haciendo clic en su nombre.El grupo seleccionado se agregará al final de la listapublicable.

Diálogo para agregar un grupo de capas a un grupo de capas

Puede ver grupos de capas en la secciónVista previa de capasdel administrador web.

Vista previa de Openlayers del grupo de capas “tasmania”

Agregar un grupo de capas

Los botones para agregar y eliminar un grupo de capas se pueden encontrar en la parte superior de la páginaGrupos de capas.

Botones para agregar o eliminar un grupo de capas

Para agregar un nuevo grupo de capas, seleccione el botón "Agregar un nuevo grupo de capas".Se le pedirá que nombre el grupo de capas.

Nuevo cuadro de diálogo de grupo de capas

Cuando termine, haga clic enEnviar.Serás redirigido a una página de configuración de grupo de capas vacía.Comience agregando capas haciendo clic en el botónAgregar capa...(descrito en la sección anterior).Una vez que las capas estén colocadas en consecuencia, presioneGenerar límitespara generar automáticamente el cuadro delimitador y la proyección.PresioneGuardarpara guardar el nuevo grupo de capas.

Nueva página de configuración del grupo de capas

Eliminar un grupo de capas

Para eliminar un grupo de capas, selecciónelo haciendo clic en la casilla de verificación junto al grupo de capas.Se pueden seleccionar varios grupos de capas, o se pueden seleccionar todos haciendo clic en la casilla de verificación en el encabezado.Haga clic en el enlaceEliminar grupo(s) de capas seleccionados.Se le pedirá que confirme o cancele la eliminación.Al seleccionarAceptarse eliminan los grupos de capas seleccionados.

Eliminar un grupo de capas




Estilos

Los estilos representan o ponen a disposición datos geoespaciales.Los estilos para GeoServer están escritos en Styled Layer Descriptor (SLD), un subconjunto de XML.Consulte la sección sobreEstilopara obtener más información sobre cómo trabajar con estilos.

En la página Estilos, puede agregar un estilo nuevo, ver o editar un estilo existente o eliminar un estilo.

Página de estilos

Editar un estilo

Para ver o editar un estilo, haga clic en el nombre del estilo.Se mostraráuna páginadel Editor de estilos .La página presenta opciones para configurar el nombre, el código y otros atributos de un estilo.Los nombres de los estilos se especifican en la parte superior del campo de nombre.El espacio de trabajo del estilo se puede elegir mediante el selector de espacio de trabajo.Los estilos se editan utilizando un editor de texto plano con algunas utilidades básicas.

editor de estilo

El editor de estilo admite numeración de líneas, sangría automática y resaltado de sintaxis en tiempo real.También puedes aumentar o disminuir el tamaño de fuente del editor.

Botón

Descripción


deshacer


rehacer


ir a la línea


formatear automáticamente el contenido del editor


cambiar el tamaño de fuente del editor

Para confirmar que el código SLD cumple totalmente con el esquema SLD, haga clic en el botónValidar.Un cuadro de mensaje confirmará si el estilo contiene errores de validación.

Nota

En ocasiones, GeoServer mostrará estilos que no superan la validación, pero esto no se recomienda.

Sin errores de validación

Mensaje de error de validación

Para ver laentrada de leyenda generadapara el estilo, haga clic en el botónVista previa de leyenda.

Agregar un estilo

Los botones para agregar y eliminar un estilo se pueden encontrar en la parte superior de la páginaEstilos.

Agregar o eliminar un estilo

Para agregar un nuevo estilo, seleccione el botónAgregar un nuevo estilo.Serás redirigido a una página del editor.Introduzca un nombre para el estilo.También puede seleccionar el formato de estilo.En una instalación predeterminada de GeoServer solo se admite SLD, pero otras extensiones (comocss) agregan soporte para formatos adicionales.La página del editor ofrece varias opciones para enviar un nuevo estilo.Puede pegar el estilo directamente en el contenido del editor.Puedes generar un nuevo estilo predeterminado basado en una plantilla interna:

Generando un nuevo estilo predeterminado.

Puede copiar el contenido de un estilo existente en el editor:

Copiar un estilo existente desde GeoServer

Puede seleccionar y cargar un archivo local que contenga el SLD:

Cargar un archivo SLD desde su computadora local

Una vez que un estilo se haya enviado correctamente, será redirigido a la página principalde Estilosdonde aparecerá el nuevo estilo.

Eliminar un estilo

Para eliminar un estilo, selecciónelo haciendo clic en la casilla de verificación junto al estilo.Se pueden seleccionar varios estilos o se pueden seleccionar todos haciendo clic en la casilla de verificación en el encabezado.Haga clic en el enlaceEliminar estilos seleccionadosen la parte superior de la página.Se le pedirá que confirme o cancele la eliminación.Al hacer clic enAceptarse eliminan los estilos seleccionados.

Mensaje de confirmación para eliminar estilos

Servicios

GeoServer sirve datos utilizando protocolos establecidos por elOpen Geospatial Consortium(OGC).El Servicio de cobertura web (WCS) admite solicitudes de datos de cobertura (rásteres), el Servicio de funciones web (WFS) admite solicitudes de datos de características geográficas (vectores) y el Servicio de mapas web (WMS) permite solicitudes de imágenes generadas a partir de datos geográficos.

Esta sección de la Interfaz de administración web describe cómo configurar estos servicios para GeoServer.

WCS

Metadatos del servicio

CMA

Metadatos del servicio

Características

Niveles de servicio

Configuración de SRS adicionales

GML

Conformidad

Codificar respuesta con

Formato de salida SHAPE-ZIP

WMS

Metadatos del servicio

Opciones de renderizado ráster

Configuración de marca de agua

Opciones SVG

Manejo avanzado de proyecciones y ajuste de mapas.

Restringir los tipos MIME para solicitudes GetMap y GetFeatureInfo


WCS

El Servicio de cobertura web (WCS) ofrece pocas opciones para cambiar la funcionalidad de cobertura.Si bien se pueden configurar varios elementos para solicitudes WFS y WMS, WCS solo permite editar información de metadatos.Esta información de metadatos, tituladaMetadatos de servicio, es común a las solicitudes WCS, WFS y WMS.

Página de configuración de WCS

Metadatos del servicio

WCS, WFS y WMS utilizan definiciones de metadatos comunes.Estos nueve elementos se describen en la siguiente tabla.Aunque estos tipos de campos son los mismos independientemente del servicio, sus valores no se comparten.Como tal, las definiciones de parámetros siguientes se refieren al servicio respectivo.Por ejemplo, "Habilitar" en la página Servicio WFS habilita las solicitudes de servicio WFS y no tiene ningún efecto en las solicitudes WCS o WMS.

Campo

Descripción

Activado

Especifica si los servicios respectivos (WCS, WFS o WMS) deben habilitarse o deshabilitarse.Cuando esté deshabilitado, las respectivas solicitudes de servicio no serán procesadas.

Estricto cumplimiento de CITE

Cuando se selecciona, aplica una estricta conformidad con la Iniciativa de pruebas de interoperabilidad y cumplimiento de OGC (CITE).Recomendado para su uso al ejecutar pruebas de conformidad.

mantenedor

Nombre del organismo mantenedor

Recurso en línea

Define la URL HTTP de nivel superior del servicio.Normalmente, el recurso en línea es la URL de la “página de inicio” del servicio.(Obligatorio)|

Título

Un título legible por humanos para identificar brevemente este servicio en los menús para los clientes (obligatorio)

Abstracto

Proporciona una narrativa descriptiva con más información sobre el servicio.

Honorarios

Indica cualquier tarifa impuesta por el proveedor de servicios por el uso del servicio.La palabra clave NONE está reservada para indicar que no hay cargos y se adapta a la mayoría de los casos.

Restricciones de acceso

Describe cualquier restricción impuesta por el proveedor de servicios al servicio.La palabra clave NONE está reservada para indicar que no se imponen restricciones de acceso y se ajusta a la mayoría de los casos.

Palabras clave

Lista de palabras cortas asociadas con el servicio para ayudar en la catalogación y la búsqueda.




CMA

La página Web Feature Service (WFS) admite la configuración de las capacidades de los límites y capacidades de WFS.

Metadatos del servicio

Consulte la sección sobreMetadatos del servicio.

Características

Opciones de configuración de WFS: sección de características

ElServicio de funciones web (WFS) delOpen Geospatial Consortium (OGC) es un protocolo para ofrecer funciones geográficas en la Web. La información de entidades que se codifica y transporta mediante WFS incluye tanto la geometría de las entidades como los valores de los atributos de las entidades.El Servicio de funciones web básico (WFS) admite la consulta y recuperación de funciones.Los límites y límites de las funciones se pueden configurar en la página WFS.

Número máximo de funciones: número máximo de funciones que debe generar una operación WFS GetFeature, independientemente del número real de consultas.Una solicitud WFS puede contener potencialmente un gran conjunto de datos que no es práctico descargar a un cliente y/o demasiado grande para el renderizador de un cliente.Los límites máximos de funciones también están disponibles para los tipos de funciones.El número predeterminado es 1000000.

Número máximo de funciones para la vista previa (los valores <= 0 usan la cantidad máxima de funciones): cantidad máxima de funciones para usar en las vistas previas de capas.El valor predeterminado es 50 funciones.

Devolver cuadro delimitador con cada característica: al crear la salida GetFeature GML, agrega un elemento de límites calculado automáticamente en cada tipo de característica.Normalmente no está habilitado, ya que incluir el cuadro delimitador consume ancho de banda adicional.

Ignorar el número máximo de funciones al calcular visitas: al calcular el número total de visitas, ignore la configuración Número máximo de funciones.Esto se puede utilizar para obtener el recuento de funciones coincidentes, incluso si no estarían disponibles para su descarga porque exceden el recuento máximo especificado.En conjuntos de datos muy grandes, esto puede ralentizar la respuesta.

Niveles de servicio


Opciones de configuración de WFS: sección Nivel de servicio

GeoServer cumple con el nivel de servicio completo "Transactional Web Feature Server" (WFS-T) según lo definido por OGC.Especificar el nivel de servicio WFS limita las capacidades de Geoserver sin dejar de cumplir con las normas.La configuración del nivel de servicio WFS define qué operaciones WFS están "activadas".

Básico: los niveles de servicio básicos brindan funciones para buscar y recuperar datos de características con las operaciones GetCapabilities, DescribeFeatureType y GetFeature.Es compatible con el servicio de funciones web básico de OGC.Esto se considera un servicio de funciones web de SÓLO LECTURA.

Transaccional: además de todas las operaciones básicas de WFS, el nivel de servicio transaccional admite solicitudes de transacciones.Una solicitud de transacción facilita la creación, eliminación y actualización de características geográficas de conformidad con el Servicio de características web transaccionales (WFS-T) de OGC.

Completo: incluye compatibilidad con LockFeature para el conjunto de operaciones de nivel transaccional.Las operaciones LockFeature ayudan a resolver vínculos entre recursos relacionados procesando solicitudes de bloqueo en una o más instancias de un tipo de característica.

Configuración de SRS adicionales

WFS 1.1.0 en adelante agrega la capacidad de reproyectar la salida de GetFeature a un SRS de destino especificado por el usuario.La lista de SRS de destino aplicables se define según el tipo de característica en los documentos de capacidades, y GeoServer permite la reproyección a cualquier SRS compatible en su base de datos interna.Para declarar que GeoServer tendría que agregar más de 5000otherSRS/otherCRSelementos por tipo de característica, lo cual es claramente poco práctico.Como resultado, no se realiza ninguna declaración por defecto.

Se puede proporcionar una lista de valores que se declararán en todos los tipos de funciones en el panel de administración de WFS, como una lista de códigos EPSG separados por comas:

Configuración WFS otherSRS/otherCRS

La lista se utilizará únicamente para la generación del documento de capacidades.No limita el uso real de SRS objetivo en las solicitudes GetFeature.

GML

Opciones de configuración de WFS: secciones GML

Geography Markup Language (GML) es la especificación basada en XML definida por el Open Geospatial Consortium (OGC) para expresar características geográficas.GML sirve como lenguaje de modelado para sistemas geográficos, así como también como formato de intercambio abierto para transacciones geográficas en Internet.

El estándar GML más antiguo,GML 2,codifica información geográfica, incluidas propiedades espaciales y no espaciales.GML3 amplía el soporte de GML2 a formas 3D (superficies y sólidos), así como a otras funciones avanzadas.GML 3 es un superconjunto modular de GML 2 que simplifica y minimiza el tamaño de la implementación al permitir a los usuarios seleccionar las piezas necesarias.Las adiciones en GML 3 incluyen soporte para geometrías complejas, sistemas de referencia espacial y temporal, topología, unidades de medida, metadatos, datos cuadriculados y estilos predeterminados para visualización de características y cobertura.GML 3 es casi totalmente compatible con GML 2.

Las solicitudes de WFS 2.0.0 devuelven GML 3.2 como formato predeterminado, las solicitudes de WFS 1.1.0 devuelven GML 3 como formato predeterminado y las solicitudes de WFS 1.0.0 devuelven GML 2 como formato predeterminado.Para cada uno de los formatos GML admitidos por GeoServer, se puede seleccionar un formato SRS diferente.

Código EPSG: devuelve el número EPSG típico en el formularioEPSG:XXXX(p. ej.EPSG:4326).Esto formatea las coordenadas geográficas en orden de longitud/latitud (x/y).

URL HTTP de OGC: devuelve una URL que identifica cada código EPSG:http://www.opengis.net/gml/srs/epsg.xml#XXXX(p. ej.http://www.opengis.net/gml/srs/epsg.xml#4326).Esto formatea las coordenadas geográficas en orden de longitud/latitud (x/y).Este formato es la convención predeterminada de GML 2 SRS.

URN experimental de OGC: devuelve una URN que identifica cada código EPSG:urn:x-ogc:def:crs:EPSG:XXXX(p. ej.urn:x-ogc:def:crs:EPSG:4326).Este formato era la convención GML 3 SRS original.

OGC URN: (solo WFS 1.1.1) Devuelve el formato SRS delimitado por dos puntos:urn:ogc:def:crs:EPSG::XXXX(p. ej.urn:ogc:def:crs:EPSG::4326).Esta es la convención GML 3 SRS revisada y es la predeterminada para GML 3.2.Esto formatea los datos en el orden de eje tradicional para sistemas geográficos y cartográficos: latitud/longitud (y/x).

OGC HTTP URI: devuelve un URI que identifica cada código EPSG:http://www.opengis.net/def/crs/EPSG/0/XXXX(p. ej.http://www.opengis.net/def/crs/EPSG/0/4326).

Para cada tipo de GML, también hay una casilla de verificación "Anular atributos de GML".Al seleccionar esto (marcar la casilla de verificación), los atributos se redefinirán en el esquema de la aplicación.

Conformidad

Opciones de configuración de WFS: sección de conformidad

Al seleccionar la casilla deverificación Codificar ubicación del esquema WFS canónicose modifican las respuestas WFS para incluir las ubicaciones del esquema canónico en elxsi:schemaLocationatributo, en lugar de usar las ubicaciones del esquema predeterminadas en el GeoServer local.Tenga en cuenta que activar esta opción puede provocar que el cliente no pueda validar la respuesta WFS, según la configuración de la red.

Codificar respuesta con

Opciones de configuración de WFS: codificar la respuesta con

El grupoCodificar respuesta conbotón de opción tiene dos selecciones:un elemento "featureMembers"(el valor predeterminado) ovarios elementos "featureMember".Esto cambia la codificación WFS 1.1.0 en consecuencia.Es posible que sea necesario el uso de variosfeatureMemberelementos para hacer referencia al esquema de aplicación.

Formato de salida SHAPE-ZIP

Opciones de configuración de WFS: codificar la respuesta con

Al seleccionar la casillaUsar formato ESRI WKT para archivos .prj generados con SHAPE-ZIPse modifica la forma en que se codifican las proyecciones en el formato de salida zip de Shapefile.Si esta casilla de verificación no está seleccionada, se utilizará el formato OGC WKT.Si se selecciona esta casilla de verificación, se utilizará el formato ESRI WKT.

Nota: esto requiereesri.propertiesque se proporcione un archivo en eluser_projectionssubdirectorio del directorio de datos de GeoServer.Esto se puede obtener de la extensión GeoTools EPSG.



WMS

La página del Servicio de mapas web (WMS) admite la configuración de opciones de representación ráster y SVG.

Opciones de configuración de WMS

Metadatos del servicio

Consulte la sección sobreMetadatos del servicio.

Opciones de renderizado ráster

El estándar de interfaz de servicio de mapas web (WMS) proporciona una forma sencilla de solicitar y servir imágenes de mapas registradas geográficamente.Durante las operaciones de panorámica y zoom, las solicitudes de WMS generan imágenes de mapas a través de una variedad de procesos de representación ráster.Esta manipulación de imágenes generalmente se denomina remuestreo, interpolación o reducción de muestreo.GeoServer admite tres métodos de remuestreo que determinan cómo se generan los valores de celda de un ráster.Estos métodos de muestreo (vecino más cercano, interpolación bilineal y bicúbica) están disponibles en el menú Interpolación predeterminada.

Vecino más cercano: utiliza el centro de la celda de entrada más cercana para determinar el valor de la celda de salida.Los valores originales se conservan y no se crean nuevos promedios.Debido a que los valores de la imagen permanecen exactamente iguales, la renderización es rápida pero posiblemente pixelada debido a los detalles de los bordes nítidos.Se recomienda la interpolación del vecino más cercano para datos categóricos como la clasificación del uso del suelo.

Bilineal: determina el valor de la celda de salida basándose en el muestreo del valor de las cuatro celdas más cercanas mediante ponderación lineal.Cuanto más cerca esté una celda de entrada, mayor será su influencia en el valor de la celda de salida.Dado que los valores de salida pueden diferir de la entrada más cercana, se recomienda la interpolación bilineal para datos continuos como valores de elevación y pendiente sin procesar.La interpolación bilineal tarda aproximadamente cinco veces más que la interpolación del vecino más cercano.

Bicúbico: observa las dieciséis celdas más cercanas y ajusta una curva suave a través de los puntos para encontrar el valor de salida.La interpolación bicúbica puede cambiar el valor de entrada y colocar el valor de salida fuera del rango de valores de entrada.Se recomienda la interpolación bicúbica para suavizar datos continuos, pero esto genera una sobrecarga en el rendimiento del procesamiento.

Configuración de marca de agua

La marca de agua es el proceso de incrustar una imagen en un mapa.Las marcas de agua se utilizan generalmente para marcas, derechos de autor y medidas de seguridad.Las marcas de agua se configuran en la sección de configuración de marcas de agua WMS.

Activar marca de agua: activa la marca de agua.Cuando se selecciona, todos los mapas se mostrarán con la misma marca de agua.Actualmente no es posible especificar marcas de agua por capa o por función.

URL de marca de agua:ubicación del gráfico de la marca de agua.Se puede hacer referencia al gráfico como una ruta absoluta (por ejemplo,C:GeoServerwatermark.png), relativa dentro del directorio de datos de GeoServer (por ejemplo,watermark.png) o una URL (por ejemplo,http://www.example.com/images/watermark.png).

Cada uno de estos métodos tiene sus propias ventajas y desventajas.Cuando se utiliza un vínculo absoluto o relativo, GeoServer mantiene una copia en caché del gráfico en la memoria y no se vinculará continuamente al archivo original.Esto significa que si el archivo original se elimina posteriormente, GeoServer no lo registrará como desaparecido hasta que se edite la configuración de la marca de agua.Usar una URL puede parecer más conveniente, pero requiere más E/S.GeoServer cargará la imagen de la marca de agua para cada solicitud de WMS.Además, si la URL deja de ser válida, la capa no se mostrará correctamente.

Transparencia de marca de agua: determina el nivel de opacidad de la marca de agua.Los números oscilan entre 0 (opaco) y 100 (totalmente invisible).

Posición de la marca de agua: especifica la posición de la marca de agua en relación con la solicitud WMS.Las nueve opciones indican en qué lado y esquina colocar el gráfico (arriba a la izquierda, arriba al centro, arriba a la derecha, etc.).La posición predeterminada de la marca de agua es la parte inferior derecha.Tenga en cuenta que la marca de agua siempre se mostrará al ras del límite.Si se requiere espacio adicional, el gráfico en sí debe cambiar.

Debido a que cada solicitud de WMS representa la marca de agua, un único mapa en mosaico colocaunamarca de agua en relación con la ventana de visualización, mientras que un mapa en mosaico coloca la marca de agua para cada mosaico.El único aspecto específico de la capa de la marca de agua se produce porque un único mapa en mosaico es una solicitud WMS, mientras que un mapa en mosaico contiene muchas solicitudes WMS.(La última visualización de la marca de agua se asemeja a un tenue aviso de derechos de autor de Google Maps en sus imágenes satelitales). Los siguientes tres ejemplos demuestran la posición de la marca de agua, la transparencia y la visualización en mosaico, respectivamente.

Marca de agua de mosaico único (alineada arriba a la derecha, transparencia=0)

Marca de agua de mosaico único (alineada arriba a la derecha, transparencia=90)

Marca de agua en mosaico (alineada arriba a la derecha, transparencia=90)

Opciones SVG

El GeoServer WMS admite SVG (gráficos vectoriales escalables) como formato de salida.GeoServer actualmente admite dos renderizadores SVG, disponibles en el menú del productor SVG.

Simple:renderizador SVG simple.Tiene soporte limitado para el estilo SLD, pero es muy rápido.

Batik: renderizador Batik (ya que utiliza Batik SVG Framework).Tiene soporte total para el estilo SLD, pero es más lento.

Habilitar suavizadoEl suavizado es una técnica para hacer que los bordes parezcan más suaves al rellenar los bordes de un objeto con píxeles que se encuentran entre el color del objeto y el color de fondo.El suavizado crea la ilusión de líneas y selecciones más suaves.Activar el suavizado generalmente hará que los mapas se vean mejor, pero aumentará el tamaño de las imágenes y tardará más en regresar.Si está superponiendo el mapa suavizado sobre otros, tenga cuidado al usar transparencias ya que el proceso de suavizado se mezcla con los colores detrás y puede crear un efecto de "halo".

Manejo avanzado de proyecciones y ajuste de mapas.

El manejo avanzado de la proyección es un conjunto de "inteligencias" adicionales que se aplican durante el renderizado y que ayudan a obtener un mapa atractivo a pesar de que los datos toquen o crucen "áreas difíciles" en la proyección del mapa seleccionado.Esto incluye, entre otros:

Cortar las geometrías para que encajen dentro del área de estabilidad matemática de la proyección matemática, por ejemplo, cortará cualquier trozo a más de 45 grados al oeste y al este del meridiano central de una proyección transversal de Mercator, o más allá de 85 grados al norte o al sur. en una proyección de mercator

Asegúrese de que se soliciten datos a ambos “confines” del mundo cuando un mapa en estereografía polar llegue a un área que incluya la línea de fecha.

Junto con el manejo avanzado de la proyección, existe la posibilidad de crear un mapa continuo a lo largo de la línea de fecha, envolviendo los datos en el otro lado del rango de longitud, para obtener un mapa continuo.Esto se llama ajuste continuo de mapas y está habilitado en las proyecciones Mercator y Equirectangular (plate carrée).

Ambas funciones son bastante útiles y están habilitadas de forma predeterminada, pero la tendencia a generar múltiples cuadros delimitadores (para consultar ambos lados de la línea de fecha) puede causar una lentitud extrema en ciertas bases de datos (por ejemplo, Oracle), y es posible que a algunas simplemente no les guste la ajustando la salida, por lo tanto, es posible desactivar ambos en la interfaz de usuario de WMS:

Restringir los tipos MIME para solicitudes GetMap y GetFeatureInfo

GeoServer admite formatos restringidos para solicitudes WMS GetMap y WMS GetFeatureInfo.El valor predeterminado es permitir todos los tipos MIME para ambos tipos de solicitud.

La siguiente figura muestra un ejemplo de restricción de tipo MIME.Los tipos MIMEimage/pngytext/html;subtype=openlayersestán permitidos para solicitudes GetMap, los tipos MIMEtext/htmlytext/plainestán permitidos para solicitudes GetFeatureInfo.Una solicitud GetMap/GetFeatureInfo con un tipo MIME no permitido generará una excepción de servicio que informará el error.

Nota

Activar la restricción de tipo MIME y no permitir al menos un tipo MIME deshabilita la solicitud particular.

Almacenamiento en caché de mosaicos

Esta sección de laInterfaz de administración webdescribe cómo configurar las opciones de almacenamiento en caché de mosaicos para GeoServer.GeoServer utiliza GeoWebCache para proporcionar almacenamiento en caché de mosaicos directo e integrado y puede aumentar drásticamente la capacidad de respuesta y la confiabilidad de su servidor.

Para obtener más información sobre el caché de mosaicos integrado de GeoServer, consulte la sección sobreAlmacenamiento en caché con GeoWebCache.

Se puede acceder a las páginas de este menú en el lado izquierdo de la pantalla bajo el títuloAlmacenamiento en caché de mosaicos.

Menú de almacenamiento en caché de mosaicos

Capas de mosaicos

Información de capa

Agregar o eliminar capas almacenadas en caché

Configurar una capa en caché

Página de demostración

Visita

Recargar configuración

Capas y formatos de salida.

siembra

Valores predeterminados de almacenamiento en caché

Servicios proporcionados por GWC

Opciones de almacenamiento en caché predeterminadas para capas de GeoServer

Conjuntos de cuadrículas

Creando un nuevo gridset

Editar un conjunto de cuadrículas

Copiar un conjunto de cuadrículas

Eliminar un conjunto de cuadrículas

Cuotas de disco

Habilitar cuota de disco

Frecuencia de verificación de cuota de disco

Tamaño máximo de caché de mosaicos

Política de retirada de azulejos

Tiendas de blobs

General

Almacén de blobs de archivos




Capas de mosaicos

Esta página muestra una lista de todas las capas conocidas por el GeoWebCache integrado.Es similar a laVista previa de capapara GeoWebCache, con muchas de las mismas opciones.

Nota

También hay un enlace a lapágina de demostración independiente de GeoWebCache.

Información de capa

Para cada capa almacenada en caché por GeoWebCache, está disponible la siguiente información.

Cuota de disco

La cantidad máxima de espacio en disco que se puede utilizar para esta capa.De forma predeterminada, esto se establecerá enN/A(ilimitado) a menos quelas cuotas de discoestén habilitadas.

Disco usado

El espacio en disco actual que utilizan los mosaicos para esta capa en particular.

Nota

Este contador solo se actualizará si las cuotas de disco están habilitadas.Si las cuotas de disco no están habilitadas, los mosaicos se seguirán guardando en el disco, pero el contador permanecerá como.0.0B

Activado

Indica si el almacenamiento en caché de mosaicos está habilitado para esta capa.Es posible tener una definición de capa aquí pero no tener habilitado el almacenamiento en caché de mosaicos (establecido en las propiedades de la capa).

Avance

Similar aLayer Preview, esto generará una aplicación OpenLayers simple llena de mosaicos de una de las combinaciones de formato de imagen/cuadrícula disponibles.Seleccione la opción deseada del menú para ver en OpenLayers.

Semilla/truncar

Abre la página GeoWebCache para inicializar y truncar automáticamente la caché de mosaicos.Utilice esto si desea rellenar previamente parte de su caché.

Vacío

Eliminará todos los mosaicos guardados del caché.Esto es idéntico a una operación de truncamiento completo de la capa.

Agregar o eliminar capas almacenadas en caché

La lista de capas que se muestra en esta página suele ser la misma o similar a la lista completa de capas conocidas por GeoServer.Sin embargo, puede que no sea deseable que cada capa publicada en GeoServer tenga un componente de capa almacenado en caché.En este caso, simplemente seleccione la casilla junto a la capa que desea eliminar y haga clic enEliminar capas en caché seleccionadas.La capa se eliminará de GeoWebCache y la caché de disco de esta capa se eliminará por completo.

Advertencia

La eliminación del caché de mosaicos no se puede deshacer.

Eliminar una capa en caché

Para agregar una capa desde GeoServer (si no estaba configurada para agregarse automáticamente), haga clic en elenlaceAgregar una nueva capa en caché .

Agregar una nueva capa en caché

Configurar una capa en caché

Tiene dos opciones para la configuración de capas.La primera opción es cargar la capa usando la configuración predeterminada (global).Para hacer esto, seleccione la capa que desea comenzar a almacenar en caché y haga clic en el enlaceConfigurar capas seleccionadas con valores predeterminados de almacenamiento en caché.La segunda opción es configurar los parámetros de almacenamiento en caché manualmente, a través de las páginasde configuración de capas.Para hacer esto, simplemente haga clic en el nombre de la capa.

Filtros de parámetros

Los filtros de parámetros permiten aGeoWebCache almacenar en caché una capa con diferentes parámetros comoSTYLES,.TIMESe necesita uno para cada parámetro que se almacenará en caché y debe saber cómo reconocer los valores válidos que se almacenarán en caché y qué valores son iguales a otros valores para que solo se almacenen en caché una vez.Como resultado, existen varios tipos diferentes de filtros.

Agregar un filtro

En la parte inferior de la lista de filtros, en el cuadro de texto junto aAgregar filtro,especifique el nombre del parámetro.En el cuadro desplegable, seleccione el tipo de filtro que desea y luego haga clic en elbotón.Para obtener un filtro que rastrea automáticamente los estilos de capas en un parámetro llamado,STYLEShaga clic en el botónAgregar filtro de estilo.

Quitar un filtro

Para eliminar un filtro, haga clic en elbotón a la derecha de la entrada del filtro en la lista de filtros.

tipos de filtro

Todos los filtros de parámetros toman un parámetro predeterminado que se utilizará si no se especificó el parámetro.Los tipos específicos de filtro de parámetros proporcionan diferentes formas de especificar qué valores de parámetros están permitidos y cuáles son equivalentes entre sí y deben almacenarse en caché juntos.

Lista de cadenas

TomastringParameterFilteruna colección de cadenas de texto sin formato.Si el valor coincide con una de las cadenas, es válido; de lo contrario, no lo es.La coincidencia se puede hacer distinguiendo entre mayúsculas y minúsculas, o todas las cadenas se pueden convertir a mayúsculas o minúsculas antes de hacer coincidir.Como las reglas de casos varían entre idiomas, se puede especificar la configuración regional que se utilizará para los cambios de casos.

Expresión regular

RegexParameterFilter toma una expresión regular parahacercoincidir cadenas.Esto debe usarse con precaución, ya que potencialmente permite crear una cantidad arbitrariamente grande de cachés.Al igual que el filtro de cadena, se puede normalizar según el caso.

Lista de números

EsfloatParameterFiltercomo el filtro de cadenas al tomar una lista de valores, pero utiliza números de punto flotante en lugar de cadenas de texto arbitrarias.Se puede establecer un umbral para acercar los números a un valor estándar.

Lista de números enteros

EsintegerParameterFiltercomo el filtro flotante pero funciona con valores de números enteros/enteros.

Estilos

EstástyleParameterFilterconectado al catálogo de GeoServer y sabe qué estilos están disponibles para la capa y cuándo cambian.Puede especificar un valor predeterminado distinto del valor predeterminado de la capa normal si lo desea y restringir el rango de estilos adicionales disponibles si no desea almacenarlos en caché todos.

Página de demostración

Además de la páginaCapas de mosaicos, también hay una página de demostración donde puede ver las capas configuradas, recargar la configuración (al cambiar la configuración o agregar nuevas capas) y generar o actualizar el caché existente por capa.

Como esta interfaz es parte del GeoWebCache independiente, algunas de las funciones aquí están duplicadas de la páginaCapas de mosaicos.

Página de demostración incorporada

Visita

Para ver la página de demostración, agregue/gwc/demoa la dirección de su instancia de GeoServer.Por ejemplo, si su GeoServer está en la siguiente dirección:

http://localhost:8080/geoservidor

Se puede acceder a la página de demostración de GeoWebCache aquí:

http://localhost:8080/geoserver/gwc/demo

Si hay algún problema al cargar esta página, verifique que los pasos de la páginaUso de GeoWebCachese hayan realizado correctamente.

Recargar configuración

La página de demostración contiene una lista de todas las capas que GeoWebCache conoce.Normalmente (aunque no necesariamente) es idéntica a la lista de capas publicada en el documento de capacidades de GeoServer WMS.Si se realizan cambios de configuración en GeoServer, GeoWebCache no los reconocerá automáticamente.Para asegurarse de que GeoWebCache esté utilizando la información de configuración más reciente, haga clic en el botónRecargar configuración.Volver a cargar la configuración activará la autenticación en GeoServer y requerirá un nombre de usuario y contraseña de administración.Utilice el mismo nombre de usuario y contraseña que utilizaría para iniciar sesión en laInterfaz de administración web.(ConsulteConceptos básicos de la interfazpara obtener más información). Después de iniciar sesión correctamente, se mostrará el número de capas encontradas y cargadas.

Recargando la configuración

Capas y formatos de salida.

Para cada capa a la que sirve GeoWebCache, normalmente hay enlaces disponibles para diferentes proyecciones y formatos de salida.De forma predeterminada, las aplicacionesOpenLayersestán disponibles utilizando formatos de imagen PNG, PNG8, GIF y JPEG en proyeccionesEPSG:4326(lat/lon estándar) yEPSG:900913(utilizado en Google Maps).Además,la salida KMLestá disponible (solo EPSG:4326) utilizando los mismos formatos de imagen, además de datos vectoriales (“kml”).

También en la lista hay una opción para sembrar las capas (Sembrar esta capa).Más sobre esta opción a continuación.

siembra

Puede configurar procesos de inicialización a través de lainterfaz de administración web.Consulte la páginaCapas de mosaicospara obtener más información.

También es posible configurar el proceso de siembra a través de lapágina de demostración.La página contiene un enlace junto a cada capa tituladoSembrar esta capa.Este enlace activará la autenticación con la configuración de GeoServer.Utilice el mismo nombre de usuario y contraseña que utilizaría para iniciar sesión en laInterfaz de administración web.(ConsulteConceptos básicos de la interfazpara obtener más información). Después de iniciar sesión correctamente, aparece una nueva página con opciones de inicialización.

La página de opciones de siembra contiene varios parámetros para configurar la forma en que se siembra la capa.

Opción

Descripción

Numberofthreadstouse

Los valores posibles están entre1y16.

Type of operation

Establece la operación.Hay tres valores posibles:Seed(crea mosaicos, pero no sobrescribe los existentes),Reseed(como Seed, pero sobrescribe los mosaicos existentes) yTruncar(elimina todos los mosaicos dentro de los parámetros dados).

SRS

Especifica la proyección que se utilizará al crear mosaicos (los valores predeterminados sonEPSG:4326yEPSG:900913).

Format

Establece el formato de imagen de los mosaicos.Puede serapplication/vnd.google-earth.kml+xml(Google Earth KML),image/gif(GIF),image/jpeg(JPEG),image/png(PNG de 24 bits) eimage/png8(PNG de 8 bits). )

Zoomstart

Establece el nivel mínimo de zoom.Los valores más bajos indican vistas del mapa que están más alejadas.Al realizar la siembra, GeoWebCache solo creará mosaicos para aquellos niveles de zoom que incluyan este valor y.Zoomstop

Zoomstop

Establece el nivel máximo de zoom.Los valores más altos indican vistas de mapas que están más ampliadas. Al realizar la siembra, GeoWebCache solo creará mosaicos para esos niveles de zoom, incluidos este valor y.Zoomstart

Boundingbox

(opcional)Permite que la siembra se produzca en una extensión especificada, en lugar de en toda la extensión de la capa.Esto es útil si su capa contiene datos en un área grande, pero la aplicación solo solicitará mosaicos de un subconjunto de esa área.Los cuatro cuadros corresponden aXmin,Ymin,XmaxeYmax.

Advertencia

Actualmente no existe una barra de progreso que informe el tiempo necesario para realizar la operación, ni tampoco un manejo inteligente del espacio en disco.En resumen, el proceso puede llevarmuchotiempo y el caché puede llenar su disco.Es posible que desee establecer unacuota de discoantes de ejecutar un trabajo inicial.




Valores predeterminados de almacenamiento en caché

La página Valores predeterminados de almacenamiento en caché muestra las opciones de configuración global para la funcionalidad de almacenamiento en caché de mosaicos en GeoServer, un GeoWebCache integrado.

Nota

Para obtener más información sobre esta versión integrada, consulte la sección sobreAlmacenamiento en caché con GeoWebCache.

Servicios proporcionados por GWC

Además de los puntos finales de GeoServer, GeoWebCache proporciona otros puntos finales para servicios OGC.Por ejemplo, el punto final GeoServer WMS está disponible en:

http://GEOSERVER_URL/wms?...

El punto final de GeoWebCache WMS es:

http://GEOSERVER_URL/gwc/service/wms?...

Servicios prestados

Las siguientes configuraciones describen los diferentes servicios que se pueden habilitar con GeoWebCache.

Habilite la integración directa con GeoServer WMS

La integración directa permite que las solicitudes WMS atendidas a través de GeoServer se almacenen en caché como si fueran recibidas y procesadas por GeoWebCache.Esto proporciona todas las ventajas de utilizar un servidor de mosaicos y al mismo tiempo emplear el GeoServer WMS, más flexible, como alternativa.Consulte la sección sobreUso de GeoWebCachepara obtener más detalles sobre esta función.

Con la integración directa, el almacenamiento en caché de mosaicos está habilitado para todas las solicitudes WMS estándar que contienen eltiled=trueparámetro y cumplen con todos los parámetros requeridos.

Esta configuración está deshabilitada de forma predeterminada.Al habilitar esta opción, es una buena idea activar tambiénlas cuotas de discopara evitar el crecimiento ilimitado de los mosaicos almacenados.

Habilitar el servicio WMS-C

Habilita el servicio Servicio de mapas web en caché (WMS-C).Cuando esta configuración está habilitada, GeoWebCache responderá a su propio punto final WMS-C:

http://GEOSERVER_URL/gwc/service/wms?SERVICE=WMS&VERSION=1.1.1&TILED=true&...

Cuando el servicio está deshabilitado, las llamadas al documento de capacidades devolverán unmensaje.Serviceisdisabled

Habilitar el servicio TMS

Habilita el punto final del Tiled Map Service (TMS) en GeoWebCache.Con el servicio TMS, GeoWebCache responderá a su propio punto final TMS:

http://GEOSERVER/URL/gwc/service/tms/1.0.0

Cuando el servicio está deshabilitado, las llamadas al documento de capacidades devolverán unmensaje.Serviceisdisabled

Habilitar el servicio WMTS

Habilita el punto final del Web Map Tiled Service (WMTS) en GeoWebCache.Cuando esta configuración está habilitada, GeoWebCache responderá a su propio punto final WMTS:

http://GEOSERVER/URL/gwc/service/wmts?...

Cuando el servicio está deshabilitado, las llamadas al documento de capacidades devolverán unmensaje.Serviceisdisabled

Habilitar la seguridad de los datos

Habilita laseguridad de datos del Geoserveren el GeoWebCache integrado.

Opciones de almacenamiento en caché predeterminadas para capas de GeoServer

Esta sección describe la configuración de los distintos valores predeterminados y otras opciones globales para el caché de mosaicos en GeoServer.

Opciones de almacenamiento en caché predeterminadas

Configure automáticamente una capa GeoWebCache para cada nueva capa o grupo de capas

Esta configuración, habilitada de forma predeterminada, determina cómo se manejan las capas en GeoServer a través del GeoWebCache integrado.Cuando esta configuración está habilitada, se creará una entrada en la lista de capas de GeoWebCache cada vez que se publique una nueva capa o grupo de capas en GeoServer.Utilice esta configuración para mantener sincronizado el catálogo de GeoWebCache.(Esto está habilitado por defecto.)

Almacenar automáticamente en caché los estilos no predeterminados

De forma predeterminada, solo se almacenarán en caché las solicitudes que utilicen el estilo predeterminado para una capa determinada.Cuando esta configuración está habilitada, todas las solicitudes de una capa determinada, incluso aquellas que utilizan un estilo no estándar, se almacenarán en caché.Deshabilitar esto puede ser útil en situaciones donde el espacio en disco es un problema o cuando solo un estilo predeterminado es importante.

Tamaño de metátil predeterminado

Un metatile son varios mosaicos combinados en uno más grande.Este metatile más grande se genera y luego se subdivide antes de volver a servirlo (y almacenarse en caché) como mosaicos estándar.La ventaja de utilizar metatiling se encuentra en situaciones en las que una etiqueta o geometría se encuentra en un límite de un mosaico, que puede estar truncado o alterado.Con el metatiling, estos problemas con los bordes de los mosaicos se reducen considerablemente.

Además, con la metatilización, el tiempo total que lleva inicializar el caché se reduce en la mayoría de los casos, en comparación con renderizar un mapa completo con mosaicos individuales.De hecho, utilizar factores de metatiling más grandes es una buena manera de reducir el tiempo dedicado a inicializar el caché.

La desventaja de la metatilización es que, en tamaños grandes, el consumo de memoria puede ser un problema.

El tamaño del metatile predeterminado se puede ajustar aquí.De forma predeterminada, GeoServer establece un tamaño de metátil de4x4, que logra un equilibrio entre rendimiento, uso de memoria y precisión de renderizado.

Tamaño de canal predeterminado

El tamaño del medianil establece la cantidad de espacio adicional (en píxeles) que se utiliza al generar un mosaico.Use esto junto con metatiles para reducir los problemas con etiquetas y características que no se representan incorrectamente debido a que están en el límite de un mosaico.

Formatos de caché predeterminados

Esta configuración determina los formatos de imagen predeterminados que se pueden almacenar en caché cuando se realizan solicitudes en mosaico.Hay cuatro formatos de imagen que se pueden utilizar al guardar mosaicos:

PNG (PNG de 24 bits)

PNG8 (PNG de 8 bits)

JPEG

GIF

La configuración predeterminada se subdivide en capas vectoriales, capas ráster y grupos de capas.Puede seleccionar cualquiera de los cuatro formatos anteriores para cada uno de los tres tipos de capas.Cualquier solicitud que quede fuera de estas combinaciones de capa/formato no se almacenará en caché si se envía a través de GeoServer y devolverá un error si se envía a los puntos finales de GeoWebCache.

Estos valores predeterminados se pueden sobrescribir capa por capa aleditar las propiedades de la capa.

Formatos de imagen predeterminados

Opciones de BlobStore en memoria

Estas opciones se utilizan para habilitar/deshabilitar el almacenamiento en caché en memoria para GeoWebCache.Esta función se puede utilizar para guardar mosaicos de GWC directamente en la memoria, para una rápida recuperación de datos.

Permitir

Este parámetro permite habilitar o deshabilitar el almacenamiento en caché de la memoria.Por defecto, está deshabilitado.

Evite la persistencia

Este parámetro se puede utilizar para evitar guardar cualquier archivo en el sistema de archivos, manteniendo todos los mosaicos de GWC solo en la memoria.Por defecto, está deshabilitado.

Cachés disponibles

Este parámetro define qué método de caché se puede utilizar para el almacenamiento en caché en memoria.De forma predeterminada se utiliza Guava Caching.Tenga en cuenta que si un método de almacenamiento en caché requiere una configuración inmutable al inicio de GeoServer como HazelCast, los parámetrosLímite de memoria dura,Política de desalojo,Tiempo de desalojoyNivel de concurrenciaestán deshabilitados.

Puede encontrar más información sobre cómo configurar un nuevo objeto de caché en la páginade configuraciónde GeoWebCache .

Límite de memoria caché (Mb)

Parámetro para configurar en memoria caché el tamaño en MB.

Política de desalojo de caché

Parámetro para configurar en la política de desalojo de memoria caché, puede ser: LRU, LFU, EXPIRE_AFTER_WRITE, EXPIRE_AFTER_ACCESS, NULL

Tiempo de desalojo de caché (en segundos)

Parámetro para configurar en memoria caché el tiempo de desalojo.Es en Segundos.

Nota

Tenga en cuenta que este parámetro también se utiliza para configurar un subproceso interno que realiza una limpieza periódica de la caché.

Nivel de simultaneidad de caché

Parámetro para configurar la concurrencia en memoria caché.

Borrar en memoria caché

Botón para borrar todos los mosaicos en la memoria caché.

Estadísticas de caché

Diversos parámetros estadísticos asociados al caché en memoria.

Actualizar estadísticas de caché

Botón para actualizar las estadísticas de caché que se ven arriba.Las estadísticas siempre están relacionadas con las entradas almacenadas en caché local, incluso en el caso de almacenamiento en caché distribuido en memoria.

Nota

Tenga en cuenta que algunos cachés no proporcionan todos los parámetros estadísticos; en ese caso, el usuario solo verá"No disponible"para esos parámetros.

Opciones de BlobStore en memoria

Nota

Tenga en cuenta que en la pestañaTileCachingde cada capa, puede decidir desactivar el almacenamiento en memoria caché para la capa seleccionada haciendo clic en la casilla de verificaciónHabilitar almacenamiento en memoria caché para esta capa.Esta opción está deshabilitada para aquellos cachés que no admiten esta función.

Conjuntos de cuadrículas almacenados en caché predeterminados

Esta sección muestra los conjuntos de cuadrículas que se configurarán automáticamente para las capas almacenadas en caché.Si bien hay algunos conjuntos de cuadrículas preconfigurados disponibles, solo dos están habilitados de forma predeterminada.Estos corresponden a los casos más comunes y universales:

EPSG: 4326 (geográfico) con 22 niveles de zoom máximos y mosaicos de 256x256 píxeles

EPSG:900913 (Mercator esférico) con 31 niveles de zoom máximos y mosaicos de 256x256 píxeles

Conjuntos de cuadrículas predeterminados

Para agregar un conjunto de cuadrículas preexistente, selecciónelo en el menúAgregar conjunto de cuadrículas predeterminadoy haga clic en el ícono Agregar (círculo verde con signo más).

Agregar un conjunto de cuadrículas existente a la lista de valores predeterminados

Estas definiciones se describen con más detalle en la páginaGridsets.


Conjuntos de cuadrículas

Un conjunto de cuadrículas define un sistema de referencia espacial, un cuadro delimitador (extensión), una lista de niveles de zoom (resoluciones o denominadores de escala) y dimensiones de mosaico.Las solicitudes de mosaicos deben ajustarse a la matriz del conjunto de cuadrículas; de lo contrario, no se producirá el almacenamiento en caché.

Esta página le permite editar conjuntos de cuadrículas guardados existentes o crear otros nuevos.Hay cinco conjuntos de cuadrículas preconfigurados, todos en uno de dos sistemas de referencia de coordenadas: EPSG:4326 y EPSG:900913.Para compatibilidad adicional con CRS, se pueden crear nuevos conjuntos de cuadrículas.Otra razón para crear un nuevo conjunto de cuadrículas sería establecer un tamaño de mosaico diferente o un número diferente de niveles de zoom.

Menú de conjuntos de cuadrículas

Creando un nuevo gridset

Para crear un nuevo conjunto de cuadrículas, haga clic enCrear nuevo conjunto de cuadrículas.Luego se le pedirá que ingrese una variedad de parámetros.

Creando un nuevo gridset

Nombre

El nombre corto del nuevo gridset.

Descripción

Metadatos en el gridset.

Sistema de referencia de coordenadas

El sistema de referencia de coordenadas (CRS) que se utilizará en el gridset.Puede seleccionar entre cualquier CRS que GeoServer reconozca.Después de la selección, se mostrarán tanto las unidades (metros, pies, grados, etc.) como el número de metros por unidad.

Límites del conjunto de cuadrículas

Establece la extensión máxima del gridset.Normalmente, esto se establece como la extensión máxima del CRS utilizado, pero si se desea se puede sustituir por un valor menor.Para completar la extensión máxima en los campos, haga clic enCalcular desde la extensión máxima de CRS.

Ancho y alto del azulejo

Establece las dimensiones del mosaico.El valor predeterminado es256x256 píxeles.Las dimensiones del mosaico pueden ser de 16 a 2048 píxeles.Además, no es necesario que las baldosas sean cuadradas.

Conjunto de matriz de azulejos

El conjunto de matrices de mosaicos (o pirámide de mosaicos) es una lista de niveles de zoom que contiene cantidades cada vez mayores de mosaicos.Esta colección tridimensional de “ranuras” de mosaicos crea el marco donde se guardarán los mosaicos de imágenes reales.Puede definir la matriz de mosaicos en función de resoluciones o denominadores de escala.

Haga clic enAgregar nivel de zoompara generar el primer nivel de zoom.Los parámetros se configurarán automáticamente de modo que la extensión completa esté contenida en la altura de un solo píxel.Se mostrará el número de píxeles en un nivel de zoom determinado, junto con el tamaño de píxel, la escala y un nombre opcional, donde puede asignar un nombre a cada nivel de zoom si lo desea.

Normalmente, cada nivel de zoom adicional es dos veces más grande en cada dimensión y, por lo tanto, contiene cuatro veces más mosaicos que el nivel de zoom anterior.Los valores reales se completarán automáticamente al hacer clic posteriormente en el enlaceAgregar nivel de zoom.Estos valores predeterminados suelen ser suficientes y sólo necesita determinar el número máximo de niveles de zoom deseados para este conjunto de cuadrículas.

Cuando termine, haga clic enGuardar.Antes de poder utilizar este nuevo conjunto de cuadrículas con una capa, deberá agregar este conjunto de cuadrículas a la lista de conjuntos de cuadrículas disponibles de la capa.Esto se hace en la páginade propiedadesde una capa individual .También puede agregar este conjunto de cuadrículas a la lista predeterminada en la páginaValores predeterminados de almacenamiento en caché.

Conjunto de matriz de azulejos

Editar un conjunto de cuadrículas

Haga clic en un conjunto de cuadrículas existente para abrirlo y editarlo.Tenga en cuenta que los conjuntos de cuadrículas integrados no se pueden editar.Sin embargo, se pueden copiar.

Editar un conjunto de cuadrículas

Este gridset es de solo lectura

Copiar un conjunto de cuadrículas

Como hay muchas opciones de configuración para un gridset, suele ser más conveniente copiar un gridset existente.Para cualquiera de los gridsets existentes, haga clic en el enlaceCrear una copiapara copiar la información del gridset a un nuevo gridset.

Eliminar un conjunto de cuadrículas

Para eliminar un conjunto de cuadrículas, seleccione la casilla de verificación junto al conjunto de cuadrículas o conjuntos de cuadrículas y haga clic enEliminar conjuntos de cuadrículas seleccionados.

Advertencia

Eliminar una definición de gridset eliminará no solo la definición de gridset, sino también cualquier mosaico en cualquier capa generada con este gridset.

Eliminar un conjunto de cuadrículas


Cuotas de disco

La página Cuotas de disco administra el uso del disco para mosaicos almacenados en caché y le permite establecer la cuota de disco global.Las cuotas de capas individuales se pueden establecer en la páginade propiedadesde la capa .

De forma predeterminada, el uso del disco para los mosaicos almacenados en caché es ilimitado.Sin embargo, esto puede causar problemas de capacidad del disco, especialmente cuando se utiliza la integración directa de WMS (consulteCuotas de discopara obtener más información al respecto).Establecer una cuota de disco establece límites de uso del disco.

Cuando termine de realizar cambios, recuerde hacer clic enEnviar.

Cuota de disco

Habilitar cuota de disco

Cuando esté habilitado, la cuota de disco se establecerá de acuerdo con las opciones que se enumeran a continuación.La configuración está deshabilitada de forma predeterminada.

Frecuencia de verificación de cuota de disco

Esta configuración determina la frecuencia con la que se sondea la caché para detectar cualquier exceso.Los valores más pequeños (sondeos más frecuentes) aumentarán ligeramente la actividad del disco, pero los valores más grandes (sondeos menos frecuentes) pueden hacer que se supere temporalmente la cuota del disco.El valor predeterminado es10 segundos.

Tamaño máximo de caché de mosaicos

El tamaño máximo del caché.Cuando se excede este valor y se sondea la caché, los mosaicos se eliminarán de acuerdo con la política.Tenga en cuenta que las opciones de unidad sonmebibytes (MiB)(aproximadamente 1,05 MB),gibibytes (GiB)(aproximadamente 1,07 GB) ytebibytes (TiB)(aproximadamente 1,10 TB).El valor predeterminado es500 MiB.

El gráfico debajo de esta configuración ilustra el tamaño de la caché en relación con la cuota de disco.

Política de retirada de azulejos

Cuando se excede la cuota de disco, esta política determina cómo se identifican los mosaicos que se eliminarán.Las opciones sonUsado con menos frecuencia(elimina los mosaicos según la frecuencia con la que se accedió al mosaico) oUsado menos recientemente(elimina los mosaicos según la fecha del último acceso).La configuración óptima depende de sus datos y del uso del servidor.



Tiendas de blobs

BlobStores nos permite configurar cómo y dónde GeoWebCache almacenará sus datos cobrados por capa.Esta página nos permite definir los diferentes BlobStores presentes en el sistema.Los BlobStores se pueden crear, modificar y eliminar desde aquí.

General

Identificador

Cada BlobStore tiene un identificador único.

Tipo de almacén de blobs

Puede haber diferentes tipos de BlobStore para utilizar diferentes formas de almacenamiento.Solo hay soporte estándar para File BlobStores.Los complementos pueden agregar tipos adicionales.

Activado

Los BlobStores deshabilitados no se cargarán.Al deshabilitar un BlobStore se deshabilitará el cobro de todas las capas y grupos de capas asignados a ese BlobStore.

Por defecto

Siempre debe haber un BlobStore predeterminado, que no se puede eliminar.El BlobStore predeterminado será utilizado por todas las capas no asignadas a un BlobStore específico.Al eliminar un BlobStore, todas las capas asignadas a este BlobStore usarán el BlobStore predeterminado hasta que se especifique lo contrario.

Almacén de blobs de archivos

Estos almacenan datos en un disco en un directorio específico.

Directorio base

El directorio donde se almacenan los datos cobrados.

Tamaño del bloque de disco

Esta configuración determina cómo la caché de mosaicos calcula el uso del disco.El valor de esta configuración debe ser equivalente al tamaño del bloque de disco del medio de almacenamiento donde se encuentra la caché.El tamaño de bloque predeterminado es4096 bytes.




Seguridad

GeoServer tiene un subsistema de seguridadrobusto, inspirado enSpring Security.La mayoría de las funciones de seguridad están disponibles a través de lainterfaz de administración web.Esta sección describe cómo configurar la seguridad de GeoServer.

Ajustes

Servicio de rol activo

Cifrado

Cifrado de contraseña

Autenticación

Autenticación anónima

Filtros de autenticación

Proveedores de autenticación

Cadena de autenticación

Contraseñas

Proveedor de contraseña maestra activa

Proveedores de contraseñas maestras

Políticas de contraseña

Usuarios, grupos, roles

Servicios de grupo de usuarios

Agregar nuevo servicio de usuario/grupo XML

Agregar nuevo servicio de usuario/grupo JDBC

Editar servicio de usuario/grupo

Servicios de rol

Agregar nuevo servicio de rol XML

Agregar nuevo servicio de rol JDBC

Agregar nuevo servicio de rol LDAP

Editar servicio de rol

Datos

Normas

Modo catálogo

Servicios

Exploración de archivos



Ajustes

La página Configuración controla la configuración de seguridad global de GeoServer.

Página de configuración de seguridad

Servicio de rol activo

Esta opción configura elservicio de rolactivo (proporciona información sobre roles).Los servicios de roles se administran en la páginaUsuarios, Grupos, Roles.Sólo puede haber un servicio de rol activo a la vez.

Cifrado

La interfaz de usuario (UI) de GeoServer a veces puede exponer parámetros en texto sin formato dentro de las URL.Como resultado, puede resultar conveniente cifrar los parámetros de URL.Para habilitar el cifrado, seleccioneCifrar parámetros de URL de administrador web.Esto configurará GeoServer para que utilice uncifrado de contraseñabasado en PBE .

Por ejemplo, con esta función habilitada, la página:

http://GEOSERVER/web/?wicket:bookmarkablePage=:org.geoserver.security.web.SecuritySettingsPage

ahora se encontraría en la siguiente URL:

http://GEOSERVER/web/?x=hrTNYMcF3OY7u4NdyYnRanL6a1PxMdLxTZcY5xK5ZXyi617EFEFCAgMwHBWhrlg*ujTOyd17DLSn0NO2JKO1Dw

Cifrado de contraseña

Esta configuración le permite seleccionar el tipo decifrado de contraseñautilizado para las contraseñas.Las opciones sonTexto sin formato,PBE débiloPBE fuerte.

Si Strong PBE no está disponible como parte de JVM, se mostrará una advertencia y la opción se desactivará.Para habilitar Strong PBE, debe instalar políticas JAR externas que admitan esta forma de cifrado.Consulte la sección sobreCifrado de contraseñapara obtener más detalles sobre estas configuraciones.

Advertencia si Strong PBE no está disponible




Autenticación

Esta página administra las opciones de autenticación, incluidos los proveedores de autenticación y la cadena de autenticación.

Autenticación anónima

De forma predeterminada, GeoServer permitirá el acceso anónimo a lainterfaz de administración web.Sin autenticación, los usuarios aún podrán ver laVista previa de capas, los documentos de capacidades y los detalles básicos de GeoServer.El acceso anónimo se puede desactivar desactivando la casilla de verificaciónPermitir autenticación anónima.Los usuarios anónimos que naveguen a la página de GeoServer obtendrán un código de estado HTTP 401, que generalmente resulta en una solicitud de credenciales basada en el navegador.

Nota

Obtenga más información sobrela autenticación en la interfaz de administración web.

Casilla de verificación de autenticación anónima

Filtros de autenticación

Esta sección administra los filtros de autenticación (agregar, eliminar y editar).Por defecto se configuran varios filtros de autenticación (anónimo, básico, formulario, recordarme), pero se pueden agregar otros a la lista.

Lista de filtros de autenticación

Credenciales del filtro de encabezados

Este filtro permite recopilar credenciales de usuario (nombre de usuario y contraseña) de los encabezados de solicitud de forma flexible y configurable.

Crear un nuevo filtro de autenticación que obtenga credenciales de los encabezados de solicitud

Opción

Descripción

Nombre

Nombre del filtro

Encabezado de nombre de usuario

Nombre del encabezado de solicitud que contiene el nombre de usuario

Expresión regular para nombre de usuario

Expresión regular utilizada para extraer el nombre de usuario del encabezado relacionado.Debe definir un grupo que coincida con el nombre de usuario.

Encabezado de contraseña

Nombre del encabezado de solicitud que contiene la contraseña

Expresión regular para contraseña

Expresión regular utilizada para extraer la contraseña del encabezado relacionado.Debe definir un grupo que coincida con la contraseña.

Analizar argumentos como componentes de Uri

Si el nombre de usuario y la contraseña marcados se descodifican en uri antes de usarlos como credenciales

Proveedores de autenticación

Esta sección administra losproveedores de autenticación(agregar, eliminar y editar).El proveedor de autenticación predeterminado utilizaautenticación básica de nombre de usuario/contraseña.También se puede utilizar la autenticaciónJDBCyLDAP .

Haga clic enAgregar nuevopara crear un nuevo proveedor.Haga clic en un proveedor existente para editar sus parámetros.

Lista de proveedores de autenticación

Proveedor de nombre de usuario/contraseña

El nuevo proveedor de autenticación predeterminado utiliza un servicio de usuario/grupo para la autenticación.

Crear un nuevo proveedor de autenticación con un nombre de usuario y contraseña

Opción

Descripción

Nombre

Nombre del proveedor

Servicio de grupo de usuarios

Nombre del servicio de usuario/grupo asociado con este proveedor.Puede ser cualquiera de los servicios de usuario/grupo activos.

proveedor JDBC

Las opciones de configuración para el proveedor de autenticación JDBC se ilustran a continuación.

Configuración del proveedor de autenticación JDBC

Opción

Descripción

Nombre

Nombre de la conexión JDBC en GeoServer

Servicio de grupo de usuarios

Nombre del servicio de usuario/grupo que se utilizará para cargar la información del usuario después de autenticar al usuario.

Nombre de la clase de conductor

Controlador JDBC que se utilizará para la conexión de la base de datos

URL de conexión

URL de JDBC que se utilizará al crear la conexión a la base de datos

Proveedor LDAP

La siguiente ilustración muestra las opciones de configuración para el proveedor de autenticación LDAP.La opción predeterminada es utilizar grupos LDAP para la asignación de funciones, pero también existe una opción para utilizar un servicio de usuario/grupo para la asignación de funciones.Dependiendo de si se selecciona esta opción, la propia página tendrá diferentes opciones.

Configuración del proveedor de autenticación LDAP utilizando grupos LDAP para la asignación de roles

Configuración del proveedor de autenticación LDAP utilizando el servicio de usuario/grupo para la autenticación

Opción

Descripción

Nombre

Nombre de la conexión LDAP en GeoServer

URL del servidor

URL para la conexión del servidor LDAP.Debe incluir el protocolo, el host y el puerto, así como el “nombre distinguido” (DN) de la raíz del árbol LDAP.

TLS

Habilita una conexión STARTTLS.(Consulte la sección sobreconexiones LDAP seguras).

Patrón DN de usuario

Patrón de búsqueda que se utilizará para hacer coincidir el DN del usuario en la base de datos LDAP.El patrón debe contener el marcador de posición{0}que se inyecta con eluiddel usuario.Ejemplo:uid={0},ou=people.El DN raíz especificado como puerto de laURL del servidorse agrega automáticamente.

Filtro de usuario

Filtro LDAP utilizado para extraer datos del usuario de la base de datos LDAP.Se utiliza alternativamente al patrón DN de usuario y se combina con el formato de usuario para separar el manejo de extracción de datos de usuario y enlace.Ejemplo:(userPrincipalName={0}).Obtiene datos del usuario buscando un único registro que coincida con el filtro.Esto puede contener dos valores de marcador de posición:{0}, el DN completo del usuario, por ejemplouid=bob,ou=people,dc=acme,dc=com{1}, lauidparte del DN completo, por ejemplobob.

Formato de usuario

Formateador de cadenas utilizado para crear el nombre de usuario utilizado para el enlace.Se utiliza como alternativa al patrón DN de usuario y se combina con el filtro de usuario para separar el manejo de extracción de datos de usuario y enlace.Ejemplo:{0}@domain.Vincula al usuario con el nombre de usuario creado aplicando el formato.Esto puede contener un marcador de posición:{0}, el nombre de usuario, por ejemplobob

Utilice grupos LDAP para autorización

Especifica si se deben utilizar grupos LDAP para la asignación de roles.

Vincular antes de la búsqueda de grupo

Especifica si se debe vincular al servidor LDAP con las credenciales del usuario antes de realizar la búsqueda de grupo.

base de búsqueda de grupo

Nombre relativo del nodo en el árbol que se utilizará como base para los grupos LDAP.Ejemplo:ou=groups.El DN raíz especificado como puerto de laURL del servidorse agrega automáticamente.Solo se aplica cuando elparámetro Usar grupos LDAP para autorización (está **marcado*).

Filtro de búsqueda de grupo

Patrón de búsqueda para localizar los grupos LDAP a los que pertenece un usuario.Esto puede contener dos valores de marcador de posición:{0}, el DN completo del usuario, por ejemplouid=bob,ou=people,dc=acme,dc=com{1}, lauidparte del DN completo, por ejemplobob.Solo se aplica cuando elparámetro Usar grupos LDAP para autorización (está **marcado*).

Grupo de administración

Nombre del grupo que se asignará al rol de Administrador (el valor predeterminado es ADMINISTRADOR).Ejemplo:ADMIN.Agrega el rol ROLE_ADMINISTRATOR si el usuario pertenece a un grupo llamado ADMIN (no distingue entre mayúsculas y minúsculas)

Grupo de administración de grupo

Nombre del grupo que se asignará a la función de administrador de grupo (el valor predeterminado es GROUP_ADMIN).Ejemplo:GROUPADMIN.Agrega el rol ROLE_GROUP_ADMIN si el usuario pertenece a un grupo llamado GROUPADMIN (no distingue entre mayúsculas y minúsculas)

Servicio de grupo de usuarios

El servicio de usuario/grupo que se utilizará para la asignación de roles.Solo se aplica cuando el parámetroUsar grupos LDAP para autorizaciónestádesactivado.

Cadena de autenticación

Esta sección selecciona la cadena de autenticación.Actualmente, solo está disponible una cadena de autenticación predeterminada.Para obtener más información sobre la cadena predeterminada, consulteCadena de autenticación.

Seleccionar la cadena de autenticación

Contraseñas

Esta página configura las diversas opciones relacionadas conContraseñas,Contraseña maestrayPolíticas de contraseñas.

Nota

Las contraseñas de los usuarios se pueden cambiar en el cuadro de diálogo Usuarios al que se accede desde la páginaUsuarios, Grupos, Roles.

Proveedor de contraseña maestra activa

Esta opción establece el proveedor de contraseña maestra activo, a través de una lista de todos los proveedores de contraseña maestra disponibles.

Proveedor de contraseña maestra activa

Para cambiar la contraseña maestra, haga clic en el enlaceCambiar contraseña.

Cambiar la contraseña maestra

Proveedores de contraseñas maestras

Esta sección proporciona las opciones para agregar, eliminar y editar proveedores de contraseñas maestras.

Lista de proveedores de contraseñas maestras

Políticas de contraseña

Esta sección configura las diversaspolíticas de contraseñadisponibles para los usuarios en GeoServer.Se pueden agregar o cambiar el nombre de nuevas políticas de contraseña y editar o eliminar las políticas existentes.

De forma predeterminada, hay dos políticas de contraseñas vigentesdefaultymaster.Ladefaultpolítica de contraseñas, destinada a la mayoría de los usuarios de GeoServer, no tiene restricciones de contraseña activa.Lamasterpolítica de contraseñas, destinada a lacuenta raíz, especifica unalongitud mínima de contraseña de ocho caracteres.Las políticas de contraseña se aplican a los usuarios a través del servicio de usuario/grupo.

Lista de políticas de contraseña

Al hacer clic en una política existente se habilita la edición, mientras que al hacer clic en el botónAgregar nuevase creará una nueva política de contraseña.

Crear una nueva política de contraseñas

Usuarios, grupos, roles

Esta sección proporciona las opciones de configuración paralos servicios de usuario/grupoylos servicios de rol.Además, los usuarios, grupos y roles se pueden agregar, editar o eliminar.Se puede realizar una gran cantidad de configuración en esta sección y en las páginas relacionadas.

Servicios de grupo de usuarios

En este menú, se pueden agregar, eliminar o editar servicios de usuario/grupo.De forma predeterminada, hay un servicio de usuario/grupo en GeoServer, que estábasado en XML.Está cifrado conPBE débily utiliza lapolítica de contraseñapredeterminada .También es posible tener un servicio de usuario/grupo basado enJDBC, con o sin JNDI.

Servicios de usuario/grupo

Al hacer clic en un servicio de usuario/grupo existente se habilitará la edición, mientras que al hacer clic en el enlaceAgregar nuevose configurará un nuevo servicio de usuario/grupo.

Hay tres pestañas para la configuración: Configuración, Usuarios y Grupos.

Nota

Al crear un nuevo servicio de usuario/grupo, el formulario completado inicialmente se puede encontrar en la pestaña Configuración.

Agregar nuevo servicio de usuario/grupo XML

Para agregar un nuevo servicio de usuario/grupo XML, haga clic en el enlaceAgregar nuevo.XML es la opción predeterminada.La siguiente figura muestra las opciones de configuración para un servicio de usuario/grupo XML.

Agregar un servicio de usuario/grupo XML

Opción

Descripción

Nombre

El nombre del servicio de usuario/grupo.

Cifrado de contraseña

Establece el tipo decifrado de contraseña.Las opciones sonTexto sin formato,PBE débil,PBE fuerteyResumen.

Política de contraseñas

Establece lapolítica de contraseñas.Las opciones son cualquier política de contraseña activa establecida en la secciónContraseñas.

nombre de archivo XML

Nombre del archivo que contendrá la información del usuario y grupo.El valor predeterminado estáusers.xmlen elsecurity/usergroup/<name_of_usergroupservice>directorio.

Habilitar la validación del esquema

Si se selecciona, fuerza que se realice la validación del esquema cada vez que se lee el archivo XML.Esta opción es útil al editar el archivo XML a mano.

Intervalo de recarga de archivos

Define la frecuencia (en milisegundos) con la que GeoServer comprobará si hay cambios en el archivo XML.Si se descubre que el archivo ha sido modificado, GeoServer recreará la base de datos del usuario/grupo en función del estado actual del archivo.Este valor debe establecerse en los casos en que el contenido del archivo XML pueda cambiar "fuera de proceso" y no directamente a través de la interfaz de administración web.El valor se especifica en milisegundos.Un valor de 0 deshabilita cualquier verificación del archivo.

Agregar nuevo servicio de usuario/grupo JDBC

Para agregar un nuevo servicio de usuario/grupo XML, haga clic en el enlaceAgregar nuevoy luego en la opciónJDBCen la parte superior del siguiente formulario.La siguiente figura muestra las opciones de configuración para un servicio de usuario/grupo JDBC.


Agregar un servicio de usuario/grupo a través de JDBC

Opción

Descripción

Nombre

Nombre del servicio de usuario/grupo JDBC en GeoServer

Cifrado de contraseña

El método utilizado paracifrar las contraseñas de los usuarios.

Política de contraseñas

Lapolíticaa utilizar para imponer restricciones a las contraseñas de los usuarios.

JNDI

Cuando no está marcado, especifica una conexión directa a la base de datos.Cuando está marcado, especifica una conexión existente ubicada a través deJNDI.

Nombre de la clase de conductor

Controlador JDBC que se utilizará para la conexión de la base de datos

URL de conexión

Especifica la URL de JDBC que se utilizará al crear la conexión de base de datos.

Nombre de usuario

Nombre de usuario a utilizar al conectarse a la base de datos

Contraseña

Contraseña a utilizar al conectarse a la base de datos

Crear tablas de base de datos

Especifica si se deben crear todas las tablas necesarias en la base de datos subyacente.

Archivo de lenguaje de definición de datos (DDL)

Especifica un archivo DDL personalizado que se utilizará para crear tablas en la base de datos subyacente, en los casos en los que las instrucciones DDL predeterminadas fallan en la base de datos determinada.Si se deja en blanco, se utilizan los valores predeterminados internos.

Archivo de lenguaje de manipulación de datos (DML)

Especifica un archivo DML personalizado que se utilizará para acceder a tablas en la base de datos subyacente, en los casos en los que las instrucciones DML predeterminadas fallan en la base de datos determinada.Si se deja en blanco, se utilizan los valores predeterminados internos.

Además de los parámetros enumerados anteriormente, se aplicará el siguiente parámetro adicional cuando se establezca el indicadorJNDI.


Agregar un servicio de usuario/grupo a través de JDBC con JNDI

Opción

Descripción

Nombre del recurso JNDI

Nombre JNDI utilizado para localizar la conexión de la base de datos.

Editar servicio de usuario/grupo

Una vez que se agrega el nuevo servicio de usuario/grupo (ya sea XML o JDBC), al hacer clic en él en la lista de servicios de usuario/grupo se podrán especificar opciones adicionales, como los usuarios y grupos asociados con el servicio.

Hay tres pestañas en el menú resultante:Configuración,UsuariosyGrupos.La pestaña Configuración es idéntica a la que se encuentra al crear el servicio de usuario/grupo, mientras que las demás se describen a continuación.

La pestaña Usuarios proporciona opciones para configurar usuarios en el servicio de usuario/grupo.


Pestaña de usuarios

Al hacer clic en un nombre de usuario se podrán cambiar sus parámetros, mientras que al hacer clic en el enlaceAgregar nuevose creará un nuevo usuario.

Agregar usuario


Crear o editar un usuario

Opción

Descripción

Nombre de usuario

El nombre del usuario

Activado

Cuando se selecciona, permitirá al usuario autenticarse

Contraseña

La contraseña de este usuario.Las contraseñas existentes quedarán ocultas cuando se vean.

Confirmar Contraseña

Para establecer o cambiar la contraseña, ingrese la contraseña dos veces.

Propiedades de usuario

Pares clave/valor asociados con el usuario.Se utiliza para asociar información adicional con el usuario.

lista de grupos

Lista completa de grupos, incluida la lista de grupos de los que el usuario es miembro.La membresía se puede alternar aquí mediante los botones de flecha.

Agregar un nuevo grupo

Acceso directo para agregar un nuevo grupo.También disponible en la pestaña Grupos.

Lista de roles

Lista completa de roles, incluida una lista de roles a los que está asociado el usuario.La asociación se puede alternar aquí mediante los botones de flecha.

Agregar un nuevo rol

Acceso directo para agregar un nuevo rol

Lista de roles actuales para el usuario

Lista de roles actuales asociados con el usuario.Haga clic en una función para habilitar la edición.

La pestaña Grupos proporciona opciones de configuración para grupos en este servicio de usuario/grupo.Hay opciones para agregar y eliminar un grupo, con una opción adicional para eliminar un grupo y los roles asociados con ese grupo.


Pestaña de grupos

Añadir grupo


Crear o editar un grupo

Opción

Descripción

Nombre del grupo

El nombre del grupo

Activado

Cuando se seleccione, el grupo estará activo.

Lista de roles

Lista completa de roles, incluida una lista de roles a los que está asociado el grupo.La asociación se puede alternar aquí mediante los botones de flecha.

Agregar un nuevo rol

Acceso directo para agregar un nuevo rol

En este menú, se pueden agregar, eliminar o editar servicios de usuario/grupo.De forma predeterminada, hay un servicio de usuario/grupo en GeoServer, que estábasado en XML.Está cifrado conPBE débily utiliza lapolítica de contraseñapredeterminada .También es posible tener un servicio de usuario/grupo basado enJDBCcon o sin JNDI.

Servicios de rol

En este menú, se pueden agregar, eliminar o editar servicios de roles.Por defecto, el servicio de rol activo en GeoServer estábasado en XML, pero también es posible tener un servicio de rol basado enJDBC, con o sin JNDI.

El rol de Administrador se llamaROLE_ADMINISTRATOR.


Servicios de rol

Al hacer clic en un servicio de función existente, se abrirá para editarlo, mientras que al hacer clic en el enlaceAgregar nuevose configurará un nuevo servicio de función.

Hay dos páginas para la configuración: Configuración y Roles.

Nota

Al crear un nuevo servicio de rol, el formulario completado inicialmente se puede encontrar en la pestaña Configuración.

Agregar nuevo servicio de rol XML

Para agregar un nuevo servicio de rol XML, haga clic en el enlaceAgregar nuevo.XML es la opción predeterminada.La siguiente figura muestra las opciones de configuración para un servicio de rol XML.


Agregar un servicio de rol XML

Opción

Descripción

Nombre

El nombre del servicio de rol.

Rol de administrador

El nombre del rol que realiza las funciones de administrador.

nombre de archivo XML

Nombre del archivo que contendrá la información del rol.El valor predeterminado estároles.xmlen elsecurity/role/<name_of_roleservice>directorio.

Intervalo de recarga de archivos

Define la frecuencia (en milisegundos) con la que GeoServer comprobará si hay cambios en el archivo XML.Si se descubre que el archivo ha sido modificado, GeoServer recreará la base de datos del usuario/grupo en función del estado actual del archivo.Este valor debe establecerse en los casos en que el contenido del archivo XML pueda cambiar "fuera de proceso" y no directamente a través de la interfaz de administración web.El valor se especifica en milisegundos.Un valor de 0 deshabilita cualquier verificación del archivo.

Agregar nuevo servicio de rol JDBC

Para agregar un nuevo servicio de rol XML, haga clic en el enlaceAgregar nuevoy luego en la opciónJDBCen la parte superior del siguiente formulario.La siguiente figura muestra las opciones de configuración para un servicio de rol JDBC.


Agregar un servicio de rol a través de JDBC

Opción

Descripción

Nombre

Nombre del servicio de rol JDBC en GeoServer

Rol de administrador

El nombre del rol que realiza la función de administrador.

JNDI

Cuando no está marcado, especifica una conexión directa a la base de datos.Cuando está marcado, especifica una conexión existente ubicada a través deJNDI.

Nombre de la clase de conductor

Controlador JDBC que se utilizará para la conexión de la base de datos

URL de conexión

Especifica la URL de JDBC que se utilizará al crear la conexión de base de datos.

Nombre de usuario

Nombre de usuario a utilizar al conectarse a la base de datos

Contraseña

Contraseña a utilizar al conectarse a la base de datos

Crear tablas de base de datos

Especifica si se deben crear todas las tablas necesarias en la base de datos subyacente.

Archivo de lenguaje de definición de datos (DDL)

Especifica un archivo DDL personalizado que se utilizará para crear tablas en la base de datos subyacente, en los casos en los que las instrucciones DDL predeterminadas fallan en la base de datos determinada.Si se deja en blanco, se utilizan los valores predeterminados internos.

Archivo de lenguaje de manipulación de datos (DML)

Especifica un archivo DML personalizado que se utilizará para acceder a tablas en la base de datos subyacente, en los casos en los que las instrucciones DML predeterminadas fallan en la base de datos determinada.Si se deja en blanco, se utilizan los valores predeterminados internos.

Además de los parámetros enumerados anteriormente, se aplicará el siguiente parámetro adicional cuando se establezca el indicadorJNDI.


Agregar un servicio de rol a través de JDBC con JNDI

Opción

Descripción

Nombre del recurso JNDI

Nombre JNDI utilizado para localizar la conexión de la base de datos.

Agregar nuevo servicio de rol LDAP

Para agregar un nuevo servicio de función LDAP, haga clic en el enlaceAgregar nuevoy luego en la opciónLDAPen la parte superior del siguiente formulario.La siguiente figura muestra las opciones de configuración para un servicio de rol LDAP.


Agregar un servicio de rol a través de LDAP

Opción

Descripción

Nombre

Nombre del servicio de rol LDAP en GeoServer

Rol de administrador

El nombre del rol que realiza la función de administrador.

Rol de administrador de grupo

El nombre del rol que realiza la función de administrador del grupo.

URL del servidor

URL para la conexión del servidor LDAP.Debe incluir el protocolo, el host y el puerto, así como el “nombre distinguido” (DN) de la raíz del árbol LDAP.

TLS

Habilita una conexión STARTTLS.(Consulte la sección sobreconexiones LDAP seguras).

base de búsqueda de grupo

Nombre relativo del nodo en el árbol que se utilizará como base para los grupos LDAP.Ejemplo:ou=groups.El DN raíz especificado como puerto de laURL del servidorse agrega automáticamente.

Filtro de búsqueda de membresía de usuarios de grupo

Patrón de búsqueda para extraer usuarios de un grupo LDAP al que pertenece un usuario.Esto puede contener algunos valores de marcador de posición:{0}, elusernamedel usuario, por ejemplobob.{1}, el DN completo del usuario, por ejemplouid=bob,ou=users.Para utilizar este marcador de posición,es necesario definir elfiltro utilizado para buscar usuarios , de modo que el dn de un usuario pueda extraerse de su nombre de usuario.

Filtro de búsqueda de todos los grupos.

Patrón de búsqueda para ubicar los grupos LDAP que se asignarán a los roles de GeoServer dentro delnodo raíz de labase de búsqueda del grupo

Filtro utilizado para buscar usuarios.

Filtro opcional utilizado para extraer un dn de usuario, que se utilizará junto conel filtro de búsqueda de pertenencia a usuarios de grupocuando se especifique el marcador de posición {1}.Esto puede contener un valor de marcador de posición:{0}, elusernamedel usuario, por ejemplobob.

Autenticar para extraer roles

Cuando esté marcada, todas las búsquedas LDAP se realizarán en modo autenticado, utilizando las credenciales proporcionadas con lasopcionesNombre de usuarioyContraseña .

Nombre de usuario

Nombre de usuario que se utilizará al conectarse al servidor LDAP.Solo se aplica cuando elparámetroAutenticar para extraer roles estámarcado.

Contraseña

Contraseña que se utilizará al conectarse al servidor LDAP.Solo se aplica cuando elparámetroAutenticar para extraer roles estámarcado.

Editar servicio de rol

Una vez que se agrega el nuevo servicio de rol (ya sea XML o JDBC), al hacer clic en él en la lista de servicios de rol se podrán especificar opciones adicionales, como los roles asociados con el servicio.

Hay dos pestañas en el menú resultante:ConfiguraciónyRoles.La pestaña Configuración es idéntica a la que se encuentra al crear el servicio de roles, mientras que la pestaña Roles se describe a continuación.


Pestaña de roles

Al hacer clic en una función se podrán cambiar sus parámetros, mientras que al hacer clic en el enlaceAgregar nuevose creará una nueva función.

Agregar rol


Crear o editar un rol

Opción

Descripción

Nombre de rol

El nombre del rol.La convención está en mayúsculas, pero no es obligatoria.

Roles de los padres

El rol que hereda este rol.Consulte la sección sobreRolespara obtener más información sobre la herencia.

Parámetros de rol

Pares clave/valor asociados con el rol.Se utiliza para asociar información adicional con el rol.




Datos

Esta sección proporciona acceso a la configuración de seguridad relacionada con la gestión de datos yla seguridad de la capa.El acceso a los datos se otorga a los roles y los roles se otorgan a los usuarios y grupos.

Normas

Hay dos reglas disponibles de forma predeterminada, pero no proporcionan ninguna restricción de acceso de forma predeterminada.La primera regla*.*.r, aplicada a todos los roles, establece que se puede leer cualquier operación en cualquier recurso en cualquier espacio de trabajo.La segunda regla,*.*.wque también se aplica a todos los roles, dice lo mismo para el acceso de escritura.


Reglas para el acceso a los datos.

Al hacer clic en una regla existente, se abrirá para editarla, mientras que al hacer clic en el enlaceAgregar una nueva reglase creará una nueva regla.


Creando una nueva regla

Opción

Descripción

Espacio de trabajo

Establece el espacio de trabajo permitido para esta regla.Las opciones son*(todos los espacios de trabajo) o el nombre de cada espacio de trabajo.

Capa

Establece la capa permitida para esta regla.Las opciones son*(todas las capas) o el nombre de cada capa en el espacio de trabajo anterior.Estará deshabilitado hasta que se configure el espacio de trabajo.

Modo de acceso

Especifica si la regla se refiere almodoReadoWrite

Conceder acceso a cualquier rol

Si se selecciona, la regla se aplicará a todos los roles, sin necesidad de especificar

Lista de roles

Lista completa de roles, incluida una lista de roles a los que está asociada la regla.La asociación se puede alternar aquí mediante los botones de flecha.Esta opción no se aplica sise marcaConceder acceso a cualquier rol .

Agregar un nuevo rol

Acceso directo para agregar un nuevo rol

Modo catálogo

Este modo configura cómo GeoServer anunciará las capas seguras y se comportará cuando se acceda a una capa segura sin los privilegios necesarios.Hay tres opciones:OCULTAR,MIXTOyDESAFIO.Para obtener más información sobre estas opciones, consulte la sección sobreSeguridad de capa.


Modo catálogo




Servicios

Esta sección proporciona acceso a la configuración deSeguridad del servicio.GeoServer puede limitar el acceso en función de los servicios OWS (WFS, WMS, etc.) y sus operaciones específicas (GetCapabilities, GetMap, etc.).

De forma predeterminada, no hay ninguna seguridad basada en servicios en GeoServer.Sin embargo, las reglas se pueden agregar, eliminar o editar aquí.


Lista de reglas de acceso al servicio

Al hacer clic en el enlaceAgregar una nueva regla,se creará una nueva regla.


Nueva regla de servicio

Opción

Descripción

Servicio

Establece el servicio OWS para esta regla.Las opciones son*, es decir, todos los servicios,wcs,wfsowms.

Método

Establece la operación específica para esta regla.Las opciones dependen delServicio, pero incluyen*, es decir, todas las operaciones, así como todas las operaciones de servicio conocidas por GeoServer, como Capacidades, Transacción, GetMap y más.

Conceder acceso a cualquier rol

Si se selecciona, la regla se aplicará a todos los roles (no es necesario especificar cuáles)

Lista de roles

Lista completa de roles, incluida una lista de roles a los que está asociada la regla.La asociación se puede cambiar aquí mediante los botones de flecha.Esta opción no se aplica sise marcaConceder acceso a cualquier rol .

Agregar un nuevo rol

Acceso directo para agregar un nuevo rol

Exploración de archivos

El administrador web de GeoServer emplea un cuadro de diálogo de explorador de archivos que expondrá ubicaciones del sistema de archivos distintas al directorio de GeoServer.Estas ubicaciones incluyen la raíz del sistema de archivos y el directorio de inicio de los usuarios.En entornos altamente seguros y de múltiples inquilinos, es posible que desee desactivar esta función.

La propiedadGEOSERVER_FILEBROWSER_HIDEFSse puede utilizar para desactivar esta funcionalidad.Cuando se establece entruesolo el directorio de datos de GeoServer, se expondrá a través del explorador de archivos.

La propiedad se fija a través de uno de los medios estándar:


web.xml


<parámetro-contexto>

<nombre-param>GEOSERVER_FILEBROWSER_HIDEFS</nombre-param>

<valor-param>verdadero</valor-param>

</context-param>



Propiedad del sistema


- DGEOSERVER_FILEBROWSER_HIDEFS = verdadero



Variable ambiental


exportar GEOSERVER_FILEBROWSER_HIDEFS=true



Población

Esta página contiene enlaces útiles a varias páginas de información sobre GeoServer y sus características.No es necesario iniciar sesión en GeoServer para acceder a esta página.


Página de demostraciones

Solicitudes de demostración

Esta página tiene ejemplos de solicitudes WMS, WCS y WFS para GeoServer que puede usar, examinar y cambiar.Seleccione una solicitud de la lista desplegable.


Seleccionar solicitudes de demostración

Tanto las solicitudes del Servicio de funciones web (Servicio de funciones web) como del Servicio de cobertura web (Servicio de cobertura web) mostrarán la URL de la solicitud y el cuerpo XML.Las solicitudes del Servicio de mapas web (Servicio de mapas web) solo mostrarán la URL de la solicitud.


WFS 1.1 Solicitud de muestra DescribeFeatureType

Haga clic enEnviarpara enviar la solicitud a GeoServer.Para solicitudes WFS y WCS, GeoServer generará automáticamente una respuesta XML.


Respuesta XML de una solicitud de muestra WFS 1.1 DescribeFeatureType

Al enviar una solicitud WMS GetMap se muestra una imagen basada en los datos geográficos proporcionados.


Solicitud GetMap de OpenLayers WMS

Las solicitudes WMS GetFeatureInfo recuperan información sobre una característica particular en la imagen del mapa.


Solicitud WMS GetFeatureInfo

SRS

GeoServer admite de forma nativa casi 4000 sistemas de referencia espacial (SRS), también conocidos comoproyecciones, y se pueden agregar más.Un sistema de referencia espacial define un elipsoide, un dato que utiliza ese elipsoide y un sistema de coordenadas geocéntricas, geográficas o de proyección.Esta página enumera toda la información SRS conocida por GeoServer.


Listado de todos los sistemas de referencia espacial (SRS) conocidos por GeoServer

La columnaCódigose refiere al identificador entero único definido por el autor de ese sistema de referencia espacial.Cada código está vinculado a una página de descripción más detallada, a la que se accede haciendo clic en ese código.


Detalles para SRS EPSG:2000

El título de cada SRS está compuesto por el nombre del autor y el identificador entero único (código) definido por el Autor.En el ejemplo anterior, el autor es elEuropean Petroleum Survey Group(EPSG) y el Código es 2000. Los campos son los siguientes:

Descripción: una breve descripción de texto del SRS.

WKT: cadena que describe el SRS.WKT significa "texto conocido"

Área de validez: el cuadro delimitador del SRS


Trabajar con datos vectoriales

Esta sección analiza las fuentes de datos vectoriales a las que GeoServer puede acceder.

La instalación estándar de GeoServer admite la carga y entrega de los siguientes formatos de datos:

Archivo de forma

Directorio de archivos espaciales.

Propiedades de Java

Otras fuentes de datos se suministran como extensiones de GeoServer.Las extensiones son módulos descargables que agregan funcionalidad a GeoServer.Las extensiones están disponibles en lapágina de descarga de GeoServer.

Advertencia

La versión de la extensión debe coincidir con la versión de la instancia de GeoServer.

GML

VPF

Características pregeneralizadas




Archivo de forma

Un shapefile es un formato popular de datos vectoriales geoespaciales.

Nota

Si bien GeoServer tiene un soporte sólido para el formato shapefile, no es el formato recomendado en un entorno de producción.Las bases de datos como PostGIS son más adecuadas en producción y ofrecen mejor rendimiento y escalabilidad.Consulte la sección sobreEjecución en un entorno de producciónpara obtener más información.

Agregar un archivo de forma

Un shapefile es en realidad una colección de archivos (con las extensiones:.shp,.dbf,.shx,.prjy, a veces, otras).Todos estos archivos deben estar presentes en el mismo directorio para que GeoServer los lea con precisión.Como ocurre con todos los formatos, agregar un archivo de forma a GeoServer implica agregar una nueva tienda a lasTiendasexistentes a través de laInterfaz de administración web.

Advertencia

El.prjarchivo, aunque no es obligatorio, se recomienda encarecidamente cuando se trabaja con GeoServer, ya que contiene información valiosa sobre la proyección.¡Es posible que GeoServer no pueda cargar su archivo de forma sin él!

Para comenzar, navegue hastaTiendas ‣ Agregar una nueva tienda ‣ Shapefile.


Agregar un archivo de forma como tienda

Opción

Descripción

Espacio de trabajo

Nombre del espacio de trabajo que contiene la tienda.Este también será el prefijo de la capa creada desde la tienda.

Nombre de fuente de datos

Nombre del archivo de forma conocido por GeoServer.Puede ser diferente del nombre del archivo.La combinación del nombre del espacio de trabajo y este nombre será el nombre completo de la capa (por ejemplo: topp:states).

Descripción

Descripción del shapefile/tienda.

Activado

Habilita la tienda.Si no está marcada, no se entregarán datos en el archivo de forma.

URL

Ubicación del archivo de forma.Puede ser una ruta absoluta (comofile:C:\Data\shapefile.shp) o una ruta relativa al directorio de datos (comofile:data/shapefile.shp.

espacio de nombres

Espacio de nombres que se asociará con el archivo de forma.Este campo se modifica cambiando el nombre del espacio de trabajo.

crear índice espacial

Permite la creación automática de un índice espacial.

juego de caracteres

Conjunto de caracteres utilizado para decodificar cadenas del.dbfarchivo.

búfer de memoria asignadaCaché y reutilización de mapas de memoria

Permite el uso de E/S asignadas en memoria, mejorando el almacenamiento en caché del archivo en la memoria.Desactivar en servidores Windows.

Cuando termine, haga clic enGuardar.

Configurar una capa de archivo de forma

Los Shapefiles contienen exactamente una capa, que debe agregarse como una nueva capa antes de que GeoServer pueda servirla.Consulte la sección sobreCapaspara saber cómo agregar y editar una nueva capa.


Directorio de archivos espaciales.

El almacén de directorio automatiza el proceso de carga de múltiples archivos de forma en GeoServer.Al cargar un directorio que contiene múltiples archivos de forma, se agregará automáticamente cada archivo de forma a GeoServer.

Nota

Si bien GeoServer tiene un soporte sólido para el formato shapefile, no es el formato recomendado en un entorno de producción.Las bases de datos como PostGIS son más adecuadas en producción y ofrecen mejor rendimiento y escalabilidad.Consulte la sección sobreEjecución en un entorno de producciónpara obtener más información.

Agregar un directorio

Para comenzar, navegue hastaTiendas ‣ Agregar una nueva tienda ‣ Directorio de archivos espaciales.


Agregar un directorio de archivos espaciales como tienda

Opción

Descripción

Espacio de trabajo

Nombre del espacio de trabajo que contiene la tienda.Este también será el prefijo de todos los nombres de capas creados a partir de archivos de forma en la tienda.

Nombre de fuente de datos

Nombre de la tienda conocida por GeoServer.

Descripción

Descripción del almacén del directorio.

Activado

Habilita la tienda.Si está deshabilitado, no se entregarán datos en ninguno de los archivos de forma.

URL

Ubicación del directorio.Puede ser una ruta absoluta (comofile:C:\Data\shapefile_directory) o una ruta relativa al directorio de datos (comofile:data/shapefile_directory.

espacio de nombres

Espacio de nombres que se asociará con la tienda.Este campo se modifica cambiando el nombre del espacio de trabajo.

Cuando termine, haga clic enGuardar.

Configurar archivos de forma

Todos los archivos de forma contenidos en el almacén de directorios se cargarán como parte del almacén de directorios, pero deberán configurarse individualmente como nuevas capas a las que GeoServer puede servir.Consulte la sección sobreCapaspara saber cómo agregar y editar nuevas capas.




Propiedades de Java

El almacén de datos de Propiedades proporciona acceso a uno o más tipos de entidades (capas) almacenados en archivos de propiedades de Java;Estos son archivos de texto sin formato almacenados en el sistema de archivos local.El almacén de datos de Propiedades nunca estuvo pensado para enviarse con GeoServer.Se originó en un tutorial de GeoTools y luego encontró un uso generalizado por parte de los desarrolladores en pruebas automatizadas que requerían un almacenamiento conveniente para pequeños fragmentos de datos.Se deslizó en GeoServer cuando se completó el proceso de empaquetado y fue detectado y ofrecido automáticamente a los usuarios a través de la interfaz web.El almacén de datos de propiedades ha resultado útil en tutoriales y ejemplos.

No recomendamos utilizar el almacén de datos Propiedades para grandes cantidades de datos, ya sea con muchas funciones o geometrías grandes.Su desempeño será terrible.

Para conjuntos de datos pequeños, como colecciones de unas pocas docenas de puntos, puede resultarle satisfactorio.Por ejemplo, si tiene algunos puntos que desea agregar como capa adicional y no tiene una base de datos conveniente donde almacenarlos, el almacén de datos Propiedades proporciona un medio sencillo para entregarlos.

Los cambios en un archivo de propiedades se reflejan inmediatamente en las respuestas de GeoServer.No es necesario volver a crear el almacén de datos a menos que se cambie la primera línea de un archivo de propiedades o se agreguen o eliminen archivos de propiedades.

Agregar un almacén de datos de propiedades

De forma predeterminada,Propiedadesserá una opción en la listaFuentes de datos vectorialesal crear un nuevo almacén de datos.


Propiedades en la lista de almacenes de datos vectoriales

Configurar un almacén de datos de propiedades


Configurar un almacén de datos de propiedades

Opción

Descripción

Workspace

Establece el prefijo del espacio de nombres de los tipos de entidades (capas) y sus propiedades.

DataSourceName

Identificador único para distinguir este almacén de datos

Description

Texto opcional que ofrece una descripción detallada del almacén de datos.

Enabled

Las funciones se entregarán solo si esta opción está marcada

directory

Ruta del sistema de archivos a un directorio que contiene uno o más archivos de propiedades, por ejemplo/usr/local/geoserver/data/ex

Cada archivo de propiedadesTYPENAME.propertiesen el directorio designado se presenta como un tipo de característicaTYPENAME(el nombre del archivo sin.properties), en el espacio de nombres del almacén de datos.

Antes de poder utilizar un tipo de entidad (capa), debe editarlo para asegurarse de que su cuadro delimitador y otros metadatos estén configurados.

Formato de archivo de propiedad

El formato del archivo de propiedades es un subconjunto del formato de propiedades de Java: una lista de líneas del formularioKEY=VALUE.

Este ejemplostations.propertiesdefine cuatro características del tipo de característica (capa)stations:

_=id:Entero,código:Cadena,nombre:Cadena,ubicación:Geometría:srid=4326

estaciones.27=27|ALIC|Alice Springs|PUNTO(133.8855 -23.6701)

estaciones.4=4|NORF|Isla Norfolk|PUNTO(167.9388 -29.0434)

estaciones.12=12|COCO|Cocos|PUNTO(96.8339 -12.1883)

estaciones.31=31|ALBY|Albany|PUNTO(117.8102 -34.9502)

No se permiten líneas en blanco en ninguna parte del archivo.

La primera línea del archivo de propiedades comienza_=y define el tipo de información necesaria para interpretar las siguientes líneas.

Los valores separados por comas tienen la formaNAME:TYPE

Los nombres son el nombre de propiedad que se utiliza para codificar la propiedad en las respuestas WFS.

Los tipos incluyenInteger,String,FloatyGeometry

Geometrypuede tener un sufijo adicional:srid=XXXXque define el Sistema de Referencia Espacial mediante su código numérico EPSG.Tenga en cuenta que las geometrías definidas de esta manera están en orden de longitud/latitud.

Las líneas siguientes definen características, una por línea.

La clave antes de=es el ID de la función (fidogml:iden las respuestas de WFS).Cada uno debe ser unNCName.

Los datos de características siguen=separados por barras verticales (|).Los tipos de datos deben coincidir con la declaración de la primera línea.

Deje un campo vacío si desea que sea nulo;en este caso la propiedad será ignorada.

Tenga en cuenta que en este ejemplosrid=4326se establece el sistema de referencia espacial (SRS) enEPSG:4326, que por convención está en orden de longitud/latitud cuando se hace referencia en forma abreviada.Si solicita estas funciones en GML 3, verá que GeoServer traduce correctamente la geometría al formato URN SRSurn:x-ogc:def:crs:EPSG:4326en formato de latitud/longitud.Consulte la páginaWFSpara obtener más información sobre las opciones de pedido de ejes SRS.




GML

Nota

GeoServer no viene integrado con soporte para GML;debe instalarse a través de una extensión.Continúe conInstalación de la extensión GMLpara obtener detalles de la instalación.

Advertencia

Actualmente, la extensión GML no se mantiene y tiene un estado no compatible.Si bien todavía se puede utilizar, no espere la misma confiabilidad que con otras extensiones.

El lenguaje de marcado geográfico (GML) es un formato basado en XML para representar datos espaciales basados ​​en vectores.

Versiones compatibles

Actualmente se admite la versión 2 de GML.

Instalación de la extensión GML


Descargue la extensión GML desde lapágina de descarga de GeoServer.


Advertencia


¡Asegúrese de hacer coincidir la versión de la extensión con la versión de la instancia de GeoServer!



Extraiga el contenido del archivo en elWEB-INF/libdirectorio de instalación de GeoServer.


Agregar un almacén de datos GML

Una vez que la extensión esté instalada correctamente,GMLserá una opción en la listade Fuentes de datos vectorialesal crear un nuevo almacén de datos.


GML en la lista de almacenes de datos vectoriales

Configurar un almacén de datos GML


Configurar un almacén de datos GML




VPF

Nota

GeoServer no viene integrado con soporte para VPF;debe instalarse a través de una extensión.Continúe conInstalación de la extensión VPFpara obtener detalles de la instalación.

El formato de producto vectorial (VPF) es un estándar militar para productos de mapas digitales basados ​​en vectores producido por el Departamento de Defensa de EE. UU.Para obtener más información, visitela Agencia Nacional de Inteligencia Geoespacial.

Instalación de la extensión VPF


Descargue la extensión VPF desde lapágina de descarga de GeoServer.


Advertencia


¡Asegúrese de hacer coincidir la versión de la extensión con la versión de la instancia de GeoServer!



Extraiga el contenido del archivo en elWEB-INF/libdirectorio de instalación de GeoServer.


Agregar un archivo VPF

Una vez que la extensión esté instalada correctamente,la Biblioteca de formatos de productos vectorialesserá una opción en la listade Fuentes de datos vectorialesal crear un nuevo almacén de datos.


VPF en la lista de nuevas fuentes de datos

Configurar un almacén de datos VPF


Configurar un almacén de datos VPF




Características pregeneralizadas

Nota

GeoServer no viene integrado con soporte para funciones pregeneralizadas;debe instalarse a través de una extensión.

Instalación de la extensión de funciones pregeneralizadas


Descargue la extensión Funciones pregeneralizadas desde lapágina de descarga de GeoServer.


Advertencia


¡Asegúrese de hacer coincidir la versión de la extensión con la versión de la instancia de GeoServer!



Extraiga el contenido del archivo en elWEB-INF/libdirectorio de instalación de GeoServer.


Agregar un almacén de datos de características pregeneralizadas

Si la extensión está instalada correctamente,Generalized Data Storeaparecerá como una opción al crear un nuevo almacén de datos.


Almacén de datos generalizados en la lista de almacenes de datos vectoriales

Configuración de un almacén de datos de características pregeneralizadas


Configuración de un almacén de datos de características pregeneralizadas

Para una descripción detallada, mira elTutorial.


Trabajar con datos ráster

Esta sección analiza las fuentes de datos ráster (cobertura) a las que GeoServer puede acceder.

La instalación estándar de GeoServer admite la carga y entrega de los siguientes formatos de datos:

geoTIFF

GTOPO30

Imagen Mundial

ImagenMosaico

Otras fuentes de datos se suministran como extensiones de GeoServer.Las extensiones son módulos descargables que agregan funcionalidad a GeoServer.Las extensiones están disponibles en lapágina de descarga de GeoServer.

Advertencia

La versión de la extensión debe coincidir con la versión de la instancia de GeoServer.

ArcGrid

Formatos de imagen GDAL

Oráculo Georaster

Ráster de Postgis

ImagenPirámide

Mosaico de imágenes JDBC

Acceso JDBC personalizado para datos de imágenes

GeoServer proporciona amplias funciones para controlar cómo se accede a los rásteres.Estos se tratan en las siguientes secciones.

Vistas de cobertura




geoTIFF

Un GeoTIFF es un archivo TIFF (formato de archivo de imagen etiquetado) georeferenciado.

Agregar un almacén de datos GeoTIFF

De forma predeterminada,GeoTIFFserá una opción en la listade Orígenes de datos rásteral crear un nuevo almacén de datos.


GeoTIFF en la lista de almacenes de datos ráster

Configurar un almacén de datos GeoTIFF


Configurar un almacén de datos GeoTIFF

Opción

Descripción

Workspace

Nombre del espacio de trabajo que contendrá el almacén GeoTIFF.Este también será el prefijo de la capa ráster creada desde la tienda.

DataSourceName

Nombre del GeoTIFF como lo conocerá GeoServer.Esto puede ser diferente del nombre del archivo.La combinación del nombre del espacio de trabajo y este nombre será el nombre completo de la capa (por ejemplo: mundo:landbase)

Description

Una descripción completa en formato libre de la tienda GeoTIFF.

Enabled

Si está marcado, habilita la tienda.Si no está marcado (deshabilitado), GeoServer no entregará ningún dato en GeoTIFF.

URL

Ubicación del archivo GeoTIFF.Puede ser una ruta absoluta (comofile:C:\Data\landbase.tif) o una ruta relativa al directorio de datos de GeoServer (comofile:data/landbase.tif).

Nota

Tenga en cuenta que el complemento GeoTiff puede manejar vistas generales internas/externas y máscaras internas/externas.




GTOPO30

GTOPO30 es un conjunto de datos del Modelo de Elevación Digital (DEM) con un espaciado de cuadrícula horizontal de 30 segundos de arco.

Nota

Puede encontrar un ejemplo de GTOPO30 enhttp://edc.usgs.gov/products/elevation/gtopo30/gtopo30.html

Agregar un almacén de datos GTOPO30

De forma predeterminada,GTOPO30será una opción en la listade Orígenes de datos rásteral crear un nuevo almacén de datos.


GTOPO30 en la lista de almacenes de datos ráster

Configurar un almacén de datos GTOPO30


Configurar un almacén de datos GTOPO30

Opción

Descripción

Workspace


DataSourceName


Description


Enabled


URL


Imagen Mundial

Un archivo mundial es un archivo de texto sin formato que se utiliza para georreferenciar imágenes de mapas rasterizados.Este archivo (a menudo con una extensión de.jgwo.tfw) acompaña a un archivo de imagen asociado (.jpgo.tif).Juntos, el archivo mundial y el archivo de imagen correspondiente se conocen como WorldImage en GeoServer.

Agregar un almacén de datos de WorldImage

De forma predeterminada,WorldImageserá una opción en la listade Fuentes de datos rásteral crear un nuevo almacén de datos.


WorldImage en la lista de almacenes de datos ráster

Configurar un almacén de datos de WorldImage


Configurar un almacén de datos de WorldImage

Opción

Descripción

Workspace


DataSourceName


Description


Enabled


URL






ImagenMosaico

El almacén de datos ImageMosaic permite la creación de un mosaico a partir de varios rásteres georreferenciados.El complemento se puede utilizar con GeoTIFF, así como con rásteres acompañados de un archivo mundial (.pgwpara archivos PNG,.jgwpara archivos JPG, etc.).

La operación "Mosaico" crea un mosaico de dos o más imágenes de origen.Esta operación podría usarse, por ejemplo, para ensamblar un conjunto de imágenes rectificadas geoespacialmente superpuestas en una imagen contigua.También podría usarse para crear un montaje de fotografías como un panorama.

La mejor fuente actual de información sobre la configuración de ImageMosaic es el tutorial:Uso del complemento ImageMosaic.

Agregar un almacén de datos ImageMosaic

De forma predeterminada,ImageMosaicserá una opción en la listade Orígenes de datos rásteral crear un nuevo almacén de datos.


ImageMosaic en la lista de almacenes de datos ráster

Configurar un almacén de datos ImageMosaic


Configurar un almacén de datos ImageMosaic

Opción

Descripción

Workspace


DataSourceName


Description


Enabled


URL





ArcGrid

ArcGrid es un formato de archivo de cobertura creado por ESRI.

Agregar un almacén de datos de ArcGrid

De forma predeterminada,ArcGridserá una opción en la listade Orígenes de datos rásteral crear un nuevo almacén de datos.


ArcGrid en la lista de almacenes de datos ráster

Configurar un almacén de datos de ArcGrid


Configurar un almacén de datos de ArcGrid

Opción

Descripción

Workspace


DataSourceName


Description


Enabled


URL





Formatos de imagen GDAL

GeoServer puede aprovechar lasbibliotecasImageI/O-Ext GDAL para leer formatos de cobertura seleccionados. GDALpuede leer muchos formatos, pero por el momento GeoServer solo admite unos pocos formatos de interés general y aquellos que pueden redistribuirse y operarse legalmente en un servidor de código abierto.

GeoServer puede leer los siguientes formatos de imagen utilizando GDAL:

DTED, datos de elevación militar (.dt0, .dt1, .dt2):http://www.gdal.org/frmt_dted.html

EHdr, ESRI .hdr Etiquetado: <http://www.gdal.org/frmt_various.html#EHdr>

ENVI, ENVI .hdr Ráster etiquetado: <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, base de datos de imágenes integradas de resolución múltiple: <http://www.gdal.org/frmt_mrsid.html>

NITF: <http://www.gdal.org/frmt_nitf.html>

ECW, Wavelets comprimidos ERDAS (.ecw): <http://www.gdal.org/frmt_ecw.html>

JP2ECW, JPEG2000 (.jp2, .j2k):http://www.gdal.org/frmt_jp2ecw.html

AIG, cuadrícula binaria Arc/Info: <http://www.gdal.org/frmt_various.html#AIG>

JP2KAK, JPEG2000 (.jp2, .j2k): <http://www.gdal.org/frmt_jp2kak.html>

Instalación de la extensión GDAL

A partir de la versión 2.2.x de GeoServer, se debe instalar GDAL como una extensión.Para instalarlo:


Navegue a lapágina de descarga de GeoServer



Busque la página que coincida con la versión del GeoServer en ejecución.


Advertencia


Asegúrese de hacer coincidir la versión de la extensión con la de GeoServer; de lo contrario, se producirán errores.



Descarga la extensión GDAL.El enlace de descarga deGDALestará en la secciónExtensionesenFormato de cobertura.



Extraiga los archivos de este archivo alWEB-INF/libdirectorio de instalación de GeoServer.En Windows, es posible que se le solicite confirmación para sobrescribir los archivos existentes, confirme el reemplazo de los archivos


Además, para que GeoServer aproveche estas bibliotecas, las bibliotecas GDAL (binarias) deben instalarse a través del sistema operativo de su sistema host.Una vez instalados, GeoServer podrá reconocer los tipos de datos GDAL.Vea abajo para más información.

Instalación de bibliotecas nativas GDAL

El complemento ImageIO-Ext GDAL para geoserver master utiliza ImageIO-Ext 1.1.12 cuyos artefactos se pueden descargar desdeaquí.

Busque el directorio nativo y luego gdal para encontrar elenlace de descarga de Image IO-Ext.Ahora debería ver una lista de artefactos que se pueden descargar.Necesitamos descargar dos cosas ahora:

Las definiciones de CRS

Las bibliotecas nativas que coinciden con el sistema operativo de destino (más detalles sobre cómo elegir la correcta para su instalación de Windows en la sección "Pasos adicionales para plataformas Windows")

Instalemos ahora las definiciones de CRS.

Haga clic en “gdal_data.zip” para descargar el archivo de definiciones de CRS.

Extraiga este archivo en el disco y colóquelo en un directorio adecuado de su sistema.

Cree una variable de entorno GDAL_DATA en la carpeta donde extrajo este archivo.Asegúrese también de que el usuario del proceso del servidor de aplicaciones pueda acceder y leer este directorio.

Ahora tenemos que instalar las bibliotecas nativas.


Suponiendo que está utilizando un sistema operativo Linux Ubuntu 11 de 64 bits (por ejemplo), haga clic en la carpeta de Linux y luego en “gdal192-Ubuntu11-gcc4.5.2-x86_64.tar.gz” para descargar el archivo de bibliotecas nativas (antes de hacer esto). , asegúrese de leer y estar de acuerdo con ECWEULA si tiene intención de utilizar ECW).



Si está utilizando un sistema operativo Windows, asegúrese de descargar el archivo que coincida con sus redistribuibles de Microsoft Visual C++ y su arquitectura.Por ejemplo, en Windows de 64 bits con redistribuibles 2010, descargue el archivo gdal-1.9.2-MSVC2010-x64.zip.



Extraiga el archivo en el disco y colóquelo en un directorio adecuado de su sistema.


Advertencia


Si está en Windows, asegúrese de que los archivos GDAL DLL estén en su RUTA.Si está en Linux, asegúrese de configurar la variable de entorno LD_LIBRARY_PATH para que haga referencia a la carpeta donde se extraen los SO.


Nota


Las bibliotecas nativas contienen la utilidad GDAL gdalinfo que se puede utilizar para probar si las bibliotecas están dañadas o no.Esto se puede hacer navegando hasta el directorio donde se extrajeron las bibliotecas y ejecutando un comandogdalinfocon las opcionesde formatosque muestra todos los formatos admitidos.El elemento clave del soporte GDAL en GeoServer está representado por los enlaces JAVA.Para probar los enlaces, el paquete contiene una versión Java de la utilidad gdalinfo dentro de la carpeta “javainfo” (un script .bat para Windows y un .sh para Linux), es muy importante ejecutarlo (nuevamente, con lasopcionesde formatos) para asegurarse de que los enlaces de Java funcionen correctamente, ya que eso es lo que usa GeoServer.Un mensaje de error comoNo se puede cargar IA de 32 bits .dll en una plataforma AMD de 64 bitsen los archivos de registro es una clara indicación del hecho de que descargó una versión mixta de las herramientas. Realice el proceso de instalación nuevamente y seleccione los apropiados.Más detalles sobre la solución de problemas en la secciónNota sobre la ejecución de GeoServer como servicio en Windowsa continuación


Una vez que se hayan completado estos pasos, reinicie GeoServer.Si todos los pasos se han realizado correctamente, los nuevos formatos de datos estarán en la listaOrígenes de datos rásteral crear un nuevo almacén de datos en la secciónAlmacenes, como se muestra a continuación.


Formatos de imagen GDAL en la lista de almacenes de datos ráster

si los nuevos formatos no aparecen en la GUI y ve el siguiente mensaje en el archivo de registro:

it.geosolutions.imageio.gdalframework.GDALUtilities loadGDAL ADVERTENCIA: Error en la carga de la biblioteca nativa.java.lang.UnsatisfiedLinkError: no hay gdaljni en java.library.path

eso significa que las instalaciones fallaron por algún motivo.

Pasos adicionales para plataformas Windows

Hay algunas cosas con las que debe tener cuidado, así como algunos pasos adicionales si realiza la implementación en Windows.

Como se indicó anteriormente, tenemos varias versiones como MSVC2005, MSVC2008, etc. que coinciden con los redistribuibles de Microsoft Visual C++.Dependiendo de la versión del sistema operativo subyacente, tendrás que elegir el correcto.Puedes buscar en Google el que necesitas.También asegúrese de descargar la versión de 32 bits si está utilizando una versión de Windows de 32 bits o la versión de 64 bits (tiene un sufijo "-x64" en el nombre del archivo zip) si está ejecutando una versión de Windows de 64 bits. .Nuevamente, elija el que coincida con su infraestructura.

Nota sobre la ejecución de GeoServer como servicio en Windows

Tenga en cuenta que si descargó un GeoServer instalado como servicio de Windows, instaló la versión de 32 bits.

Simplemente implementar las bibliotecas nativas GDAL ImageI/O-Ext en una ubicación referida por la variable de entorno PATH (como, por ejemplo, la carpeta JDK/bin) no permite que GeoServer aproveche GDAL, cuando se ejecuta como un servicio.Como resultado, durante el inicio del servicio, el registro de GeoServer informa este mensaje preocupante:

it.geosolutions.imageio.gdalframework.GDALUtilities loadGDAL ADVERTENCIA: Error en la carga de la biblioteca nativa.java.lang.UnsatisfiedLinkError: no hay gdaljni en java.library.path

Echando un vistazo al archivo de configuración wrapper.conf disponible dentro de la instalación de GeoServer (en bin/wrapper/wrapper.conf), hay esta útil entrada:

# Ruta de la biblioteca Java (ubicación de Wrapper.DLL o libwrapper.so) wrapper.java.library.path.1=bin/wrapper/lib

Para permitir que se carguen las DLL nativas de GDAL, tiene 2 formas posibles:

Mueva las DLL nativas en la ruta referida (bin/wrapper/lib)

Agregue una entrada wrapper.java.library.path.2=path/where/you/deployed/nativelibs justo después de la línea wrapper.java.library.path1=bin/wrapper/lib.

Agregar soporte para ECW y MrSID en Windows

Si está en Windows y desea agregar soporte para ECW y MrSID, debe realizar un paso adicional.

Descargue e instale ECW y MrSID desdeaquí

En el paquete de Windows, ECW y MrSID se crean como complementos, por lo que no se cargan de forma predeterminada, pero debemos colocar sus archivos DLL en una ubicación señalada por la variable de entornoGDAL_DRIVER_PATH.De forma predeterminada, el instalador coloca los complementos en C:\Program Files\GDAL\gdalplugins.


GDAL usa internamente esta variable env para buscar controladores adicionales (tenga en cuenta que hay algunos lugares predeterminados donde GDAL buscará de todos modos).Para obtener información adicional, consulte lawiki de GDAL.

Reinicie GeoServer, ahora debería ver las nuevas fuentes de datos disponibles


Configuración de un almacén de datos DTED


Configuración de un almacén de datos DTED

Configurar un almacén de datos EHdr


Configurar un almacén de datos EHdr

Configuración de un almacén de datos ERDASImg


Configuración de un almacén de datos ERDASImg

Configuración de un almacén de datos JP2MrSID


Configuración de un almacén de datos JP2MrSID

Configurar un almacén de datos NITF


Configurar un almacén de datos NITF





Oráculo Georaster

Nota

GeoServer no viene integrado con soporte para Oracle Georaster;debe instalarse a través de una extensión.Continúe conImage Mosaic JDBCpara obtener detalles de instalación.Esta extensión incluye soporte para Oracle Georaster.

Agregar un almacén de datos de Oracle Georaster

Lea la documentación de geotools para el soporte de Oracle Georaster:http://docs.geotools.org/latest/userguide/library/coverage/oracle.html.Después de crear el archivo de configuración xml, vaya a la secciónConfiguración de GeoServeren elTutorial JDBC de Image Mosaic


Ráster de Postgis

Nota

GeoServer no viene integrado con soporte para columnas ráster de Postgis, debe instalarse a través de una extensión.Continúe conImage Mosaic JDBCpara obtener detalles de instalación.Esta extensión incluye soporte para ráster Postgis.

Agregar un almacén de datos ráster de Postgis

Lea la documentación de geotools para el soporte ráster de Postgis:http://docs.geotools.org/latest/userguide/library/coverage/pgraster.html.Después de crear el archivo de configuración xml, vaya a la secciónConfiguración de GeoServeren elTutorial JDBC de Image Mosaic

ImagenPirámide

Nota

GeoServer no viene integrado con soporte para Image Pyramid;debe instalarse a través de una extensión.Continúe conInstalación de la extensión ImagePyramidpara obtener detalles de la instalación.

Una pirámide de imágenes consta de varias capas de una imagen renderizada en varios tamaños de imagen, que se muestran con diferentes niveles de zoom.

Instalación de la extensión ImagePyramid


Descargue la extensión ImagePyramid desde lapágina de descarga de GeoServer.


Advertencia


¡Asegúrese de hacer coincidir la versión de la extensión con la versión de la instancia de GeoServer!



Extraiga el contenido del archivo en elWEB-INF/libdirectorio de instalación de GeoServer.


Agregar un almacén de datos ImagePyramid

Una vez que la extensión esté instalada correctamente,ImagePyramidserá una opción en la listade Fuentes de datos rásteral crear un nuevo almacén de datos.


ImagePyramid en la lista de almacenes de datos ráster

Configurar un almacén de datos ImagePyramid


Configurar un almacén de datos ImagePyramid

Opción

Descripción

Workspace


DataSourceName


Description


Enabled


URL





Mosaico de imágenes JDBC

Nota

GeoServer no viene integrado con soporte para Image Mosaic JDBC;debe instalarse a través de una extensión.Continúe conInstalación de la extensión JDBC Image Mosaicpara obtener detalles de la instalación.

Instalación de la extensión JDBC Image Mosaic


Descargue la extensión JDBC Image Mosaic desde lapágina de descarga de GeoServer.


Advertencia


¡Asegúrese de hacer coincidir la versión de la extensión con la versión de la instancia de GeoServer!



Extraiga el contenido del archivo en elWEB-INF/libdirectorio de instalación de GeoServer.


Agregar un almacén de datos JDBC de Image Mosaic

Una vez que la extensión esté instalada correctamente,Image Mosaic JDBCserá una opción en la listade Fuentes de datos rásteral crear un nuevo almacén de datos.


Image Mosaic JDBC en la lista de almacenes de datos vectoriales

Configuración de un almacén de datos JDBC de Image Mosaic


Configuración de un almacén de datos JDBC de Image Mosaic

Para una descripción detallada, mira elTutorial.


Acceso JDBC personalizado para datos de imágenes

Nota

GeoServer no viene integrado con soporte para acceso JDBC personalizado;debe instalarse a través de una extensión.Continúe conImage Mosaic JDBCpara obtener detalles de instalación.Esta extensión incluye soporte para acceso JDBC personalizado.

Agregar una cobertura basada en acceso JDBC personalizado

Esta extensión está dirigida a usuarios que tienen un diseño de base de datos especial para almacenar sus datos de imágenes o utilizan una extensión de base de datos especial relacionada con datos ráster.

Lea la documentación de geotools para el acceso JDBC personalizado:http://docs.geotools.org/latest/userguide/library/coverage/jdbc/customized.html.

Después de desarrollar el complemento personalizado, empaquete las clases en un archivo jar y cópielo en elWEB-INF/libdirectorio de instalación del geoserver.

Cree el archivo de configuración xml y continúe con la secciónConfiguración de GeoServeren elTutorial JDBC de Image Mosaic


Vistas de cobertura

A partir de GeoServer 2.6.0, puede definir una nueva capa ráster como Vista de cobertura.Las Vistas de Cobertura permiten definir una Vista compuesta por diferentes bandas originalmente disponibles dentro de las coberturas (ya sean bandas de la misma cobertura o diferentes coberturas) de la misma Tienda de Coberturas.

Crear una vista de cobertura

Para crear una vista de cobertura, el administrador invoca la páginaCrear nueva capa.Cuando se selecciona una tienda de Cobertura, aparece la lista habitual de coberturas disponibles para publicación.También apareceun enlaceConfigurar nueva vista de cobertura... :


Al seleccionar el enlaceConfigurar nueva vista de cobertura...se abre una nueva página donde puede configurar la vista de cobertura:


El cuadro de texto superior permite especificar el nombre que se asignará a esta vista de cobertura.(En la siguiente imagen queremos crear, como ejemplo, una vistade corrientesque fusione los componentes u y v de las corrientes, que se exponen como coberturas de 1 banda separadas).


El siguiente paso es definir las bandas de salida que se colocarán en la vista de cobertura.Es posible especificar qué bandas de cobertura de entrada deben colocarse en la vista seleccionándolas enComposición de coberturas/bandas....


Una vez seleccionadas, deben agregarse a las bandas de salida de la vista de cobertura, usando el botónAgregar.


Opcionalmente, es posible eliminar las bandas recién agregadas usando los botonesQuitaryQuitar todo.Una vez hecho esto, al hacer clic en el botónGuardarse le redirigirá a la página de configuración de capa estándar.


Desplazandose hacia abajo hasta el final de la página, es posible ver las bandas que componen la cobertura (y verificar que sean las previamente seleccionadas).


En cualquier momento, la Vista de cobertura se puede refinar y actualizar seleccionando el enlaceEditar vista de cobertura...disponible antes de la sección de detalles de Bandas de cobertura.


Una vez configuradas todas las propiedades de la capa, al seleccionar el botónGuardar, la cobertura se guardará en el catálogo y pasará a ser visible como una nueva capa.


Cobertura Ver en acción

Una vista previa de capa de la vista de cobertura recién creada mostrará la representación de la vista.Tenga en cuenta que al hacer clic en un punto del mapa se generará una llamada GetFeatureInfo que informará los valores de las bandas que componen la vista de cobertura.



Trabajar con bases de datos

Esta sección analiza las fuentes de datos de la base de datos a las que GeoServer puede acceder.

La instalación estándar de GeoServer admite el acceso a las siguientes bases de datos:

PostGIS

H2

Otras fuentes de datos se suministran como extensiones de GeoServer.Las extensiones son módulos descargables que agregan funcionalidad a GeoServer.Las extensiones están disponibles en lapágina de descarga de GeoServer.

Advertencia

La versión de la extensión debe coincidir con la versión de la instancia de GeoServer.

ArcSDE

DB2

mysql

Oráculo

Microsoft SQL Server y SQL Azure

teradata

GeoServer proporciona amplias funciones para controlar cómo se accede a las bases de datos.Estos se tratan en las siguientes secciones.

Agrupación de conexiones de bases de datos

JNDI

Vistas SQL

Controlar la generación de ID de entidades en bases de datos espaciales

Scripts de inicio/detención de sesión SQL personalizados

Uso de scripts de sesión SQL para controlar las autorizaciones a nivel de base de datos

PostGIS

PostGISes una base de datos espacial de código abierto basada enPostgreSQLy actualmente es una de las bases de datos espaciales de código abierto más populares en la actualidad.

Agregar una base de datos PostGIS

Como ocurre con todos los formatos, agregar un archivo de forma a GeoServer implica agregar una nueva tienda a lasTiendasexistentes a través de laInterfaz de administración web.

Usando la conexión predeterminada

Para comenzar, navegue hastaTiendas ‣ Agregar una nueva tienda ‣ PostGIS NG.


Agregar una base de datos PostGIS

Opción

Descripción

Espacio de trabajo

Nombre del espacio de trabajo que contendrá la base de datos.Este también será el prefijo de cualquier nombre de capa creado a partir de tablas en la base de datos.

Nombre de fuente de datos

Nombre de la base de datos.Puede ser diferente del nombre conocido en PostgreSQL/PostGIS.

Descripción

Descripción de la base de datos/almacenamiento.

Activado

Habilita la tienda.Si está deshabilitado, no se entregarán datos en la base de datos.

tipo de base de datos

Tipo de base de datos.Deje este valor como predeterminado.

anfitrión

Nombre del host donde existe la base de datos.

puerto

Número de puerto para conectarse al host anterior.

base de datos

Nombre de la base de datos tal como se conoce en el host.

esquema

Esquema en la base de datos anterior.

usuario

Nombre de usuario para conectarse a la base de datos.

contraseña

Contraseña asociada al usuario anterior.

espacio de nombres

Espacio de nombres que se asociará con la base de datos.Este campo se modifica cambiando el nombre del espacio de trabajo.

conexiones máximas

Cantidad máxima de conexiones abiertas a la base de datos.

conexiones mínimas

Número mínimo de conexiones agrupadas.

buscar tamaño

Número de registros leídos con cada interacción con la base de datos.

El tiempo de conexión expiro

Tiempo (en segundos) que esperará el grupo de conexiones antes de que se agote el tiempo de espera.

validar conexiones

Comprueba que la conexión esté activa antes de usarla.

caja suelta

Realiza solo el filtro principal en el cuadro delimitador.Consulte la sección sobreUso de cuadros delimitadores sueltospara obtener más detalles.

declaraciones preparadas

Permite declaraciones preparadas.

Cuando termine, haga clic enGuardar.

Usando JNDI

GeoServer también puede conectarse a una base de datos PostGIS utilizandoJNDI(Java Naming and Directory Interface).

Para comenzar, navegue hastaTiendas ‣ Agregar una nueva tienda ‣ PostGIS NG (JNDI).


Agregar una base de datos PostGIS (usando JNDI)

Opción

Descripción

Espacio de trabajo

Nombre del espacio de trabajo que contiene la tienda.Este también será el prefijo de todos los nombres de capas creados en la tienda.

Nombre de fuente de datos

Nombre de la base de datos.Puede ser diferente del nombre conocido en PostgreSQL/PostGIS.

Descripción

Descripción de la base de datos/almacenamiento.

Activado

Habilita la tienda.Si está deshabilitado, no se entregarán datos en la base de datos.

tipo de base de datos

Tipo de base de datos.Deje este valor como predeterminado.

jndiReferenceName

Ruta JNDI a la base de datos.

esquema

Esquema de la base de datos anterior.

espacio de nombres

Espacio de nombres que se asociará con la base de datos.Este campo se modifica cambiando el nombre del espacio de trabajo.

Cuando termine, haga clic enGuardar.

Configurar capas PostGIS

Cuando se cargan correctamente, todas las tablas de la base de datos serán visibles para GeoServer, pero deberán configurarse individualmente antes de que GeoServer las proporcione.Consulte la sección sobreCapaspara saber cómo agregar y editar nuevas capas.

Usando un cuadro delimitador suelto

Cuando la opciónbbox sueltoestá habilitada, solo se utiliza el cuadro delimitador de una geometría.Esto puede dar lugar a una mejora significativa del rendimiento, pero a expensas de la precisión total;algunas geometrías pueden considerarse dentro de un cuadro delimitador cuando técnicamente no lo son.

Si se conecta principalmente a estos datos a través de WMS, este indicador se puede configurar de forma segura, ya que generalmente es aceptable una pérdida de cierta precisión.Sin embargo, si utiliza WFS y especialmente si utiliza las capacidades de filtrado de BBOX, este indicador no debe configurarse.

Publicar una vista PostGIS

La publicación de una vista sigue el mismo proceso que la publicación de una tabla.El único paso adicional es asegurarse manualmente de que la vista tenga una entrada en lageometry_columnstabla.

Por ejemplo, considere una tabla con el esquema:

my_table( id int PRIMARY KEY, nombre VARCHAR, the_geom GEOMETRY )

Considere también la siguiente vista:

CREAR VISTA my_view como SELECCIONAR id, the_geom FROM my_table;

Antes de que GeoServer pueda ofrecer esta vista, es necesario realizar el siguiente paso para crear manualmente lageometry_columnsentrada:

INSERTAR EN VALORES de columnas_geometría ('','público','mi_vista','mi_geom', 2, 4326, 'PUNTO');

Consideraciones de rendimiento

GEOS

GEOS(Geometry Engine, Open Source) es un componente opcional de una instalación de PostGIS.Se recomienda instalar GEOS con cualquier instancia de PostGIS utilizada por GeoServer, ya que esto le permite a GeoServer hacer uso de su funcionalidad al realizar operaciones espaciales.Cuando GEOS no está disponible, estas operaciones se realizan internamente, lo que puede provocar una degradación del rendimiento.

Indexación espacial

Se recomienda encarecidamente crear un índice espacial en tablas con un componente espacial (es decir, que contengan una columna de geometría).Cualquier tabla que no tenga un índice espacial probablemente responderá lentamente a las consultas.

Problemas comunes

Claves primarias

Para habilitar extensiones transaccionales en una tabla (para WFS transaccional), la tabla debe tener una clave principal.Una tabla sin una clave principal se considera de solo lectura para GeoServer.

GeoServer tiene una opción para exponer valores de clave principal (para facilitar los filtros).Tenga en cuenta que estos valores solo se exponen para su comodidad; cualquier intento de modificar estos valores mediante la actualización WFS-T se ignorará silenciosamente.Esta restricción existe ya que el valor de la clave principal se utiliza para definir el FeatureId.Si debe cambiar el FeatureId, puede utilizar la eliminación de WFS-T y agregar una única solicitud de transacción para definir una función de reemplazo.

multilínea

Para insertar texto de varias líneas (para usar con etiquetado), recuerde usar texto con escape:

INSERTAR EN el lugar VALORES (ST_GeomFromText('POINT(-71.060316 48.432044)', 4326), E'Westfield\nTower');


H2

Nota

GeoServer no viene integrado con soporte para H2;debe instalarse a través de una extensión.Continúe conInstalación de la extensión H2para obtener detalles de instalación.

Instalación de la extensión H2


Descargue la extensión H2 desde lapágina de descarga de GeoServer.


Advertencia


¡Asegúrese de hacer coincidir la versión de la extensión con la versión de la instancia de GeoServer!



Extraiga el contenido del archivo en elWEB-INF/libdirectorio de instalación de GeoServer.


Agregar un almacén de datos H2

Una vez que la extensión esté instalada correctamente,H2será una opción en la listade Fuentes de datos vectorialesal crear un nuevo almacén de datos.


H2 en la lista de almacenes de datos vectoriales

Configurar un almacén de datos H2


Configurar un almacén de datos H2

Configuración de un almacén de datos H2 con JNDI



ArcSDE

Nota

La compatibilidad con ArcSDE no está habilitada de forma predeterminada y requiere que se instale la extensión de ArcSDE antes de su uso.Consulte la sección sobreInstalación de la extensión ArcSDEpara obtener más detalles.

ArcSDEde ESRIes un motor espacial que se ejecuta sobre una base de datos relacional como Oracle o SQL Server.GeoServer con la extensión ArcSDE admitelas versiones 9.2 y 9.3de ArcSDE .Ha sido probado conOracle 10gyMicrosoft SQL Server 2000 Developer Edition.La extensión ArcSDE se basa en el controlador GeoTools ArcSDE y utiliza las bibliotecas API Java de ESRI.Consulte lapágina de GeoTools ArcSDEpara obtener más detalles técnicos.

Hay dos tipos de datos de ArcSDE que se pueden agregar a GeoServer:vectorialesyráster.

Soporte vectorial

ArcSDE proporciona acceso eficiente a capas vectoriales (“clases de características” en la jerga de ArcSDE), a través de varias bases de datos relacionales.GeoServer puede configurar tipos de entidades para vistas espaciales y clases de entidades registradas de ArcSDE.Para las clases de entidades versionadas de ArcSDE, GeoServer funcionará en la versión predeterminada de la base de datos, tanto para acceso de lectura como de escritura.

El soporte transaccional está habilitado para clases de entidad con una clave principal configurada correctamente, independientemente de si la clase de entidad es administrada por un usuario o por ArcSDE.Si una clase de característica no tiene una clave principal establecida, estará disponible como de solo lectura.

Soporte ráster

ArcSDE proporciona acceso eficiente a rásteres multibanda al almacenar los datos ráster sin procesar como blobs de base de datos, dividiéndolos en mosaicos y creando una pirámide.También permite establecer un método de compresión para los datos del blob en mosaico y un método de interpolación para el remuestreo piramidal.

Todas las bandas que componen una única capa ráster de ArcSDE deben tener la misma profundidad de píxel, que puede ser de 1, 4, 8, 16 y 32 bits por muestra para tipos de datos integrales.Para bandas de 8, 16 y 32 bits, pueden estar firmados o sin firmar.También se admiten tipos de muestras de punto flotante de 32 y 64 bits.

Los rásteres de ArcSDE también se pueden asignar en color, siempre que el ráster tenga una única banda de datos escritos de 8 o 16 bits sin firmar.

Finalmente, ArcSDE admite catálogos de ráster.Un catálogo de rásteres es un mosaico de rásteres con las mismas propiedades espectrales, pero en lugar de que el mosaico se calcule previamente, los rásteres que componen el catálogo son independientes y el trabajo del mosaico lo realiza la aplicación en tiempo de ejecución.

Detalle técnico

Estado

Métodos de compresión

LZW, JPEG

Número de bandas

Cualquier número de bandas excepto rásteres de 1 y 4 bits (compatibles solo con banda única).

Profundidad de bits para rásteres asignados en colores

8 bits y 16 bits

Catálogos ráster

Cualquier tipo de almacenamiento de píxeles

Instalación de la extensión ArcSDE

Advertencia

Debido a requisitos de licencia, no todos los archivos se incluyen con la extensión.Para instalar la compatibilidad con ArcSDE, es necesario descargar archivos adicionales.La simple instalación de la extensión ArcSDE no tendrá ningún efecto.

Archivos GeoServer


Descargue la extensión ArcSDE desde lapágina de descarga de GeoServer.


Advertencia


¡Asegúrese de hacer coincidir la versión de la extensión con la versión de la instancia de GeoServer!



Extraiga el contenido del archivo en elWEB-INF/libdirectorio de instalación de GeoServer.


Archivos externos requeridos

Hay dos archivos que son necesarios pero que no están empaquetados con la extensión GeoServer:

Archivo

Notas

jsde_sdk.jar

También conocido comojsde##_sdk.jardónde##está el número de versión, como92para ArcSDE versión 9.2

jpe_sdk.jar

También conocido comojpe##_sdk.jardónde##está el número de versión, como92para ArcSDE versión 9.2

Siempre debe asegurarse de que las versionesjsde_sdk.jaryjpe_sdk.jarcoincidan con la versión de su servidor ArcSDE, incluido el service pack, aunque las versiones jar del cliente superiores a la versión de ArcSDE Server generalmente funcionan bien.

Estos dos archivos están disponibles en su instalación del SDK de Java de ArcSDE desde el medio de instalación de ArcSDE (normalmente).También pueden estar disponibles en el sitio web de ESRI si hay un paquete de servicio que los contiene, pero esto no está garantizado.Para descargar estos archivos del sitio web de ESRI:C:\ProgramFiles\ArcGIS\ArcSDE\lib

Vaya ahttp://support.esri.com/index.cfm?fa=downloads.patchesServicePacks.listPatches&PID=66

Encuentre el enlace al último paquete de servicio para su versión de ArcSDE

Desplácese hacia abajo hastaInstalar este Service Pack ‣ ArcSDE SDK ‣ UNIX(independientemente de su sistema operativo de destino)

Descargue cualquiera de los archivos de destino (pero asegúrese de hacer coincidir 32/64 bits con su sistema operativo)

Abra el archivo y extraiga los JAR apropiados.

Nota

Los archivos JAR pueden estar en un archivo anidado dentro de este archivo.

Nota

Tambiénicu4j##.jarpuede estar en la carpeta de instalación del SDK Java de ArcSDE, pero ya está incluido como parte de la extensión GeoServer ArcSDE y no es necesario instalarlo por separado.

Cuando los descargue, copie los dos archivos alWEB-INF/libdirectorio de instalación de GeoServer.

Después de descargar y copiar todos los archivos de GeoServer y los archivos externos, reinicie GeoServer.

Agregar un almacén de datos vectoriales de ArcSDE

Para servir capas de datos vectoriales, primero es necesario registrar la instancia de ArcSDE como almacén de datos en GeoServer.Navegue a la páginaNueva fuente de datos, a la que se accede desde la páginaTiendasen laInterfaz de administración web.y habráuna opción paraArcSDE en la lista dealmacenes de datos vectoriales.

Nota

SiArcSDEno hay una opción en elcuadro desplegableDescripción del conjunto de datos de funciones , la extensión no está instalada correctamente.Consulte la sección sobreInstalación de la extensión ArcSDE.


ArcSDE en la lista de fuentes de datos

Configurar un almacén de datos vectoriales de ArcSDE

La siguiente página contiene opciones de configuración para el almacén de datos vectoriales de ArcSDE.Complete el formulario y luego haga clic enGuardar.


Configurar un nuevo almacén de datos de ArcSDE

Opción

¿Requerido?

Descripción

FeatureDataSetID

N / A

El nombre del almacén de datos tal como se configuró en la página anterior.

Enabled

N / A

Cuando se marca esta casilla, el almacén de datos estará disponible para GeoServer.

Namespace

El espacio de nombres asociado con el almacén de datos.

Description

No

Una descripción del almacén de datos.

server

La URL de la instancia de ArcSDE.

port

El puerto que la instancia de ArcSDE está configurada para escuchar.El valor predeterminado es 5151.

instance

No

El nombre de la instancia de ArcSDE específica, cuando corresponda, según la base de datos subyacente.

user

El nombre de usuario para autenticarse con la instancia de ArcSDE.

password

No

La contraseña asociada con el nombre de usuario anterior para la autenticación con la instancia de ArcSDE.

pool.minConnections

No

Parámetros de configuración del grupo de conexiones.Consulte la secciónAgrupación de conexiones de bases de datospara obtener más detalles.

pool.maxConnections

No

Parámetros de configuración del grupo de conexiones.Consulte la secciónAgrupación de conexiones de bases de datospara obtener más detalles.

pool.timeOut

No

Parámetros de configuración del grupo de conexiones.Consulte la secciónAgrupación de conexiones de bases de datospara obtener más detalles.

Ahora puede agregar tipos de entidades como lo haría normalmente, navegando a la páginaNueva capa, a la que se accede desde la páginaCapasen laInterfaz de administración web.

Configurar un almacén de datos vectoriales de ArcSDE con Direct Connect

ESRI Direct Connect[ESRI DC] permite a los clientes conectarse directamente a un SDE GEODB 9.2+ sin necesidad de una instancia de servidor SDE, y se recomienda para entornos de alta disponibilidad, ya que elimina el servidor de puerta de enlace de ArcSDE como punto único de falla.ESRI DC necesita controladores binarios dependientes de la plataforma adicionales y un ENTORNO de cliente Oracle que funcione (si se conecta a una base de datos ORACLE).ConsultePropiedades de una conexión directa a una geodatabase de ArcSDEen la documentación de ESRI ArcSDE para obtener más información sobre Direct Connect yConfiguración de clientes para una conexión directapara obtener información sobre cómo conectarse a las diferentes bases de datos admitidas por ArcSDE.

Los parámetros de configuración de GeoServer son los mismos que en la secciónConfiguración de un almacén de datos vectoriales de ArcSDEanterior, con un par de diferencias en cómo formatear los parámetros:

servidor: En el modo ESRI Direct Connect se debe proporcionar un valor o el controlador Direct Connect arrojará un error, así que simplemente escriba "ninguno" allí: ¡cualquier cadena funcionará!

puerto: en el modo de conexión directa de ESRI, el puerto tiene una representación de cadena:sde:oracle10g,sde:oracle11g:/:test, etc. Para obtener más información, consultela sintaxis de conexión de ArcSDEen la documentación oficial de ArcSDE de ESRI.

Ejemplo: en el modo ESRI Direct Connect se debe proporcionar un valor o el controlador Direct Connect arrojará un error, así que simplemente escriba "ninguno" allí: ¡cualquier cadena funcionará!

usuario: El nombre de usuario para autenticarse con la base de datos geográfica.

contraseña: La contraseña asociada con el nombre de usuario anterior para la autenticación con la base de datos geográfica.

Nota

Asegúrese de ensamblar la contraseña como: contraseña@<nombre del servicio Oracle Net> para Oracle

Ahora puede agregar tipos de entidades como lo haría normalmente, navegando a la página Nueva capa, a la que se accede desde la página Capas en la Interfaz de administración web.

Agregar un almacén de datos vectoriales ArcSDE con JNDI

Configurar un almacén de datos vectoriales de ArcSDE con JNDI

Agregar un almacén de cobertura ráster de ArcSDE

Para servir capas ráster (o coberturas), primero es necesario registrar la instancia de ArcSDE como un almacén en GeoServer.Navegue hasta lapáginaAgregar nueva tienda , a la que se accede desde la páginaTiendasen laInterfaz de administración webyaparecerá en la lista una opción parael formato ráster de ArcSDE .

Nota

Sino aparece una opción en elcuadro desplegableDescripción del conjunto de datos de cobertura , la extensión no está instalada correctamente.Consulte la sección sobreInstalación de la extensión ArcSDE.ArcSDERasterFormat


ArcSDE Raster en la lista de fuentes de datos

Configurar un almacén de cobertura ráster de ArcSDE

La siguiente página contiene opciones de configuración para la instancia de ArcSDE.Complete el formulario y luego haga clic enGuardar.


Configurar un nuevo almacén de cobertura de ArcSDE

Opción

¿Requerido?

Descripción

CoverageDataSetID

N / A

El nombre de la tienda de cobertura tal como se estableció en la página anterior.

Enabled

N / A

Cuando se marca esta casilla, el almacén de cobertura estará disponible para GeoServer.

Namespace

El espacio de nombres asociado con el almacén de cobertura.

Type

No

El tipo de tienda de cobertura.Deja esto para decir.ArcSDERaster

URL

La URL del ráster, del formatosde://<user>:<pwd>@<server>/#<tableName>.

Description

No

Una descripción de la tienda de cobertura.

Ahora puede agregar coberturas como lo haría normalmente, navegando a la páginaAgregar nueva capa, a la que se accede desde la páginaCapasen laInterfaz de administración web.

DB2

Nota

GeoServer no viene integrado con soporte para DB2;debe instalarse a través de una extensión.Continúe conInstalación de la extensión DB2para obtener detalles de instalación.

La base de datos IBM DB2 UDB es una base de datos relacional comercial que implementa los estándares ISO SQL y es similar en funcionalidad a Oracle, SQL Server, MySQL y PostgreSQL.DB2 Spatial Extender es una característica con licencia gratuita de DB2 UDB que implementa la especificación OGC "Características simples para SQL usando tipos y funciones" y el estándar ISO "SQL/MM Part 3 Spatial".

Se puede descargar una copia de prueba de DB2 UDB y Spatial Extender desde:http://www-306.ibm.com/software/data/db2/udb/edition-pde.html.También existe una versión “Express-C” de DB2, que es gratuita, viene con soporte espacial y no tiene límites de tamaño.Se puede encontrar en:http://www-306.ibm.com/software/data/db2/express/download.html

Instalación de la extensión DB2

Advertencia

Debido a requisitos de licencia, no todos los archivos se incluyen con la extensión.Para instalar el soporte de DB2, es necesario descargar archivos adicionales.La simple instalación de la extensión DB2 no tendrá ningún efecto.

Archivos GeoServer


Descargue la extensión DB2 desde lapágina de descarga de GeoServer.


Advertencia


¡Asegúrese de hacer coincidir la versión de la extensión con la versión de la instancia de GeoServer!



Extraiga el contenido del archivo en elWEB-INF/libdirectorio de instalación de GeoServer.


Archivos externos requeridos

Hay dos archivos que son necesarios pero que no están empaquetados con la extensión GeoServer:db2jcc.jarydb2jcc_license_cu.jar.Estos archivos deberían estar disponibles en eljavasubdirectorio de su directorio de instalación de DB2.Copie estos archivos alWEB-INF/libdirectorio de instalación de GeoServer.

Después de descargar y copiar todos los archivos de GeoServer y los archivos externos, reinicie GeoServer.

Agregar un almacén de datos DB2

Cuando se instala correctamente,DB2será una opción en la listade fuentes de datos vectorialesal crear un nuevo almacén de datos.


DB2 en la lista de almacenes de datos ráster

Configurar un almacén de datos DB2


Configurar un almacén de datos DB2

Configuración de un almacén de datos DB2 con JNDI

Notas sobre el uso

Los nombres de esquemas, tablas y columnas de DB2 distinguen entre mayúsculas y minúsculas cuando se trabaja con GeoTools/GeoServer.Cuando se trabaja con scripts de DB2 y la ventana de comandos de DB2, el valor predeterminado es tratar estos nombres como mayúsculas a menos que estén entre comillas dobles.


mysql

Nota

GeoServer no viene integrado con soporte para MySQL;debe instalarse a través de una extensión.Continúe conInstalación de la extensión MySQLpara obtener detalles de la instalación.

Advertencia

Actualmente, la extensión MySQL no se mantiene y tiene un estado no compatible.Si bien sigue siendo utilizable, no espere la misma confiabilidad que con otras extensiones.

MySQLes una base de datos relacional de código abierto con alguna funcionalidad espacial limitada.

Instalación de la extensión MySQL


Descargue la extensión MySQL desde lapágina de descarga de GeoServer.


Advertencia


¡Asegúrese de hacer coincidir la versión de la extensión con la versión de la instancia de GeoServer!



Extraiga el contenido del archivo en elWEB-INF/libdirectorio de instalación de GeoServer.


Agregar una base de datos MySQL

Una vez que la extensión esté instalada correctamente,MySQLaparecerá como una opción al crear un nuevo almacén de datos.


MySQL en la lista de fuentes de datos

Configurar un almacén de datos MySQL


Configurar un almacén de datos MySQL

host

El nombre de host o la dirección IP del servidor MySQL.

port

El puerto en el que el servidor mysql acepta conexiones.

database

El nombre de la base de datos a la que conectarse.

user

El nombre del usuario para conectarse a la base de datos MySQL.

password

La contraseña que se utilizará al conectarse a la base de datos.Se deja en blanco sin contraseña.

maxconnections

minconnections

validateconnections

Parámetros de configuración del grupo de conexiones.Consulte la secciónAgrupación de conexiones de bases de datospara obtener más detalles.



Oráculo

Nota

GeoServer no viene integrado con soporte para Oracle;debe instalarse a través de una extensión.Continúe conInstalación de la extensión de Oraclepara obtener detalles de la instalación.

Oracle Spatial y Locatorson los componentes espaciales de Oracle.Locatorse proporciona con todas las versiones de Oracle, pero tiene funciones espaciales limitadas.Spatiales la oferta espacial con todas las funciones de Oracle, pero requiere una licencia específica para su uso.

Instalación de la extensión de Oracle

Advertencia

Debido a requisitos de licencia, no todos los archivos se incluyen con la extensión.Para instalar el soporte de Oracle, es necesario descargar archivos adicionales.


Descargue la extensión de Oracle desde lapágina de descarga de GeoServer.


Advertencia


¡Asegúrese de hacer coincidir la versión de la extensión con la versión de la instancia de GeoServer!



Extraiga el contenido del archivo en elWEB-INF/libdirectorio de instalación de GeoServer.



Obtenga el controlador Oracle JDBC desde su instalación de Oracle (por ejemploojdbc6.jar,ojdbc7.jar) o descárguelo desdela página de distribución del controlador Oracle JDBC


Considere reemplazar el controlador JDBC de Oracle

El archivo zip del almacén de datos de Oracle viene conojdbc4.jarun antiguo controlador JDBC compatible con Oracle 10 que normalmente también funciona bien con 11g.Sin embargo, se han observado fallos menores con 11g (problemas con los límites de la capa informática cuando se utilizan secuencias de comandos de inicio de sesión) y el controlador no se ha probado con 12i.

Si encuentra problemas de funcionalidad o rendimiento, le recomendamos que controle este controlador de forma remota y descargue la última versión del sitio web de Oracle.

Agregar un almacén de datos de Oracle

Una vez que la extensión está instalada correctamente,Oracleaparece como una opción en la listade Fuentes de datos vectorialesal crear un nuevo almacén de datos.


Oracle en la lista de fuentes de datos

Configurar un almacén de datos de Oracle


Configurar un almacén de datos de Oracle

Opción

Descripción

host

El nombre de host o la dirección IP del servidor Oracle.

port

El puerto en el que el servidor Oracle acepta conexiones (normalmente es el puerto 1521).

database

El nombre de la base de datos a la que conectarse.De forma predeterminada, esto se interpreta como un nombre SID.Para conectarse a un Servicio, anteponga el nombre con un/.

schema

El esquema de la base de datos desde el que acceder a las tablas.Establecer este valor aumenta en gran medida la velocidad a la que el almacén de datos muestra sus tablas y vistas publicables, por lo que es recomendable establecerlo.

user

El nombre del usuario que se utilizará al conectarse a la base de datos.

password

La contraseña que se utilizará al conectarse a la base de datos.Déjelo en blanco si no tiene contraseña.

maxconnectionsminconnectionsfetchsizeConnectiontimeoutvalidateconnections

Parámetros de configuración del grupo de conexiones.ConsulteAgrupación de conexiones de bases de datospara obtener más detalles.

Loosebbox

Controla cómo se realizan los filtros del cuadro delimitador contra las geometrías de la base de datos.Consulte la secciónUso de cuadros delimitadores sueltosa continuación.

Metadatabbox

Bandera que controla el uso de la tabla MDSYS.USER_SDO_GEOM_METADATA o MDSYS.ALL_SDO_GEOM_METADATA para los cálculos del cuadro delimitador, esto brinda un mejor rendimiento si el acceso a las vistas es rápido y los límites se configuran directamente en las tablas, el valor predeterminado es falso

Conexión a un clúster de Oracle

Para conectarse a Oracle RAC, se puede usar una URL JDBC casi completa comodatabase, siempre que comience con(ella, se usará palabra por palabra y se ignorarán las opciones "host" y "port".A continuación se muestra un valor de "base de datos" de ejemplo utilizado para conectarse a un Oracle RAC:

(DESCRIPCIÓN=(LOAD_BALANCE=on)(DIRECCIÓN=(PROTOCOLO=TCP)(HOST=host1) (PUERTO=1521))(DIRECCIÓN=(PROTOCOLO=TCP)(HOST=host2) (PUERTO=1521))(CONNECT_DATA=( SERVICE_NAME=servicio)))

Puede encontrar más información sobre esta sintaxis en ladocumentación de Oracle.

Conexión a un SID o un servicio

Las versiones recientes de Oracle admiten la conexión a una base de datos mediante un nombre SID o un nombre de servicio.Un descriptor de conexión SID tiene la forma:host:port:database, mientras que un descriptor de conexión de Servicio tiene el formatohost:port/database.GeoServer utiliza el formulario SID de forma predeterminada.Para conectarse a través de un Servicio, anteponga ladatabaseentrada de configuración del nombre con un/.

Conexión a la base de datos a través de LDAP

Por ejemplo, si desea establecer una conexión con el controlador ligero jdbc a través de LDAP, puede utilizar la siguiente cadena de conexión para el campo de entradadatabaseldap://[host]:[Port]/[db],cn=OracleContext,dc=[oracle_ldap_context].

Si está utilizando referencias, habilítelo colocando un archivo jndi.properties en CLASSPATH de geoserver, que está en geoserver/WEB-INF/classes.Este archivo de propiedades contiene:

java.naming.referral=seguir

Usando un cuadro delimitador suelto

Cuandose establece la opción, solo se utiliza el cuadro delimitador de las geometrías de la base de datos en las consultas espaciales.Esto da como resultado una ganancia de rendimiento significativa.La desventaja es que se puede informar que algunas geometrías se cruzan con un BBOX cuando en realidad no es así.Loosebbox

Si el uso principal de la base de datos es a través delServicio de mapas web, este indicador se puede configurar de forma segura, ya que consultar más geometrías no tiene ningún efecto visible.Sin embargo, si utiliza elservicio de funciones weby utiliza las capacidades de filtrado de BBOX, no se debe configurar este indicador.

Usando la tabla de metadatos de geometría

De forma predeterminada, el almacén de datos de Oracle examina las vistasMDSYS.USER_SDO*yMDSYS.ALL_SDO*para determinar el tipo de geometría y el SRID nativo de cada columna de geometría.Esas vistas se completan automáticamente con información sobre las columnas de geometría almacenadas en tablas que posee el usuario actual (para lasMDSYS.USER_SDO*vistas) o a las que puede acceder de otro modo (para lasMDSYS.ALL_SDO*vistas).

Hay algunos problemas con esta estrategia:

Si el usuario del grupo de conexiones no puede acceder a las tablas (porque se utilizasuplantación), las vistas MDSYS estarán vacías, lo que hará imposible determinar tanto el tipo de geometría como el SRID nativo.

el tipo de geometría solo se puede especificar mientras se crean los índices espaciales, como una restricción de índice.Sin embargo, dicha información a menudo no se incluye al crear los índices.

las vistas se completan dinámicamente según el usuario actual.Si la base de datos tiene miles de tablas y usuarios, las vistas pueden volverse muy lentas.

A partir de GeoServer 2.1.4, el administrador puede solucionar los problemas anteriores creando manualmente una tabla de metadatos de geometría que describa cada columna de geometría.Su presencia se indica a través del parámetro de conexión del almacén de datos de Oracle denominadoTabla de metadatos de geometría(que puede ser un nombre de tabla simple o uno calificado por esquema).La tabla tiene la siguiente estructura (el nombre de la tabla es flexible, simplemente especifique el elegido en el parámetro de conexión del almacén de datos):

CREAR TABLA GEOMETRÍA_COLUMNAS(

F_TABLE_SCHEMA VARCHAR(30) NO NULO,

F_TABLE_NAME VARCHAR(30) NO NULO,

F_GEOMETRY_COLUMN VARCHAR(30) NO NULO,

COORD_DIMENSION INTEGER,

SRID ENTERO NO NULO,

TIPO VARCHAR(30) NO NULO,

ÚNICO(F_TABLE_SCHEMA, F_TABLE_NAME, F_GEOMETRY_COLUMN),

VERIFICAR(ESCRIBIR ('PUNTO','LÍNEA', 'POLÍGONO', 'COLECCIÓN', 'MULTIPOINT', 'MULTILINE', 'MULTIPOLYGON', 'GEOMETRÍA') ));

Cuando la tabla está presente, la tienda primero busca información sobre cada columna de geometría que se va a clasificar y recurre a las vistas MDSYS solo si la tabla no contiene ninguna información.

Configurar una base de datos Oracle con JNDI

ConsulteConfiguración de un grupo de conexiones JNDI con Tomcatpara obtener una guía sobre cómo configurar una conexión de Oracle utilizando JNDI.


Microsoft SQL Server y SQL Azure

Nota

GeoServer no viene integrado con soporte para SQL Server;debe instalarse a través de una extensión.Continúe conInstalación de la extensión de SQL Serverpara obtener detalles de la instalación.

SQL Serverde Microsoftes una base de datos relacional con funcionalidad espacial.SQL Azure es la opción de base de datos proporcionada en la solución de nube de Azure que es en muchos aspectos similar a SQL Server 2008.

Versiones compatibles

La extensión es compatible con SQL Server 2008 y SQL Azure.

Instalación de la extensión de SQL Server

Advertencia

Debido a requisitos de licencia, no todos los archivos se incluyen con la extensión.Para instalar el soporte de SQL Server, es necesario descargar archivos adicionales.

Archivos GeoServer


Descargue la extensión de SQL Server desde lapágina de descarga de GeoServer.


Advertencia


¡Asegúrese de hacer coincidir la versión de la extensión con la versión de la instancia de GeoServer!



Extraiga el contenido del archivo en elWEB-INF/libdirectorio de instalación de GeoServer.



Reinicie GeoServer para cargar la extensión.


archivos de microsoft

Vaya ala página de descarga del controlador JDBC de Microsoft para SQL Server y SQL Azure.

Extraer el contenido del archivo.

Si está ejecutando Java 6 o superior, copie el archivosqljdbc4.jaralWEB-INF/libdirectorio de instalación de GeoServer.Si está ejecutando Java 5 (compatible hasta GeoServer 2.1.x), copie el archivosqljdbc.jaralWEB-INF/libdirectorio

Para GeoServer instalado en Windows, copieauth\x86\sqljdbc_auth.dllyxa\x86\sqljdbc_xa.dllaC:\Windows\System32

Agregar una base de datos de SQL Server

Una vez que la extensión esté instalada correctamente,aparecerá como una opción al crear un nuevo almacén de datos.SQLServer


SQL Server en la lista de fuentes de datos vectoriales

Configurar un almacén de datos de SQL Server


Configurar un almacén de datos de SQL Server

host

El nombre de host o la dirección IP de la instancia del servidor SQL, únicamente.Tenga en cuenta queserver\instanceno se acepta la notación; en su lugar, especifique el puerto a continuación, si tiene una instancia no predeterminada.

port

El puerto en el que la instancia del servidor SQL acepta conexiones.Vea lanotaa continuación.

database

El nombre de la base de datos a la que conectarse.Puede dejarse en blanco si el usuario que se conecta a SQL Server tiene una "base de datos predeterminada" configurada en la configuración del usuario.

schema

El esquema de la base de datos desde el que acceder a las tablas (opcional).

user

El nombre del usuario para conectarse a la base de datos Oracle.

password

La contraseña que se utilizará al conectarse a la base de datos.Déjelo en blanco si no tiene contraseña.

maxconnections

minconnections

Parámetros de configuración del grupo de conexiones.Consulte la secciónAgrupación de conexiones de bases de datospara obtener más detalles.Si se está conectando a SQL Azure, asegúrese de configurar lamarca ya que SQL Azure cierra las conexiones inactivas después de un retraso muy breve.validateconnections

Determinar el puerto utilizado por la instancia de SQL Server

Puede determinar el puerto en uso conectándose a su instancia de servidor SQL usando algún otro software y luego usandonetstatpara mostrar detalles sobre las conexiones de red.En el siguiente ejemplo en una PC con Windows, el puerto es 2646

C:\>netstat -a | busque "sql1"

TCP DPI908194:1918 maittestsql1.dpi.nsw.gov.au:2646 ESTABLECIDO

Usando la tabla de metadatos de geometría

El almacén de datos del servidor SQL puede determinar el tipo de geometría y el SRID nativo de una columna en particular solo mediante la inspección de datos, mirando la primera fila de la tabla.Por supuesto, esto es propenso a errores y sólo funciona si hay datos en la tabla.El administrador puede solucionar el problema anterior creando manualmente una tabla de metadatos de geometría que describa cada columna de geometría.Su presencia se indica a través del parámetro de conexión del almacén de datos de SQL Server denominadoTabla de metadatos de geometría(que puede ser un nombre de tabla simple o uno calificado por esquema).La tabla tiene la siguiente estructura (el nombre de la tabla es flexible, simplemente especifique el elegido en el parámetro de conexión del almacén de datos):

CREAR TABLA GEOMETRÍA_COLUMNAS(

F_TABLE_SCHEMA VARCHAR(30) NO NULO,

F_TABLE_NAME VARCHAR(30) NO NULO,

F_GEOMETRY_COLUMN VARCHAR(30) NO NULO,

COORD_DIMENSION INTEGER,

SRID ENTERO NO NULO,

TIPO VARCHAR(30) NO NULO,

ÚNICO(F_TABLE_SCHEMA, F_TABLE_NAME, F_GEOMETRY_COLUMN),

VERIFICAR(ESCRIBIR ('PUNTO','LÍNEA', 'POLÍGONO', 'COLECCIÓN', 'MULTIPOINT', 'MULTILINE', 'MULTIPOLYGON', 'GEOMETRÍA') ));

Cuando la tabla está presente, la tienda primero busca información sobre cada columna de geometría que se va a clasificar y recurre a la inspección de datos solo si la tabla no contiene ninguna información.



teradata

Nota

La compatibilidad con la base de datos Teradata no está habilitada de forma predeterminada y requiere que se instale la extensión Teradata antes de su uso.Consulte la sección sobreInstalación de la extensión Teradatapara obtener más detalles.

Teradata Database es una base de datos relacional comercial (RDBMS) que se especializa en procesamiento paralelo y escalabilidad.A partir de la versión 12.0, Teradata ha agregado soporte geoespacial, siguiendo de cerca el estándar SQL/MM (SQL Multimedia and Applications Packages).La compatibilidad geoespacial estuvo disponible a través de un complemento en la versión 12.0 y se convirtió en estándar en la versión 13.0.

GeoServer se conecta a una base de datos Teradata a través de JDBC.

Para obtener más información sobre Teradata y el sistema Teradata Database, visitehttp://www.teradata.com.

Compatibilidad

La extensión GeoServer Teradata es compatible con GeoServer 2.1.1 y superior.GeoServer puede conectarse a bases de datos Teradata versión 12.0 o superior.La versión 12.0 de Teradata Database requiere la instalación de la extensión geoespacial opcional.

Acceso de lectura/escritura

El almacén de datos de Teradata en GeoServer admite capacidades transaccionales completas, incluida la creación, edición y eliminación de funciones.

Para admitir la edición, una tabla debe tener uno de los siguientes:

una clave primaria

un índice primario único

una columna de identidad (secuencial)

Nota

No se recomienda utilizar únicamente una columna de identidad, ya que no se admiten activadores de índice espacial cuando se hace referencia a una columna de identidad.Consulte la sección sobre Índices espaciales para obtener más detalles.

Bandas de consulta

La extensión GeoServer Teradata admite Query Banding.Query Banding es una característica que permite a cualquier aplicación asociar información de contexto con cada consulta que emite a la base de datos.En la práctica, esto se puede utilizar con fines de gestión de carga de trabajo (es decir, priorización de solicitudes), depuración y registro.

GeoServer envía la siguiente información como parte de una solicitud estándar:

Nombre de la aplicación (es decir, GeoServer)

Nombre de usuario autenticado (si está configurado)

Nombre de host (si está disponible)

Tipo de declaración (es decir, "SELECCIONAR", "INSERTAR", "ELIMINAR")

No es posible modificar esta información desde GeoServer.

Índices espaciales

GeoServer leerá un índice espacial si existe.La convención para el nombre de una tabla de índice espacial es:

[NOMBRE DE TABLA]_[COLUMNA DE GEOMETRÍA]_idx

Entonces, para una capa llamada "ESTADOS" con una columna de geometría llamada "GEOM", la tabla de índice debe llamarseSTATES_GEOM_idx.

Advertencia

Asegúrese de hacer coincidir el caso de todas las tablas y columnas.Si la columna de geometría se llama “GEOM” (mayúscula) y el índice creado se llamaSTATES_geom_idx(minúscula), el índice no se vinculará correctamente a la tabla.

Esta tabla de índice debe contener dos columnas:

Una columna que se asigna a la clave principal de la tabla de datos espaciales.

El ID de la celda de teselación (cellid)

El ID de celda de teselación es el ID de la celda donde se encuentra esa característica.

columna de geometría

Según el estándar SQL/MM, para habilitar espacialmente una tabla de Teradata, se debe crear una entrada para esa tabla en lageometry_columnstabla.Esta tabla se almacena, como todas las demás tablas relacionadas espacialmente, en la base de datos SYSSPATIAL.

Mosaico

Teselación es el nombre del índice espacial de Teradata.Para activar la teselación para una capa determinada, es necesario colocar una entrada (fila) en laSYSSPATIAL.tessellationtabla.Esta tabla debe tener el siguiente esquema:

Nombre de la tabla

Tipo

Descripción

F_TABLE_SCHEMA

varchar

Nombre de la base de datos/esquema espacial que contiene la tabla

F_TABLE_NAME

varchar

Nombre de la tabla espacial

F_GEOMETRY_COLUMN

varchar

Columna que contiene los datos espaciales.

U_XMIN

flotar

Valor mínimo de X para el universo de teselación

U_YMIN

flotar

Valor mínimo de Y para el universo de teselación

U_XMAX

flotar

Valor máximo de X para el universo de teselación

U_YMAX

flotar

Valor máximo de Y para el universo de teselación

G_NX

entero

Número de cuadrículas X

G_NY

entero

Número de rejillas Y

NIVELES

entero

Número de niveles en la cuadrícula.

ESCALA

flotar

Valor de escala para la cuadrícula

CAMBIO

flotar

Valor de desplazamiento para la cuadrícula

Advertencia

Los valores de la tabla de teselación distinguen entre mayúsculas y minúsculas y, por lo tanto, deben coincidir con las mayúsculas y minúsculas de las tablas y columnas.

Instalación de la extensión Teradata

La compatibilidad con la base de datos Teradata no está habilitada de forma predeterminada y requiere que se instale la extensión GeoServer Teradata antes de su uso.Además de esta extensión, será necesario descargar un artefacto adicional del sitio web de Teradata.

Artefactos de GeoServer


Descargue la extensión Teradata desde lapágina de descargaque coincida con su versión de GeoServer.La extensión aparece en la parte inferior de la página de descarga, enExtensiones.


Advertencia


¡Asegúrese de hacer coincidir la versión de la extensión con la versión de GeoServer!



Extraiga el contenido del archivo en elWEB-INF/libdirectorio de instalación de GeoServer.


Artefactos de Teradata

Además de los artefactos de GeoServer, también es necesario descargar el controlador Teradata JDBC.Este archivo no se puede redistribuir y, por lo tanto, debe descargarse directamente desde el sitio web de Teradata.


Descargue el controlador JDBC de Teradata enhttps://downloads.teradata.com/download/connectivity/jdbc-driver.


Nota


Deberá iniciar sesión en el sitio de Teradata para poder descargar este artefacto.



Extraiga el contenido del archivo en elWEB-INF/libdirectorio de instalación de GeoServer.


Cuando todos los archivos se hayan descargado y extraído, reinicie GeoServer.Para verificar que la instalación se realizó correctamente, consulte la sección sobreAgregar un almacén de datos de Teradata.

Nota

La lista completa de archivos requeridos es:

gt-jdbc-teradata-<version>.jar

tdgssconfig.jar

terajdbc4.jar

Agregar un almacén de datos de Teradata

Una vez que se haya agregado la extensión, ahora será posible cargar una base de datos Teradata existente como un almacén en GeoServer.En lainterfaz de administración web, haga clic enTiendasy luego vaya aAgregar una nueva tienda.Verá una opción, enVector Data Stores, paraTeradata.Seleccione esta opción.


Teradata en la lista de tiendas legibles

Nota

Si no incluye Teradata en esta lista, la extensión no se ha instalado correctamente.Asegúrese dehaber seguido correctamente los pasos deInstalación de la extensión Teradata .

En la siguiente pantalla, ingrese los detalles sobre cómo conectarse a la base de datos de Teradata.Deberá incluir la siguiente información:

Opción

Descripción

Espacio de trabajo

Nombre del espacio de trabajo que contendrá la base de datos.Este también será el prefijo de cualquier servidor de capas de las tablas de la base de datos.

Nombre de fuente de datos

Nombre de la base de datos en GeoServer.Puede ser diferente del nombre de la base de datos de Teradata, si lo desea.

Descripción

Descripción de la base de datos/almacenamiento.

Activado

Habilita la tienda.Si está deshabilitado, no se servirá ninguna capa de la base de datos.

anfitrión

Nombre del host donde existe la base de datos.Puede ser una URL o una dirección IP.

puerto

Número de puerto en el que conectarse al host anterior.

base de datos

Nombre de la base de datos Teradata.

usuario

Nombre de usuario a utilizar para conectarse a la base de datos.

contraseña

Contraseña asociada al usuario anterior.

espacio de nombres

Espacio de nombres que se asociará con la base de datos.Este campo es modificado automáticamente por el campo Espacio de trabajo anterior.

Exponer claves primarias

Expone la clave principal como un atributo estándar.

conexiones máximas

Cantidad máxima de conexiones abiertas/agrupadas a la base de datos.

conexiones mínimas

Número mínimo de conexiones abiertas/agrupadas.

buscar tamaño

Número de registros leídos con cada interacción con la base de datos.

El tiempo de conexión expiro

Tiempo (en segundos) que esperará el grupo de conexiones antes de que se agote el tiempo de espera.

validar conexiones

Comprueba que la conexión esté activa antes de usarla.

Tabla de metadatos de clave primaria

Nombre de la tabla de metadatos de clave principal que se utilizará si no se puede determinar la clave principal de una tabla.

caja suelta

Si está marcado, realiza solo el filtro principal en el cuadro delimitador.

teselaciónTabla

El nombre de la tabla de la base de datos que contiene las teselaciones.

límites estimados

Permite utilizar los límites de la tabla de columnas_geometría/teselación como estimación en lugar de cálculo manual.

Max declaraciones preparadas abiertas

El número máximo de declaraciones preparadas.

Cuando termine, haga clic enGuardar.



Agregar una tienda Teradata

Usando JNDI

GeoServer también puede conectarse a una base de datos Teradata utilizandoJNDI(Java Naming and Directory Interface).

Para comenzar, en laInterfaz de administración web, haga clic enTiendasy luego vaya aAgregar una nueva tienda.Verá una opción, enVector Data Stores, paraTeradata (JNDI).Seleccione esta opción.


Teradata (JNDI) en la lista de tiendas legibles

En la siguiente pantalla, ingrese los detalles sobre cómo conectarse a la base de datos de Teradata.Deberá incluir la siguiente información:

Opción

Descripción

Espacio de trabajo

Nombre del espacio de trabajo que contendrá la base de datos.Este también será el prefijo de cualquier servidor de capas de las tablas de la base de datos.

Nombre de fuente de datos

Nombre de la base de datos en GeoServer.Puede ser diferente del nombre de la base de datos de Teradata, si lo desea.

Descripción

Descripción de la base de datos/almacenamiento.

Activado

Habilita la tienda.Si está deshabilitado, no se servirá ninguna capa de la base de datos.

jndiReferenceName

Ruta JNDI a la base de datos.

esquema

Esquema de la base de datos anterior.

espacio de nombres

Espacio de nombres que se asociará con la base de datos.Este campo se modifica cambiando el nombre del espacio de trabajo.

Exponer claves primarias

Expone la clave principal como un atributo estándar.

Tabla de metadatos de clave primaria

Nombre de la tabla de metadatos de clave principal que se utilizará si no se puede determinar la clave principal de una tabla.

caja suelta

Si está marcado, realiza solo el filtro principal en el cuadro delimitador.

Cuando termine, haga clic enGuardar.

Agregar una tienda Teradata con JNDI

Agregar capas

Una vez que el almacén se ha cargado en GeoServer, el proceso para cargar capas de datos desde las tablas de la base de datos es el mismo que el de cualquier otra fuente de base de datos.Consulte la secciónCapaspara obtener más información.

Nota

Sólo aquellas tablas de bases de datos que tienen información espacial y una entrada en laSYSSPATIAL.geometry_columnstabla se pueden servir a través de GeoServer.


Agrupación de conexiones de bases de datos

Al servir datos desde unaconexión de base de datos espacial, la agrupaciónes un aspecto importante para lograr un buen rendimiento.Cuando GeoServer atiende una solicitud que implica cargar datos desde una tabla de base de datos, primero se debe establecer una conexión con la base de datos.Esta conexión tiene un costo, ya que lleva tiempo configurarla.

El propósito de un grupo de conexiones es mantener la conexión a una base de datos subyacente entre solicitudes.El beneficio de esto es que la configuración de la conexión solo debe realizarse una vez en la primera solicitud.Las solicitudes posteriores utilizan conexiones existentes y, como resultado, obtienen un beneficio de rendimiento.

Cada vez que se agrega a GeoServer un almacén de datos respaldado por una base de datos, se crea un grupo de conexiones internas.Este grupo de conexiones es configurable.

Opciones del grupo de conexiones

conexiones máximas

El número máximo de conexiones que puede contener el grupo.Cuando se excede el número máximo de conexiones, las solicitudes adicionales que requieran una conexión a la base de datos se detendrán hasta que esté disponible una conexión del grupo.El número máximo de conexiones limita el número de solicitudes simultáneas que se pueden realizar en la base de datos.

conexiones mínimas

El número mínimo de conexiones que mantendrá el grupo.Este número de conexiones se mantiene incluso cuando no hay solicitudes activas.Cuando se excede este número de conexiones debido a solicitudes de servicio, se abren conexiones adicionales hasta que el grupo alcanza su tamaño máximo (descrito anteriormente).

validar conexiones

Bandera que indica si las conexiones del grupo deben validarse antes de usarse.Una conexión en el grupo puede dejar de ser válida por varios motivos, entre los que se incluyen averías de la red, tiempo de espera del servidor de la base de datos, etc. La ventaja de configurar este indicador es que nunca se utilizará una conexión no válida, lo que puede evitar errores del cliente.La desventaja de establecer la bandera es que se paga una penalización de rendimiento para validar las conexiones.

buscar tamaño

El número de registros leídos de la base de datos en cada intercambio de red.Si se establece una latencia de red demasiado baja (<50), afectará negativamente el rendimiento; si se establece demasiado alta, podría consumir una parte importante de la memoria del GeoServer y provocar unerror.El valor predeterminado es 1000.OutOfMemory

el tiempo de conexión expiro

Tiempo, en segundos, que el grupo de conexiones esperará antes de abandonar su intento de obtener una nueva conexión de la base de datos.El valor predeterminado es 20 segundos.

Prueba mientras está inactivo

Pruebe periódicamente si las conexiones siguen siendo válidas también mientras esté inactiva en el grupo.A veces, realizar una consulta de prueba utilizando una conexión inactiva puede hacer que el almacén de datos no esté disponible por un tiempo.A menudo, la causa de este comportamiento problemático está relacionada con un firewall de red colocado entre Geoserver y la base de datos que fuerza el cierre de las conexiones TCP inactivas subyacentes.

Periodicidad de ejecución del desalojador

Número de segundos entre ejecuciones del desalojador de objetos inactivos.

Tiempo máximo de inactividad de la conexión

Número de segundos que una conexión debe permanecer inactiva antes de que el desalojador comience a considerar cerrarla.

Pruebas de desalojador por ejecución

Número de conexiones comprobadas por el desalojador de conexiones inactivas para cada una de sus ejecuciones.


JNDI

Muchos almacenes de datos y conexiones en GeoServer tienen la opción de utilizarJava Naming and Directory Interfaceen JNDI.JNDI permite que los componentes de un sistema Java busquen otros objetos y datos con un nombre predefinido.

Un uso común de JNDI es almacenar una fuente de datos JDBC globalmente en un contenedor.Esto tiene algunos beneficios.En primer lugar, puede conducir a un uso mucho más eficiente de los recursos de la base de datos.Las conexiones de bases de datos en Java son objetos que consumen muchos recursos, por lo que normalmente se agrupan.Si cada componente que requiere una conexión a la base de datos es responsable de crear su propio grupo de conexiones, los recursos se acumularán rápidamente.Además, a menudo esos recursos están infrautilizados y es posible que un componente no dimensione su grupo de conexiones en consecuencia.Un método más eficiente es configurar un grupo global en el nivel del contenedor de servlets y hacer que todos los componentes que requieran una conexión a la base de datos lo utilicen.

Además, JNDI consolida la configuración de la conexión de la base de datos, ya que no todos los componentes que requieren una conexión a la base de datos necesitan conocer más detalles que el nombre JNDI.Esto es muy útil para los administradores que tengan que cambiar los parámetros de la base de datos en un sistema en ejecución, ya que permite que el cambio se produzca en un solo lugar.



Vistas SQL

La forma tradicional de acceder a los datos de la base de datos es configurar capas en tablas o vistas de la base de datos.A partir de GeoServer 2.1.0, las capas también se pueden definir como vistas SQL.Las vistas SQL permiten ejecutar una consulta SQL personalizada en cada solicitud a la capa.Esto evita la necesidad de crear una vista de base de datos para consultas complejas.

Aún más útil es que las consultas de Vista SQL se pueden parametrizar mediante la sustitución de cadenas.Los valores de los parámetros se pueden proporcionar en solicitudes WMS y WFS.Se pueden proporcionar valores predeterminados para los parámetros y los valores de entrada se pueden validar mediante expresiones regulares para eliminar el riesgo de ataques de inyección SQL.

Las vistas SQL son de solo lectura y, por lo tanto, no pueden actualizarse mediante transacciones WFS-T.

Crear una vista SQL

Para crear una vista SQL, el administrador invoca la páginaCrear nueva capa.Cuando se selecciona un almacén de base de datos, aparece la lista habitual de tablas y vistas disponibles para publicación.También aparece un enlaceConfigurar nueva vista SQL... :


Al seleccionar el enlaceConfigurar nueva vista SQL...se abre una nueva página donde se puede especificar la consulta de la vista SQL:


Nota

La consulta puede ser cualquier declaración SQL que sea válida como subconsulta en una cláusula FROM (es decir,).Este es el caso de la mayoría de las sentencias SQL, pero en algunas bases de datos puede ser necesaria una sintaxis especial para llamar a procedimientos almacenados.Además, todas las columnas devueltas por la declaración SQL deben tener nombres.En algunas bases de datos se requieren nombres de alias para las llamadas a funciones.select*from(<thesqlview>)[as]vtable

Cuando se haya ingresado una consulta SQL válida, presione el enlaceActualizaren la tablaAtributospara obtener la lista de las columnas de atributos determinadas a partir de la consulta:


GeoServer intenta determinar el tipo de columna de geometría y el SRID nativo, pero estos deben verificarse y corregirse si es necesario.

Nota

Tener un SRID (ID de referencia espacial) correcto es esencial para que funcionen las consultas espaciales.En muchas bases de datos espaciales, el SRID es igual al código EPSG para el sistema de referencia espacial específico, pero este no es siempre el caso (por ejemplo, Oracle tiene varios códigos SRID que no son EPSG).

Si se desean identificadores de características estables para las características de la vista, se deben marcar una o más columnas que proporcionen una identificación única para las características en la columnaIdentificador.Asegúrese siempre de que estos atributos generen una clave única, o el filtrado y las solicitudes WFS no funcionarán correctamente.

Una vez definidos la consulta y los detalles del atributo, presioneGuardar.Aparecerála página de configuración habitualde Nueva capa .Si se requieren más cambios en la vista, la página tiene un enlace al editor de Vista SQL en la parte inferior de la pestañaDatos:


Una vez creada, la capa de vista SQL se utiliza de la misma manera que una capa respaldada por tablas convencional, con la única limitación de ser de solo lectura.

Parametrización de vistas SQL

Una vista SQL paramétrica se basa en una consulta SQL que contiene parámetros con nombre.Los valores de los parámetros se pueden proporcionar dinámicamente en solicitudes WMS y WFS utilizando elviewparamsparámetro de solicitud.Los parámetros pueden tener valores predeterminados especificados para manejar la situación en la que no se proporcionan en una solicitud.La validación de los valores de los parámetros proporcionados se admite especificando expresiones regulares de validación.Los valores de los parámetros solo se aceptan si coinciden con la expresión regular definida para ellos.Siempre se debe utilizar una validación de parámetros adecuada para evitar el riesgo deataques de inyección SQL.

Advertencia

La sustitución de parámetros de Vista SQL debe usarse con precaución, ya que los parámetros validados incorrectamente abren el riesgo de un ataque de inyección SQL.Siempre que sea posible, considere utilizar métodos más seguros, comoel filtrado dinámicoen la solicitud ola sustitución de variables en SLD.

Definición de parámetros

Dentro de la consulta de Vista SQL, los nombres de los parámetros están delimitados por%signos iniciales y finales.Los parámetros pueden aparecer en cualquier lugar dentro del texto de la consulta, incluidos usos como dentro de constantes de cadena SQL, en lugar de palabras clave SQL o representando cláusulas SQL completas.

A continuación se muestra un ejemplo de una consulta de vista SQL para una capa llamadapopstatescon dos parámetroslowyhigh:


Cada parámetro debe definirse con su nombre, un valor predeterminado opcional y una expresión de validación.Se puede hacer clic en el enlaceAdivinar parámetros de SQLpara inferir los parámetros de consulta automáticamente, o se pueden ingresar manualmente.El resultado es una tabla llena de nombres de parámetros, valores predeterminados y expresiones de validación:


En este caso se deben especificar los valores predeterminados, ya que la consulta no se puede ejecutar sin valores para los parámetros (porque la consulta expandidaes un SQL no válido).Dado que el uso de los parámetros en la consulta SQL requiere que sus valores sean números enteros positivos, las expresiones regulares de validación se especifican para permitir solo la entrada numérica (es decir):selectgid,state_name,the_geomfrompgstateswherepersonsbetweenand^[\d]+$


Una vez que se han definido los parámetros, se hace clic en el enlaceActualizaratributospara analizar la consulta y recuperar las columnas de atributos.El tipo de geometría calculada y los detalles del identificador de columna se pueden corregir si es necesario.A partir de este momento, el flujo de trabajo es el mismo que para una consulta no parametrizada.

Usando una vista SQL paramétrica

Los parámetros de la vista SQL se especifican agregando elviewparamsparámetro a la solicitud WMSGetMapo WFSGetFeature.Elviewparamsargumento es una lista dekey:valuepares, separados por punto y coma:

viewparams=p1:v1;p2:v2;...

Si los valores contienen punto y coma o comas, estos deben ir acompañados de una barra invertida (por ejemplo,\,y\;).

Por ejemplo, lapopstatescapa Vista SQL se puede mostrar invocando laVista previa de capa.Inicialmente no se proporcionan valores de parámetros, por lo que se utilizan los valores predeterminados y se muestran todos los estados.

Para mostrar todos los estados que tienen más de 20 millones de habitantes, se agrega el siguiente parámetro a laGetMapsolicitud:&viewparams=low:20000000


Para mostrar todos los estados que tienen entre 2 y 5 millones de habitantes, los parámetros de visualización son:&viewparams=low:2000000;high:5000000


Se pueden proporcionar parámetros para varias capas separando cada mapa de parámetros con una coma:

&viewparams=l1p1:v1;l1p2:v2,l2p1:v1;l2p2:v2,...

La cantidad de mapas de parámetros debe coincidir con la cantidad de capas (tipos de características) incluidas en la solicitud.

Parámetros y validación.

El valor de un parámetro de Vista SQL puede ser una cadena de texto arbitraria.La única restricción es que los nombres y tipos de atributos devueltos por la consulta de vista nunca deben cambiar.Esto hace posible crear vistas que contienen parámetros que representan fragmentos SQL complejos.Por ejemplo, utilizar la consulta de vistapermite especificar la cláusula WHERE de la consulta de forma dinámica.Sin embargo, esto probablemente requeriría una expresión de validación vacía.lo que presenta un grave riesgo deataques de inyección SQL.Esta técnica sólo debe utilizarse si el acceso al servidor está restringido a clientes confiables.select*frompgstates%where%

En general, los parámetros SQL deben utilizarse con cuidado.Siempre deben incluir expresiones regulares de validación que acepten solo los valores de parámetros deseados.Tenga en cuenta que, si bien las expresiones de validación deben construirse para evitar valores ilegales, no necesariamente tienen que garantizar que los valores sean sintácticamente correctos, ya que esto será verificado por el analizador SQL de la base de datos.Por ejemplo:

^[\d\.\+-eE]+$comprueba que el valor de un parámetro contiene caracteres válidos para números de punto flotante (incluida la notación científica), pero no comprueba que el valor sea realmente un número válido

[^;']+comprueba que el valor de un parámetro no contenga comillas ni punto y coma.Esto evita ataques comunes de inyección SQL, pero por lo demás no impone muchas limitaciones al valor real.

Recursos para la validación de expresiones regulares.

Definir expresiones regulares de validación efectivas es importante para la seguridad.Las expresiones regulares son un tema complejo que no se puede abordar en su totalidad aquí.Los siguientes son algunos recursos para construir expresiones regulares:

GeoServer utiliza el motor de expresión regular estándar de Java.LosJavadocs de la clase Patterncontienen la especificación completa de la sintaxis permitida.

http://www.regular-expressions.infotiene muchos tutoriales y ejemplos de expresiones regulares.

El subprogramamyregexpse puede utilizar para probar expresiones regulares en línea.


Controlar la generación de ID de entidades en bases de datos espaciales

Introducción

Todos los almacenes de datos de bases de datos espaciales (PostGIS, Oracle, MySQL, etc.) normalmente derivan el ID de la característica de la clave principal de la tabla y asumen ciertas convenciones sobre cómo ubicar el siguiente valor de la clave en caso de que sea necesario generar una nueva característica (WFS). operación de inserción).

Las convenciones comunes se basan en encontrar columnas de incremento automático (PostGIS) o encontrar una secuencia que lleva el nombre de una convención específica como<table>_<column>_SEQUENCE(caso de Oracle).

En caso de que no se encuentre nada de lo anterior, normalmente la tienda recurrirá a la generación de ID de funciones aleatorias en cada nueva solicitud, lo que hace que la tabla no sea adecuada para búsquedas y transacciones basadas en ID de funciones.

Descripción de la tabla de metadatos

Estos valores predeterminados se pueden anular manualmente creando unatabla de metadatos de clave principalque especifique qué columnas usar y qué estrategia usar para generar nuevos valores de clave principal.La tabla (calificada por esquema) se puede crear con esta declaración SQL (ésta es válida para PostGIS y ORACLE, adáptela a su base de datos específica, puede quitar la marca al final si lo desea):

--PostGIS DDL

CREAR TABLA my_schema.gt_pk_metadata (

table_schema VARCHAR(32) NO NULO,

nombre_tabla VARCHAR(32) NO NULO,

pk_column VARCHAR(32) NO NULO,

pk_column_idx INTEGER,

pk_policyVARCHAR(32),

pk_sequenceVARCHAR(64),

único (esquema_tabla, nombre_tabla, columna_pk),

check (pk_policy in ('secuencia', 'asignado', 'autoincremento'))

)

--ORACLE DDL

CREAR TABLA gt_pk_metadata (

table_schema VARCHAR2(32) NO NULO,

nombre_tabla VARCHAR2(32) NO NULO,

pk_column VARCHAR2(32) NO NULO,

pk_column_idx NÚMERO(38),

pk_policyVARCHAR2(32),

pk_sequenceVARCHAR2(64),

restricción chk_pk_policy check (pk_policy in ('sequence', 'assigned', 'autoincrement')));

CREAR ÍNDICE ÚNICO gt_pk_metadata_table_idx01 EN gt_pk_metadata (table_schema, table_name, pk_column);

A la tabla se le puede dar un nombre diferente.En ese caso, el nombre (calificado por el esquema) de la tabla debe especificarse en el parámetro de configuraciónde la tabla de metadatos de clave principaldel almacén.

La siguiente tabla describe el significado de cada columna de la tabla de metadatos.

Columna

Descripción

esquema_tabla

Nombre del esquema de base de datos en el que se encuentra la tabla.

nombre de la tabla

Nombre de la tabla a publicar

pk_column

Nombre de una columna utilizada para formar los ID de función

pk_column_idx

Índice de la columna en una clave de varias columnas.En caso de que se necesiten claves de varias columnas, se utilizarán varios registros con el mismo esquema de tabla y nombre de tabla.

pk_policy

La nueva política de generación de valor, utilizada en caso de que sea necesario agregar una nueva característica en la tabla (después de una operación de inserción WFS-T).

pk_secuencia

El nombre de la secuencia de la base de datos que se utilizará al generar un nuevo valor para pk_column.

Los valores posibles son:

asignado.Se utilizará el valor del atributo en la característica recién insertada (esto supone que se ha habilitado el indicador "exponer claves primarias")

secuencia.El valor del atributo se generará a partir del siguiente valor de una secuencia indicada en la columna “pk_sequence”.

auto generado.La columna es de incremento automático, se utilizará el siguiente valor del incremento automático.

Usando la tabla de metadatos con vistas

GeoServer puede publicar vistas espaciales sin problemas, pero normalmente produce dos efectos secundarios:

la vista se trata como de solo lectura

los ID de características se generan aleatoriamente

La tabla de metadatos también puede hacer referencia a vistas, simplemente use el nombre de la vista en latable_namecolumna: esto dará como resultado identificadores estables y, en las bases de datos que admiten vistas actualizables, también hará que el código trate la vista como escribible (permitiendo así el uso de WFS). -T en eso).


Scripts de inicio/detención de sesión SQL personalizados

A partir de la versión 2.1.4, GeoServer admite scripts SQL personalizados que se pueden ejecutar cada vez que GeoServer toma una conexión del grupo de conexiones y cada vez que la sesión regresa al grupo.

Estos scripts se pueden parametrizar con la expansión de variables de entorno, que a su vez se pueden configurar en los parámetros de solicitud de OGC con el mismo mecanismo que lasustitución de variables en SLD.

Además de los parámetros proporcionados a través de la solicitud,GSUSERse garantiza que la variable contiene el usuario actual de GeoServer o será nula si no hay autenticación disponible.Esto es útil si los scripts de las sesiones SQL se utilizan para proporcionar un control estricto sobre el acceso a la base de datos.

El script SQL puede expandir las variables de entorno usando lasintaxis, por ejemplo, lo siguiente modifica el usuario de la base de datos actual para que sea el mismo que el usuario actual de GeoServer, oen caso de que ningún usuario haya sido autenticado${variableName,defaultValue}geoserver

ESTABLECER AUTORIZACIÓN DE SESIÓN ${GSUSER,geoserver}

Uso de scripts de sesión SQL para controlar las autorizaciones a nivel de base de datos

GeoServer se conecta a una base de datos a través de un grupo de conexiones, utilizando los mismos derechos que el usuario especificado en la configuración del grupo de conexiones.En una configuración que proporciona una variedad de servicios y tablas, el usuario del grupo de conexiones debe tener un conjunto bastante grande de derechos, como selección de tablas (WMS), inserción/actualización/eliminación de tablas (WFS-T) e incluso creación de tablas (carga de datos). a través de RESTConfig, proceso de importación WPS y eventuales nuevos procesos que aprovechan las conexiones directas de bases de datos).

Lo que un usuario puede hacer se puede controlar mediante el subsistema de seguridad GeoServer, pero en configuraciones de alta seguridad esto puede no considerarse suficiente y en su lugar se prefiere un control de acceso a nivel de base de datos.En estas configuraciones, normalmente el usuario del grupo de conexiones tiene acceso limitado, como acceso simple de solo lectura, mientras que a usuarios específicos se les permite realizar más operaciones.

Al configurar una solución de este tipo, recuerde las siguientes pautas:

El usuario del grupo de conexiones debe poder acceder a todos los metadatos de la tabla, independientemente de si realmente puede realizar una selección en las tablas (las tablas del diccionario/la funcionalidad de descripción deben estar siempre accesibles).

El grupo de conexiones debe ver todas y cada una de las columnas de tablas y vistas, en otras palabras, la estructura de las tablas no debe cambiar a medida que cambia el usuario actual.

Los usuarios de la base de datos y el usuario de GeoServer deben mantenerse sincronizados con algunas herramientas externas, GeoServer no proporciona funciones listas para usar.

Durante el inicio de GeoServer, el código accederá a la base de datos para realizar algunas comprobaciones de cordura; en ese momento no hay ningún usuario autenticado en GeoServer, por lo que el código se ejecutará con cualquier usuario especificado como "valor predeterminado" para laGSUSERvariable.

El usuario que administra GeoServer (normalmenteadmin, pero se le puede cambiar el nombre y a otros usuarios también se les asignan roles de administración) también debe ser un usuario de la base de datos; todo acceso administrativo en la GUI de GeoServer tendrá a ese usuario específico controlando la sesión.

Casos de uso típicos:

Otorgue derechos de inserción/actualización/eliminación solo a los usuarios que deben usar WFS-T

Permitir solo al administrador crear nuevas tablas

Limite las filas de una tabla que un usuario puede ver mediante el uso de vistas SQL dinámicas teniendo en cuenta al usuario actual para decidir qué filas devolver.

Por si acaso, si queremos que la sesión de PostgreSQL se ejecute con las credenciales de usuario actuales de GeoServer, se utilizarán los siguientes scripts:


Configurar la autorización de sesión para PostgreSQL

El primer comando hace que la sesión de la base de datos utilice el usuario actual de GeoServer o elgeoserverusuario si no había autenticación disponible (usuario anónimo o situación de inicio).El segundo comando restablece la sesión a los derechos del usuario del grupo de conexiones.

Trabajar con esquemas de aplicación

La extensión de soporte de esquema de aplicación (app-schema) brinda soporte parafunciones complejasen GeoServer WFS.

Nota

Debe instalar el complemento app-schema para utilizar la compatibilidad con esquemas de aplicaciones.

GeoServer brinda soporte para una amplia selección de almacenes de datos de características simples, incluidos archivos de propiedades, archivos de forma y almacenes de datos JDBC como PostGIS y Oracle Spatial.El módulo app-schema toma uno o más de estos almacenes de datos de características simples y aplica un mapeo para convertir los tipos de características simples en uno o más tipos de características complejas que se ajusten a un esquema de aplicación GML.


Se accede a tres tablas de una base de datos utilizando el soporte de funciones simples de GeoServer y se convierten en dos tipos de funciones complejas.

El módulo app-schema se ve en GeoServer como cualquier otro almacén de datos y, por lo tanto, se puede cargar y utilizar para atender solicitudes WFS.De hecho, el almacén de datos de esquema de aplicación es un contenedor o adaptador que convierte un almacén de datos de características simples en características complejas para su entrega a través de WFS.El mapeo funciona en ambos sentidos, por lo que se admiten consultas sobre propiedades de entidades complejas.

Funciones complejas

Funciones simples

Características complejas

Instalación

Configuración del servicio WFS

Ubicación del esquema canónico

Codificar usando featureMember

Configuración

Diseño del espacio de trabajo

Almacén de datos

Archivo de mapeo

Describir

Ajustes

Mapeos

CQL

Identificadores de bases de datos

Fuentes desnormalizadas

Resolución del esquema de aplicación

La descarga de esquemas ahora es automática para la mayoría de los usuarios

Orden de resolución

Catálogo OASIS

ruta de clases

Cache

Versiones GML compatibles

GML 3.1.1

GML 3.2.1

GML 3.3

Espacios de nombres secundarios

¿Qué es un espacio de nombres secundario?

Cuándo configurar espacios de nombres secundarios

Paso 1: cree la carpeta del espacio de nombres secundario

Paso 2: crear archivos

Paso 3: editar el contenido de los archivos

funciones CQL

Traducción de vocabulario

Creación de geometría

Referencia

Formato de fecha/hora

Interpolación de propiedades

Definiendo propiedades

Usando propiedades

Ejemplo de interpolación de propiedades

Archivo de propiedades de ejemplo

Almacenes de datos

El elemento del almacén de datos

Opciones de base de datos

PostGIS

Oráculo

ArcSDE

Archivo de forma

Ficha de propiedad

JNDI

Exponer claves primarias

Encadenamiento de funciones

Alcance

Pasos de mapeo

Múltiples asignaciones del mismo tipo

Anidar propiedades simples

Filtrado de atributos anidados en entidades encadenadas

Propiedades multivalor por referencia ( xlink:href )

Polimorfismo

Polimorfismo de tipo de datos

Polimorfismo referencial

Funciones útiles

Valor nulo o faltante

Cualquier tipo

Filtros

Integración de acceso a datos

Cómo conectarse al acceso a datos de entrada

Cómo configurar el mapeo

Cómo encadenar funciones

Cómo usar filtros

Soporte WMS

Configuración

Obtener mapa

Obtener información sobre la característica

Soporte WFS 2.0

resolviendo

Obtener valor de propiedad

paginación

Unirse a soporte para el rendimiento

Condiciones

Configuración

Directrices de diseño de bases de datos

Efectos sobre el rendimiento

Tutorial

geocienciaml

Instalación

almacén de datos.xml

Archivos de mapeo

Respuesta de la CMA

Agradecimientos


Funciones complejas

Para comprender las funciones complejas y por qué desea utilizarlas, primero necesita saber un poco sobre las funciones simples.

Funciones simples

Un uso común de GeoServer WFS es conectarse a una fuente de datos, como una base de datos, y acceder a una o más tablas, donde cada tabla se trata como un tipo de característica simple WFS.Las características simples contienen una lista de propiedades, cada una de las cuales tiene una pieza de información simple, como una cadena o un número.(Se toman disposiciones especiales para los objetos geométricos, que se tratan como elementos individuales de datos simples). El Open Geospatial Consortium (OGC) define tres perfiles de características simples;SF-0, SF-1 y SF-2.Las características simples de GeoServer están cerca de OGC SF-0, el perfil OGC más simple.

Las características simples de GeoServer WFS proporcionan un mapeo sencillo desde una tabla de base de datos o estructura similar a una representación XML "plana", donde cada columna de la tabla se asigna a un elemento XML que generalmente no contiene más estructura.Una de las razones por las que GeoServer WFS es tan fácil de usar con funciones simples es que la conversión de columnas en una tabla de base de datos a elementos XML es automática.El nombre de cada elemento es el nombre de la columna, en el espacio de nombres del almacén de datos.El nombre del tipo de característica por defecto es el nombre de la tabla.GeoServer WFS puede fabricar una definición de tipo XSD para cada tipo de característica simple que atiende.Envíe una solicitud DescribeFeatureType para verlo.

Beneficios de las funciones simples

Fácil de implementar

Rápido

Admite consultas sobre propiedades, incluidas consultas espaciales sobre geometrías.

Desventajas de las funciones simples

Cuando GeoServer genera automáticamente un XSD, el formato XML está vinculado al esquema de la base de datos.

Para compartir datos con las funciones simples de GeoServer, los participantes deben usar el mismo esquema de base de datos o traducir entre diferentes esquemas.

Incluso si una comunidad pudiera ponerse de acuerdo sobre un único esquema de base de datos, a medida que se agregan más propietarios de datos con datos diferentes a una comunidad, la cantidad de columnas en la tabla se vuelve inmanejable.

La interoperabilidad es difícil porque las funciones simples no permiten modificar sólo una parte del esquema.

Ejemplo de característica simple

Por ejemplo, si tuviéramos una tabla de base de datosstationsque contenga información sobre estaciones GPS:

| identificación | código | nombre | ubicación |

+----+------+----------+-------------------- ------+

| 27 | ALICIA | Alice Springs | PUNTO(133.8855 -23.6701) |

| 4 | NORF | Isla Norfolk | PUNTO(167.9388 -29.0434) |

| 12 | COCO | Cocos | PUNTO(96.8339 -12.1883) |

| 31 | ALBY | Albany | PUNTO(117.8102 -34.9502) |

GeoServer entonces podría crear el siguiente fragmento de respuesta WFS de característica simple:

<gps:estaciones gml:id="estaciones.27">

<gps:código>ALIC</gps:código>

<gps:nombre>Alice Springs</gps:nombre>

<gps:ubicación>

<gml:Punto srsName="urn:x-ogc:def:crs:EPSG:4326">

<gml:pos>-23.6701 133.8855</gml:pos>

</gml:Punto>

</gps:ubicación>

</gps:estaciones>

Cada fila de la tabla se convierte en una característica.

Cada columna de la tabla se convierte en un elemento que contiene el valor de esa fila.

Cada elemento está en el espacio de nombres del almacén de datos.

Las conversiones automáticas se aplican a algunos tipos especiales como las geometrías, que tienen estructura interna e incluyen elementos definidos en GML.

Características complejas

Las entidades complejas contienen propiedades que pueden contener más propiedades anidadas hasta una profundidad arbitraria.En particular, las funciones complejas pueden contener propiedades que son otras funciones complejas.Se pueden utilizar características complejas para representar información no como una vista XML de una sola tabla, sino como una colección de objetos relacionados de diferentes tipos.

Característica sencilla

Característica compleja

Las propiedades son elementos de datos únicos, por ejemplo, texto, número, geometría.

Las propiedades pueden ser complejas, incluidas características complejas.

Vista XML de una sola tabla

Colección de objetos identificables relacionados.

Esquema generado automáticamente en base a la base de datos.

Esquema acordado por la comunidad.

Un tipo grande

Múltiples tipos diferentes

Directo

Estándares de datos con muchas funciones

La interoperabilidad se basa en la simplicidad y la personalización

Interoperabilidad a través de la estandarización

Beneficios de las funciones complejas

Puede definir el modelo de información como una estructura orientada a objetos, unesquema de aplicación.

La información no se modela como una tabla única sino como una colección de objetos relacionados cuyas asociaciones y tipos pueden variar de una característica a otra (polimorfismo), lo que permite una rica expresión del contenido.

Al dividir el esquema en una colección de tipos independientes, las comunidades sólo necesitan ampliar aquellos tipos que necesitan modificar.Esto simplifica la gobernanza y permite la interoperabilidad entre comunidades relacionadas que pueden acordar tipos de base comunes pero no necesitan ponerse de acuerdo sobre subtipos específicos de aplicaciones.

Desventajas de las funciones complejas

Más complejo de implementar

Las respuestas complejas pueden ser más lentas si se requieren más consultas a la base de datos para cada característica.

Se requiere modelado de información para estandarizar un esquema de aplicación.Si bien esto es beneficioso, requiere esfuerzo por parte de la comunidad de usuarios.

Ejemplo de característica compleja

Volvamos a nuestrastationstabla y completémosla con una clave externagu_idque describa la relación entre la estación GPS y la unidad geológica a la que está físicamente conectada:

| identificación | código | nombre | ubicación | gu_id |

+----+------+----------+-------------------- ------+-------+

| 27 | ALICIA | Alice Springs | PUNTO(133.8855 -23.6701) | 32785 |

| 4 | NORF | Isla Norfolk | PUNTO(167.9388 -29.0434) | 10237 |

| 12 | COCO | Cocos | PUNTO(96.8339 -12.1883) | 19286 |

| 31 | ALBY | Albany | PUNTO(117.8102 -34.9502) | 92774 |

La unidad geológica se almacena en la tablageologicunit:

| gu_id | urna | texto |

+-------+-----------------------------------------------+- -----------+

| 32785 | urna:x-demo:característica:GeologicUnit:32785 | Roca metamórfica |

...

El enfoque de características simples sería unir lastationstabla con lageologicunittabla en una vista y luego entregar XML "plano" que contuviera todas las propiedades de ambas.El enfoque de funciones complejas consiste en entregar las dos tablas como tipos de funciones independientes.Esto permite representar la relación entre las entidades preservando su identidad individual.

Por ejemplo, podríamos asignar la estación GPS asa:SamplingPointcon ungsml:GeologicUnit.Estos tipos se definen en los siguientes esquemas de aplicación respectivamente:


http://schemas.opengis.net/sampling/1.0.0/sampling.xsd


Documentación: OGC 07-002r3:http://portal.opengeospatial.org/files/?artifact_id=22467


http://www.geosciml.org/geosciml/2.0/xsd/geosciml.xsd


Documentación:http://www.geosciml.org/geosciml/2.0/doc/

El fragmento de respuesta WFS de característica compleja podría codificarse como:

<sa:SamplingPoint gml:id="estaciones.27>

<gml:nombre codeSpace="urn:x-demo:SimpleName">Alice Springs</gml:nombre>

<gml:nombre codeSpace="urn:x-demo:IGS:ID">ALIC</gml:nombre>

<sa:funciónmuestreada>

<gsml:Unidad Geológica gml:id="unidadgeológica.32785">

<gml:description>Base de roca metamórfica</gml:description>

<gml:nombre codeSpace="urn:x-demo:Feature">urna:x-demo:feature:GeologicUnit:32785</gml:name>

</gsml:Unidad Geológica>

</sa:sampledFeature>

<sa: relatedObservation xlink:href="urn:x-demo:feature:GeologicUnit:32785" />

<sa:posición>

<gml:Punto srsName="urn:x-ogc:def:crs:EPSG:4326">

<gml:pos>-23.6701 133.8855</gml:pos>

</gml:Punto>

</sa:posición>

</sa:Punto de muestreo>

La propiedadsa:sampledFeaturepuede hacer referencia a cualquier otro tipo de característica, en línea (incluida en la respuesta) o por referencia (unaxlink:hrefURL o URN).Este es un ejemplo del uso del polimorfismo.

La propiedadsa:relatedObservationse refiere a la misma GeologicUnit quesa:sampledFeature, pero por referencia.

La derivación de nuevos tipos proporciona un punto de extensión que permite reutilizar y ampliar los modelos de información de manera que admitan la compatibilidad con versiones anteriores.

Varios puntos de muestreo pueden compartir una única Unidad Geológica.Los esquemas de aplicación también pueden definir propiedades multivalor para admitir asociaciones de muchos a uno o de muchos a muchos.

Cada Unidad Geológica podría tener propiedades adicionales que describan en detalle las propiedades de la roca, como color, erosión, litología o eventos geológicos relevantes.

El tipo de característica GeologicUnit se puede servir por separado y podría identificarse de forma única a través de sus propiedades como la misma instancia vista en SamplingPoint.

Características complejas de representación (SF0)

Los esquemas de representación son esquemas estandarizados con atributos planos, también conocidos como nivel de característica simple 0 (SF0).Debido a que todavía se requiere un esquema de comunidad (por ejemplo, GeoSciML-Portrayal), el complemento de esquema de aplicación todavía se usa para asignar las columnas de la base de datos a los atributos.

El formato de salida WFS CSVes compatible con funciones complejas con esquemas de representación.Por el momento, la selección de nombre de propiedad aún no es compatible con csv outputFormat, por lo que siempre devuelve el conjunto completo de atributos.

Las funciones complejas con propiedades anidadas y de valores múltiples no son compatibles conel formato de salida WFS CSV.


Instalación

La compatibilidad con el esquema de la aplicación es una extensión de GeoServer y se descarga por separado.

Descargue el archivo zip del complemento app-schema para la misma versión de GeoServer.

Descomprima el archivo zip del complemento de esquema de aplicación para obtener los archivos jar que contiene.No descomprima los archivos jar.

Coloque los archivos jar en elWEB-INF/libdirectorio de su instalación de GeoServer.

Reinicie GeoServer para cargar la extensión (aunque es posible que desee configurarla primero [ver más abajo]).


Configuración del servicio WFS

Hay dos configuraciones de servicio GeoServer WFS que se recomiendan encarecidamente para servicios de entidades complejas interoperables.Estos se pueden habilitar a través de la páginaServicios ‣ WFSen la interfaz web de GeoServer o editando manualmente elwfs.xmlarchivo en el directorio de datos.

Ubicación del esquema canónico

El comportamiento predeterminado de GeoServer es codificar respuestas WFS que incluyen unschemaLocationpara el esquema WFS que se encuentra en la instancia de GeoServer.Un cliente no sabrá sin recuperar el esquema si es idéntico al esquema oficial alojado enschemas.opengis.net.La solución es codificar elschemaLocationesquema WFS como ubicación canónica enschemas.opengis.net.

Para habilitar esta opción, elijaunade estas:


Ya sea: En lapáginaServicio ‣ WFS enConformidad, verifiqueCodificar la ubicación del esquema WFS canónico.



O: inserte la siguiente línea antes de la etiqueta de cierre enwfs.xml:


<canonicalSchemaLocation>verdadero</canonicalSchemaLocation>


Codificar usando featureMember

De forma predeterminada, GeoServer codificará las respuestas WFS 1.1 con múltiples funciones en un sologml:featureMemberselemento.Esto provocará una salida no válida si una respuesta incluye una característica en el nivel superior que ya ha sido codificada como una propiedad anidada de una característica anterior, porque no hay ningún elemento único que pueda usarse para codificar esta característica por referencia.La solución es codificar las respuestas usandogml:featureMember.

Para habilitar esta opción, elijaunade estas:


Ya sea: en la páginaServicio ‣ WFSenCodificar respuesta convarios elementos "featureMember"seleccionados.



O: inserte la siguiente línea antes de la etiqueta de cierre enwfs.xml:


<encodeFeatureMember>verdadero</encodeFeatureMember>



Configuración

La configuración de un tipo de característica compleja de esquema de aplicación requiere la construcción manual de un directorio de datos de GeoServer que contenga un archivo de mapeo XML y un archivodatastore.xmlque apunte a este archivo de mapeo.El directorio de datos también requiere todos los demás archivos de configuración auxiliares utilizados por GeoServer para funciones simples.GeoServer puede ofrecer funciones simples y complejas al mismo tiempo.

Diseño del espacio de trabajo

El directorio de datos de GeoServer contiene una carpeta llamadaworkspacescon la siguiente estructura:

espacios de trabajo

-gsml

-Algún almacén de datos

- Algún tipo de característica

- tipo de característica.xml

- almacén de datos.xml

- SomeFeatureType-mapping-file.xml

Nota

La carpeta internaworkspacesdebe tener un nombre (el nombre del espacio de trabajo) que sea el mismo que el prefijo del espacio de nombres (gsmlen este ejemplo).

Almacén de datos

Cada carpeta del almacén de datos contiene un archivodatastore.xmlque contiene los parámetros de configuración del almacén de datos.Para crear un tipo de característica de esquema de aplicación, el almacén de datos debe configurarse para cargar el módulo de servicio de esquema de aplicación y procesar el archivo de asignación.Estas opciones están contenidas enconnectionParameters:

namespacedefine el espacio de nombres XML del tipo de característica compleja.

urles unafile:URL que proporciona la ubicación del archivo de mapeo del esquema de la aplicación en relación con la raíz del directorio de datos de GeoServer.

dbtypedebe serapp-schemapara desencadenar la creación de un tipo de característica de esquema de aplicación.


Archivo de mapeo

Un tipo de característica de esquema de aplicación se configura mediante un archivo de asignación que define el origen de datos para la característica y las asignaciones de los datos de origen a XPath en el XML de salida.

Describir

A continuación se muestra un resumen de un archivo de mapeo:

<?xml versión="1.0" codificación="UTF-8"?>

<as:AppSchemaDataAccess xmlns:as="http://www.geotools.org/app-schema"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://www.geotools.org/app-schema AppSchemaDataAccess.xsd">

<espacios de nombres>...</espacios de nombres>

<tipos incluidos>...</tipos incluidos>

<almacenamiento de datos de origen>...</almacenamiento de datos de origen>

<catálogo>...</catálogo>

<tipos de destino...</tipos de destino>

<tipoMappings>...</typeMappings>

</as:AppSchemaDataAccess>

namespacesdefine todos los prefijos de espacio de nombres utilizados en el archivo de asignación.

includedTypes(opcional) define todas las ubicaciones de archivos de mapeo que no son de tipo de característica incluidas y a las que se hace referencia en el archivo de mapeo.

sourceDataStoresproporciona la información de configuración para los almacenes de datos de origen.

cataloges la ubicación del catálogo OASIS utilizado para resolver ubicaciones de esquemas XML.

targetTypeses la ubicación del esquema XML que define el tipo de característica.

typeMappingsproporcione las relaciones entre los campos del almacén de datos de origen y los elementos de la característica compleja de salida.

Esquema de archivo de mapeo

AppSchemaDataAccess.xsdEs opcional porque GeoServer no lo utiliza.La presencia deAppSchemaDataAccess.xsden la misma carpeta que el archivo de mapeo permite a los editores XML observar su gramática y brindar ayuda contextual.

Ajustes

espacios de nombres

Lanamespacessección define todos los espacios de nombres XML utilizados en el archivo de asignación:

<Espacio de nombres>

<prefijo>gsml</prefijo>

<uri>urna:cgi:xmlns:CGI:GeoSciML:2.0</uri>

</Espacio de nombres>

<Espacio de nombres>

<prefijo>gml</prefijo>

<uri>http://www.opengis.net/gml</uri>

</Espacio de nombres>

<Espacio de nombres>

<prefijo>enlacex</prefijo>

<uri>http://www.w3.org/1999/xlink</uri>

</Espacio de nombres>

Tipos incluidos (opcional)

Non-feature types (eg. gsml:CompositionPart is a data type that is nested in gsml:GeologicUnit) may be mapped separately for its reusability, but we don’t want to configure it as a feature type as we don’t want to individually access it. Related feature types don’t need to be explicitly included here as it would have its own workspace configuration for GeoServer to find it. The location path inIncludetag is relative to the mapping file. For an example, if gsml:CompositionPart configuration file is located in the same directory as the gsml:GeologicUnit configuration:

<includedTypes>

<Include>gsml_CompositionPart.xml</Include>

</includedTypes>

sourceDataStores

Every mapping file requires at least one data store to provide data for features. app-schema reuses GeoServer data stores, so there are many available types. SeeData Storesfor details of data store configuration. For example:

<sourceDataStores>

<DataStore>

<id>datastore</id>

<parameters>

...

</parameters>

</DataStore>

...

</sourceDataStores>

If you have more than oneDataStorein a mapping file, be sure to give them each a distinctid.

catalog (optional)

The location of an OASIS XML Catalog configuration file, given as a path relative to the mapping file. SeeApplication Schema Resolutionfor more information. For example:

<catalog>../../../schemas/catalog.xml</catalog>

targetTypes

ThetargetTypessection lists all the application schemas required to define the mapping. Typically only one is required. For example:

<targetTypes>

<FeatureType>

<schemaUri>http://www.geosciml.org/geosciml/2.0/xsd/geosciml.xsd</schemaUri>

</FeatureType>

</targetTypes>

Mappings

typeMappings and FeatureTypeMapping

ThetypeMappingssection is the heart of the app-schema module. It defines the mapping from simple features to the the nested structure of one or more simple features. It consists of a list ofFeatureTypeMappingelements, which each define one output feature type. For example:

<typeMappings>

<FeatureTypeMapping>

<mappingName>mappedfeature1</mappingName>

<sourceDataStore>datastore</sourceDataStore>

<sourceType>mappedfeature</sourceType>

<targetElement>gsml:MappedFeature</targetElement>

<isDenormalised>true</isDenormalised>

<attributeMappings>

<AttributeMapping>

...


mappingNameis an optional tag, to identify the mapping inFeature Chainingwhen there are multiple FeatureTypeMapping instances for the same type. This is solely for feature chaining purposes, and would not work for identifying top level features.



sourceDataStoremust be an identifier you provided when you defined a source data store thesourceDataStoressection.



sourceTypeis the simple feature type name. For example:


a table or view name, lowercase for PostGIS, uppercase for Oracle.

a property file name (without the .properties suffix)


targetElementis the the element name in the target application schema. This is the same as the WFS feature type name.



isDenormalisedis an optional tag (default true) to indicate whether this type contains denormalised data or not. If data is not denormalised, then app-schema will build a more efficient query to apply the global feature limit. When combined with a low global feature limit (viaServices –> WFS), setting this option to false can prevent unnecessary processing and database lookups from taking place.


attributeMappings and AttributeMapping

attributeMappingscomprises a list ofAttributeMappingelements:

<AttributeMapping>

<targetAttribute>...</targetAttribute>

<idExpression>...</idExpression>

<sourceExpression>...</sourceExpression>

<targetAttributeNode>...</targetAttributeNode>

<isMultiple>...</isMultiple>

<ClientProperty>...</ClientProperty>

</AttributeMapping>

targetAttribute

targetAttributeis the XPath to the output element, in the context of the target element. For example, if the containing mapping is for a feature, you should be able to map agml:nameproperty by setting the target attribute:

<targetAttribute>gml:name</targetAttribute>

Multivalued attributes resulting fromDenormalised sourcesare automatically encoded. If you wish to encode multivalued attributes from different input columns as a specific instance of an attribute, you can use a (one-based) index. For example, you can set the thirdgml:namewith:

<targetAttribute>gml:name[3]</targetAttribute>

The reserved nameFEATURE_LINKis used to map data that is not encoded in XML but is required for use inFeature Chaining.

idExpression (optional)

A CQL expression that is used to set the customgml:idof the output feature type. This should be the name of a database column on its own. Using functions would cause an exception because it is not supported with the default joining implementation.

Note

Every feature must have agml:id. This requirement is an implementation limitation (strictly,gml:idis optional in GML).

If idExpression is unspecified,gml:idwill be<thetablename>.<primarykey>, e.g.MAPPEDFEATURE.1.

In the absence of primary keys, this will be<thetablename>.<generatedgmlid>, e.g.MAPPEDFEATURE.fid--46fd41b8_1407138b56f_-7fe0.

If using property files instead of database tables, the defaultgml:idwill be the row key found before the equals (“=”) in the property file, e.g. the feature with row “mf1=Mudstone|POINT(1 2)|...” will have gml:idmf1.

Note

gml:idmust be anNCName.

sourceExpression (optional)

Use asourceExpressiontag to set the element content from source data. For example, to set the element content from a column calledDESCRIPTION:

<sourceExpression><OCQL>DESCRIPTION</OCQL></sourceExpression>

IfsourceExpressionis not present, the generated element is empty (unless set by another mapping).

You can use CQL expressions to calculate the content of the element. This example concatenated strings from two columns and a literal:

<sourceExpression>

<OCQL>strConCat(FIRST , strConCat(' followed by ', SECOND))</OCQL>

</sourceExpression>

You can also useCQL functionsfor vocabulary translations.

Warning

Avoid use of CQL expressions for properties that users will want to query, because the current implementation cannot reverse these expressions to generate efficient SQL, and will instead read all features to calculate the property to find the features that match the filter query. Falling back to brute force search makes queries on CQL-calculated expressions very slow. If you must concatenate strings to generate content, you may find that doing this in your database is much faster.

linkElement and linkField (optional)

The presence oflinkElementandlinkFieldchange the meaning ofsourceExpressionto aFeature Chainingmapping, in which the source of the mapping is the feature of typelinkElementwith propertylinkFieldmatching the expression. For example, the followingsourceExpressionuses as the result of the mapping the (possibly multivalued)gsml:MappedFeaturefor whichgml:name[2]is equal to the value ofURNfor the source feature. This is in effect a foreign key relation:

<sourceExpression>

<OCQL>URN</OCQL>

<linkElement>gsml:MappedFeature</linkElement>

<linkField>gml:name[2]</linkField>

</sourceExpression>

The feature typegsml:MappedFeaturemight be defined in another mapping file. ThelinkFieldcan beFEATURE_LINKif you wish to relate the features by a property not exposed in XML. SeeFeature Chainingfor a comprehensive discussion.

For special cases,linkElementcould be an OCQL function, andlinkFieldcould be omitted. SeePolymorphismfor further information.

targetAttributeNode (optional)

targetAttributeNodeis required wherever a property type contains an abstract element and app-schema cannot determine the type of the enclosed attribute.

In this example,om:resultis ofxs:anyType, which is abstract. We can usetargetAttributeNodeto set the type of the property type to a type that encloses a non-abstract element:

<AttributeMapping>

<targetAttribute>om:result</targetAttribute>

<targetAttributeNode>gml:MeasureType<targetAttributeNode>

<sourceExpression>

<OCQL>TOPAGE</OCQL>

</sourceExpression>

<ClientProperty>

<name>xsi:type</name>

<value>'gml:MeasureType'</value>

</ClientProperty>

<ClientProperty>

<name>uom</name>

<value>'http://www.opengis.net/def/uom/UCUM/0/Ma'</value>

</ClientProperty>

</AttributeMapping>

If the casting type is complex, the specific type is implicitly determined by the XPath in targetAttribute and targetAttributeNode is not required. E.g., in this exampleom:resultis automatically specialised as a MappedFeatureType:

<AttributeMapping>

<targetAttribute>om:result/gsml:MappedFeature/gml:name</targetAttribute>

<sourceExpression>

<OCQL>NAME</OCQL>

</sourceExpression>

</AttributeMapping>

Although it is not required, we may still specify targetAttributeNode for the root node, and map the children attributes as per normal. This mapping must come before the mapping for the enclosed elements. By doing this, app-schema will report an exception if a mapping is specified for any of the children attributes that violates the type in targetAttributeNode. E.g.:

<AttributeMapping>

<targetAttribute>om:result</targetAttribute>

<targetAttributeNode>gsml:MappedFeatureType<targetAttributeNode>

</AttributeMapping>

<AttributeMapping>

<targetAttribute>om:result/gsml:MappedFeature/gml:name</targetAttribute>

<sourceExpression>

<OCQL>NAME</OCQL>

</sourceExpression>

</AttributeMapping>

Note that the GML encoding rules require that complex types are never the direct property of another complex type; they are always contained in a property type to ensure that their type is encoded in a surrounding element. Encoded GML is always type/property/type/property. This is also known as the GML “striping” rule. The consequence of this for app-schema mapping files is thattargetAttributeNodemust be applied to the property and the type must be set to the XSD property type, not to the type of the contained attribute (gsml:CGI_TermValuePropertyTypenotgsml:CGI_TermValueType). Because the XPath refers to a property type not the encoded content,targetAttributeNodeappears in a mapping withtargetAttributeand no other elements when using with complex types.

encodeIfEmpty (optional)

TheencodeIfEmptyelement will determine if an attribute will be encoded if it contains a null or empty value. By defaultencodeIfEmptyis set to false therefore any attribute that does not contain a value will be skipped:

<encodeIfEmpty>true</encodeIfEmpty>

encodeIfEmptycan be used to bring up attributes that only contain client properties such asxlink:title.

isMultiple (optional)

TheisMultipleelement states whether there might be multiple values for this attribute, coming from denormalised rows. Because the default value isfalseand it is omitted in this case, it is most usually seen as:

<isMultiple>true</isMultiple>

For example, the table below is denormalised withNAMEcolumn having multiple values:

ID

NAME

DESCRIPTION

gu.25678

Yaugher Volcanic Group 1

Olivine basalt, tuff, microgabbro

gu.25678

Yaugher Volcanic Group 2

Olivine basalt, tuff, microgabbro

The configuration file specifiesisMultipleforgml:nameattribute that is mapped to theNAMEcolumn:

<AttributeMapping>

<targetAttribute>gml:name</targetAttribute>

<sourceExpression>

<OCQL>NAME</OCQL>

</sourceExpression>

<isMultiple>true</isMultiple>

<ClientProperty>

<name>codeSpace</name>

<value>'urn:ietf:rfc:2141'</value>

</ClientProperty>

</AttributeMapping>

The output produces multiplegml:nameattributes for each feature grouped by the id:

<gsml:GeologicUnit gml:id="gu.25678">

<gml:description>Olivine basalt, tuff, microgabbro</gml:description>

<gml:name codeSpace="urn:ietf:rfc:2141">Yaugher Volcanic Group 1</gml:name>

<gml:name codeSpace="urn:ietf:rfc:2141">Yaugher Volcanic Group 2</gml:name>

...

isList (optional)

TheisListelement states whether there might be multiple values for this attribute, concatenated as a list. The usage is similar withisMultiple, except the values appear concatenated inside a single node instead of each value encoded in a separate node. Because the default value isfalseand it is omitted in this case, it is most usually seen as:

<isList>true</isList>

For example, the table below has multiplePOSITIONfor each feature:

ID

POSITION

ID1.2

1948-05

ID1.2

1948-06

ID1.2

1948-07

ID1.2

1948-08

ID1.2

1948-09

The configuration file usesisListontimePositionListattribute mapped toPOSITIONcolumn:

<AttributeMapping>

<targetAttribute>csml:timePositionList</targetAttribute>

<sourceExpression>

<OCQL>POSITION</OCQL>

</sourceExpression>

<isList>true</isList>

</AttributeMapping>

The output produced:

<csml:pointSeriesDomain>

<csml:TimeSeries gml:id="ID1.2">

<csml:timePositionList>1949-05 1949-06 1949-07 1949-08 1949-09</csml:timePositionList>

</csml:TimeSeries>

</csml:pointSeriesDomain>

ClientProperty (optional, multivalued)

A mapping can have one or moreClientPropertyelements which set XML attributes on the mapping target. EachClientPropertyhas anameand avaluethat is an arbitrary CQL expression. NoOCQLelement is used insidevalue.

This example of aClientPropertyelement sets thecodeSpaceXML attribute to the literal stringurn:ietf:rfc:2141. Note the use of single quotes around the literal string. This could be applied to any target attribute of GML CodeType:

<ClientProperty>

<name>codeSpace</name>

<value>'urn:ietf:rfc:2141'</value>

</ClientProperty>

Cuando se utiliza el patrón de asociación GML para codificar una propiedad por referencia, elxlink:hrefatributo se establece y el elemento está vacío.EsteClientPropertyelemento establece elxlink:hrefatributo XML en el valor delRELATED_FEATURE_URNcampo en la fuente de datos (por ejemplo, una columna en una tabla de base de datos Oracle).Esta asignación podría aplicarse a cualquier tipo de propiedad, comogml:FeaturePropertyTypeu otro tipo modelado según el patrón de asociación GML:

<PropiedadCliente>

<nombre>enlacex:href</nombre>

<valor>RELATED_FEATURE_URN</valor>

</PropiedadCliente>

Consulte la discusión enEncadenamiento de característicaspara conocer el caso especial en el quexlink:hrefse crea para propiedades multivalor por referencia.

CQL

Las funciones CQL permiten especificar la conversión de datos y el comportamiento condicional en los archivos de mapeo.


ConsulteFunciones CQLpara obtener información sobre funciones adicionales proporcionadas por el complemento de esquema de aplicación.



El manual de uDig incluye una lista de funciones CQL:


http://udig.refractions.net/confluence/display/EN/Constraint+Query+Language


Los literales de cadena CQL están entre comillas simples, por ejemplo'urn:ogc:def:nil:OGC:missing'.


Identificadores de bases de datos

Cuando haga referencia a nombres de tablas/vistas de bases de datos o nombres de columnas, utilice:

minúsculas para PostGIS

MAYÚSCULAS para Oracle Spatial y ArcSDE

Fuentes desnormalizadas

Las propiedades con valores múltiples de fuentes desnormalizadas (el mismo ID de característica de origen aparece más de una vez) se codifican automáticamente.Por ejemplo, una vista podría tener unaidcolumna repetida con variación de modo quese pueda codificarnameuna cantidad arbitrariamente grande de propiedades para la característica de salida.gml:name

Advertencia

Las fuentes desnormalizadas deben agruparse de modo que las funciones con ID duplicadas se proporcionen sin ninguna función intermedia.Esto se puede lograr garantizando que las características de origen desnormalizadas estén ordenadas por ID.El incumplimiento de esta restricción resultará en la corrupción de datos.Sin embargo, esta restricción no es necesaria cuando se utilizaJoining Support For Performanceporque entonces el pedido se realizará automáticamente.


Application Schema Resolution

To be able to encode XML responses conforming to a GML application schema, the app-schema plugin must be able to locate the application schema files (XSDs) that define the schema. This page describes the schema resolution process.

Schema downloading is now automatic for most users

GeoServer will automatically download and cache (seeCachebelow) all the schemas it needs the first time it starts if:

All the application schemas you use are accessed via http/https URLs, and

Your GeoServer instance is deployed on a network that permits it to download them.

Note

This is the recommended way of using GeoServer app-schema for most users.

If cached downloading is used, no manual handling of schemas will be required. The rest of this page is for those with more complicated arrangements, or who wish to clear the cache.

Resolution order

The order of sources used to resolve application schemas is:

OASIS Catalog

Classpath

Cache

Every attempt to load a schema works down this list, so imports can be resolved from sources other than that used for the originating document. For example, an application schema in the cache that references a schema found in the catalog will use the version in the catalog, rather than caching it. This allows users to supply unpublished or modified schemas sourced from, for example, the catalog, at the cost of interoperability (how do WFS clients get them?).

OASIS Catalog

AnOASIS XML Catalogis a standard configuration file format that instructs an XML processing system how to process entity references. The GeoServer app-schema resolver uses catalog URI semantics to locate application schemas, souriorrewriteURIentries should be present in your catalog. The optional mapping filecatalogelement provides the location of the OASIS XML Catalog configuration file, given as a path relative to the mapping file, for example:

<catalog>../../../schemas/catalog.xml</catalog>

Earlier versions of the app-schema plugin required all schemas to be present in the catalog. This is no longer the case. Because the catalog is searched first, existing catalog-based deployments will continue to work as before.

To migrate an existing GeoServer app-schema deployment that uses an OASIS Catalog to instead use cached downloads (seeCachebelow), remove allcatalogelements from your mapping files and restart GeoServer.

Classpath

Java applications such as GeoServer can load resources from the Java classpath. GeoServer app-schema uses a simple mapping from an http or https URL to a classpath resource location. For example, an application schema published athttp://schemas.example.org/exampleml/exml.xsdwould be found on the classpath if it was stored either:

at/org/example/schemas/exampleml/exml.xsdin a JAR file on the classpath (for example, a JAR file inWEB-INF/lib) or,

on the local filesystem atWEB-INF/classes/org/example/schemas/exampleml/exml.xsd.

The ability to load schemas from the classpath is intended to support testing, but may be useful to users whose communities supply JAR files containing their application schemas.

Cache

If an application schema cannot be found in the catalog or on the classpath, it is downloaded from the network and stored in a subdirectoryapp-schema-cacheof the GeoServer data directory.

Once schemas are downloaded into the cache, they persist indefinitely, including over GeoServer restarts.

No attempt will be made to retrieve new versions of cached schemas.

To clear the cache, remove the subdirectoryapp-schema-cacheof the GeoServer data directory and restart GeoServer.

GeoServer app-schema uses a simple mapping from an http or https URL to local filesystem path. For example, an application schema published athttp://schemas.example.org/exampleml/exml.xsdwould be downloaded and stored asapp-schema-cache/org/example/schemas/exampleml/exml.xsd. Note that:

OnlyhttpandhttpsURLs are supported.

Port numbers, queries, and fragments are ignored.

If your GeoServer instance is deployed on a network whose firewall rules prevent outgoing TCP connections on port 80 (http) or 443 (https), schema downloading will not work. (For security reasons, some service networks [“demilitarised zones”] prohibit such outgoing connections.) If schema downloading is not permitted on your network, there are three solutions:

Either: Install and configure GeoServer on another network that can make outgoing TCP connections, start GeoServer to trigger schema download, and then manually copy theapp-schema-cachedirectory to the production server. This is the easiest option because GeoServer automatically downloads all the schemas it needs, including dependencies.

Or: Deploy JAR files containing all required schema files on the classpath (seeClasspathabove).

Or: Use a catalog (seeOASIS Catalogabove).


Supported GML Versions

GML 3.1.1

GML 3.1.1 application schemas are supported for WFS 1.1.0.

Clients must specify WFS 1.1.0 in requests because the GeoServer default is WFS 2.0.0.

GET URLs must containversion=1.1.0to set the WFS version to 1.1.0.

GML 3.2.1

GML 3.2.1 application schemas are supported for WFS 1.1.0 and (incomplete) WFS 2.0.0.

Some WFS 2.0.0 features not in WFS 1.1.0 such as GetFeatureById are not yet supported.

Clients using WFS 1.1.0 must specify WFS 1.1.0 in requests and select thegml32output format for GML 3.2.1.

To use WFS 1.1.0 for GML 3.2.1, GET URLs must containversion=1.1.0to set the WFS version to 1.1.0 andoutputFormat=gml32to set the output format to GML 3.2.1.

The default WFS version is 2.0.0, for which the default output format is GML 3.2.1.

All GML 3.2.1 responses are contained in a WFS 2.0.0FeatureCollectionelement, even for WFS 1.1.0 requests, because a WFS 1.1.0FeatureCollectioncannot contain GML 3.2.1 features.

Secondary namespace for GML 3.2.1 required

GML 3.2.1 WFS responses are delivered in a WFS 2.0.0FeatureCollection. Unlike WFS 1.1.0, WFS 2.0.0 does not depend explicitly on any GML version. As a consequence, the GML namespace is secondary and must be defined explicitly as a secondary namespace. SeeSecondary Namespacesfor details.

For example, to use the prefixgmlfor GML 3.2, createworkspaces/gml/namespace.xmlcontaining:

<namespace>

<id>gml_namespace</id>

<prefix>gml</prefix>

<uri>http://www.opengis.net/gml/3.2</uri>

</namespace>

andworkspaces/gml/workspace.xmlcontaining:

<workspace>

<id>gml_workspace</id>

<name>gml</name>

</workspace>

Failure to define thegmlnamespace prefix with a secondary namespace will result in errors like:

java.io.IOException: The prefix "null" for element "null:name" is not bound.

while encoding a response (in this case one containinggml:name), even if the namespace prefix is defined in the mapping file.

GML 3.2.1 geometries require gml:id

GML 3.2.1 requires that all geometries have agml:id. While GeoServer will happily encode WFS responses withoutgml:idon geometries, these will be schema-invalid. Encoding agml:idon a geometry can be achieved by setting anidExpressionin the mapping for the geometry property. For example,gsml:shapeis a geometry property and itsgml:idmight be generated with:

<AttributeMapping>

<targetAttribute>gsml:shape</targetAttribute>

<idExpression>

<OCQL>strConcat('shape.', getId())</OCQL>

</idExpression>

<sourceExpression>

<OCQL>SHAPE</OCQL>

</sourceExpression>

</AttributeMapping>

In this example,getId()returns thegml:idof the containing feature, so each geometry will have a uniquegml:idformed by appending thegml:idof the containing feature to the string"shape.".

If a multigeometry (such as aMultiPointorMultiSurface) is assigned agml:idof (for example)parentid, to permit GML 3.2.1 schema-validity, each geometry that the multigeometry contains will be automatically assigned agml:idof the formparentid.1,parentid.2, ... in order.

GML 3.3

The proposed GML 3.3 is itself a GML 3.2.1 application schema; preliminary testing with drafts of GML 3.3 indicates that it works with app-schema as expected.


Secondary Namespaces

What is a secondary namespace?

A secondary namespace is one that is referenced indirectly by the main schema, that is, one schema imports another one as shown below:

a.xsd imports b.xsd

b.xsd imports c.xsd

(using a, b and c as the respective namespace prefixes for a.xsd, b.xsd and c.xsd):

a.xsd declares b:prefix

b.xsd declares c:prefix

The GeoTools encoder does not honour these namespaces and writes out:

"a:" , "b:" but NOT "c:"

The result is c’s element being encoded as:

<null:cElement/>

When to configure for secondary namespaces

If your application spans several namespaces which may be very common in application schemas.

A sure sign that calls for secondary namespace configuration is when prefixes for namespaces are printed out as the literal string “null” or error messages like:

java.io.IOException: The prefix "null" for element "null:something" is not bound.

Note

When using secondary namespaces, requests involving complex featuretypes must be made to theglobal OWS serviceonly, not toVirtual OWS Services. This is because virtual services are restricted to a single namespace, and thus are not able to access secondary namespaces.

In order to allow GeoServer App-Schema to support secondary namespaces, please follow the steps outlined below:

Using the sampling namespace as an example.

Step 1:Create the Secondary Namespace folder

Create a folder to represent the secondary namespace in the data/workspaces directory, in our example that will be the “sa” folder.

Step 2:Create files

Create two files below in the “sa” folder:

namespace.xml

workspace.xml

Step 3:Edit content of files

Contents of these files are as follows:

namespace.xml(uri is a valid uri for the secondary namespace, in this case the sampling namespace uri):

<namespace>

<id>sa_workspace</id>

<prefix>sa</prefix>

<uri>http://www.opengis.net/sampling/1.0</uri>

</namespace>

workspace.xml:

<workspace>

<id>sa_workspace</id>

<name>sa</name>

</workspace>

That’s it.

Your workspace is now configured to use a Secondary Namespace.

funciones CQL

Las funciones CQL permiten especificar la conversión de datos y el comportamiento condicional en los archivos de mapeo.Algunas de estas funciones las proporciona el complemento app-schema específicamente para este propósito.


El manual de uDig incluye una lista de funciones CQL:


http://udig.refractions.net/confluence/display/EN/Constraint+Query+Language


Los literales de cadena CQL están entre comillas simples, por ejemplo'urn:ogc:def:nil:OGC:missing'.



Las comillas simples se representan en los literales de cadena CQL como dos comillas simples, al igual que en SQL.Por ejemplo,'yyyy-MM-dd''T''HH:mm:ss''Z'''para la cadenayyyy-MM-dd'T'HH:mm:ss'Z'.


Traducción de vocabulario

Esta sección describe cómo ofrecer traducciones de vocabulario utilizando algunas expresiones de funciones en el archivo de mapeo del esquema de la aplicación.Si no está familiarizado con el archivo de asignación de esquemas de la aplicación, leaArchivo de asignación.

Recodificar

Esto es similar a la funciónif_then_else, excepto que no hay una cláusula predeterminada.Debe especificar un valor de traducción para cada clave de vocabulario.

Sintaxis:

Recodificar ( NOMBRE_COLUMNA , clave1 , valor1 , clave2 , valor2 , ... )

COLUMN_NAME: nombre de la columna de la que obtener valores

Ejemplo:

<Asignación de atributos>

<targetAttribute>gml:nombre</targetAttribute>

<expresiónfuente>

<OCQL>Recodificar(ABREVIATURA, '1GRAV', 'urna:cgi:clasificador:CGI:SimpleLithology:2008:gravel',

'1TILL', 'urna:cgi:clasificador:CGI:SimpleLithology:2008:diamictita',

'6ALLU', 'urna:cgi:clasificador:CGI:SimpleLithology:2008:sedimento')

</OCQL>

</fuenteExpresión>

</Asignación de atributos>

El ejemplo anterior asignaráel valorgml:name aurn:cgi:classifier:CGI:SimpleLithology:2008:gravelsi el valor de la columna ABREVIACIÓN es1GRAV.

Clasificar por categorías

Esto es más adecuado para claves numéricas, donde el valor de traducción está determinado por la posición de la clave dentro de los umbrales.

Sintaxis:

Categorizar (NOMBRE_COLUMNA, valor_predeterminado, umbral 1, valor 1, umbral 2, valor 2, ..., [anterior/sucesivo])


COLUMN_NAME: nombre de la columna de origen de datos



valor_predeterminado: valor predeterminado que se asignará si el valor de COLUMN_NAME no está dentro del umbral



umbral(n): valor umbral



valor(n): valor que se asignará si se alcanza el umbral



anterior/siguiente:



Opcional, el éxito se utiliza de forma predeterminada si no se especifica.

no entre mayúsculas y minúsculas.

anterior: el valor está dentro del umbral si COLUMN_NAME valor > umbral

exitoso: el valor está dentro del umbral si el valor de COLUMN_NAME >= umbral

Ejemplo:

<Asignación de atributos>

<targetAttribute>gml:descripción</targetAttribute>

<expresiónfuente>

<OCQL>Categorizar(CGI_LOWER_RANGE, 'missing_value', 1000, 'menor', 5000, 'significativo')</OCQL>

</fuenteExpresión>

</Asignación de atributos>

El ejemplo anterior significa que el valorde gml:descriptionseríasignificativosi el valor de la columna CGI_LOWER_RANGE es >=5000.

Vocabulario

Esta función es más útil para pares de vocabulario más grandes.En lugar de escribir pares largos de clave-valor en la función, puede guardarlos en un archivo de propiedades separado.El archivo de propiedades sirve como tabla de búsqueda para la función.No tiene encabezado y solo contiene los pares en formato ''<clave>=<valor>''.

Sintaxis:

Vocab(COLUMN_NAME, URI del archivo de propiedades)

COLUMN_NAME: nombre de la columna de la que obtener valores

URI del archivo de propiedades: ruta absoluta del archivo de propiedades o relativa a la ubicación del archivo de mapeo

Ejemplo:

Archivo de propiedades:

1GRAV=urna:cgi:clasificador:CGI:SimpleLithology:2008:grava

1TILL=urna:cgi:clasificador:CGI:SimpleLithology:2008:diamictita

6ALLU=urna:cgi:clasificador:CGI:SimpleLithology:2008:sedimento

Archivo de mapeo:

<Asignación de atributos>

<targetAttribute>gml:nombre</targetAttribute>

<expresiónfuente>

<OCQL>Vocab(ABREVIATURA, '/test-data/mapping.properties')</OCQL>

</fuenteExpresión>

</Asignación de atributos>

El ejemplo anterior asignarágml:nameaurn:cgi:classifier:CGI:SimpleLithology:2008:gravelsi el valor de ABREVIACIÓN es1GRAV.

Creación de geometría

a la posición directa

Esta función convierte valores dobles alDirectPositiontipo de geometría.Esto es necesario cuando el almacén de datos no tiene columnas de tipo geométrico.Esta función espera:

Literal

'SRS_NAME'(opcional)

Expresión

expresión del nombre SRS si'SRS_NAME'está presente como primer argumento

Expresión

nombre de la columna que apunta al primer valor doble

Expresión

nombre de la columna que apunta al segundo valor doble (opcional, solo para 2D)

Para envolver

ToEnvelopeLa función puede tomar el siguiente conjunto de parámetros y devolver como tipoEnvelopeoReferencedEnvelope:

Opción 1 (Sobre 1D):

Al sobre ( minx , maxx )

Opción 2 (Sobre 1D con crsname):

Al sobre ( minx , maxx , crsname )

Opción 3 (Sobre 2D):

Al sobre ( minx , maxx , miny , maxy )

Opción 4 (Sobre 2D con crsname):

Al sobre ( minx , maxx , miny , maxy , crsname )

apuntar

Esta función convierte valores dobles a un tipo de geometría de punto 2D.Esto es necesario cuando el almacén de datos no tiene columnas de tipo geométrico.Esta función espera:

Literal

'SRS_NAME'(opcional)

Expresión

expresión del nombre SRS si'SRS_NAME'está presente como primer argumento

Expresión

nombre de la columna que apunta al primer valor doble

Expresión

nombre de la columna que apunta al segundo valor doble

Expresión

expresión de gml:id (opcional)

toLineString

Esta función convierte valores dobles al tipo de geometría LineString 1D.Esto es necesario para expresar intervalos de pozo 1D con CRS personalizados (no EPSG).

Literal

'SRS_NAME'(Código EPSG o SRS personalizado)

Expresión

nombre de la columna que apunta al primer valor doble

Expresión

nombre de la columna que apunta al segundo valor doble

Referencia

aXlinkHref

Esta función redirige un atributo para que se codifique como xlink:href, en lugar de codificarlo como un atributo completo.Esto es útil en polimorfismo, donde la propiedad estática del cliente no se puede utilizar cuando la codificación es condicional.Esta función espera:

Expresión

REFERENCE_VALUE (podría ser otra función o literal)

Formato de fecha/hora

FormatoFechaZona horaria

Una función para formatear una fecha/hora usando unpatrón SimpleDateFormaten unazona horaria compatible con Java.Esta función mejoradateFormat, que formatea la fecha/hora en la zona horaria del servidor y puede producir resultados no deseados.Tenga en cuenta que el término "fecha" se deriva de un nombre de clase Java;esta clase representa una fecha/hora, no solo un día.

Sintaxis:

FormatDateTimezone ( patrón , fecha , zona horaria )

patrón

patrón de formato soportado porSimpleDateFormat, por ejemplo'yyyy-MM-dd'.Utilice dos comillas simples para incluir una comilla simple literal en un literal de cadena CQL, por ejemplo'yyyy-MM-dd''T''HH:mm:ss''Z'''.

fecha

la fecha/hora a formatear o su representación de cadena, por ejemplo'1948-01-01T00:00:00Z'.Se devolverá una excepción si la fecha tiene un formato incorrecto (y no es nula).Se recomiendan tipos de bases de datos con información de zona horaria.

zona horaria

el nombre de una zona horaria compatible con Java, por ejemplo'UTC'o'Canada/Mountain'.Tenga en cuenta que las zonas horarias no reconocidas se convertirán silenciosamente a UTC.

Esta función devuelve nulo si algún parámetro es nulo.

Este ejemplo da formato a las fechas y horas de una columnaPOSITIONen UTC para incluirlas encsml:TimeSeries:

<Asignación de atributos>

<targetAttribute>csml:timePositionList</targetAttribute>

<expresiónfuente>

<OCQL>FormatoFechaHorazona('aaaa-MM-dd''T''HH:mm:ss''Z''', POSICIÓN, 'UTC')</OCQL>

</fuenteExpresión>

<isList>verdadero</isList>

</Asignación de atributos>



Interpolación de propiedades

La interpolación en este contexto significa la sustitución de variables en cadenas.El esquema de aplicación de GeoServer admite la interpolación de propiedades (el equivalente Java de las variables de entorno) en archivos de mapeo del esquema de aplicación.Esto se puede utilizar, por ejemplo, para simplificar la gestión de los parámetros de conexión de la base de datos que, de otro modo, estarían codificados en un archivo de mapeo particular.Esto permite que los directorios de datos se proporcionen a terceros sin autenticación inaplicable o información de configuración del sistema.La externalización de estos parámetros facilita la gestión.

Definiendo propiedades


Si la propiedad del sistemaapp-schema.propertiesno está configurada, las propiedades se cargan desdeWEB-INF/classes/app-schema.properties(u otro recurso/app-schema.propertiesen el classpath).



Siapp-schema.propertiesse establece la propiedad del sistema, las propiedades se cargan desde el archivo denominado como valor de la propiedad.Esto está destinado principalmente a la depuración y está diseñado para usarse en una configuración de lanzamiento de Eclipse.


Por ejemplo, si la JVM se inicia con-Dapp-schema.properties=/path/to/some/local.properties, las propiedades se cargan desde/path/to/some/local.properties.


Las propiedades del sistema anulan las propiedades definidas en un archivo de configuración, por lo que si las define-Dsome.propertyen la línea de comando de Java, anulará un valor especificado en elapp-schema.propertiesarchivo.Esto está pensado para la depuración, por lo que puede establecer un archivo de propiedades en una configuración de inicio de Eclipse, pero anular algunas de las propiedades contenidas en el archivo configurándolas explícitamente como propiedades del sistema.



Todas las propiedades del sistema están disponibles para interpolación en archivos de mapeo.


Usando propiedades

Usar${some.property}cualquier parte del archivo de mapeo hará que sea reemplazado por el valor de la propiedadsome.property.

Es un error para una propiedad que no se ha configurado para usarse en la interpolación.

La interpolación se realiza repetidamente, por lo que los valores pueden contener nuevas interpolaciones.Utilice este comportamiento con precaución porque puede provocar un bucle infinito.

La interpolación se realiza antes del análisis XML, por lo que se puede utilizar para incluir fragmentos arbitrarios de XML.

Ejemplo de interpolación de propiedades

Este ejemplo define un almacén de datos de Oracle, donde los parámetros de conexión se interpolan desde las propiedades:

<almacenes de datos de origen>

<Almacén de datos>

<id>almacén de datos</id>

<parámetros>

<Parámetro>

<nombre>tipo de base de datos</nombre>

<valor>Oracle</valor>

</Parámetro>

<Parámetro>

<nombre>host</nombre>

<valor>${ejemplo.host}</valor>

</Parámetro>

<Parámetro>

<nombre>puerto</nombre>

<valor>1521</valor>

</Parámetro>

<Parámetro>

<nombre>base de datos</nombre>

<valor>${ejemplo.base de datos}</valor>

</Parámetro>

<Parámetro>

<nombre>usuario</nombre>

<valor>${ejemplo.usuario}</valor>

</Parámetro>

<Parámetro>

<nombre>contraseña</nombre>

<valor>${ejemplo.contraseña}</valor>

</Parámetro>

</parámetros>

</Almacén de datos>

</sourceDataStores>

Archivo de propiedades de ejemplo

Este archivo de propiedades de muestra proporciona los valores de propiedad que se interpolan en el fragmento del archivo de asignación anterior.Estas propiedades se pueden instalar enWEB-INF/classes/app-schema.propertiessu instalación de GeoServer:

ejemplo . host = base de datos . ejemplo . com ejemplo . base de datos = ejemplo ejemplo . ejemplo usuario = dbuser . contraseña = s3cr3t


Almacenes de datos

El archivo de mapeoapp-schemarequiere que especifique sus fuentes de datos en lasourceDataStoressección.Para las funciones simples de GeoServer, estas se configuran mediante la interfaz web, pero debido a que app-schema carece de una interfaz de configuración web, los almacenes de datos se deben configurar editando el archivo de mapeo.

Muchas opciones de configuración se pueden externalizar mediante el uso deinterpolación de propiedades.

El elemento del almacén de datos

UnaDataStoreconfiguración consta de

anid, que es un identificador opaco que se utiliza para hacer referencia al almacén de datos en otra parte de un archivo de mapeo, y

uno o másParameterelementos, cada uno de los cuales contiene elnameyvaluede un parámetro, y se utilizan para configurar el almacén de datos.

Un esquema delDataStoreelemento:

<Almacén de datos>

<id>almacén de datos</id>

<parámetros>

<Parámetro>

<nombre>...</nombre>

<valor>...</valor>

</Parámetro>

...

</parámetros>

</Almacén de datos>

El orden de los parámetros no es significativo.

Opciones de base de datos

Las bases de datos como PostGIS, Oracle y ArcSDE comparten algunas opciones de configuración comunes o similares.

name

Significado

valueejemplos

dbtype

Tipo de base de datos

postgisng,Oracle,arcsde

host

Nombre de host o dirección IP del servidor de base de datos

database.example.org,192.168.3.12

port

Puerto TCP en el servidor de base de datos

Valor predeterminado si se omite:1521(Oracle),5432(PostGIS),5151(ArcSDE)

database

Base de datos PostGIS/Oracle


instance

Instancia de ArcSDE


schema

El esquema de la base de datos.


user

El nombre de usuario utilizado para iniciar sesión en el servidor de base de datos.


passwd

La contraseña utilizada para iniciar sesión en el servidor de la base de datos.


Exposeprimarykeys

Columnas con claves principales disponibles para mapeo

El valor predeterminado esfalse, configurado paratrueusar columnas de clave principal en el mapeo

PostGIS

Establezca el parámetrodbtypeen parapostgisngutilizar el controlador PostGIS NG (nueva generación) incluido con GeoServer 2.0 y versiones posteriores.

Ejemplo:

<Almacén de datos>

<id>almacén de datos</id>

<parámetros>

<Parámetro>

<nombre>tipo de base de datos</nombre>

<value>publicación</value>

</Parámetro>

<Parámetro>

<nombre>host</nombre>

<valor>postgresql.ejemplo.org</valor>

</Parámetro>

<Parámetro>

<nombre>puerto</nombre>

<valor>5432</valor>

</Parámetro>

<Parámetro>

<nombre>base de datos</nombre>

<valor>prueba</valor>

</Parámetro>

<Parámetro>

<nombre>usuario</nombre>

<valor>prueba</valor>

</Parámetro>

<Parámetro>

<nombre>contraseña</nombre>

<valor>prueba</valor>

</Parámetro>

</parámetros>

</Almacén de datos>

Nota

La compatibilidad con PostGIS está incluida en el paquete principal de GeoServer, por lo que no se requiere un complemento por separado.

Oráculo

Configure el parámetrodbtypeparaOracleutilizar el controlador Oracle Spatial NG (nueva generación) compatible con GeoServer 2.0 y versiones posteriores.

Ejemplo:

<Almacén de datos>

<id>almacén de datos</id>

<parámetros>

<Parámetro>

<nombre>tipo de base de datos</nombre>

<valor>Oracle</valor>

</Parámetro>

<Parámetro>

<nombre>host</nombre>

<valor>oracle.ejemplo.org</valor>

</Parámetro>

<Parámetro>

<nombre>puerto</nombre>

<valor>1521</valor>

</Parámetro>

<Parámetro>

<nombre>base de datos</nombre>

<valor>demodb</valor>

</Parámetro>

<Parámetro>

<nombre>usuario</nombre>

<valor>ousuario</valor>

</Parámetro>

<Parámetro>

<nombre>contraseña</nombre>

<valor>s3cr3t</valor>

</Parámetro>

</parámetros>

</Almacén de datos>

Nota

Debe instalar el complemento de Oracle para conectarse a las bases de datos de Oracle Spatial.

ArcSDE

Este ejemplo se conecta a una base de datos de ArcSDE:

<Almacén de datos>

<id>almacén de datos</id>

<parámetros>

<Parámetro>

<nombre>tipo de base de datos</nombre>

<valor>arcosde</valor>

</Parámetro>

<Parámetro>

<nombre>servidor</nombre>

<valor>arcsde.ejemplo.org</valor>

</Parámetro>

<Parámetro>

<nombre>puerto</nombre>

<valor>5151</valor>

</Parámetro>

<Parámetro>

<nombre>instancia</nombre>

<valor>sde</valor>

</Parámetro>

<Parámetro>

<nombre>usuario</nombre>

<valor>demostración</valor>

</Parámetro>

<Parámetro>

<nombre>contraseña</nombre>

<valor>s3cr3t</valor>

</Parámetro>

<Parámetro>

<nombre>almacén de datos.allowNonSpatialTables</nombre>

<valor>verdadero</valor>

</Parámetro>

</parámetros>

</Almacén de datos>

El uso de tablas no espaciales ayuda a la entrega de esquemas de aplicación que utilizan propiedades no espaciales.

Nota

Debe instalar el complemento de ArcSDE para conectarse a las bases de datos de ArcSDE.

Archivo de forma

Las fuentes de datos Shapefile se identifican por la presencia de un parámetrourl, cuyo valor debe ser la URL del archivo .shp.

En este ejemplo, sólourlse requiere el parámetro.Los demás son opcionales:

<Almacén de datos>

<id>archivo de forma</id>

<parámetros>

<Parámetro>

<nombre>url</nombre>

<valor>archivo:/D:/Workspace/shapefiles/VerdeRiverBuffer.shp</valor>

</Parámetro>

<Parámetro>

<nombre>búfer de memoria asignada</nombre>

<valor>falso</valor>

</Parámetro>

<Parámetro>

<nombre>crear índice espacial</nombre>

<valor>verdadero</valor>

</Parámetro>

<Parámetro>

<nombre>juego de caracteres</nombre>

<valor>ISO-8859-1</valor>

</Parámetro>

</parámetros>

</Almacén de datos>

Nota

En esteurlcaso, se muestra un ejemplo de una ruta del sistema de archivos de Windows traducida a notación URL.

Nota

La compatibilidad con Shapefile está incluida en el paquete principal de GeoServer, por lo que no se requiere un complemento por separado.

Ficha de propiedad

Los archivos de propiedades se configuran especificando undirectoryURIfile:.

Si el directorio comienza confile:./él, es relativo al directorio del archivo de asignación.(Este es un URI no válido, pero funciona).

Por ejemplo, el siguiente almacén de datos se utiliza para acceder a archivos de propiedades en el mismo directorio que el archivo de asignación:

<Almacén de datos>

<id>archivo de propiedades</id>

<parámetros>

<Parámetro>

<nombre>directorio</nombre>

<valor>archivo:./</valor>

</Parámetro>

</parámetros>

</Almacén de datos>

Un almacén de datos de archivos de propiedades contienetodoslos tipos de características almacenados en archivos .properties en el directorio.Por ejemplo, si el directorio contuviera River.properties y station.properties, el almacén de datos podría servirlos como tipos de característicasRiverystation.Se ignoran otras extensiones de archivo.

Nota

La compatibilidad con archivos de propiedades está incluida en el paquete principal de GeoServer, por lo que no se requiere un complemento por separado.

JNDI

Definir un almacén de datos JDBC con lejndiReferenceNamepermite utilizar un grupo de conexiones proporcionado por su contenedor de servlets.Esto permite una configuración detallada de los parámetros del grupo de conexiones y compartir conexiones entre fuentes de datos, e incluso entre servlets.

Para utilizar un proveedor de conexión JNDI:

Especifique undbtypeparámetro para indicar el tipo de base de datos.Estos valores son los mismos que para los ejemplos anteriores que no son JNDI.

Proporcione lojndiReferenceNameque configuró en su contenedor de servlet.Se admitentanto la forma abreviadajdbc/oracle, como en Tomcat, como la forma canónica .java:comp/env/jdbc/oracle

Este ejemplo utiliza JNDI para obtener conexiones de Oracle:

<Almacén de datos>

<id>almacén de datos</id>

<parámetros>

<Parámetro>

<nombre>tipo de base de datos</nombre>

<valor>Oracle</valor>

</Parámetro>

<Parámetro>

<nombre>nombreReferenciajndi</nombre>

<valor>jdbc/oracle</valor>

</Parámetro>

</parámetros>

</Almacén de datos>

Su contenedor de servlet puede requerir que agregue unaresource-refsección al final de su archivogeoserver/WEB-INF/web.xml.(Tomcat requiere esto, Jetty no). Por ejemplo:

<recurso-referencia>

<descripción>Fuente de datos espaciales de Oracle</descripción>

<res-ref-name>jdbc/oracle</res-ref-name>

<res-type>javax.sql.DataSource</res-type>

<res-auth>Contenedor</res-auth>

</recurso-ref>

A continuación se muestra un ejemplo de un contexto de Tomcat 6/etc/tomcat6/server.xmlque incluye un grupo de conexiones de Oracle:

<Contexto

ruta="/geoservidor"

docBase="/usr/local/geoservidor"

crossContext="falso"

recargable="falso">

<Recurso

nombre="jdbc/oracle"

auth="Contenedor"

tipo="javax.sql.DataSource"

url="jdbc:oracle:thin:@SU_NOMBRE_HOST_BASE_DATA:1521:SU_NOMBRE_BASE_DATOS"

driverClassName="oracle.jdbc.driver.OracleDriver"

nombre de usuario="YOUR_DATABASE_USERNAME"

contraseña="YOUR_DATABASE_PASSWORD"

maxActive="20"

maxIdle="10"

minIdle="0"

maxWait="10000"

minEvictableIdleTimeMillis="300000"

timeBetweenEvictionRunsMillis="300000"

numTestsPerEvictionRun="20"

poolPreparedStatements="verdadero"

maxOpenPreparedStatements="100"

testOnBorrow="verdadero"

validationQuery="SELECCIONE SYSDATE DE DUAL" />

</Contexto>

Los tiempos de espera del firewall pueden cortar silenciosamente las conexiones inactivas a la base de datos y hacer que GeoServer se cuelgue.Si hay un firewall entre GeoServer y la base de datos, un grupo de conexiones configurado para cerrar las conexiones inactivas antes de que el firewall pueda eliminarlas evitará que GeoServer se cuelgue.Este grupo de conexiones JNDI está configurado para cerrar las conexiones inactivas después de 5 a 10 minutos.

Consulte tambiénConfiguración de un grupo de conexiones JNDI con Tomcat.

Exponer claves primarias

De forma predeterminada, GeoServer oculta la existencia de columnas de la base de datos con una clave principal.Para que dichas columnas estén disponibles para su uso en archivos de mapeo de esquemas de aplicaciones, establezca el parámetro del almacén de datosen:Exposeprimarykeystrue

<Parámetro>

<nombre>Exponer claves primarias</nombre>

<valor>verdadero</valor>

</Parámetro>

Se sabe que esto funciona con almacenes de datos PostGIS, Oracle y JNDI.


Encadenamiento de funciones

Alcance

Esta página describe el uso de "Encadenamiento de funciones" para componer funciones complejas a partir de componentes más simples y, en particular, para abordar algunos requisitos que han demostrado ser importantes en la práctica.

Manejo de múltiples casos de propiedades de múltiples valores dentro de un solo tipo de característica

Manejo del anidamiento de propiedades de múltiples valores dentro de otras propiedades de múltiples valores

Vincular tipos de características relacionadas (a través de asociación) y, en particular, permitir la reutilización de los tipos de características relacionadas (por ejemplo, el patrón O&M tiene una observación relacionada desde una característica de muestreo, pero la observación puede ser útil por derecho propio).

Codificar el mismo objeto de propiedad al que se hace referencia como enlaces cuando aparece en varias entidades que lo contienen

Eliminando la necesidad de grandes vistas de almacenes de datos desnormalizados de funciones de nivel superior y sus funciones relacionadas.Se seguirían necesitando vistas desnormalizadas para casos especiales, como relaciones de muchos a muchos, pero no serán tan grandes.

Para configuraciones de esquemas que no sean de aplicación, consulteIntegración de acceso a datos.

Pasos de mapeo

Cree un archivo de mapeo para cada tipo complejo

Necesitamos un archivo de mapeo por tipo complejo que se va a anidar, incluidas las funciones que no son, por ejemplo, gsml:CompositionPart.

Los tipos que no son funciones a los que no se puede acceder individualmente (por ejemplo, CompositionPart como tipo de datos) aún se pueden asignar por separado para su reutilización.En este caso, el tipo de entidad contenedora debe incluir estos tipos en su archivo de mapeo.La etiqueta de inclusión debe contener la ruta del archivo de mapeo anidado en relación con la ubicación del archivo de mapeo del tipo que lo contiene.EnGeologicUnit_MappingFile.xml:

<Tipos incluidos>

<Include>CGITermValue_MappingFile.xml</Include>

<Include>CompositionPart_MappingFile.xml</Include>

</tipos incluidos>

Los tipos de funciones a los que se puede acceder individualmente no necesitan incluirse explícitamente en el archivo de mapeo, ya que se configurarían para que GeoServer los encuentre.Dichos tipos tendrían su archivo de mapeo asociado con un archivo datastore.xml correspondiente, lo que significa que se puede encontrar en el registro del almacén de datos.En otras palabras, si el tipo está asociado con un archivo datastore.xml, no es necesario incluirlo explícitamente si se hace referencia desde otro archivo de asignación.

Ejemplo:

Para este resultado:MappedFeature_Output.xml, aquí están los archivos de mapeo:

MappedFeature_MappingFile.xml

GeologicUnit_MappingFile.xml

CompositionPart_MappingFile.xml

GeologicEvent_MappingFile.xml

CGITermValue_MappingFile.xml

Tipo de unidad geológica

Puede ver dentro de las funciones de GeologicUnit que tanto gml:composition (tipo CompositionPart) como gsml:geologicHistory (tipo GeologicEvent) son propiedades de múltiples valores.Muestra cómo se pueden configurar múltiples casos de propiedades de múltiples valores dentro de un solo tipo de característica.Esto también demuestra que puede "encadenar" tipos que no sean de característica, ya que CompositionPart es un tipo de datos.

Tipo de evento geológico

Tanto gsml:eventEnvironment (tipo CGI_TermValue) como gsml:eventProcess (también de tipo CGI_TermValue) son propiedades de valores múltiples.Esto también muestra que el "encadenamiento" se puede realizar en muchos niveles, ya que GeologicEvent está anidado dentro de GeologicUnit.Tenga en cuenta que las propiedades gsml:eventAge se configuran como atributos en línea, ya que solo puede haber una edad de evento por evento geológico, lo que elimina la necesidad de encadenar características.

Configurar el anidamiento en el tipo de entidad anidada

En el tipo de característica anidada, asegúrese de que tengamos un campo al que la característica principal pueda hacer referencia.Si no hay ningún campo existente al que se pueda hacer referencia, el campo del sistemaFEATURE_LINKse puede asignar para contener el valor de clave externa.Este es un campo de valores múltiples, por lo que se puede asignar más de una instancia en el mismo tipo de entidad, para entidades que pueden anidarse por diferentes tipos principales.Dado que este campo no existe en el esquema, no aparecerá en el documento de salida.

En la etiqueta de expresión fuente:

OCQL: el valor de esto debe corresponder a la parte OCQL de la característica principal

Ejemplo uno: usode FEATURE_LINKen el tipo CGI TermValue, al que GeologicEvent hace referencia como gsml:eventProcess y gsml:eventEnvironment.

En el mapeo de GeologicEvent (la característica del contenedor):

<Asignación de atributos>

<targetAttribute>gsml:eventEnvironment</targetAttribute>

<expresiónfuente>

<OCQL>identificación</OCQL>

<linkElement>gsml:CGI_TermValue</linkElement>

<linkField>FEATURE_LINK[1]</linkField>

</fuenteExpresión>

<isMultiple>verdadero</isMultiple>

</Asignación de atributos>

<Asignación de atributos>

<targetAttribute>gsml:eventProcess</targetAttribute>

<expresiónfuente>

<OCQL>identificación</OCQL>

<linkElement>gsml:CGI_TermValue</linkElement>

<linkField>FEATURE_LINK[2]</linkField>

</fuenteExpresión>

<isMultiple>verdadero</isMultiple>

</Asignación de atributos>

En el mapeo CGI_TermValue (la característica anidada):

<Asignación de atributos>

<!-- FEATURE_LINK[1] se refiere al evento geológico como entorno -->

<targetAttribute>FEATURE_LINK[1]</targetAttribute>

<expresiónfuente>

<OCQL>ENVIRONMENT_OWNER</OCQL>

</fuenteExpresión>

</Asignación de atributos>

<Asignación de atributos>

<!-- FEATURE_LINK[2] es referido por evento geológico como proceso -->

<targetAttribute>FEATURE_LINK[2]</targetAttribute>

<expresiónfuente><

<OCQL>PROCESO_PROPIETARIO</OCQL>

</fuenteExpresión>

</Asignación de atributos>

La columna ENVIRONMENT_OWNER en la vista CGI_TermValue corresponde a la columna ID en la vista GeologicEvent.

Archivo de propiedades de evento geológico:

identificación

GEOLOGIC_UNIT_ID: Cadena

ghminage:Cadena

ghmaxage:cadena

ghage_cdspace:Cadena

ge.26931120

gu.25699

oligoceno

Paleoceno

urna:cgi:clasificadorEsquema:ICS:StratChart:2008

ge.26930473

gu.25678

holoceno

pleistoceno

urna:cgi:clasificadorEsquema:ICS:StratChart:2008

ge.26930960

gu.25678

Plioceno

mioceno

urna:cgi:clasificadorEsquema:ICS:StratChart:2008

ge.26932959

gu.25678

Ordovícico inferior

Ordovícico inferior

urna:cgi:clasificadorEsquema:ICS:StratChart:2008

Archivo de propiedades de valor de término CGI:

identificación

VALOR:Cadena

PROCESS_OWNER: Cadena

ENVIRONMENT_OWNER: Cadena

3

fluvial

NULO

ge.26931120

4

pantano/pantano/pantano

NULO

ge.26930473

5

marina

NULO

ge.26930960

6

ventilador submarino

NULO

ge.26932959

7

hemipelágico

NULO

ge.26932959

8

deposición detrítica agua sin gas

ge.26930473

NULO

9

agua [proceso]

ge.26932959

NULO

10

flujo de corriente canalizada

ge.26931120

NULO

11

corriente de turbidez

ge.26932959

NULO

El campo del sistemaFEATURE_LINKno se codifica en la salida:

<gsml:Evento Geológico>

<gml:nombre codeSpace="urn:cgi:classifierScheme:GSV:GeologicalUnitId">gu.25699</gml:name>

<gsml:edadEvento>

<gsml:CGI_TermRange>

<gsml:inferior>

<gsml:CGI_TermValue>

<gsml:value codeSpace="urn:cgi:classifierScheme:ICS:StratChart:2008">Oligoceno</gsml:value>

</gsml:CGI_TermValue>

</gsml:inferior>

<gsml:superior>

<gsml:CGI_TermValue>

<gsml:value codeSpace="urn:cgi:classifierScheme:ICS:StratChart:2008">Paleoceno</gsml:value>

</gsml:CGI_TermValue>

</gsml:superior>

</gsml:CGI_TermRange>

</gsml:eventAge>

<gsml:entornodeeventos>

<gsml:CGI_TermValue>

<gsml:value>fluvial</gsml:value>

</gsml:CGI_TermValue>

</gsml:eventEnvironment>

<gsml:procesodeevento>

<gsml:CGI_TermValue>

<gsml:value>flujo de flujo canalizado</gsml:value>

</gsml:CGI_TermValue>

</gsml:procesodeevento>

Ejemplo dos: utilizando el campo existente (gml:name) para contener la clave externa, consulteMappedFeature_MappingFile.xml:

gsml:especificación enlaza a gml:nombre en GeologicUnit:

<Asignación de atributos>

<targetAttribute>gsml:especificación</targetAttribute>

<expresiónfuente>

<OCQL>GEOLOGIC_UNIT_ID</OCQL>

<linkElement>gsml:Unidad Geológica</linkElement>

<linkField>gml:nombre[3]</linkField>

</fuenteExpresión>

</Asignación de atributos>

EnGeologicUnit_MappingFile.xml:

GeologicUnit tiene 3 propiedades gml:name en el archivo de mapeo, por lo que cada una tiene un espacio de código para aclararlas:

<Asignación de atributos>

<targetAttribute>gml:nombre[1]</targetAttribute>

<expresiónfuente>

<OCQL>ABREVIATURA</OCQL>

</fuenteExpresión>

<PropiedadCliente>

<nombre>espacio de código</nombre>

<value>'urna:cgi:classifierScheme:GSV:GeologicalUnitCode'</value>

</PropiedadCliente>

</Asignación de atributos>

<Asignación de atributos>

<targetAttribute>gml:nombre[2]</targetAttribute>

<expresiónfuente>

<OCQL>NOMBRE</OCQL>

</fuenteExpresión>

<PropiedadCliente>

<nombre>espacio de código</nombre>

<valor>'urna:cgi:clasificadorEsquema:GSV:NombreUnidadGeológica'</valor>

</PropiedadCliente>

</Asignación de atributos>

<Asignación de atributos>

<targetAttribute>gml:nombre[3]</targetAttribute>

<expresiónfuente>

<OCQL>identificación</OCQL>

</fuenteExpresión>

<PropiedadCliente>

<nombre>espacio de código</nombre>

<value>'urna:cgi:classifierScheme:GSV:MappedFeatureReference'</value>

</PropiedadCliente>

</Asignación de atributos>

La salida con múltiples propiedades gml:name y sus espacios de código:

<gsml:especificación>

<gsml:Unidad Geológica gml:id="gu.25678">

<gml:description>Basalto de olivino, toba, microgabro, rocas sedimentarias menores</gml:description>

<gml:nombre codeSpace="urn:cgi:classifierScheme:GSV:GeologicalUnitCode">-Py</gml:name>

<gml:name codeSpace="urn:cgi:classifierScheme:GSV:GeologicalUnitName">Grupo volcánico Yaugher</gml:name>

<gml:name codeSpace="urn:cgi:classifierScheme:GSV:MappedFeatureReference">gu.25678</gml:name>

Si este es el lado "uno" de una relación de base de datos de uno a muchos o de muchos a uno, podemos usar la identificación de la característica como campo de expresión de origen, como puede ver en los ejemplos anteriores.Véaseone_to_many_relationship.JPGa modo de ilustración.

Si tenemos una relación de muchos a muchos, tenemos que usar una vista desnormalizada para cada lado del anidamiento.Esto significa que podemos usar la identificación de la característica como campo de referencia o asignar una columna para este propósito.Véasemany_to_many_relationship.JPGa modo de ilustración.

Nota

Para relaciones de muchos a muchos, no podemos usar la misma vista desnormalizada para ambos lados del anidamiento.

Pruebe esta configuración ejecutando una solicitud getFeature para el tipo de característica anidada por sí sola.

Configurar el anidamiento en el tipo de entidad "que contiene"

Al anidar otro tipo complejo, debe especificar en su expresión fuente:


OCQL: expresión del lenguaje de consulta común de OGC de la columna del almacén de datos



elemento de enlace:



el nombre del elemento anidado, que normalmente es targetElement o mappingName del tipo correspondiente.

en algunos casos, tiene que ser una función OCQL (verPolimorfismo)


linkField: el atributo XPath indexado en el elemento anidado al que corresponde OCQL


Ejemplo:parte de composición anidada en una entidad de unidad geológica.

En el archivo de mapeo de Unidad Geológica:

<Asignación de atributos>

<targetAttribute>gsml:composición</targetAttribute>

<expresiónfuente>

<OCQL>identificación</OCQL>

<linkElement>gsml:CompositionPart</linkElement>

<linkField>FEATURE_LINK</linkField>

</fuenteExpresión>

<isMultiple>verdadero</isMultiple>

</Asignación de atributos>

OCQL: id es la identificación de la unidad geológica

linkElement: enlaces a gsml:CompositionPart tipo

linkField: FEATURE_LINK, el campo de enlace asignado en el tipo gsml:CompositionPart que también almacena la identificación de la unidad geológica.Si hay más de uno de estos atributos en el tipo de entidad anidada, asegúrese de que el índice esté incluido, por ejemplo, FEATURE_LINK[2].

Ficha de propiedad de la Unidad Geológica:

identificación

ABREVIATURA: Cadena

NOMBRE: Cadena

DESCRIPCIÓN DEL TEXTO: Cadena

gu.25699

-Py

Grupo volcánico Yaugher

Basalto olivino, toba, microgabro, rocas sedimentarias menores

gu.25678

-Py

Grupo volcánico Yaugher

Basalto olivino, toba, microgabro, rocas sedimentarias menores

Archivo de propiedades de la parte de composición:

identificación

COMPONENT_ROLE:Cadena

PROPORCIÓN:Cuerda

GEOLOGIC_UNIT_ID: Cadena

cp.167775491936278812

componente intercalado

significativo

gu.25699

cp.167775491936278856

componente intercalado

menor

gu.25678

cp.167775491936278844

único componente

importante

gu.25678

Ejecute la solicitud getFeature para probar esta configuración.Verifique que las entidades anidadas devueltas en el Paso 2 estén correctamente alineadas dentro de las entidades que las contienen.Si no están allí, o se generan excepciones, desplácese hacia abajo y lea la sección "Solución de problemas".

Múltiples asignaciones del mismo tipo

En ocasiones, es posible que necesite tener diferentes instancias de FeatureTypeMapping para el mismo tipo.Es posible que tenga dos atributos diferentes del mismo tipo que deban anidarse.Por ejemplo, en gsml:GeologicUnit, tiene gsml:exposureColor y gsml:outcropCharacter que son ambos del tipo gsml:CGI_TermValue.

Aquí es cuando entra en juegola etiqueta mappingName opcional mencionada en elarchivo de mapeo . En lugar de pasar el targetElement del tipo de característica anidada en el linkElement del tipo contenedor, especifique el mappingName correspondiente.

Nota

MappingName reconoce el espacio de nombres y distingue entre mayúsculas y minúsculas.

Cuando el nombre de asignación al que se hace referencia contiene caracteres especiales como '-', debe estar entre comillas simples en el elemento de enlace.Por ejemplo, <linkElement>'método-de-observación'</linkElement>.

Cada mappingName debe ser único frente a otras etiquetas mappingName y targetElement en toda la aplicación.

MappingName solo debe usarse para identificar el tipo encadenado del tipo anidado.No es una solución para múltiples instancias de FeatureTypeMapping donde > 1 de ellas se puede consultar como características de nivel superior.

Cuando se consulta como característica de nivel superior, se debe utilizar el targetElement normal.Los filtros que involucran el tipo anidado aún deben usar targetElement en la parte PropertyName de la consulta.

No puede tener más de 1 FeatureTypeMapping del mismo tipo en el mismo archivo de mapeo si uno de ellos es una característica de nivel superior.Esto se debe a que featuretype.xml buscaría targetElement y no sabría cuál obtener.

La solución para el último punto anterior es dividirlos en archivos y ubicaciones separados con solo 1 featuretype.xml en la ubicación de función de nivel superior prevista.P.ej

Puede tener 2 instancias de FeatureTypeMapping en el mismo archivo para el tipo gsml:CGI_TermValue ya que no es un tipo de característica.

Puede tener 2 instancias de FeatureTypeMapping para gsml:MappedFeature, pero deben dividirse en archivos separados.El que se puede consultar como tipo de característica de nivel superior tendría featuretype.xml en su ubicación.

Anidar propiedades simples

No es necesario encadenar propiedades simples de valores múltiples y asignarlas por separado.La configuración original seguiría funcionando.

Filtrado de atributos anidados en entidades encadenadas

Los filtros funcionarían como de costumbre.Puede proporcionar el XPath completo del atributo y el código se encargará de esto.Por ejemplo, puede ejecutar el siguiente filtro en gsml:MappedFeatureUseCase2A:

<ogc:Filtro>

<ogc:PropiedadIsEqualTo>

<ogc:Nombre de función="contiene_texto">

<ogc:NombrePropiedad>gsml:especificación/gsml:UnidadGeológica/gml:descripción</ogc:NombrePropiedad>

<ogc:Literal>Basalto olivino, toba, microgabro, rocas sedimentarias menores</ogc:Literal>

</ogc:Función>

<ogc:Literal>1</ogc:Literal>

</ogc:PropertyIsEqualTo>

</ogc:Filtro>

Propiedades multivalor por referencia (xlink:href)

Es posible que desee utilizar el encadenamiento de funciones para establecer propiedades de valores múltiples por referencia.Esto es particularmente útil para evitar bucles sin fin en relaciones circulares.Por ejemplo, es posible que tenga una relación circular entre gsml:MappedFeature y gsml:GeologicUnit.P.ej

gsml:MappedFeature tiene gsml:GeologicUnit como gsml:especificación

gsml:GeologicUnit tiene gsml:MappedFeature como gsml:ocurrencia

Obviamente sólo puedes codificar un lado de la relación, o terminarás con un bucle sin fin.Debería elegir un lado para "encadenar" y usar xlink:href para el otro lado de la relación.

Para este ejemplo, anidaremos gsml:GeologicUnit en gsml:MappedFeature como gsml:specification.


Configure el anidamiento en el mapeo de tipos de características del contenedor como de costumbre:


<Asignación de atributos>

<targetAttribute>gsml:especificación</targetAttribute>

<expresiónfuente>

<OCQL>GEOLOGIC_UNIT_ID</OCQL>

<linkElement>gsml:Unidad Geológica</linkElement>

<linkField>gml:nombre[2]</linkField>

</fuenteExpresión>

</Asignación de atributos>



Configure xlink:href como propiedad del cliente en el otro archivo de mapeo:


<Asignación de atributos>

<targetAttribute>gsml:ocurrencia</targetAttribute>

<expresiónfuente>

<OCQL>identificación</OCQL>

<linkElement>gsml:MappedFeature</linkElement>

<linkField>gsml:especificación</linkField>

</fuenteExpresión>

<isMultiple>verdadero</isMultiple>

<PropiedadCliente>

<nombre>enlacex:href</nombre>

<valor>strConcat('urna:cgi:característica:MappedFeature:', ID)</valor>

</PropiedadCliente>

</Asignación de atributos>


Como obtenemos el valor de la propiedad del cliente de una característica anidada, debemos configurarlo como si estuviéramos encadenando la característica;pero también agregamos la propiedad del cliente que contienexlink:hrefen el mapeo de atributos.El código detectará la configuraciónde xlink:hrefy no procederá a crear los atributos de la característica anidada, y terminaremos con atributos vacíos con las propiedades del clientexlink:href.

Este sería el resultado codificado para gsml:GeologicUnit:

<gsml:Unidad Geológica gml:id="gu.25678">

<gsml:ocurrencia xlink:href="urn:cgi:feature:MappedFeature:mf2"/>

<gsml:ocurrencia xlink:href="urn:cgi:feature:MappedFeature:mf3"/>

Nota

No olvide agregarXLinken la sección de espacios de nombres de su archivo de mapeo, o podría terminar con una StackOverflowException ya que la propiedad del clientexlink:hrefno será reconocida y las asignaciones se encadenarían sin fin.

La resoluciónse puede utilizar para forzar a app-schema a realizar un encadenamiento completo de funciones hasta un cierto nivel, incluso si se especifica una referencia xlink.

Polimorfismo

El polimorfismo en este contexto se refiere a la capacidad de un atributo de tener diferentes formas.Dependiendo del valor fuente, podría codificarse con una estructura o tipo específico, como una referencia xlink:href, o no codificarse en absoluto.Para lograr esto, reutilizamos la sintaxis de encadenamiento de características y permitimos funciones OCQL en la etiqueta linkElement.Lea más sobreel encadenamiento de funciones, si no está familiarizado con la sintaxis.

Polimorfismo de tipo de datos

Puede utilizar el encadenamiento de características normal para codificar un atributo como de un tipo determinado.Por ejemplo:

<Asignación de atributos>

<targetAttribute>ej:algúnAtributo</targetAttribute>

<expresiónfuente>

<OCQL>VALUE_ID</OCQL>

<linkElement>TipoNumérico</linkElement>

<linkField>FEATURE_LINK</linkField>

</fuenteExpresión>

</Asignación de atributos>

<Asignación de atributos>

<targetAttribute>ej:algúnAtributo</targetAttribute>

<expresiónfuente>

<OCQL>VALUE_ID</OCQL>

<linkElement>gsml:CGI_TermValue</linkElement>

<linkField>FEATURE_LINK</linkField>

</fuenteExpresión>

</Asignación de atributos>

Nota: Aquí NumericType es un nombre de asignación, mientras que gsml:CGI_TermValue es un elemento de destino.

En el ejemplo anterior, ex:someAttribute se codificaría con la configuración en NumericType si la clave externa coincide con linkField.Ambas instancias se codificarían si la clave externa coincide con las claves candidatas en ambas configuraciones vinculadas.Por lo tanto, esto sólo funcionaría para 0 o muchas relaciones.

Las funciones se pueden utilizar para instancias de un solo atributo.Consultefunciones útilespara obtener una lista de funciones utilizadas habitualmente.Especifique la función en linkElement y la asignará al primer FeatureTypeMapping coincidente.Por ejemplo:

<Asignación de atributos>

<targetAttribute>ej:algúnAtributo</targetAttribute>

<expresiónfuente>

<OCQL>VALUE_ID</OCQL>

<elementoenlace>

Recodificar(CLASS_TEXT, 'numérico', 'NumericType', 'literal', 'gsml:CGI_TermValue')

</enlaceElemento>

<linkField>FEATURE_LINK</linkField>

</fuenteExpresión>

<isMultiple>verdadero</isMultiple>

</Asignación de atributos>

El ejemplo anterior significa que, si el valor CLASS_TEXT es 'numérico', se vincularía a FeatureTypeMapping 'NumericType', con VALUE_ID como clave externa para el tipo vinculado.Se requeriría que todos los tipos de coincidencias potenciales tuvieran un atributo común especificado en linkField.En este ejemplo, el campo de enlace es FEATURE_LINK, que es un atributo falso que se utiliza únicamente para el encadenamiento de funciones.Puede omitir linkField y OCQL si el FeatureTypeMapping al que se vincula tiene el mismo tipo de origen que el tipo de contenedor.Esto nos ahorraría consultas adicionales innecesarias, que afectarían el rendimiento.Por ejemplo:

FeatureTypeMapping del tipo de contenedor:

<Asignación de tipos de funciones>

<sourceDataStore>Archivos de propiedades</sourceDataStore>

<sourceType>Característica polimórfica</sourceType>

FeatureTypeMapping de NumericType apunta a la misma tabla:

<Asignación de tipos de funciones>

<mappingName>NumericType</mappingName>

<sourceDataStore>Archivos de propiedades</sourceDataStore>

<sourceType>Característica polimórfica</sourceType>

FeatureTypeMapping de gsml:CGI_TermValue también apunta a la misma tabla:

<Asignación de tipos de funciones>

<sourceDataStore>Archivos de propiedades</sourceDataStore>

<sourceType>Característica polimórfica</sourceType>

<targetElement>gsml:CGI_TermValue</targetElement>

En este caso, podemos omitir linkField en el mapeo de atributos polimórficos:

<Asignación de atributos>

<targetAttribute>ej:algúnAtributo</targetAttribute>

<expresiónfuente>

<elementoenlace>

Recodificar(CLASS_TEXT, 'numérico', 'NumericType', 'literal', 'gsml:CGI_TermValue')

</enlaceElemento>

</fuenteExpresión>

<isMultiple>verdadero</isMultiple>

</Asignación de atributos>

Polimorfismo referencial

Esto es cuando un atributo está configurado para codificarse como una referencia xlink:href en el nivel superior.Cuando el escenario solo tiene casos de referencia, configurar una función en la propiedad del cliente será suficiente.P.ej:

<Asignación de atributos>

<targetAttribute>ej:algúnAtributo</targetAttribute>

<PropiedadCliente>

<nombre>enlacex:href</nombre>

<value>if_then_else(isNull(NUMERIC_VALUE), 'urn:ogc:def:nil:OGC:1.0:missing', strConcat('#', NUMERIC_VALUE))</value>

</PropiedadCliente>

</Asignación de atributos>

El ejemplo anterior significa que si NUMERIC_VALUE es nulo, el atributo debe codificarse como:

<ex:someAttribute xlink:href="urn:ogc:def:nil:OGC:1.0:missing">

De lo contrario, se codificaría como:

<ex:algúnAtributo xlink:href="#123">

donde NUMERIC_VALUE = '123'

Sin embargo, esto no es posible cuando tenemos casos en los que también es posible un atributo completamente estructurado.La funcióntoxlinkhrefse puede utilizar para este escenario.P.ej:

<Asignación de atributos>

<targetAttribute>ej:algúnAtributo</targetAttribute>

<expresiónfuente>

<elementoenlace>

if_then_else(isNull(NUMERIC_VALUE), toXlinkHref('urn:ogc:def:nil:OGC:1.0:missing'),

if_then_else(lessEqualThan(NUMERIC_VALUE, 1000), 'numeric_value', toXlinkHref('urn:ogc:def:nil:OGC:1.0:missing')))

</enlaceElemento>

</fuenteExpresión>

</Asignación de atributos>

El ejemplo anterior significa que si NUMERIC_VALUE es nulo, la salida se codificaría como:

<ex:someAttribute xlink:href="urn:ogc:def:nil:OGC:1.0:missing">

De lo contrario, si NUMERIC_VALUE es menor o igual que 1000, se codificará con atributos de FeatureTypeMapping con el nombre de mapeo 'numeric_value'.Si NUMERIC_VALUE es mayor que 1000, se codificará como el primer escenario.

Funciones útiles

función if_then_else

Sintaxis:

if_then_else(BOOLEAN_EXPRESSION, valor, valor predeterminado)

BOOLEAN_EXPRESSION: podría ser un valor de columna booleano o una función booleana

valor: el valor al que asignar, si BOOLEAN_EXPRESSION es verdadero

valor predeterminado: el valor al que asignar, si BOOLEAN_EXPRESSION es falso

Función de recodificación

Sintaxis:

Recodificar ( EXPRESIÓN , clave1 , valor1 , clave2 , valor2 , ... )


EXPRESIÓN: nombre de la columna de la que obtener valores u otra función



clave-n:



expresión clave para asignar al valor-n

Si el valor evaluado de EXPRESSION no coincide con ninguna clave, no se codificará nada para el atributo.


valor-n: expresión de valor que se traduce en un nombre de asignación o un elemento de destino


menos igual que

Devuelve verdadero si ATTRIBUTE_EXPRESSION se evalúa como menor o igual que LIMIT_EXPRESSION.

Sintaxis:

lessEqualThan ( ATRIBUTE_EXPRESSION , LIMIT_EXPRESSION )

ATTRIBUTE_EXPRESSION: expresión del atributo que se está evaluando.

LIMIT_EXPRESSION: expresión del valor numérico con el que se comparará.

menos que

Devuelve verdadero si ATTRIBUTE_EXPRESSION se evalúa como inferior a LIMIT_EXPRESSION.

Sintaxis:

menos que ( ATTRIBUTE_EXPRESSION , LIMIT_EXPRESSION )

ATTRIBUTE_EXPRESSION: expresión del atributo que se está evaluando.

LIMIT_EXPRESSION: expresión del valor numérico con el que se comparará.

igual a

Compara dos expresiones y devuelve verdadero si son iguales.

Sintaxis:

igual a ( LHS_EXPRESSION , RHS_EXPRESSION )

es nulo

Devuelve un valor booleano que es verdadero si la expresión se evalúa como nula.

Sintaxis:

es nulo ( EXPRESIÓN )

EXPRESIÓN: expresión a evaluar.

aXlinkHref

Función especial escrita para polimorfismo referencial y encadenamiento de características, no debe usarse fuera de linkElement.Infiere que el atributo debe codificarse como xlink:href.

Sintaxis:

aXlinkHref ( XLINK_HREF_EXPRESSION )


XLINK_HREF_EXPRESSION:



podría ser una función o un literal

tiene que estar entre comillas simples si es literal

Nota

Para que la función toXlinkHref funcione, debe declarar el URI de xlink en los espacios de nombres.

Otras funciones

Consulte laReferencia de funciones de filtro.

Combinaciones

Puede combinar funciones, pero podría afectar el rendimiento.P.ej:

if_then_else ( isNull ( NUMERIC_VALUE ), toXlinkHref ( 'urn:ogc:def:nil:OGC:1.0:missing' ),

if_then_else ( lessEqualThan ( NUMERIC_VALUE , 1000 ), 'numeric_value' , toXlinkHref ( 'urn:ogc:def:nil: OGC:1.0:faltante' )))

Nota

Al especificar un nombre de mapeo o un elemento de destino como valor en funciones, asegúrese de que estén entre comillas simples.

Algunas funciones no tienen verificación de nulos y fallarán cuando encuentren nulos.

La solución para esto es ajustar la expresión con la función isNull() si se sabe que existe nulo en el conjunto de datos.

Valor nulo o faltante

Para omitir el atributo para un caso específico, puede usar Expression.NIL como valor en if_then_else o no incluir la clave enla función Recode.P.ej:

if_then_else(isNull(VALOR), Expresión.NIL, 'gsml:CGI_TermValue')

significa que el atributo no se codificaría si VALOR es nulo.

Recodificar(VALOR, 'term_value', 'gsml:CGI_TermValue')

significa que el atributo no se codificaría si VALOR es cualquier cosa que no sea 'term_value'.

Para codificar un atributo como xlink:href que representa el valor faltante en el nivel superior, consultePolimorfismo referencial.

Cualquier tipo

Tener xs:anyType como tipo de atributo en sí infiere que es polimórfico, ya que se pueden codificar como cualquier tipo.

Si el tipo está predeterminado y siempre será el mismo, es posible que necesitemos especificartargetAttributeNode (opcional).P.ej:

<Asignación de atributos>

<targetAttribute>om:resultado</targetAttribute>

<targetAttributeNode>gml:MeasureType<targetAttributeNode>

<expresiónfuente>

<OCQL>PÁGINA PRINCIPAL</OCQL>

</fuenteExpresión>

<PropiedadCliente>

<nombre>xsi:tipo</nombre>

<valor>'gml:Tipo de medida'</valor>

</PropiedadCliente>

<PropiedadCliente>

<nombre>uom</nombre>

<valor>'http://www.opengis.net/def/uom/UCUM/0/Ma'</valor>

</PropiedadCliente>

</Asignación de atributos>

Si el tipo de conversión es complejo, esto no es un requisito ya que app-schema puede determinar automáticamente el tipo a partir de XPath en targetAttribute.Por ejemplo, en este ejemploom:resultse especializa automáticamente como MappedFeatureType:

<Asignación de atributos>

<targetAttribute>om:resultado/gsml:MappedFeature/gml:nombre</targetAttribute>

<expresiónfuente>

<OCQL>NOMBRE</OCQL>

</fuenteExpresión>

</Asignación de atributos>

Alternativamente, podemos utilizar el encadenamiento de funciones.Para el mismo ejemplo anterior, el mapeo sería:

<Asignación de atributos>

<targetAttribute>om:resultado</targetAttribute>

<expresiónfuente>

<OCQL>LEX_D</OCQL>

<linkElement>gsml:MappedFeature</linkElement>

<linkField>gml:nombre</linkField>

</fuenteExpresión>

</Asignación de atributos>

Si el tipo es condicional, el estilo de asignación de dichos atributos es el mismo que el de cualquier otro atributo polimórfico.P.ej:

<Asignación de atributos>

<targetAttribute>om:resultado</targetAttribute>

<expresiónfuente>

<elementoenlace>

Recode(NOMBRE, Expresión.Nil, toXlinkHref('urn:ogc:def:nil:OGC::missing'),'numeric',

toXlinkHref(strConcat('urna:valor-numérico::', NUMERIC_VALUE)), 'literal', 'TermValue2')

</enlaceElemento>

</fuenteExpresión>

</Asignación de atributos>

Filtros

Los filtros deberían funcionar como de costumbre, siempre que los usuarios sepan lo que quieren filtrar.Por ejemplo, cuando un atributo podría codificarse como gsml:CGI_TermValue o gsml:CGI_NumericValue, los usuarios pueden ejecutar filtros con nombres de propiedad de:

ex:someAttribute/gsml:CGI_TermValue/gsml:value para devolver atributos coincidentes codificados como gsml:CGI_TermValue y que satisfagan el filtro.

del mismo modo, ex:someAttribute/gsml:CGI_NumericValue/gsml:principalValue debería devolver atributos gsml:CGI_NumericValue coincidentes.

Otra limitación es el filtrado de atributos de un atributo xlink:href que apunta a una instancia fuera del documento.

Integración de acceso a datos

Esta página asume conocimientos previos sobrecómo trabajar con esquemas de aplicacionesyencadenamiento de funciones.Para utilizar el encadenamiento de funciones, las funciones anidadas pueden provenir de cualquier acceso a datos de funciones complejas, siempre y cuando: * tenga datos válidos referidos por el tipo de función "contenedor", * el acceso a datos se registre a través de DataAccessRegistry, * si se usa FEATURE_LINK como el campo de enlace, los tipos de características se crearon a través de ComplexFeatureTypeFactoryImpl

Sin embargo, las características del "contenedor" deben provenir de un acceso a datos de esquema de aplicación.El resto de este artículo describe cómo podemos crear un acceso a datos de aplicación a partir de un acceso a datos de esquema que no sea de aplicación existente, para "encadenar" funciones.Se supone que el acceso a los datos de entrada al que se hace referencia en este artículo es el acceso a los datos del esquema que no es de la aplicación.

Cómo conectarse al acceso a datos de entrada

Configure la conexión del almacén de datos en la etiqueta "sourceDataStores" como de costumbre, pero también especifique la etiqueta adicional "isDataAccess".Este indicador marca que queremos obtener la fuente de características complejas registrada del "tipo de fuente" especificado al procesar el almacén de datos de origen.Esto supone que el acceso a los datos de entrada está registrado en DataAccessRegistry al momento de su creación, para que el sistema lo encuentre.

Ejemplo:

<almacenes de datos de origen>

<Almacén de datos>

<id>RecursoTierra</id>

<parámetros>

<Parámetro>

<nombre>directorio</nombre>

<valor>archivo:./</valor>

</Parámetro>

</parámetros>

<isDataAccess>verdadero</isDataAccess>

</Almacén de datos>

</sourceDataStores>

...

<asignaciones de tipos>

<Asignación de tipos de funciones>

<sourceDataStore>EarthResource</sourceDataStore>

<tipofuente>RecursoTierra</tipofuente>

...

Cómo configurar el mapeo

Utilice "inputAttribute" en lugar de la etiqueta "OCQL" dentro de "sourceExpression" para especificar las expresiones XPath de entrada.

Ejemplo:

<Asignación de atributos>

<targetAttribute>gsml:classifier/gsml:ControlledConcept/gsml:preferredName</targetAttribute>

<expresiónfuente>

<inputAttribute>mo:clasificación/mo:MineralDepositModel/mo:mineralDepositGroup</inputAttribute>

</fuenteExpresión>

</Asignación de atributos>

Cómo encadenar funciones

El encadenamiento de funciones funciona en ambos sentidos para las funciones complejas reasignadas.Puede encadenar otras funciones dentro de estas funciones y viceversa.La única diferencia es utilizar "inputAttribute" para las expresiones XPath de entrada, en lugar de "OCQL" como se mencionó anteriormente.

Ejemplo:

<Asignación de atributos>

<targetAttribute>gsml:ocurrencia</targetAttribute>

<expresiónfuente>

<inputAttribute>mo:commodityDescription</inputAttribute>

<linkElement>gsml:MappedFeature</linkElement>

<linkField>gml:nombre[2]</linkField>

</fuenteExpresión>

<isMultiple>verdadero</isMultiple>

</Asignación de atributos>

Cómo usar filtros

Desde el punto de vista del usuario, los filtros se configuran de forma normal, utilizando las expresiones XPath del atributo de destino asignado/de salida.Sin embargo, cuando uno o más atributos de la expresión son una propiedad de valores múltiples, debemos especificar una función como "contiene_texto" en el filtro.Esto se debe a que cuando se devuelven varios valores, compararlos con un solo valor solo devolverá verdadero si solo se devuelve un valor y es el mismo valor.Tenga en cuenta que la función "contains_text" utilizada en el siguiente ejemplo no está disponible en la API de Geoserver, pero está definida en la base de datos.

Ejemplo:

La composición es una propiedad de múltiples valores:

<ogc:Filtro>

<ogc:PropiedadIsEqualTo>

<ogc:Nombre de función="contiene_texto">

<ogc:PropertyName>gsml:composition/gsml:CompositionPart/gsml:proportion/gsml:CGI_TermValue/gsml:value</ogc:PropertyName>

<ogc:Literal>Basalto olivino, toba, microgabro, rocas sedimentarias menores</ogc:Literal>

</ogc:Función>

<ogc:Literal>1</ogc:Literal>

</ogc:PropertyIsEqualTo>

</ogc:Filtro>

Soporte WMS

App-schema admite solicitudes WMS y WFS.Esta página proporciona algunos ejemplos útiles para configurar el servicio WMS para que funcione con funciones complejas.

Tenga en cuenta que el rendimiento de procesamiento de WMS puede ser significativamente más lento cuando se utilizan almacenes de datos de esquemas de aplicaciones.Recomendamos encarecidamente emplearJoining Support For Performancecuando se utiliza WMS con encadenamiento de funciones, lo que puede hacer que el tiempo de respuesta para solicitudes de datos grandes sea varios órdenes de magnitud más rápido.

Configuración

Para que WMS sea aplicable a datos de entidades complejas, es necesario que GeoServer reconozca los tipos de entidades complejas como capas.Esto debe configurarse agregando un archivo de configuración adicional llamado 'layer.xml' en el directorio de datos de cada tipo de entidad que queramos usar como capa WMS.

Esto expandirá la estructura de laworkspacescarpeta en el directorio de datos de GeoServer de la siguiente manera (workspaces) (verConfiguración):

espacios de trabajo

-gsml

-Algún almacén de datos

- Algún tipo de característica

- tipo de característica.xml

- capa.xml

- almacén de datos.xml

- SomeFeatureType-mapping-file.xml

El archivo Layer.xml debe tener el siguiente contenido:

<capa>

<id>[micapaid]</id>

<nombre>[minombredecapa]</nombre>

<ruta>/</ruta>

<tipo>VECTOR</tipo>

<Estilo predeterminado>

<nombre>[miestilo predeterminado]</nombre>

</defaultStyle>

<recurso clase="tipo de característica">

<id>[mitipodefunción]</id>

</recurso>

<habilitado>verdadero</habilitado>

<atribución>

<logoAncho>0</logoAncho>

<logoAltura>0</logoAltura>

</atribución>

</capa>

Reemplace los campos entre paréntesis con los siguientes valores:

[mylayerid]debe ser una identificación personalizada para la capa.

[mylayername]debe ser un nombre personalizado para la capa.

[mydefaultstyle]el estilo predeterminado utilizado para esta capa (cuando no se especifica un estilo en la solicitud de wms).El estilo debe existir en la configuración de GeoServer.

[myfeaturetypeid]es la identificación del tipo de característica.Debeserel mismo que el ID especificado en el archivo featuretype.xml del mismo directorio.

Obtener mapa

LeaGetMappara obtener información general sobre la solicitud GetMap.LeaEstilopara obtener información general sobre cómo diseñar mapas WMS con archivos SLD.Al diseñar características complejas, puede usar XPath para especificar propiedades anidadas en sus filtros, como se explica enFiltrado de atributos anidados en características encadenadas.Sin embargo, en los filtros de estilo WMS, las rutas X no admiten el manejo de entidades referenciadas (consultePropiedades de valores múltiples por referencia (xlink:href)) como si fueran entidades anidadas reales (porque los filtros se aplican después de crear las entidades y no antes). ) El contexto de prefijo/espacio de nombres que se utiliza en la expresión XPath se define localmente en las etiquetas XML del archivo de estilo.Este es un ejemplo de un archivo de estilo para funciones complejas:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

dieciséis

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

<?xml versión="1.0" codificación="UTF-8"?> <StyledLayerDescriptor versión= "1.0.0"

xsi:schemaLocation= "http://www.opengis.net/sld StyledLayerDescriptor.xsd"

xmlns:ogc= "http://www.opengis.net/ogc"

xmlns:xlink= "http://www.w3.org/1999/xlink"

xmlns:gml= "http://www.opengis.net/gml"

xmlns :gsml= "urn:cgi:xmlns:CGI:GeoSciML:2.0"

xmlns:sld= "http://www.opengis.net/sld"

xmlns:xsi= "http://www.w3.org/2001/ XMLSchema-instance" >

<sld:NamedLayer>

<sld:Name> geología-litología </sld:Name>

<sld:UserStyle>

<sld:Name> geología-litología </sld:Name>

<sld:Title> Unidad geológica Tema de litología </sld:Title>

<sld:Abstract> El color ha sido adaptado creativamente de Moyer,Hasting

y Raines, 2005 (http://pubs.usgs.gov/of/2005/1314/of2005-1314.pdf)

que proporciona hojas de cálculo xls para varios esquemas de color.

además de algunas entradas creativas para completar las entradas faltantes.

</sld:Abstract>

<sld:IsDefault> 1 </sld:IsDefault>

<sld:FeatureTypeStyle>

<sld:Rule>

<sld:Name> material ígneo ácido </sld:Name>

<sld:Abstract> Material ígneo con más del 63 por ciento de SiO2.

(según LeMaitre et al. 2002)

</sld:Abstract>

<ogc:Filter>

<ogc:PropertyIsEqualTo>

<ogc:PropertyName> gsml:specification/gsml:GeologicUnit/gsml:composition/

gsml:CompositionPart/gsml:lithology/@xlink:href </ogc:PropertyName>

<ogc:Literal> urn:cgi:classifier:CGI:SimpleLithology:200811:

acidic_igneous_material </ogc:Literal>

</ogc:PropertyIsEqualTo>

</ogc:Filter>

<sld:PolygonSymbolizer>

<sld:Fill>

<sld:CssParameter name= "relleno" > #FFCCB3 </sld:CssParameter>

</sld :Fill>

</sld:PolygonSymbolizer>

</sld:Rule>

<sld:Rule>

<sld:Name> roca ígnea ácida </sld:Name>

<sld:Abstract> Roca ígnea con más del 63 por ciento de SiO2.

(según LeMaitre et al. 2002)

</sld:Abstract>

<ogc:Filter>

<ogc:PropertyIsEqualTo>

<ogc:PropertyName> gsml:specification/gsml:GeologicUnit/gsml:composition/

gsml:CompositionPart/gsml:lithology/@xlink:href </ogc:PropertyName>

<ogc:Literal> urn:cgi:classifier:CGI:SimpleLithology:200811:

acidic_igneous_rock </ogc:Literal>

</ogc:PropertyIsEqualTo>

</ogc:Filter>

<sld:PolygonSymbolizer>

<sld:Fill>

<sld:CssParameter name= "relleno" > #FECDB2 </sld:CssParameter>

</sld :Fill>

</sld:PolygonSymbolizer>

</sld:Rule>

...

</sld:FeatureTypeStyle>

</sld:UserStyle>

</sld:NamedLayer> </sld:StyledLayerDescriptor>

Obtener información sobre la característica

LeaGetFeatureInfopara obtener información general sobre la solicitud GetFeatureInfo.Lea el tutorial sobreplantillas GetFeatureInfopara obtener información sobre cómo crear una plantilla para la salida html.Si desea almacenar una plantilla estándar separada para colecciones de características complejas, guárdela con el nombre de archivocomplex_content.ftlen el directorio de plantillas.

Lea el tutorial sobrePlantillas de Freemarkerpara obtener más información sobre cómo utilizar las plantillas de Freemarker.Las plantillas de Freemarker admiten llamadas recursivas, lo que puede resultar útil para crear plantillas de contenido complejo.Por ejemplo, la siguiente plantilla de marcador gratuito crea una tabla de características con una columna para cada propiedad y creará otra tabla dentro de cada celda que contiene una característica como propiedad:

<#--

Macros utilizadas para el contenido.

-->

<#nodo de propiedad macro>

<#if!nodo.isGeometry>

<#si nodo.isComplex>

<td> <@feature nodo=nodo.rawValue tipo=nodo.tipo /> </td>

<#más>

<td>${nodo.valor?cadena}</td>

</#si>

</#si>

</#macro>

<#nodo de tipo de encabezado de macro>

<caption class="featureInfo">${typenode.name}</caption>

<tr>

<th>fid</th>

<#list typenode.attributes como atributo>

<#if!atributo.isGeometry>

<#if atributo.prefix == "">

<th >${atributo.nombre}</th>

<#más>

<th >${atributo.prefix}:${atributo.nombre}</th>

</#si>

</#si>

</#lista>

</tr>

</#macro>

<#tipo de nodo de característica macro>

<table class="featureInfo">

<@header typenode=tipo />

<tr>

<td>${nodo.fid}</td>

<#listar nodo.atributos como atributo>

<@nodo de propiedad=atributo />

</#lista>

</tr>

</tabla>

</#macro>

<#--

Sección del cuerpo de la plantilla GetFeatureInfo, se proporciona con una colección de características y

Se llamará varias veces si hay varias colecciones de funciones.

-->

<table class="featureInfo">

<@header typenode=tipo />

<#asignar impar = falso>

<#listar características como característica>

<#si es impar>

<tr clase="impar">

<#más>

<tr>

</#si>

<#asignar impar = !impar>

<td>${feature.fid}</td>

<#listar característica.atributos como atributo>

<@nodo de propiedad=atributo />

</#lista>

</tr>

</#lista>

</tabla>

<br/>


Soporte WFS 2.0

resolviendo

La resolución local es compatible con el esquema de aplicación.Esto se puede hacer estableciendo el parámetro 'resolver' en 'local' o 'todos'.(No se admite la resolución remota). El parámetro 'resolveDepth' especifica cuántos niveles de referencias se resolverán.El parámetro 'resolveTimeOut' se puede utilizar para especificar, en segundos, un límite superior de cuánto tiempo el esquema de aplicación debe buscar la función necesaria para la resolución.Si se alcanza el límite de tiempo de espera, la función no se resuelve.

Al resolver sin encadenamiento de funciones (ver más abajo), se extrae una ID de GML de la referencia del enlace x y se realiza una fuerza bruta en todos los tipos de funciones para encontrar una función con esta ID de GML.La extracción de este ID GML de la referencia Xlink se realiza utilizando las siguientes reglas:

En el caso de una URN: el ID de GML aparece después de los últimos dos puntos de la URN.Asegúrese de que el ID de GMLcompletoesté incluido después de los últimos dos puntos (incluido un posible prefijo de tipo de característica).

En el caso de una URL: el ID de GML viene después del símbolo #.

El incumplimiento de una de estas reglas dará lugar a la falta de resolución.

Resolución y encadenamiento de funciones por referencia

Los parámetros 'resolve' y 'resolveDepth' también se pueden usar en el caso depropiedades con valores múltiples por referencia (xlink:href).En este caso, no se aplicará fuerza bruta, pero la resolución le indicará a App-Schema que realice un encadenamiento completo de funciones en lugar de insertar una referencia.El URI no se utilizará para encontrar la característica, sino los parámetros de encadenamiento de características especificados en el mapeo, como ocurre con el encadenamiento de características normal.Por este motivo, en este caso se ignorará el parámetro 'resolveTimeOut'.

Sin embargo, tenga en cuenta que cada función sólo puede aparecer una vez en una respuesta.Si la resolución infringe esta regla, por ejemplo con referencias circulares, el codificador cambiará la entidad resuelta nuevamente a una referencia de enlace x (interna).

Obtener valor de propiedad

La solicitud GetPropertyValue ahora es totalmente compatible.También es posible resolver en esta solicitud, siguiendo las mismas reglas descritas anteriormente.

paginación

La paginación ahora es compatible con App-Schema.Hay algunas excepciones:

La paginación solo se admite para almacenes de datos con backends JDBC y no funcionará para almacenes de datos con archivos de propiedades.Ha sido probado con bases de datos Oracle y PostGIS.

No se admitirá la paginación con filtros que involucren atributos asignados a funciones, ya que esto no se puede traducir a SQL.

Para una generación de consultas SQL más eficiente, configúreloisDenormaliseden falso cuando corresponda (cuando se utiliza una tabla de base de datos uno a uno).ConsulteArchivo de mapeo.

Unirse a soporte para el rendimiento

La unión de esquema de aplicación es un parámetro de configuración opcional que le indica a esquema de aplicación que use una implementación diferente parael encadenamiento de características, lo que en muchos casos puede mejorar considerablemente el rendimiento al reducir la cantidad de consultas SQL enviadas al DBMS.

Condiciones

Para utilizar la unión de esquema de aplicación, se deben cumplir las siguientes condiciones de configuración:

Todas las asignaciones de funciones utilizadas deben asignarse a almacenes de datos JDBC.

Todas las asignaciones de características que están encadenadas entre sí deben asignarse a la misma base de datos física.

En sus asignaciones, existen restricciones en las expresiones CQL especificadas en <SourceExpression> tanto del campo de referencia en la característica principal como del campo referenciado en la característica anidada (como FEATURE_LINK).Cualquier operador o función utilizada en esta expresión debe ser compatible con las capacidades de filtro, es decir, las geoherramientas deben poder traducirlos directamente a código SQL.Esto puede ser diferente para cada DBMS, aunque como regla general se puede asumir que los operadores de comparación, los operadores lógicos y los operadores aritméticos son compatibles, pero las funciones no.Se garantiza que el uso de nombres de campos simples para el encadenamiento de funciones siempre funcionará.

Si no se cumple con cualquiera de estas tres restricciones al activar Unirse, se generarán excepciones en tiempo de ejecución.

Cuando se utiliza el esquema de aplicación con la opción Unirse activada, existen las siguientes restricciones con respecto al comportamiento normal:

Los XPath especificados dentro de los filtros no admiten el manejo de características referenciadas (consultePropiedades de valores múltiples por referencia (xlink:href)) como si fueran características anidadas reales, es decir, los XPath solo se pueden evaluar cuando se pueden evaluar con el código XML real producido por WFS según el estándar XPath.

Configuración

Unirse está activado de forma predeterminada.Se desactiva agregando esta simple línea a su archivo app-schema.properties (consulteInterpolación de propiedades)

esquema de aplicación . unirse = falso

O, alternativamente, estableciendo el valor de la propiedad del sistema Java “app-schema.joining” en “falso”, por ejemplo

java -DGEOSERVER_DATA_DIR=... -Dapp-schema.joining=false Inicio

No especificar el parámetro "app-schema.joining" permitirá unirse de forma predeterminada.

Directrices de diseño de bases de datos

Las bases de datos deben optimizarse para poder unirse y realizar pedidos rápidamente sobre la marcha.

Asegúrese de colocar índices en todos los campos utilizados como identificadores y para el encadenamiento de funciones, índices únicos siempre que sea posible.La falta de índices puede provocar que los datos se codifiquen en el orden incorrecto o que se produzcan resultados corruptos cuando se trata de encadenamiento de características.

Asigne sus características preferiblemente a tablas normalizadas.

Se recomienda aplicar el encadenamiento de características a relaciones regulares de uno a muchos, es decir, debe haber una restricción única definida en uno de los campos utilizados para el encadenamiento y, si es posible, una restricción de clave externa definida en el otro campo.

Efectos sobre el rendimiento

Las curvas típicas de tiempo de respuesta para configuraciones con y sin unión frente a la cantidad de características producidas tendrán la siguiente forma:


En la implementación predeterminada, el tiempo de respuesta aumenta rápidamente con respecto a la cantidad de funciones producidas.Esto se debe a que el encadenamiento de funciones se implementa enviando múltiples solicitudes SQL al DBMS por función, por lo que la cantidad de solicitudes aumenta con la cantidad de funciones producidas.Cuando Unirse está activado, el tiempo de respuesta será casi constante con respecto a la cantidad de funciones.Esto se debe a que en esta implementación se envía una pequeña cantidad de consultas más grandes al DBMS, independientemente de la cantidad de funciones producidas.En resumen, la diferencia en el rendimiento aumenta a medida que aumenta la cantidad de funciones solicitadas.El rendimiento general de la unión dependerá del diseño de la base de datos y del mapeo (ver arriba) y del tamaño de la base de datos.

Se recomienda encarecidamente utilizar la unión cuando es necesario producir una gran cantidad de entidades, por ejemplo, al producir mapas con WMS (consulteSoporte WMS).

La optimización del rendimiento de la base de datos maximizará el beneficio de utilizar la unión, incluso para consultas pequeñas.


Tutorial

Este tutorial demuestra cómo configurar dos tipos de funciones complejas utilizando el complemento de esquema de aplicación y datos de dos archivos de propiedades.

geocienciaml

Este ejemplo utilizaGeoscience Markup Language (GeoSciML) 2.0, un esquema de aplicación GML 3.1:

"GeoSciML es un esquema de aplicación que especifica un conjunto de tipos de características y estructuras de soporte para la información utilizada en las geociencias de la tierra sólida".

El tutorial define dos tipos de funciones:

gsml:GeologicUnit, que describe “un cuerpo de materia en la Tierra”.

gsml:MappedFeature, que describe la representación en un mapa de una característica, en este casogsml:GeologicUnit.

Debido a que un solo objetogsml:GeologicUnitpuede observarse en varios lugares distintos de la superficie de la Tierra, puede tener unagsml:occurrencepropiedad de múltiples valores, siendo cada uno de ellos ungsml:MappedFeature.

Instalación


Instale GeoServer como de costumbre.



Instale el complemento de esquema de aplicacióngeoserver-*-app-schema-plugin.zip:



Coloque los archivos jar enWEB-INF/lib.



Latutorialcarpeta contiene la configuración del GeoServer (directorio de datos) utilizada para este tutorial.


Reemplace sudatadirectorio existente con el directorio de datos del tutorial,

O editeWEB-INF/web.xmlpara configurarloGEOSERVER_DATA_DIRpara que apunte al directorio de datos del tutorial.(Asegúrese de descomentar la sección que estableceGEOSERVER_DATA_DIR.)


Realice cualquier configuración requerida por su contenedor de servlet y luego inicie el servlet.Por ejemplo, si está utilizando Tomcat, configure un nuevo contextoserver.xmly luego reinicie Tomcat.



La primera vez que GeoServer comienza con la configuración del tutorial, descargará todos los archivos de esquema (XSD) que necesita y los almacenará en laapp-schema-cachecarpeta del directorio de datos.Debes estar conectado a Internet para que esto funcione.


almacén de datos.xml

Cada archivo de configuración del almacén de datosdatastore.xmlespecifica la ubicación de un archivo de asignación y activa su carga como fuente de datos de esquema de aplicación.Este archivo no debe confundirse con el almacén de datos de origen, que se especifica dentro del archivo de asignación.

Paragsml_GeologicUnitel archivo esworkspaces/gsml/gsml_GeologicUnit/datastore.xml:

<almacén de datos>

<id>gsml_GeologicUnit_datastore</id>

<nombre>gsml_GeologicUnit</nombre>

<habilitado>verdadero</habilitado>

<espacio de trabajo>

<id>gsml_workspace</id>

</espacio de trabajo>

<parámetros de conexión>

<entry key="namespace">urna:cgi:xmlns:CGI:GeoSciML:2.0</entry>

<entry key="url">archivo:espacios de trabajo/gsml/gsml_GeologicUnit/gsml_GeologicUnit.xml</entry>

<entry key="dbtype">esquema de aplicación</entry>

</connectionParameters>

</almacén de datos>

Paragsml:MappedFeatureel archivo esworkspaces/gsml/gsml_MappedFeature/datastore.xml:

<almacén de datos>

<id>gsml_MappedFeature_datastore</id>

<nombre>gsml_MappedFeature</nombre>

<habilitado>verdadero</habilitado>

<espacio de trabajo>

<id>gsml_workspace</id>

</espacio de trabajo>

<parámetros de conexión>

<entry key="namespace">urna:cgi:xmlns:CGI:GeoSciML:2.0</entry>

<entry key="url">archivo:workspaces/gsml/gsml_MappedFeature/gsml_MappedFeature.xml</entry>

<entry key="dbtype">esquema de aplicación</entry>

</connectionParameters>

</almacén de datos>

Nota

Asegúrese de que no haya espacios en blanco dentro de unentryelemento.

Archivos de mapeo

La configuración de los tipos de funciones del esquema de aplicación se realiza en archivos de mapeo:

workspaces/gsml/gsml_GeologicUnit/gsml_GeologicUnit.xml

workspaces/gsml/gsml_MappedFeature/gsml_MappedFeature.xml

Espacios de nombres

Cada archivo de mapeo contiene definiciones de prefijos de espacios de nombres:

<Espacio de nombres>

<prefijo>gml</prefijo>

<uri>http://www.opengis.net/gml</uri>

</Espacio de nombres>

<Espacio de nombres>

<prefijo>gsml</prefijo>

<uri>urna:cgi:xmlns:CGI:GeoSciML:2.0</uri>

</Espacio de nombres>

<Espacio de nombres>

<prefijo>enlacex</prefijo>

<uri>http://www.w3.org/1999/xlink</uri>

</Espacio de nombres>

Solo es necesario declarar los prefijos de espacio de nombres utilizados en el archivo de asignación, por lo que el archivo de asignacióngsml:GeologicUnittiene menos.

Almacén de datos de origen

Los datos de este tutorial están contenidos en dos archivos de propiedades:

workspaces/gsml/gsml_GeologicUnit/gsml_GeologicUnit.properties

workspaces/gsml/gsml_MappedFeature/gsml_MappedFeature.properties

Propiedades de Javadescribe el formato de los archivos de propiedades.

Para este ejemplo, cada tipo de característica utiliza una configuración de almacén de datos de origen idéntica.Estedirectoryparámetro indica que los datos de origen están contenidos en archivos de propiedades nombrados por su tipo de característica, en el mismo directorio que el archivo de mapeo correspondiente:

<almacenes de datos de origen>

<Almacén de datos>

<id>almacén de datos</id>

<parámetros>

<Parámetro>

<nombre>directorio</nombre>

<valor>archivo:./</valor>

</Parámetro>

</parámetros>

</Almacén de datos>

</sourceDataStores>

ConsulteAlmacenes de datospara obtener una descripción de cómo utilizar otros tipos de almacenes de datos, como bases de datos.

Tipos de objetivos

Ambos tipos de funciones están definidos por el mismo esquema XML, el esquema de nivel superior para GeoSciML 2.0.Esto se especifica en eltargetTypesapartado.El tipo de característica de salida se define entargetElementlatypeMappingsiguiente sección:

<tipos de destino>

<Tipo de característica>

<schemaUri>http://www.geosciml.org/geosciml/2.0/xsd/geosciml.xsd</schemaUri>

</Tipo de característica>

</tipos de destino>

En este caso, el esquema se publica, pero como el catálogo XML de OASIS se utiliza para la resolución del esquema, se puede utilizar un esquema privado o modificado en el catálogo si se desea.

Mapeos

EltypeMappingselemento comienza con elementos de configuración.Del archivo de mapeo paragsml:GeologicUnit:

<asignaciones de tipos>

<Asignación de tipos de funciones>

<sourceDataStore>almacén de datos</sourceDataStore>

<tipofuente>gsml_GeologicUnit</tipofuente>

<targetElement>gsml:Unidad Geológica</targetElement>

La asignación comienza consourceDataStore, que proporciona el identificador arbitrario utilizado anteriormente para nombrar la fuente de los datos de entrada en lasourceDataStoressección.

sourceTypeproporciona el nombre del tipo de característica simple de origen.En este caso, es el tipo de característica simplegsml_GeologicUnit, que se obtiene de las filas del archivogsml_GeologicUnit.propertiesen el mismo directorio que el archivo de mapeo.

Cuando se trabaja con bases de datossourceTypees el nombre de una tabla o vista.Los identificadores de la base de datos deben estar en minúsculas para PostGIS o en mayúsculas para Oracle Spatial.

targetElementes el nombre del tipo de entidad compleja de salida.

gml: mapeo de identificación

La primera asignación establece quegml:idsea la identificación de característica especificada en el archivo de propiedades de origen:

<Asignación de atributos>

<atributodestino>

gsml:Unidad Geológica

</targetAttribute>

<ExpresiónId>

<OCQL>ID</OCQL>

</idExpresión>

</Asignación de atributos>

targetAttributees el XPath al elemento al que se aplica la asignación, en este caso, el tipo de característica de nivel superior.

idExpressiones un formulario especial que solo se puede utilizar para configurargml:iduna función.Se puede utilizar cualquier campo o expresión CQL, si se evalúa comoNCName.

mapeo ordinario

La mayoría de las asignaciones constan de un destino y una fuente.Aquí hay uno degsml:GeologicUnit:

<Asignación de atributos>

<atributodestino>

gml: descripción

</targetAttribute>

<expresiónfuente>

<OCQL>DESCRIPCIÓN</OCQL>

</fuenteExpresión>

</Asignación de atributos>

En este caso, el valor degml:descriptiones sólo el valor delDESCRIPTIONcampo en el archivo de propiedades.

Para una base de datos, el nombre del campo es el nombre de la columna (la tabla/vista se establecesourceTypearriba).Los identificadores de la base de datos deben estar en minúsculas para PostGIS o en mayúsculas para Oracle Spatial.

Se pueden utilizar expresiones CQL para calcular el contenido.Tenga cuidado porque las consultas sobre valores calculados por CQL impiden la construcción de consultas SQL eficientes.

Las expresiones fuente pueden ser literales CQL, que están entre comillas simples.

Propiedades del cliente

Además del contenido del elemento, una asignación puede establecer una o más "propiedades del cliente" (atributos XML).Aquí hay uno degsml:MappedFeature:

<Asignación de atributos>

<atributodestino>

gsml: especificación

</targetAttribute>

<PropiedadCliente>

<nombre>enlacex:href</nombre>

<valor>GU_URN</valor>

</PropiedadCliente>

</Asignación de atributos>

Esta asignación deja el contenido delgsml:specificationelemento vacío pero establece unxlink:hrefatributo para el valor delGU_URNcampo.

ClientPropertySe pueden configurarmúltiples asignaciones.

En este ejemplo de la asignacióngsml:GeologicUnitse proporcionan tanto el contenido del elemento como un atributo XML:

<Asignación de atributos>

<atributodestino>

gml:nombre[1]

</targetAttribute>

<expresiónfuente>

<OCQL>NOMBRE</OCQL>

</fuenteExpresión>

<PropiedadCliente>

<nombre>espacio de código</nombre>

<valor>'urna:x-test:clasificadorEsquema:TestAuthority:GeologicUnitName'</valor>

</PropiedadCliente>

</Asignación de atributos>

Elcodespaceatributo XML se establece en un valor fijo proporcionando un literal CQL.

Hay varias asignaciones paragml:namey el índice[1]significa que esta asignación se dirige a la primera.

objetivoAtributoNodo

Si el tipo de una propiedad es abstracto,targetAttributeNodese debe utilizar una asignación para especificar un tipo concreto.Esta asignación debe realizarse antes de la asignación del contenido de la propiedad.

Aquí hay un ejemplo del archivo de mapeo paragsml:MappedFeature:

<Asignación de atributos>

<targetAttribute>gsml:positionalAccuracy</targetAttribute>

<targetAttributeNode>gsml:CGI_TermValuePropertyType</targetAttributeNode>

</Asignación de atributos>

<Asignación de atributos>

<targetAttribute>gsml:positionalAccuracy/gsml:CGI_TermValue/gsml:value</targetAttribute>

<expresiónfuente>

<OCQL>'urna:ogc:def:nil:OGC:faltante'</OCQL>

</fuenteExpresión>

<PropiedadCliente>

<nombre>espacio de código</nombre>

<valor>'urna:ietf:rfc:2141'</valor>

</PropiedadCliente>

</Asignación de atributos>

gsml:positionalAccuracyes de tipogsml:CGI_TermValuePropertyType, que es abstracto, por lo que se debe asignar a su subtipo concretogsml:CGI_TermValuePropertyTypecon unatargetAttributeNodeasignación antes de que se pueda asignar su contenido.

Este ejemplo también demuestra que el mapeo se puede aplicar a propiedades anidadas hasta una profundidad arbitraria.Esto se vuelve inmanejable para el anidamiento profundo, donde se prefiere el encadenamiento de características.

Encadenamiento de funciones

En el encadenamiento de características, un tipo de característica se utiliza como propiedad de un tipo de característica circundante, por valor o por referencia:

<Asignación de atributos>

<atributodestino>

gsml: ocurrencia

</targetAttribute>

<expresiónfuente>

<OCQL>URNA</OCQL>

<linkElement>gsml:MappedFeature</linkElement>

<linkField>gml:nombre[2]</linkField>

</fuenteExpresión>

<isMultiple>verdadero</isMultiple>

</Asignación de atributos>

En este caso, a partir del mapeo paragsml:GeologicUnit, especificamos un mapeo para sugsml:occurrence.

ElURNcampo de lagsml_GeologicUnitcaracterística simple de origen se utiliza como "clave externa", que se asigna a la segundagml:nameen cada archivogsml:MappedFeature.

Todogsml:MappedFeaturevalorgml:name[2]igual alURNdelgsml:GeologicUnitinmueble en construcción se incluye comogsml:occurrencepropiedad delgsml:GeologicUnit(por valor).

Respuesta de la CMA

Cuando GeoServer se esté ejecutando, pruebe el WFS del esquema de aplicación en un navegador web.Si GeoServer está escuchando,localhost:8080puede consultar los dos tipos de funciones utilizando estos enlaces:

http://localhost:8080/geoserver/wfs?request=GetFeature&version=1.1.0&typeName=gsml:GeologicUnit

http://localhost:8080/geoserver/wfs?request=GetFeature&version=1.1.0&typeName=gsml:MappedFeature

gsml:Unidad Geológica

El encadenamiento de características se ha utilizado para construir la propiedad multivalorgsml:occurrencedegsml:GeologicUnit.Esta propiedad es ungsml:MappedFeature.La respuesta WFSgsml:GeologicUnitcombina el resultado de ambos tipos de características en una sola respuesta.El primerogsml:GeologicUnittiene dosgsml:occurrencepropiedades, mientras que el segundo tiene una.Las relaciones entre las instancias de características se basan en datos.

Debido a que los archivos de mapeo en la configuración del tutorial no contienen mapeos de atributos para todas las propiedades obligatorias de estos tipos de características, la respuesta WFS no esválida como esquemapara los esquemas GeoSciML 2.0.La validez del esquema se puede lograr agregando más asignaciones de atributos a los archivos de asignación.

Nota

Estos tipos de funciones se definen en términos de GML 3.1 (el valor predeterminado para WFS 1.1.0);otras versiones de GML no funcionarán.

Advertencia

La interfaz web aún no admite el almacén de esquemas de aplicaciones ni la administración de capas.

Agradecimientos

gsml_GeologicUnit.propertiesygsml_MappedFeature.propertiesse derivan de datos proporcionados por el Departamento de Industrias Primarias, Victoria, Australia.Para los fines de este tutorial, estos datos se han modificado hasta el punto de que no tienen significado en el mundo real.

Trabajar con servicios en cascada

Esta sección analiza cómo GeoServer puede representar servicios OGC externos.Esto se conoce comoserviciosen cascada .

GeoServer admite la conexión en cascada de los siguientes servicios:

Servidor de funciones web externo

Consultas almacenadas del servicio de funciones web en cascada

Servidor de mapas web externo

Servidor de funciones web externo

GeoServer tiene la capacidad de cargar datos desde un servidor de funciones web (WFS) remoto.Esto es útil si el WFS remoto carece de ciertas funciones que contiene GeoServer.Por ejemplo, si el WFS remoto no es también un servidor de mapas web (WMS), los datos del WFS se pueden conectar en cascada a través de GeoServer para utilizar el WMS de GeoServer.Si el WFS remoto tiene un WMS pero ese WMS no puede generar KML, los datos se pueden conectar en cascada a través del WMS de GeoServer para generar KML.

Agregar un WFS externo

Para conectarse a un WFS externo, es necesario cargarlo como un nuevo almacén de datos.Para comenzar, navegue hastaTiendas ‣ Agregar una nueva tienda ‣ Servidor de funciones web.


Agregar un WFS externo como tienda

Opción

Descripción

Espacio de trabajo

Nombre del espacio de trabajo que contiene la tienda.Este también será el prefijo de todos los nombres de capas creados en la tienda.

Nombre de fuente de datos

Nombre de la tienda conocida por GeoServer.

Descripción

Descripción de la tienda.

Activado

Habilita la tienda.Si está deshabilitado, no se entregarán datos del WFS externo.

GET_CAPABILITIES_URL

URL para acceder al documento de capacidades del WFS remoto.

PROTOCOLO

Cuando está marcado, se conecta con POST; de lo contrario, usa GET.

NOMBRE DE USUARIO

El nombre de usuario para conectarse al WFS externo.

CONTRASEÑA

La contraseña asociada con el nombre de usuario anterior.

CODIFICACIÓN

La codificación de caracteres de las solicitudes XML enviadas al servidor.El valor predeterminado esUTF-8.

SE ACABÓ EL TIEMPO

Tiempo (en milisegundos) antes de que se agote el tiempo.El valor predeterminado es3000.

TAMAÑO DEL BÚFER

Especifica un tamaño de búfer (en número de entidades).El valor predeterminado son10las características.

TRY_GZIP

Especifica que el servidor debe transferir datos mediante HTTP comprimido si el servidor lo admite.

INDULGENTE

Cuando está marcado, intentará representar características que no coincidan con el esquema apropiado.Se registrarán los errores.

MAXCARACTERÍSTICAS

Cantidad máxima de funciones para recuperar para cada tipo de función.El valor predeterminado no es límite.

Cuando termine, haga clic enGuardar.

Configurar capas WFS externas

Cuando se cargan correctamente, todas las capas atendidas por el WFS externo estarán disponibles para GeoServer.Sin embargo, antes de poder publicarlos, será necesario configurarlos individualmente como nuevas capas.Consulte la sección sobreCapaspara saber cómo agregar y editar nuevas capas.

Conexión a una capa WFS externa a través de un servidor proxy

En un entorno corporativo puede ser necesario conectarse a un WFS externo a través de un servidor proxy.Para lograr esto, es necesario configurar varias variables de Java.

Para una instalación de Windows que ejecuta Geoserver como servicio, esto se hace modificando el archivo wrapper.conf.Para una instalación predeterminada de Windows, modifiquede manera similar a lo siguiente.C:\ProgramFiles\GeoServerx.x.x\wrapper\wrapper.conf

# Parámetros adicionales de Java

wrapper.java.additional.1=-Djetty.home=.wrapper.java.additional.2=-DGEOSERVER_DATA_DIR=”%GEOSERVER_DATA_DIR%” wrapper.java.additional.3=-Dhttp.proxySet=true wrapper.java.additional.4=-Dhttp.proxyHost=maitproxy wrapper.java.additional. 5=-Dhttp.proxyPort=8080 wrapper.java.additional.6=-Dhttps.proxyHost=maitproxy wrapper.java.additional.7=-Dhttps.proxyPort=8080 wrapper.java.additional.8=-Dhttp.nonProxyHosts=” mait*|ppp*|localhost”

Tenga en cuenta que elparámetrohttp.proxySet=true es obligatorio.Además, los números de los parámetros deben ser consecutivos, es decir.sin huecos.

Para una instalación de Windows que no ejecuta Geoserver como servicio, modifíquelostartup.batpara que el comandojavase ejecute con parámetros -D similares.

Para una instalación de Linux/UNIX, modifíquelostartup.shpara que el comandojavase ejecute con parámetros -D similares.


Consultas almacenadas del servicio de funciones web en cascada

La consulta almacenada es una característica de Web Feature Services.Permite a los servidores atender consultas de filtro preconfiguradas o incluso consultas que no se pueden expresar como consultas de filtro GetFeature.Esta característica de GeoServer permite crear capas en cascada a partir de consultas almacenadas.

Las consultas almacenadas son de solo lectura y las capas derivadas de consultas almacenadas en cascada no se pueden actualizar con WFS-T.

Parámetros de consulta almacenados en cascada

La relación entre los parámetros de consulta almacenados y el esquema devuelto por la consulta no está bien definida.Para que funcionen las consultas almacenadas en cascada, se debe definir la relación entre la consulta recibida por GeoServer y los parámetros pasados ​​a la consulta almacenada.

Cuando configura una capa basada en una consulta almacenada, debe seleccionar qué consulta almacenada conectar en cascada y qué valores se pasan a cada parámetro.Las consultas almacenadas en cascada pueden aprovechar los parámetros de vista pasados ​​a la consulta.Esto es similar a cómo se pasan parámetros arbitrarios alas vistas SQL.GeoServer admite múltiples estrategias para pasar estos valores.Consulte a continuación para obtener una lista completa.

Tipo de parámetro

Explicación

Sin mapeo

El valor del parámetro de vista se pasará tal cual a la consulta almacenada.No se pasará ningún parámetro si no hay ningún parámetro de vista con el mismo nombre.

Obstruido

Este parámetro nunca se pasará a la consulta almacenada.

Por defecto

El valor especificado se utiliza a menos que un parámetro de vista lo sobrescriba.

Estático

El valor especificado siempre se utiliza (el valor del parámetro de visualización se ignorará)

Expresión CQL

Una expresión que se evaluará en cada solicitud (consulte a continuación para obtener más detalles)

ConsulteUso de una vista SQL paramétricapara obtener más detalles sobre cómo los clientes pasan los parámetros de vista a GeoServer.

expresiones CQL

Las asignaciones de parámetros configuradas como expresiones CQL se evalúan para cada solicitud utilizando un contexto derivado de la consulta de la solicitud y los parámetros de vista.La información general sobre las expresiones CQL está disponible aquíExpresión.

El contexto contiene las siguientes propiedades que pueden usarse en las expresiones:

Nombre de la propiedad

Explicación

bboxMinXbboxMinYbboxMaxXbboxMaxY

Evalúa hasta una coordenada de esquina de la extensión total de la consulta.

defaultSRS

Evalúa el SRS predeterminado del tipo de característica

viewparam:name

Evalúa el valor delnombredel parámetro de vista en esta consulta

Configurar una capa de consulta almacenada en cascada

Para crear una capa de consulta almacenada en cascada, el administrador invoca la página Crear nueva capa.Cuando se seleccionaunservidor de funciones web externo, aparece la lista habitual de tablas y vistas disponibles para publicación, y también aparece un enlaceConfigurar consulta almacenada en cascada... :


Al seleccionar el enlaceConfigurar consulta almacenada en cascada...se abre una nueva página donde se configura la asignación de parámetros.De forma predeterminada, todos los parámetros están configurados comoSin asignación.



Servidor de mapas web externo

GeoServer tiene la capacidad de actuar como proxy de un servicio de mapas web (WMS) remoto.Este proceso a veces se conoce comoWMS en cascada.Cargar un WMS remoto es útil por muchas razones.Si no administras ni tienes acceso al WMS remoto, ahora puedes administrar su salida como si fuera local.Incluso si el WMS remoto no es GeoServer, puede utilizar las funciones de GeoServer para tratar su salida (marcas de agua, decoración, impresión, etc.).

Para acceder a un WMS remoto, es necesario cargarlo como almacén en GeoServer.GeoServer debe poder acceder al documento de capacidades del WMS remoto para que la tienda se cargue correctamente.

Agregar un WMS externo

Para conectarse a un WMS externo, es necesario cargarlo como una nueva tienda.Para comenzar, en laInterfaz de administración web, navegue hastaTiendas ‣ Agregar una nueva tienda ‣ WMS.La opción aparece enOtras fuentes de datos.


Agregar un WMS externo como tienda


Configurar una nueva tienda WMS externa

Opción

Descripción

Espacio de trabajo

Nombre del espacio de trabajo que contiene la tienda.Este también será el prefijo de todos los nombres de capas publicados desde la tienda.El nombre del espacio de trabajo en el WMS remoto no está en cascada.

Nombre de fuente de datos

Nombre de la tienda conocida por GeoServer.

Descripción

Descripción de la tienda.

Activado

Habilita la tienda.Si está deshabilitado, no se entregarán datos del WMS remoto.

URL de capacidades

La URL completa para acceder al documento de capacidades del WMS remoto.

Nombre de usuario

Si el WMS requiere autenticación, el nombre de usuario con el que conectarse.

Contraseña

Si el WMS requiere autenticación, la contraseña para conectarse.

Conexiones simultáneas máximas

El número máximo de conexiones persistentes que se deben mantener para este WMS.

Cuando termine, haga clic enGuardar.

Configurar capas WMS externas

Cuando se cargan correctamente, todas las capas atendidas por el WMS externo estarán disponibles para GeoServer.Sin embargo, antes de poder publicarlos, será necesario configurarlos (publicarlos) individualmente como nuevas capas.Consulte la sección sobreCapaspara saber cómo agregar y editar nuevas capas.Una vez publicadas, estas capas aparecerán en laVista previa de capasy como parte del documento de capacidades WMS.

Características

La conexión de un WMS remoto permite las siguientes funciones:

Reproyección dinámica.Si bien la proyección predeterminada para una capa está en cascada, es posible pasar el parámetro SRS al WMS remoto.Si ese SRS no fuera válido en el servidor remoto, GeoServer reproyectará dinámicamente las imágenes que le envíen desde el WMS remoto.

Obtener información de característica.Las solicitudes GetFeatureInfo de WMS se pasarán al WMS remoto.Si el WMS remoto admite elapplication/vnd.ogc.gmlformato, la solicitud se realizará correctamente.

Configuración RESTcompleta.Consulte la secciónde configuración RESTpara obtener más información sobre la interfaz REST de GeoServer.

Limitaciones

Las capas servidas a través de un WMS externo tienen algunas, pero no todas, las funciones de un WMS local.

Las capas no se pueden diseñar con SLD.

No se pueden utilizar estilos alternativos (locales).

No se pueden utilizar parámetros de solicitud adicionales (,,,timeetc.).elevationcql_filter

No se admiten solicitudes GetLegendGraphic.

No se puede especificar el formato de imagen.GeoServer intentará solicitar imágenes PNG y, si eso falla, utilizará el formato de imagen predeterminado del servidor remoto.

No se admite la autenticación para el WMS remoto.El WMS remoto no debe ser seguro.


Filtrado en GeoServer

El filtrado permite seleccionar características que satisfacen un conjunto específico de condiciones.Los filtros se pueden utilizar en varios contextos en GeoServer:

en solicitudes WMS, para seleccionar qué características deben mostrarse en un mapa

en solicitudes WFS, para especificar las características que se devolverán

en documentos SLD, para aplicar diferentes simbolizaciones a entidades en un mapa temático.

Idiomas de filtro admitidos

Referencia de codificación de filtro

Referencia ECQL

Funciones de filtro

Referencia de función de filtro


Idiomas de filtro admitidos

El filtrado de datos en GeoServer se basa en los conceptos que se encuentran en laEspecificación de codificación de filtro OGC.

GeoServer acepta filtros codificados en dos idiomas diferentes:Codificación de filtroyLenguaje de consulta común.

Codificación de filtro

El lenguajeFilter Encodinges un método basado en XML para definir filtros.Los filtros XML se pueden utilizar en los siguientes lugares de GeoServer:

enGetMapsolicitudes WMS, utilizando elfilterparámetro

enGetFeaturesolicitudes WFS, usando elfilterparámetro

en Reglas SLD, en elelementoFiltro

El lenguaje de codificación de filtros está definido porlos estándares de codificación de filtros OGC:

Filter Encoding 1.0 se utiliza en WFS 1.0 y SLD 1.0

La codificación de filtro 1.1 se utiliza en WFS 1.1

Filter Encoding 2.0 se utiliza en WFS 2.0

CQL/ECQL

CQL (lenguaje de consulta común)es un lenguaje de texto sin formato creado para la especificacióndel catálogo OGC.GeoServer lo ha adaptado para que sea un mecanismo de filtrado fácil de usar.GeoServer en realidad implementa una extensión más poderosa llamadaECQL (Extended CQL), que permite expresar la gama completa de filtros queOGC Filter 1.1puede codificar.ECQL se acepta en muchos lugares de GeoServer:

en solicitudes WMSGetMap, utilizando elparámetrocql_filter

en solicitudes WFSGetFeature, utilizando elparámetrocql_filter

en simbolizadores dinámicosSLD

Lareferencia ECQLdescribe las características del lenguaje ECQL.El tutorial deCQL y ECQLmuestra ejemplos de cómo definir filtros.

Los lenguajes CQL y ECQL se definen en:

La especificación de servicios del catálogo OpenGIScontiene la definición estándar de CQL

La gramática ECQLes la gramática que define la implementación de GeoTools ECQL.

Referencia de codificación de filtro

Esta es una referencia para el lenguajede codificación de filtrosimplementado en GeoServer.El lenguaje Filter Encoding utiliza una sintaxis basada en XML.Está definido por elestándar OGC Filter Encoding.

Los filtros se utilizan para seleccionar características u otros objetos del contexto en el que se evalúan.Son similares en funcionalidad a la cláusula “WHERE” de SQL.Un filtro se especifica mediante unacondición.

Condición

Una condición es un único elementode predicadoo una combinación de condiciones medianteoperadores lógicos.

Predicado

Los predicados son expresiones con valores booleanos que calculan relaciones entre valores.Un predicado se especifica mediante unoperador de comparacióno unoperador espacial.Los operadores se utilizan para comparar las propiedades de las entidades que se filtran con otras propiedades de entidades o con datos literales.

Operadores de comparación

Los operadores de comparación se utilizan para especificar condiciones en atributos no espaciales.

Operadores de comparación binaria

Losoperadores de comparación binariason:

<PropertyIsEqualTo>

<PropertyIsNotEqualTo>

<PropertyIsLessThan>

<PropertyIsLessThanOrEqualTo>

<PropertyIsGreaterThan>

<PropertyIsGreaterThanOrEqualTo>

Contienen los elementos:

Elemento

¿Requerido?

Descripción

Expresión

El primer valor a comparar.A menudo un<PropertyName>.

Expresión

El segundo valor para comparar

Los elementos del operador de comparación binaria pueden incluir unmatchCaseatributo opcional, con el valortrueofalse.Si este atributo estrue(el predeterminado), las comparaciones de cadenas distinguen entre mayúsculas y minúsculas.Si el atributo sonfalsecomparaciones de cadenas, no marque mayúsculas y minúsculas.

Operador PropertyIsLike

El<PropertyIsLike>operador compara un valor de propiedad de cadena con unpatrónde texto .Contiene los elementos:

Elemento

¿Requerido?

Descripción

<PropertyName>

Contiene una cadena que especifica el nombre de la propiedad a probar.

<Literal>

Contiene una cadena de patrón que debe coincidir

El patrón se especifica mediante una secuencia de caracteres regulares y tres caracteres de patrón especiales.Los caracteres del patrón están definidos por los siguientes atributosrequeridosdel<PropertyIsLike>elemento:

wildCardespecifica el carácter de patrón que coincide con cualquier secuencia de cero o más caracteres de cadena

singleCharespecifica el carácter de patrón que coincide con cualquier carácter de cadena individual

escapeCharespecifica el carácter de escape que se puede utilizar para escapar de los caracteres del patrón

Operador PropertyIsNull

El<PropertyIsNull>operador prueba si el valor de una propiedad es nulo.Contiene el elemento:

Elemento

¿Requerido?

Descripción

<PropertyName>

contiene una cadena que especifica el nombre de la propiedad que se va a probar

Operador PropertyIsBetween

El<PropertyIsBetween>operador prueba si el valor de una expresión se encuentra dentro de un rango dado por un límite superior e inferior (inclusive).Contiene los elementos:

Elemento

¿Requerido?

Descripción

Expresión

El valor a probar

<LowerBoundary>

Contiene unaexpresiónque proporciona el límite inferior del rango.

<UpperBoundary>

Contiene unaexpresiónque proporciona el límite superior del rango.

Operadores espaciales

Los operadores espaciales se utilizan para especificar condiciones sobre los atributos geométricos de una característica.Están disponibles los siguientes operadores espaciales:

Operadores topológicos

Estos operadores prueban las relaciones espaciales topológicas utilizando los predicados estándar de características simples de OGC:

<Intersects>- Prueba si dos geometrías se cruzan

<Disjoint>- Prueba si dos geometrías están separadas

<Contains>- Prueba si una geometría contiene otra

<Within>- Prueba si una geometría está dentro de otra.

<Touches>- Prueba si dos geometrías se tocan

<Crosses>- Prueba si dos geometrías se cruzan

<Overlaps>- Prueba si dos geometrías se superponen

<Equals>- Prueba si dos geometrías son topológicamente iguales

Estos contienen los elementos:

Elemento

¿Requerido?

Descripción

<PropertyName>

Contiene una cadena que especifica el nombre de la propiedad con valores de geometría que se va a probar.

Geometría GML

Un valor literal GML que especifica la geometría a probar

Operadores de distancia

Estos operadores prueban las relaciones de distancia entre una propiedad de geometría y un literal de geometría:

<DWithin>

<Beyond>

Contienen los elementos:

Elemento

¿Requerido?

Descripción

<PropertyName>

Contiene una cadena que especifica el nombre de la propiedad que se va a probar.Si se omite,se asume elatributo de geometría predeterminado .

Geometría GML

Un valor literal que especifica una geometría para calcular la distancia.Puede ser una geometría o un sobre en formato GML 3.

<Distance>

Contiene el valor numérico de la tolerancia de distancia.El elemento puede incluir ununitsatributo opcional.

Operador de cuadro delimitador

El<BBOX>operador prueba si una propiedad con valores geométricos intersecta un cuadro delimitador fijo.Contiene los elementos:

Elemento

¿Requerido?

Descripción

<PropertyName>

No

Contiene una cadena que especifica el nombre de la propiedad que se va a probar.Si se omite,se asume elatributo de geometría predeterminado .

<gml:Box>

Un valor literal de cuadro GML que especifica el cuadro delimitador con el que se realizará la prueba.

Ejemplos

Este filtro selecciona entidades con una geometría que intersecta el punto (1,1).

<Intersectas>

<NombrePropiedad> GEOMETRÍA </NombrePropiedad>

<gml:Punto>

<gml:coordenadas> 1 1 </gml:coordenadas>

</gml:Punto> </Intersectas>

Este filtro selecciona entidades con una geometría que se superpone a un polígono.

<Superposiciones>

<Nombre de propiedad>

Geometría </Nombre de propiedad> <gml:Polygon srsName= "http://www.opengis.net/gml/srs/epsg.xml#63266405" >

<gml:outerBoundaryIs>

<gml:LinearRing>

< gml:posList> ... </gml:posList>

</gml:LinearRing>

</gml:outerBoundaryIs>

</gml:Polygon>

</Overlaps>

Este filtro selecciona entidades con una geometría que intersecta la extensión geográfica [-10,0: 10,10].

<BBOX>

<NombrePropiedad> GEOMETRÍA </NombrePropiedad>

<gml:Box srsName= "urn:x-ogc:def:crs:EPSG:4326" >

<gml:coord>

<gml:X> -10 </gml:X > <gml:Y> 0 </gml:Y>

</gml:coord>

<gml:coord>

<gml:X> 10 </gml:X> <gml:Y> 10 </gml:Y>

</ gml:coord>

</gml:Box> </BBOX>

Operadores logicos

Los operadores lógicos se utilizan para especificar combinaciones lógicas de elementosde condición(que pueden ser elementosde predicadou otrosoperadores lógicos).Pueden anidarse a cualquier profundidad.

Están disponibles los siguientes operadores lógicos:

<And>- calcula la conjunción lógica de los operandos

<Or>- calcula la disyunción lógica de los operandos

El contenido de<And>y<Or>son dos operandos dados por elementosde condición.

<Not>- calcula la negación lógica del operando

El contenido de<Not>es un único operando dado por un elementoCondición.

Ejemplos

Este filtro se utiliza<And>para combinar un predicado de comparación y un predicado espacial:

<Y>

<PropertyIsEqualTo>

<PropertyName> NOMBRE </PropertyName>

<Literal> Nueva York </Literal>

</PropertyIsEqualTo>

<Intersects>

<PropertyName> GEOMETRÍA </PropertyName>

<Literal>

<gml:Punto>

<gml:coordenadas > 1 1 </gml:coordenadas>

</gml:Punto>

</Literal>

</Intersects> </And>

Expresión

Las expresiones de filtroespecifican valores de datos constantes, variables o calculados.Una expresión se forma a partir de uno de los siguientes elementos (algunos de los cuales contienen subexpresiones, lo que significa que las expresiones pueden tener una profundidad arbitraria):

Operadores aritméticos

Los elementosdel operador aritméticocalculan operaciones aritméticas sobre valores numéricos.

<Add>- suma los dos operandos

<Sub>- resta el segundo operando del primero

<Mul>- multiplica los dos operandos

<Div>- divide el primer operando por el segundo

Cada elemento del operador aritmético contiene dos elementosde expresiónque proporcionan los operandos.

Función

El<Function>elemento especifica una función de filtro que se evaluará.Elnameatributo requerido proporciona el nombre de la función.El elemento contiene una secuencia de cero o más elementosde expresiónque proporcionan los valores de los argumentos de la función.

Consulte laReferencia de funciones de filtropara obtener detalles de las funciones proporcionadas por GeoServer.

El valor de la propiedad

El<PropertyName>elemento se refiere al valor de un atributo de característica.Contiene unacadenao unaexpresión XPathque especifica el nombre del atributo.

Literal

El<Literal>elemento especifica un valor constante.Contiene datos de uno de los siguientes tipos:

Tipo

Descripción

Numérico

Una cadena que representa un valor numérico (entero o decimal).

Booleano

Un valor booleano detrueofalse.

Cadena

Un valor de cadena.Se puede incluir texto incompatible con XML mediante el usode entidades de caractereso<![CDATA[]]>delimitadores.

Fecha

Una cadena que representa una fecha.

Geometría

Un elemento que especifica una geometría en formato GML3.

Espacios de nombres WFS 2.0

WFS 2.0 no depende de ninguna versión de GML y, por lo tanto, requiere un espacio de nombres y una ubicación de esquema explícitos para GML.En una solicitud GET, los espacios de nombres se pueden colocar en un elemento de filtro (es decir,filter=el bloque siguiente, codificado en URL):

<fes:Filtro

xmlns:fes= "http://www.opengis.net/fes/2.0"

xmlns:gml= "http://www.opengis.net/gml/3.2" >

<fes:No>

<fes :Disjoint>

<fes:ValueReference> sf:the_geom </fes:ValueReference>

<gml:Polygon

gml:id= "polygon.1"

srsName= 'http://www.opengis.net/def/crs/EPSG/0 /26713' >

<gml:exterior>

<gml:LinearRing>

<gml:posList> 590431 4915204 590430

4915205 590429 4915204 590430

4915203 590431 4915204 </gml:posList>

</gml:LinearRing>

</gml:exterior>

</gml:Polygon>

</fes:Disjoint>

</fes:Not> </fes:Filter>


Referencia ECQL

Esta sección proporciona una referencia para la sintaxis del lenguaje ECQL.La gramática completa del idioma está documentada en ladefinición BNF de GeoTools ECQL.

Notas de sintaxis

Las secciones siguientes describen las principales construcciones del lenguaje.Cada construcción enumera todas sus opciones de sintaxis.Cada opción se define como una secuencia de otras construcciones, o recursivamente en términos de sí misma.

Los símbolos que forman parte del lenguaje ECQL se muestran en.Todos los demás símbolos son parte de la descripción gramatical.codefont

Las palabras clave ECQL no distinguen entre mayúsculas y minúsculas.

Un símbolo de barra vertical '|' indica que se puede elegir una palabra clave.

Los corchetes '[...]' delimitan la sintaxis que es opcional.

Las llaves '{...}' delimitan la sintaxis que puede estar presente cero o más veces.

Condición

Una condición de filtro es un predicado único o una combinación lógica de otras condiciones.

Sintaxis

Descripción

Predicado

Expresión de predicado único

CondiciónAND|ORCondición

Conjunción o disyunción de condiciones

NOTCondición

Negación de una condición

(|[Condición]|)

Horquillado conorden de evaluación de controles(o[

Predicado

Los predicados son expresiones con valores booleanos que especifican relaciones entre valores.

Sintaxis

Descripción

Expresión=|<>|<|<=|>|>=Expresión

Operaciones de comparación

Expresión[NOT]BETWEENExpresión ANDExpresión

Prueba si un valor se encuentra dentro o fuera de un rango (inclusive)

Expresión[NOT]LIKE|ILIKEpatrón similar

Coincidencia de patrones simples.patrón similarutiliza el%carácter como comodín para cualquier número de caracteres.ILIKEhace coincidencias que no distinguen entre mayúsculas y minúsculas.

Expresión[NOT]Expresión{Expresión}IN(,)

Prueba si un valor de expresión está (no) en un conjunto de valores

Expresión Literal{Literal}IN(,)

Prueba si un valor de ID de característica está en un conjunto determinado.Los valores de ID son números enteros o literales de cadena.

ExpresiónIS[NOT]NULL

Prueba si un valor es (no) nulo

AtributoEXISTS|DOES-NOT-EXIST

Prueba si un tipo de característica tiene (no) un atributo determinado

INCLUDE|EXCLUDE

Incluir (excluir) siempre las funciones a las que se aplica este filtro

Predicado temporal

Los predicados temporales especifican la relación de una expresión con valor de tiempo con un tiempo o período de tiempo.

Sintaxis

Descripción

Tiempo de expresiónBEFORE

Prueba si un valor de tiempo es anterior a un momento determinado

Período de tiempo de expresiónBEFOREORDURING

Prueba si un valor de tiempo es anterior o durante un período de tiempo

Período de tiempo de expresiónDURING

Prueba si un valor de tiempo es durante un período de tiempo

Período de tiempo de expresiónDURINGORAFTER

Prueba si un valor de tiempo es durante o después de un período de tiempo

Tiempo de expresiónAFTER

Prueba si un valor de tiempo es posterior a un momento determinado

Predicado espacial

Los predicados espaciales especifican la relación entre valores geométricos.Los predicados espaciales topológicos (INTERSECTS,,,,,DISJOINTy)se definenentérminos del modelo DE-9IM descrito en la especificación OGCCONTAINSSimpleFeatures for SQL.WITHINTOUCHESCROSSESOVERLAPSRELATE

Sintaxis

Descripción

INTERSECTS(Expresión ,Expresión)

Prueba si dos geometrías se cruzan.Lo contrario deDISJOINT

DISJOINT(Expresión ,Expresión)

Prueba si dos geometrías están separadas.Lo contrario deINTERSECTS

CONTAINS(Expresión ,Expresión)

Comprueba si la primera geometría contiene topológicamente a la segunda.Lo contrario deWITHIN

WITHIN(Expresión ,Expresión)

Comprueba si la primera geometría está topológicamente dentro de la segunda.Lo contrario deCONTAINS

TOUCHES(Expresión ,Expresión)

Prueba si dos geometrías se tocan.Las geometrías se tocan si tienen al menos un punto en común, pero sus interiores no se cruzan.

CROSSES(Expresión ,Expresión)

Prueba si dos geometrías se cruzan.Las geometrías se cruzan si tienen algunos pero no todos los puntos interiores en común.

OVERLAPS(Expresión ,Expresión)

Prueba si dos geometrías se superponen.Las geometrías se superponen si tienen la misma dimensión, tienen al menos un punto no compartido entre sí y la intersección de los interiores de las dos geometrías tiene la misma dimensión que las geometrías mismas.

EQUALS(Expresión ,Expresión)

Prueba si dos geometrías son topológicamente iguales.

RELATE(Patrón,de expresión,)

Prueba si las geometrías tienen la relación espacial especificada por unpatrónmatricial DE-9IM .Un patrón DE-9IM es una cadena de longitud 9 especificada utilizando los caracteres*TF012.Ejemplo:'1*T***T**'

DWITHIN(Expresión ,Expresiónunidades,de distancia,)

Prueba si la distancia entre dos geometrías no supera la distancia especificada.la distanciaes un valor numérico sin signo para la tolerancia de distancia.unidadeses uno defeet,meters,,,statutemilesnauticalmileskilometers

BEYOND(Expresión ,Expresiónunidades,de distancia,)

Similar aDWITHIN, pero prueba si la distancia entre dos geometrías es mayor que la distancia dada.

BBOX(,Número de expresión ,Número ,Número ,Número[,CRS])

Prueba si una geometría interseca un cuadro delimitador especificado por sus valores X e Y mínimo y máximo.ElCRSopcional es una cadena que contiene un código SRS (por ejemplo,.'EPSG:1234'El valor predeterminado es utilizar el CRS de la capa consultada).

BBOX(Expresión ,Expresión|Geometría)

Prueba si una geometría intersecta un cuadro delimitador especificado por un valor geométrico calculado por una función o proporcionado por un literal de geometría.

Expresión

Una expresión especifica un atributo, literal o valor calculado.El tipo de valor está determinado por la naturaleza de la expresión.Se utilizael orden de evaluación estándarPEMDAS .

Sintaxis

Descripción

Atributo

Nombre de un atributo de característica

Literal

valor literal

Expresión+|-|*|/Expresión

Operaciones aritmeticas

función([Expresión{,Expresión} ])

Valor calculado mediante la evaluación de unafunción de filtrocon cero o más argumentos.

(|[Expresión]|)

Horquillado conorden de evaluación de controles(o[

Atributo

El nombre de un atributo indica el valor de un atributo de característica.

Los nombres de atributos simples son secuencias de letras y números,

Los nombres de atributos entre comillas dobles pueden ser cualquier secuencia de caracteres.

Literal

Los literales especifican valores constantes de varios tipos.

Tipo

Descripción

Número

Número entero o de coma flotante.Se admite la notación científica.

Booleano

TRUEoFALSE

Cadena

Literal de cadena delimitado por comillas simples.Para incluir una comilla simple en la cadena, use dos comillas simples:''

Geometría

Geometría en formato WKT.WKT se define en lascaracterísticas simples de OGC parala especificación SQL.Se admiten todos los tipos de geometría estándar:POINT,LINESTRING,POLYGON,MULTIPOINT,MULTILINESTRING,MULTIPOLYGON,GEOMETRYCOLLECTION.También se admite un tipo personalizado de sobre con sintaxisx1x2y1y2.ENVELOPE()

Tiempo

Un valor de fecha/hora UTC en el formatoyyyy-mm-hhThh:mm:ss.El valor de los segundos puede tener una fracción decimal.La zona horaria se puede especificar comoZo+/-hh:mm.Ejemplo:2006-11-30T00:30:00Z

Duración

Una duración de tiempo especificada comoP[yYmMdD]T[hHmMsS].La duración se puede especificar con la precisión deseada incluyendo solo los componentes requeridos de año, mes, día, hora, minuto y segundo.Ejemplos:P1Y2M,P4Y2M20D,P4Y2M1DT20H3M36S

Periodo de tiempo

Especifica un período de tiempo, en varios formatos diferentes.

Sintaxis

Descripción

Tiempo /tiempo

Período especificado por una hora de inicio y finalización.

Duración /_

Período especificado por una duración antes de un momento determinado

Duración de tiempo/

Período especificado por una duración después de un tiempo determinado


Funciones de filtro

La especificación OGC Filter Encoding proporciona un concepto genérico defunción de filtro.Una función de filtro es una función con nombre con cualquier número de argumentos, que se puede utilizar en una expresión de filtro para realizar cálculos específicos.Esto proporciona una expresividad mucho más rica para definir filtros.Las funciones de filtro se pueden utilizar tanto en el lenguaje de codificación de filtro XML como en el lenguaje textual ECQL, utilizando la sintaxis adecuada al idioma.

GeoServer proporciona muchos tipos diferentes de funciones de filtro, cubriendo una amplia gama de funcionalidades que incluyen matemáticas, formato de cadenas y operaciones geométricas.Se proporciona una lista completa en laReferencia de funciones de filtro.

Nota

La especificación Filter Encoding proporciona una sintaxis estándar para funciones de filtro, pero no exige un conjunto específico de funciones.Los servidores son libres de proporcionar las funciones que quieran, por lo que algunas expresiones de funciones pueden funcionar sólo en un software específico.

Ejemplos

Los siguientes ejemplos muestran cómo se utilizan las funciones de filtro.El primero muestra el filtrado WFS mejorado utilizando lageometryTypefunción.El segundo muestra cómo usar funciones en SLD para mejorar la representación de etiquetas.

filtrado WFS

Supongamos que tenemos un tipo de entidad cuyo campo de geometría,geompuede contener cualquier tipo de geometría.Para una determinada aplicación necesitamos extraer solo las entidades cuya geometría es un punto simple o multipunto.Esto se puede hacer usando una función de filtro específica de GeoServer llamadageometryType.Aquí está la solicitud WFS, incluida la función de filtro:

<wfs:GetFeature service= "WFS" version= "1.0.0"

outputFormat= "GML2"

xmlns:wfs= "http://www.opengis.net/wfs"

xmlns:ogc= "http://www.opengis .net/ogc"

xmlns:xsi= "http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation= "http://www.opengis.net/wfs http://schemas.opengis. net/wfs/1.0.0/WFS-basic.xsd" >

<wfs:Query typeName= "sf:archsites" >

<ogc:Filter>

<ogc:PropertyIsEqualTo>

<ogc:Function name= "geometryType" >

<ogc: PropertyName> geom </ogc:PropertyName>

</ogc:Function>

<ogc:Literal> Punto </ogc:Literal>

</ogc:PropertyIsEqualTo>

</ogc:Filter>

</wfs:Query> </wfs:GetFeature >

Espacios de nombres WFS 2.0

WFS 2.0 no depende de ninguna versión de GML y, por lo tanto, requiere un espacio de nombres y una ubicación de esquema explícitos para GML.Este ejemplo POST selecciona características mediante una consulta espacial.Tenga en cuenta la declaración completa de prefijos de espacios de nombres.En una solicitud GET, los espacios de nombres se pueden colocar en un elemento de filtro.

<?xml versión="1.0" codificación="UTF-8"?> <wfs:GetFeature service= "WFS" versión= "2.0.0"

xmlns:wfs= "http://www.opengis.net/wfs/ 2.0"

xmlns:fes= "http://www.opengis.net/fes/2.0"

xmlns:gml= "http://www.opengis.net/gml/3.2"

xmlns:sf= "http://www .openplans.org/spearfish"

xmlns:xsi= "http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation= "http://www.opengis.net/wfs/2.0 http:// esquemas.opengis.net/wfs/2.0/wfs.xsd http://www.opengis.net/gml/3.2 http://schemas.opengis.net/gml/3.2.1/gml.xsd" >

<wfs: Query typeNames= "sf:bugsites" >

<fes:Filter>

<fes:Not>

<fes:Disjoint>

<fes:ValueReference> sf:the_geom </fes:ValueReference>

<!-- gml:id es obligatorio en GML 3.2 elementos geométricos -->

<gml:Polygon

gml:id= "polygon.1"

srsName= 'http://www.opengis.net/def/crs/EPSG/0/26713' >

<gml:exterior>

<gml: LinearRing>

<!-- los pares deben formar un anillo cerrado -->

<gml:posList> 590431 4915204 590430

4915205 590429 4915204 590430

4915203 590431 4915204 </gml:posList>

</gml:LinearRing>

</gml:exterior> </

gml:Polygon> </

fes:Disjoint> <

/fes:Not>

</fes:Filter>

</wfs:Query > </wfs:GetFeature>

Formateo SLD

Queremos mostrar etiquetas de elevación en un mapa de contorno.Las elevaciones se almacenan como valores de punto flotante, por lo que los valores numéricos sin procesar pueden mostrarse con decimales no deseados (como "150,0" o "149,999999").Queremos asegurarnos de que los números se redondeen adecuadamente (es decir, que muestren “150”).Para lograr esto, lanumberFormatfunción de filtro se puede utilizar en la expresión de contenido de la etiqueta SLD:

...

<TextSymbolizer>

<Label>

<ogc:Function name= "numberFormat" >

<ogc:Literal> ## </ogc:Literal>

<ogc:PropertyName> ELEVACIÓN </ogc:PropertyName>

</ogc:Function>

</Etiqueta>

...</TextSymbolizer>

...

Implicaciones de rendimiento

El uso de funciones de filtro en expresiones del simbolizador SLD no tiene una sobrecarga significativa, a menos que la función esté realizando cálculos muy pesados.

Sin embargo, el uso de funciones en el filtrado WFS o expresiones de reglas SLD puede causar problemas de rendimiento en ciertos casos.Esto generalmente se debe a que un codificador de filtro del almacén de datos nativo no reconoce funciones de filtro específicas y, por lo tanto, GeoServer debe ejecutar las funciones en la memoria.

Por ejemplo, dado un filtro comola mayoría de los almacenes de datos, se dividirá el filtro en dos partes separadas.El filtro del cuadro delimitador se codificará como un filtro principal y se ejecutará en SQL, mientras que lafunción se ejecutará en la memoria con los resultados provenientes del filtro principal.BBOX(geom,-10,30,20,45)andgeometryType(geom)='Point'geometryType


Referencia de función de filtro

Esta referencia describe todas las funciones de filtro que se pueden utilizar en el filtrado WFS/WMS o en expresiones SLD.

La lista de funciones disponibles en una instancia de Geoserver se puede determinar navegando ahttp://localhost:8080/geoserver/wfs?request=GetCapabilitiesy buscandoogc:FunctionNamesen el XML devuelto.Si una función se describe en el documento Capacidades pero no se encuentra en esta referencia, entonces podría significar que la función no se puede utilizar para filtrar o que es nueva y no se ha documentado.Solicite detalles sobre la lista de correo de usuarios.

A menos que se especifique lo contrario, los almacenes de datos no entienden ninguna de las funciones de filtro de esta referencia de forma nativa y, por lo tanto, las expresiones que las utilicen se evaluarán en la memoria.

Referencia del tipo de argumento de función

Tipo

Descripción

Doble

Número de coma flotante, 8 bytes, IEEE 754. Varía de 4.94065645841246544e-324d a 1.79769313486231570e+308d

Flotar

Número de coma flotante, 4 bytes, IEEE 754. Varía de 1.40129846432481707e-45 a 3.40282346638528860e+38.Alcance más pequeño y menos preciso que Double.

Entero

Número entero, que va desde -2.147.483.648 a 2.147.483.647

Largo

Número entero, que va desde -9.223.372.036.854.775.808 a +9.223.372.036.854.775.807

Número

Un valor numérico de cualquier tipo.

Objeto

Un valor de cualquier tipo.

Cadena

Una secuencia de personajes.

Marca de tiempo

Información de fecha y hora

Funciones de comparación

Nombre

Argumentos

Descripción

entre

num:Número,low:Número,high:Número

devuelve verdadero silow<=num<=high

igual a

a:ObjetobObjeto

Se puede utilizar para comparar la igualdad de dos números, dos cadenas, dos fechas, etc.

mayorigualque

x:ObjetoyObjeto

Devuelve verdadero six>=y.Los parámetros pueden ser números o cadenas (en el segundo caso se utiliza el orden lexicográfico)

mas grande que

x:ObjetoyObjeto

Devuelve verdadero six>y.Los parámetros pueden ser números o cadenas (en el segundo caso se utiliza el orden lexicográfico)

en2, en3, en4, en5, en6, en7, en8, en9, en10

candidate:Objeto,v1:Objeto, ...,v9:Objeto

Devuelve verdadero sicandidatees igual a uno de losvaloresv1, ....v9Utilice el nombre de la función que coincida con el número de argumentos especificados.

en

candidate:Objeto,v1:Objeto,v2:Objeto, ...

Funciona exactamente igual que las funciones in2, ..., in10 descritas anteriormente, pero toma cualquier número de valores como entrada.

es como

string:cadena,pattern:cadena

Devuelve verdadero si la cadena coincide con el patrón especificado.Para obtener la sintaxis completa de la especificación del patrón, consulte losjavadocs de la clase Java Pattern.

es nulo

obj:Objeto

Devuelve verdadero, el parámetro pasado esnullfalso, en caso contrario

menos que

x:ObjetoyObjeto

Devuelve verdadero six<y.Los parámetros pueden ser números o cadenas (en el segundo caso se utiliza el orden lexicográfico).

menos igual que

x:ObjetoyObjeto

Devuelve verdadero six<=y.Los parámetros pueden ser números o cadenas (en el segundo caso se utiliza el orden lexicográfico).

no

bool: booleano

Devuelve la negación debool

no es igual

x:ObjetoyObjeto

Devuelve verdadero sixyyson iguales, falso en caso contrario

Funciones de control

Nombre

Argumentos

Descripción

si_entonces_else

condition:Booleano,x:Objeto,y: Objeto

Devuelvexsi la condición es verdadera,yen caso contrario

Función ambiental

Esta función devuelve el valor de las variables de entorno definidas en varios contextos.Los contextos que definen las variables de entorno incluyenla representación SLDyWMS Animator.

Nombre

Argumentos

Descripción

ambiente

variable:Cadena

Devuelve el valor de la variable de entornovariable.

Funciones destacadas

Nombre

Argumentos

Descripción

identificación

feature:Característica

devuelve el identificador de la característica

La propiedad existe

f:Característica,propertyName:Cadena

Devuelvetruesiftiene una propiedad llamadapropertyName

propiedad

f:Característica,propertyName:Cadena

Devuelve el valor de la propiedadpropertyName.Permite calcular o especificar nombres de propiedades mediantesustitución de variables en SLD.

Funciones de relación espacial

Para obtener más información sobre el significado preciso de las relaciones espaciales, consulte laEspecificación de características simples de OGC para SQL.

Nombre

Argumentos

Descripción

contiene

a:Geometría,b:Geometría

Devuelve verdadero si la geometríaacontieneb

cruces

a:Geometría,b:Geometría

Devuelve verdadero siase cruzab

desarticular

a:Geometría,b:Geometría

Devuelve verdadero si las dos geometrías están separadas, falso en caso contrario.

es igualExacta

a:Geometría,b:Geometría

Devuelve verdadero si las dos geometrías son exactamente iguales, mismas coordenadas en el mismo orden

es igual a Tolerancia exacta

a:Geometría,b:Geometría,tol:Doble

Devuelve verdadero si las dos geometrías son exactamente iguales, las mismas coordenadas en el mismo orden, permitiendo unatoldistancia en los puntos correspondientes

se cruza

a:Geometría,b:Geometría

Devuelve verdadero siase cruzab

está dentro de la distancia

a: Geometría,b:Geometría,distance: Doble

Devuelve verdadero si la distancia entreaybes menor quedistance(medida como una distancia euclidiana)

se superpone

a: Geometría,b:Geometría

Devuelve verdaderasasuperposiciones conb

relatar

a: Geometría,b:Geometría

Devuelve la matriz de intersección DE-9IM paraayb

relacionarPatrón

a: Geometría,b:Geometría,pattern:Cadena

Devuelve verdadero si la matriz de intersección DE-9IM coincideaconbel patrón especificado

toca

a: Geometría,b: Geometría

Devuelve verdadero siase tocabde acuerdo con las reglas de especificación de características simples de SQL

dentro

a: Geometría,b:Geometría

Devuelve verdadero y está completamente contenido en el interior.b

Funciones geométricas

Nombre

Argumentos

Descripción

área

geometry:Geometría

El área de la geometría especificada.Funciona en un plano cartesiano, el resultado estará en la misma unidad de medida que las coordenadas geométricas (lo que también significa que los resultados no tendrán ningún sentido para los datos geográficos)

Perímetro

geometry:Geometría

Devuelve el límite de una geometría.

dimensión límite

geometry:Geometría

Devuelve el número de dimensiones del límite geométrico.

buffer

geometry:Geometría,distance:Doble

Devuelve el área protegida alrededor de la geometría usando la distancia especificada

bufferConSegmentos

geometry:Geometría,distance:Doble,segments:Entero

Devuelve el área protegida alrededor de la geometría usando la distancia especificada y usando el número especificado de segmentos para representar un cuadrante de un círculo.

centroide

geometry:Geometría

Devuelve el centroide de la geometría.A menudo se puede utilizar como punto de etiqueta para polígonos, aunque no hay garantía de que realmente se encuentre dentro de la geometría.

casco convexo

geometry:Geometría

Devuelve el casco convexo de la geometría especificada.

diferencia

a:Geometría,b:Geometría

Devuelve todos los puntos que se encuentranapero no enb

dimensión

a:Geometría

Devuelve la dimensión de la geometría especificada.

distancia

a:Geometría,b:Geometría

Devuelve la distancia euclidiana entre las dos geometrías.

ángulo final

line:línealínea

Devuelve el ángulo del segmento final de la cadena lineal.

punto final

line:línealínea

Devuelve el punto final de la cadena lineal.

sobre

geometry:geometría

Devuelve el polígono que representa la envolvente de la geometría, es decir, el rectángulo mínimo con lados paralelos al eje que lo contiene.

exteriorAnillo

poly:Polígono

Devuelve el anillo exterior del polígono especificado.

Tipo de geometría

geometry:Geometría

Devuelve el tipo de geometría como una cadena.Tal vezPoint,MultiPoint,LineString,LinearRing,MultiLineString,Polygon,MultiPolygon,GeometryCollection

geomFromWKT

wkt:Cadena

Devuelve loGeometryrepresentado en el formato Texto conocido contenido en elwktparámetro

geomLongitud

geometry:Geometría

Devuelve la longitud/perímetro de esta geometría (calculada en espacio cartesiano)

obtenerGeometríaN

collection:GeometryCollection,n:Entero

Devuelve la enésima geometría dentro de la colección.

obtenerX

p:Punto

Devuelve laxordenada dep

obtenerY

p:Punto

Devuelve layordenada dep

obtenerZ

p:Punto

Devuelve lazordenada dep

punto interior

geometry:Geometría

Devuelve un punto que es interior a la geometría, cuando sea posible, o ubicado en su límite, en caso contrario

interiorAnilloN

polyg:Polígono,n:Entero

Devuelve el n-ésimo anillo interior del polígono.

intersección

a:Geometría,b:Geometría

Devuelve la intersección entreayb.El resultado de la intersección puede ser cualquier cosa, incluida una colección de geometría heterogénea; si el resultado está vacío, estará representado por una colección vacía.

está cerrado

line: cadena de línea

Devuelve verdadero silineforma un anillo cerrado, es decir, si la primera y la última coordenadas son iguales

esta vacio

geometry:Geometría

Devuelve verdadero si la geometría no contiene ningún punto (caso típico, una colección de geometría vacía)

isométrico

geometry:Geometría,extrusion:Doble

Devuelve un MultiPolygon que contiene las extrusiones isométricas de todos los componentes de la geometría de entrada.La distancia de extrusión esextrusion, expresada en la misma unidad que las coordenadas geométricas.Se puede utilizar para obtener un efecto pseudo-3D en un mapa.

esAnillo

line:línealínea

Devuelve verdadero silineen realidad es un anillo cerrado (equivalente a)isRing(line)andisSimple(line)

es simple

line:línealínea

Devuelve verdadero si la geometría se intersecta solo en los puntos límite

es válida

geometry: Geometría

Devuelve verdadero si la geometría es topológicamente válida (los anillos están cerrados, los agujeros están dentro del casco, etc.)

numGeometrías

collection: Colección Geometría

Devuelve el número de geometrías contenidas en la colección de geometrías.

numAnilloInterior

poly: Polígono

Devuelve el número de anillos interiores (agujeros) dentro del polígono especificado.

númeroPunto

geometry: Geometría

Devuelve el número de puntos (vértices) contenidos engeometry

compensar

geometry: Geometría,offsetX:Doble,offsetY:Doble

Desplaza todos los puntos de una geometría según los desplazamientos X e Y especificados.Los desplazamientos funcionan en el mismo sistema de coordenadas que las coordenadas propias de la geometría.

puntoN

geometry: Geometría,n:Entero

Devuelve el enésimo punto dentro de la geometría especificada

ángulo inicial

line: cadena de línea

Devuelve el ángulo del segmento inicial de la cadena lineal de entrada.

punto de partida

line: cadena de línea

Devuelve el punto inicial de la cadena lineal de entrada.

diferencia simbólica

a: Geometría,b:Geometría

Devuelve la diferencia simétrica entreayb(todos los puntos que están dentroade ob, pero no ambos)

aWKT

geometry: Geometría

Devuelve la representación WKT degeometry

Unión

a: Geometría,b:Geometría

Devuelve la unión deayb(el resultado puede ser una colección de geometría)

vértices

geom: Geometría

Devuelve un multipunto formado por todos los vértices degeom

Funciones matemáticas

Nombre

Argumentos

Descripción

abdominales

value:Entero

El valor absoluto del entero especificado.value

abs_2

value:Largo

El valor absoluto del Long especificadovalue

abs_3

value:Flotar

El valor absoluto del Float especificado.value

abs_4

value:Doble

El valor absoluto del Double especificadovalue

acos

angle:Doble

Devuelve el arco coseno de anangleen radianes, en el rango de 0,0 aPI

como en

angle:Doble

Devuelve el arco seno de anangleen radianes, en el rango dehasta-PI/2PI/2

un bronceado

angle:Doble

Devuelve el arco tangente de un ángulo en radianes, en el rango de-PI/2travésPI/2

atan2

x:Dobleydoble

Convierte una coordenada rectangularen polar(r, theta)y devuelvetheta.(x,y)

fortificar techo

x: Doble

Devuelve el valor doble más pequeño (más cercano al infinito negativo) que es mayor o igualxy es igual a un entero matemático.

porque

angle: Doble

Devuelve el coseno de unangleexpresado en radianes

doble2bool

x: Doble

Devuelvetruesixes cero,falseen caso contrario

Exp

x: Doble

Devuelve el número ede Eulerelevado a la potencia dex

piso

x: Doble

Devuelve el valor más grande (más cercano al infinito positivo) que es menor o igualxy es igual a un entero matemático

IEEEresto

x: Dobleydoble

Calcula el resto dexdividido porysegún lo prescrito por el estándar IEEE 754

int2bbool

x: Entero

Devuelve verdadero sixes cero, falso en caso contrario

int2ddoble

x: Entero

Se conviertexen doble

registro

x: Entero

Devuelve el logaritmo natural (basee) dex

máx, máx_3, máx_4

x1: Doble,x2:Doble,x3:Doble,x4:Doble

Devuelve el máximo entrex1, ...,x4

min, min_3, min_4

x1: Doble,x2:Doble,x3:Doble,x4:Doble

Devuelve el mínimo entrex1, ...,x4

Pi

Ninguno

Devuelve una aproximación depi, la relación entre la circunferencia de un círculo y su diámetro

poder

base:Dobleexponentdoble

Devuelve el valor debaseelevado a la potencia deexponent

aleatorio

Ninguno

Devuelve un valor Double con signo positivo, mayor o igual que0.0y menor que1.0.Los valores devueltos se eligen pseudoaleatoriamente con una distribución (aproximadamente) uniforme de ese rango.

imprimir

x:Doble

Devuelve el valor Doble que tiene el valor más cercano al argumento y es igual a un entero matemático.Si dos valores dobles que son números enteros matemáticos están igualmente cerca, el resultado es el valor entero par.

la ronda 2

x:Doble

Igual queround, pero devuelve un Long

redondo

x:Doble

Devuelve el entero más cercano ax.El resultado se redondea a un número entero sumando 1/2, tomando el mínimo del resultado y convirtiéndolo al tipo Integer.En otras palabras, el resultado es igual al valor de la expresión.(int)floor(a+0.5)

redondoDoble

x:Doble

Devuelve el Long más cercano ax

broncearse

angle:Doble

Devuelve la tangente trigonométrica deangle

a Grados

angle:Doble

Convierte un ángulo expresado en radianes a grados

aRadianes

angle:Doble

Convierte un ángulo expresado en radianes a grados

Funciones de cadena

Las funciones de cadena generalmente aceptarán cualquier tipo de valor comoStringargumento.Los valores que no son cadenas se convertirán automáticamente en una representación de cadena.

Nombre

Argumentos

Descripción

Concatenar

s1:Cadena,s2:Cadena, ...

Concatena cualquier número de cadenas.Se permiten argumentos que no sean cadenas.

strCapitalizar

sentence:Cadena

Escribe completamente en mayúscula la oración.Por ejemplo, "¿Cómo estás?"se convertirá en "¿Cómo estás?"

strConcat

a:cadena,b:cadena

Concatena las dos cadenas en una

strEndsWith

string:cadena,suffix:cadena

Devuelve verdadero sistringtermina consuffix

strEqualsIgnoreCase

a:cadena,b:cadena

Devuelve verdadero si las dos cadenas son iguales ignorando las consideraciones entre mayúsculas y minúsculas.

strIndexOf

string:cadena,substring:cadena

Devuelve el índice dentro de esta cadena de la primera aparición de la subcadena especificada, o-1si no se encuentra

strLastIndexOf

string:cadena,substring:cadena

Devuelve el índice dentro de esta cadena de la última aparición de la subcadena especificada, o-1si no se encuentra

strLongitud

string:Cadena

Devuelve la longitud de la cadena

strPartidos

string:cadena,pattern:cadena

Devuelve verdadero si la cadena coincide con la expresión regular especificada.Para obtener la sintaxis completa de la especificación del patrón, consulte losjavadocs de la clase Java Pattern.

strReemplazar

string:Cadena,pattern:Cadena,replacement:Cadena,global: booleano

Devuelve la cadena con el patrón reemplazado con el texto de reemplazo dado.Si elglobalargumento estrueentonces se reemplazarán todas las apariciones del patrón; de lo contrario, solo la primera.Para obtener la sintaxis completa de la especificación del patrón, consulte losjavadocs de la clase Java Pattern.

strComienzaCon

string:cadena,prefix:cadena

Devuelve verdadero sistringcomienza conprefix

strSubcadena

string:Cadena,begin:Entero,end:Entero

Devuelve una nueva cadena que es una subcadena de esta cadena.La subcadena comienza en el carácter especificadobeginy se extiende hasta el carácter en el índice(los índices están basados ​​en cero).endIndex-1

strSubstringStart

string:Cadena,begin:Entero

Devuelve una nueva cadena que es una subcadena de esta cadena.La subcadena comienza en el especificadobeginy se extiende hasta el último carácter de la cadena.

strToLowerCase

string:Cadena

Devuelve la versión en minúsculas de la cadena.

strToUpperCase

string:Cadena

Devuelve la versión en mayúsculas de la cadena.

strRecortar

string:Cadena

Devuelve una copia de la cadena, con los espacios en blanco iniciales y finales omitidos.

Funciones de análisis y formato.

Nombre

Argumentos

Descripción

formato de fecha

date:Marca de tiempo,format:Cadena

Formatea la fecha especificada según el formato proporcionado.La sintaxis del formato se puede encontrar en losjavadocs Java SimpleDateFormat.

fechaAnalizar

dateString:cadena,format:cadena

Analiza una fecha a partir de undateStringformato de acuerdo con laformatespecificación.La sintaxis del formato se puede encontrar en losjavadocs Java SimpleDateFormat.

formato numérico

number:Doble,format:Cadena

Formatea el número según lo especificadoformat.La sintaxis del formato se puede encontrar en losjavadocs Java DecimalFormat.

análisis booleano

boolean:Cadena

Analiza una cadena en un valor booleano.La cadena vacía,fy0.0se0consideran falsas, todo lo demás se considera verdadero.

analizarDoble

number:Cadena

Analiza una cadena en un doble.El número se puede expresar en forma normal o científica.

parseInt

number:Cadena

Analiza una cadena en un número entero.

analizar largo

number:Cadena

Analiza una cadena en un entero largo

Funciones de transformación

Las funciones de transformación transforman valores de un espacio de datos a otro.Estas funciones proporcionan una forma concisa de calcular parámetros de estilo a partir de valores de atributos de características.Consulte tambiénAplicar estilo mediante funciones de transformación.

Nombre

Argumentos

Descripción

Recodificar

lookupValue:Objeto,

data:ObjetovalueObjeto, ...

Transforma alookupValuede un conjunto de valores de datos discretos en otro conjunto de valores.Se puede especificarcualquier número de paresdata/ .value

Clasificar por categorías

lookupValue:ObjetovalueObjeto,

threshold:ObjetovalueObjeto,

belongsTo: Cadena

Transforma un valor de atributo de valor continuo en un conjunto de valores discretos.lookupValueyvaluedebe ser de un tipo ordenable (normalmente numérico).valueSe requierela inicial .Se puede especificarcualquier número de paresthreshold/ adicionales.es opcional, con el valoro.Define qué intervalo usar cuando el valor de búsqueda es igual a un valor umbral.valuebelongsTosucceedingpreceding

Interpolar

lookupValue:Numérico,

data:Numérico,value:Numéricoo#RRGGBB, ...

mode:cadena,method:cadena

Transforma un valor de atributo de valor continuo en otro rango continuo de valores.Se puede especificarcualquier número de paresdata/ .es opcional, con el valor,o.Define el algoritmo de interpolación a utilizar.es opcional, con el valoro.Define si los valores objetivo son especificaciones de color numéricas o RGB.valuemodelinearcosinecubicmethodnumericcolor


Estilo

Esta sección analiza el estilo de los datos geoespaciales proporcionados a través de GeoServer.

Introducción a SLD

Conceptos SLD

Tipos de estilo

Un ejemplo de estilo básico

Trabajando con SLD

Creando

Visita

Solución de problemas

Libro de cocina SLD

Puntos

Líneas

Polígonos

Rásteres

Referencia SLD

Descriptor de capa con estilo

Capas

Estilos

Normas

Filtros

Simbolizador de puntos

LíneaSymbolizer

PolígonoSimbolizador

Simbolizador de texto

Etiquetado

RásterSymbolizer

Extensiones SLD en GeoServer

Transformaciones de geometría en SLD

Transformaciones de renderizado

Simbología gráfica en GeoServer

Sustitución de variables en SLD

Especificación de tamaños de simbolizadores en unidades terrestres

Obstáculos de etiquetas

Agregar espacio alrededor de rellenos gráficos

Se llena con símbolos aleatorios

Composición y combinación de colores.

Funciones de orden Z dentro y entre tipos de entidades y capas

Consejos y trucos SLD

Aplicar estilos a tipos de geometría mixta

Estilo usando funciones de transformación


Introducción a SLD

Los datos geoespaciales no tienen ningún componente visual intrínseco.Para ver los datos, se debe aplicar un estilo.El estilo especifica el color, el grosor y otros atributos visibles utilizados para representar datos en un mapa.

En GeoServer, el estilo se logra utilizando un lenguaje de marcado llamadoStyled Layer Descriptor, o SLD para abreviar.SLD es un lenguaje de marcado basado en XML y es muy potente, aunque algo complejo.Esta página ofrece una introducción a las capacidades de SLD y cómo funciona dentro de GeoServer.

Nota

Dado que GeoServer usa SLD exclusivamente para diseñar, los términos "SLD" y "estilo" a menudo se usarán indistintamente.

Conceptos SLD

En GeoServer, el estilo se especifica con mayor frecuencia utilizandodocumentos de estilo XML SLD.Los documentos de estilo están asociados concapasde GeoServer (tipos de características) para especificar cómo debenrepresentarse.Un documento de estilo especifica una únicacapa con nombrey unestilo de usuariopara ella.La capa y el estilo pueden tener elementos de metadatos como unnombreque los identifique, untítulopara mostrarlos y unresumenque los describa en detalle.Dentro del estilo de nivel superior hay uno o másestilos de tipo de entidad, que actúan como “capas virtuales” para proporcionar control sobre el orden de representación (permitiendo efectos de estilo como líneas revestidas para carreteras).Cada estilo de tipo de característica contiene una o másreglas, que controlan cómo se aplica el estilo según los atributos de la característica y el nivel de zoom.Las reglas seleccionan características aplicables mediante el usode filtros, que son condiciones lógicas que contienenpredicados,expresionesyfunciones de filtro.Para especificar los detalles del estilo de entidades individuales, las reglas contienen cualquier número desimbolizadores.Los simbolizadores especifican el estilo depuntos,líneasypolígonos, así comorásteresyetiquetas de texto.

Para obtener más información, consulte laReferencia SLD.

Tipos de estilo

Los datos vectoriales que GeoServer puede proporcionar constan de tres clases de formas:puntos, líneas y polígonos.Las líneas (formas unidimensionales) son las más simples, ya que solo tienen el borde para diseñar (también conocido como “trazo”).Los polígonos, formas bidimensionales, tienen un borde y un interior (también conocido como "relleno"), y ambos pueden tener estilos diferentes.Los puntos, aunque carecen de dimensión, tienen tanto un borde como un relleno (sin mencionar un tamaño) al que se le puede aplicar estilo.Para los rellenos, se puede especificar el color;para los trazos, se puede especificar el color y el grosor.

GeoServer también sirve datos ráster.Esto se puede diseñar con una amplia variedad de controles sobre la paleta de colores, la opacidad, el contraste y otros parámetros.

También es posible un estilo más avanzado.Los puntos se pueden especificar con formas conocidas como círculos, cuadrados, estrellas e incluso gráficos o texto personalizados.Las líneas se pueden diseñar con estilos de guión y hashes.Los polígonos se pueden rellenar con gráficos en mosaico personalizados.El estilo puede basarse en atributos de los datos, de modo que ciertas características tengan un estilo diferente.También son posibles etiquetas de texto en funciones.El estilo también se puede determinar mediante el nivel de zoom, de modo que las características se muestren de manera apropiada a su tamaño aparente.Las posibilidades son enormes.

Un ejemplo de estilo básico

Una buena forma de aprender sobre SLD es estudiar ejemplos de estilo.El siguiente es un SLD simple que se puede aplicar a una capa que contiene puntos, para diseñarlos como círculos rojos con un tamaño de 6 píxeles.(Este es el primer ejemplo de la secciónPuntosdelLibro de recetas de SLD).

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

dieciséis

17

18

19

20

21

22

23

24

25

26

27

28

29

<?xml versión="1.0" codificación="ISO-8859-1"?> <StyledLayerDescriptor versión= "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" >

<NamedLayer>

<Name> Punto simple </Name>

<UserStyle>

<Title> Libro de recetas de GeoServer SLD: Punto simple </Title>

<FeatureTypeStyle>

<Regla>

<PointSymbolizer>

<Gráfico>

<Marca>

<WellKnownName> círculo </WellKnownName>

<Relleno>

<CssParameter nombre= "relleno" > #FF0000 </CssParameter>

</Fill>

</Mark>

<Tamaño > 6 </Size>

</Graphic>

</PointSymbolizer>

</Rule>

</FeatureTypeStyle>

</UserStyle>

</NamedLayer> </StyledLayerDescriptor>

Aunque el ejemplo parece largo, sólo es importante comprender unas pocas líneas.La línea 14establece que se utilizará un "PointSymbolizer" para diseñar datos como puntos.Las líneas 15 a 17establecen que los puntos deben diseñarse utilizando una forma gráfica especificada por un "nombre conocido", en este caso un círculo.SLD proporciona nombres para muchas formas, como "cuadrado", "estrella", "triángulo", etc.Las líneas 18 a 20especifican que la forma debe rellenarse con un color#FF0000(rojo).Este es un código de color RGB, escrito en hexadecimal, con el formato #RRGGBB.Finalmente,la línea 22especifica que el tamaño de la forma es de 6 píxeles de ancho.El resto de la estructura contiene metadatos sobre el estilo, como un nombre que identifica el estilo y un título para usar en leyendas.

Nota

En los documentos SLD, algunas etiquetas tienen prefijos, comoogc:.Esto se debe a que están definidos enespacios de nombres XML.StyledLayerDescriptorLa etiquetade nivel superior (líneas 2 a 7) especifica dos espacios de nombres XML, uno llamadoxmlnsy otro llamadoxmlns:ogc.El primer espacio de nombres es el predeterminado para el documento, por lo que las etiquetas que le pertenecen no necesitan un prefijo.Las etiquetas que pertenecen al segundo requieren el prefijoogc:.De hecho, los prefijos del espacio de nombres pueden ser cualquier identificador.Se podría llamar al primer espacio de nombresxmlns:sld(como suele ser el caso) y luego todas las etiquetas en este ejemplo requerirían unsld:prefijo.El punto clave es que las etiquetas deben tener el prefijo del espacio de nombres al que pertenecen.

Consulte elLibro de cocina SLDpara obtener más ejemplos de peinado con SLD.

Trabajando con SLD

Esta sección describe cómo crear, ver y solucionar problemas de estilo SLD en GeoServer.

Creando

GeoServer viene con algunos estilos básicos definidos en su catálogo.Se puede agregar cualquier cantidad de estilos nuevos al catálogo.Los estilos también se pueden especificarexternamenteal servidor, ya sea para definir un mapa completo o para ampliar el catálogo de estilos del servidor usando elmodo biblioteca.

Estilos de catálogo

Los estilos del catálogo se pueden ver, editar y validar a través del menúEstilosde lainterfaz de administración web.También se pueden crear y acceder a ellos a través de la APIde estilosREST .

Los estilos de catálogo constan de un documentoStyledLayerDescriptorque contiene un único<NamedLayer>elemento, que contiene un único<UserStyle>elemento para especificar el estilo.El nombre de la capa se ignora, ya que el estilo se puede aplicar a muchas capas diferentes.

Cada capa (tipo de característica) registrada con GeoServer debe tener al menos un estilo de catálogo asociado, que es el estilo predeterminado para representar la capa.Se puede asociar cualquier número de estilos adicionales con una capa.Esto permite que las capas tengan estilos apropiados anunciados en elGetCapabilitiesdocumento WMS.Los estilos de una capa se pueden cambiar usando la páginaCapasde laInterfaz de administración web.

Nota

Al agregar una capa y un estilo a GeoServer al mismo tiempo, el estilo debe agregarse primero, para que la nueva capa pueda asociarse con el estilo inmediatamente.

Estilos externos

El estilo se puede definir externamente al servidor de varias maneras:

Se puede proporcionar un documento SLD accesible a través de Internet a través delSLD=urlparámetro en unasolicitud GET WMSGetMap

Se puede proporcionar un documento SLD directamente en una solicitud GET de WMSGetMaputilizando elSLD_BODY=styleparámetro.El XML SLD debe estar codificado en URL.

Se puede incluirun elementoStyledLayerDescriptorGetMapen un documento XML de solicitud POST de WMS.

En todos estos casos, silayersno se proporciona el parámetro WMS, el contenido del mapa se define completamente por las capas y estilos presentes en el SLD externo.Si ellayersparámetro está presente, el estilo funciona enmodo biblioteca.

Los estilos externos pueden definir nuevas capas de datos con estilo, utilizando el elemento SLDInlineFeaturepara proporcionar datos de características.Esto se puede utilizar para implementar el resaltado dinámico de funciones, por ejemplo.

Las aplicaciones cliente pueden generar estilos externos dinámicamente. Esto proporciona una manera poderosa para que los clientes controlen los efectos de estilo.

Modo biblioteca

Enel modo biblioteca, los estilos definidos externamente se tratan como unabiblioteca de estilos, que actúa como una extensión del catálogo de estilos del servidor.El modo de biblioteca ocurre cuando las capas y estilos del mapa se especifican usando los parámetroslayersystylesWMS, y se proporcionan estilos adicionales externamente usando uno de los métodos descritos en la sección anterior.Los estilos del documento de estilo externo tienen prioridad sobre los estilos del catálogo durante la renderización.

La búsqueda de estilos en modo biblioteca funciona de la siguiente manera:

Para cada capa de lalayerslista, el estilo aplicado es un estilo con nombre especificado en lastyleslista (si está presente) o el estilo predeterminado de la capa.

Para un estilocon nombre, si el documento de estilo eterno tiene un<NamedLayer>...<UserStyle>nombre de capa y un nombre de estilo coincidentes, entonces se utiliza.De lo contrario, se busca el nombre del estilo en el catálogo.Si no se encuentra allí, se produce un error.

Para un estilopredeterminado, se busca en el documento de estilo externo un<NamedLayer>elemento con el nombre de la capa.Si contiene un elemento<UserStyle>con<IsDefault>el valor,1entonces se utiliza ese estilo.De lo contrario, se utiliza el estilo de servidor predeterminado para la capa (que debe existir).

Generalmente es más sencillo y eficaz utilizar estilos del catálogo del servidor.Sin embargo, el modo biblioteca puede ser útil si es necesario aplicar estilo a un mapa que contiene muchas capas y donde solo algunas de ellas necesitan tener su estilo definido externamente.

Visita

Una vez que se ha asociado un estilo con una capa, la representación resultante de los datos de la capa se puede ver usando laVista previa de capa.El formato de salida más conveniente para usar es el visor OpenLayers integrado.Los estilos se pueden modificar mientras la vista está abierta y su efecto es visible tan pronto como se desplaza o se hace zoom en la vista del mapa.Se pueden ver estilos alternativos especificándolos en elstylesparámetro de solicitud WMS.

Para ver el efecto de componer varias capas con estilo, hay varios enfoques disponibles:

Cree ungrupo de capaspara las capas deseadas usando la páginaGrupos de capasy obtenga una vista previa.Si es necesario, se pueden especificar estilos no predeterminados para las capas.

Envíe una solicitud GET WMSGetMapespecificando varias capas en ellayersparámetro y los estilos correspondientes en elstylesparámetro (si se requieren estilos no predeterminados).

Envíe unaGetMapsolicitud POST de WMS que contenga un elementoStyledLayerDescriptorque especifique capas de servidor, capas opcionales de datos en línea y estilos de catálogo con nombre o estilos definidos por el usuario para cada capa.

Solución de problemas

SLD es un tipo de lenguaje de programación, similar a la creación de una página web o la creación de un script.Como tal, pueden surgir problemas que requieran solución.

Errores de sintaxis

Para minimizar los errores de sintaxis al crear el SLD, se recomienda utilizar un editor de texto diseñado para funcionar con XML (como eleditor de estilosproporcionado en la interfaz de usuario de GeoServer).Los editores XML pueden facilitar la búsqueda de errores de sintaxis al proporcionar resaltado de sintaxis y (a veces) verificación de errores integrada.

El editor de estiloGeoServerpermite validar un documento con el esquema XML SLD.Esto no es obligatorio, pero se recomienda hacerlo antes de guardar estilos.

Errores semánticos

Los errores semánticos no pueden detectarse mediante la validación SLD, pero aparecen cuando se aplica un estilo durante la representación del mapa.La mayoría de las veces, esto dará como resultado un mapa que no muestra características (un mapa en blanco), pero algunos errores impedirán que el mapa se represente.

La forma más sencilla de corregir errores semánticos en una SLD es intentar aislar el error.Si el SLD es largo y tiene muchas reglas y filtros, intente eliminar temporalmente algunos de ellos para ver si los errores desaparecen.

En algunos casos, el servidor generará un documento de excepción WMS que puede ayudar a identificar el error.También vale la pena consultar el registro del servidor para ver si se ha registrado algún mensaje de error.


Libro de cocina SLD

El libro de cocina SLD es una colección de “recetas” SLD para crear varios tipos de estilos de mapas.Siempre que sea posible, cada ejemplo está diseñado para mostrar una única característica de SLD, de modo que el código pueda copiarse de los ejemplos y adaptarse al crear sus propios SLD.Si bien no es una referencia exhaustiva como laReferencia SLDo laespecificación OGC SLD 1.0, el Libro de recetas SLD está diseñado para ser una referencia práctica, que muestra plantillas de estilo comunes que son fáciles de entender.

El Libro de recetas SLD está dividido en cuatro secciones: las tres primeras para cada uno de los tipos de vectores (puntos, líneas y polígonos) y la cuarta sección para rásteres.Cada ejemplo en cada sección contiene una captura de pantalla que muestra la salida real de GeoServer WMS, un fragmento del código SLD como referencia y un enlace para descargar el SLD completo.

Cada sección utiliza datos creados especialmente para el SLD Cookbook, con archivos de forma para datos vectoriales y GeoTIFF para datos ráster.La proyección de datos es EPSG:4326.Todos los archivos se pueden cargar fácilmente en GeoServer para recrear los ejemplos.

Tipo de datos

Archivo de forma

Punto

sld_cookbook_point.zip

Línea

sld_cookbook_line.zip

Polígono

sld_cookbook_polygon.zip

Ráster

sld_cookbook_raster.zip

Puntos

Capa de puntos de ejemplo

punto simple

Punto simple con trazo

Cuadrado girado

Triangulo transparente

Punto como gráfico

Punto con etiqueta predeterminada

Punto con etiqueta con estilo

Punto con etiqueta girada

Punto basado en atributos

Punto basado en zoom

Líneas

Capa de líneas de ejemplo

linea simple

Línea con borde

Linea discontinua

Ferrocarril (eclosión)

Símbolos gráficos espaciados

Símbolos alternos con desplazamientos de guiones

Línea con etiqueta predeterminada

Etiqueta siguiente línea

Colocación de etiquetas optimizada

Etiqueta optimizada y con estilo

Línea basada en atributos

Línea basada en zoom

Polígonos

Ejemplo de capa de polígonos

polígono simple

Polígono simple con trazo

Polígono transparente

Relleno gráfico

relleno de eclosión

Polígono con etiqueta predeterminada

halo de etiqueta

Polígono con etiqueta con estilo

Polígono basado en atributos

Polígono basado en zoom

Rásteres

Ráster de ejemplo

Degradado de dos colores

gradiente transparente

Brillo y contraste

Degradado de tres colores

canal alfa

Colores discretos

Muchos degradados de color


Puntos

Si bien los puntos son aparentemente el tipo de forma más simple, ya que solo poseen posición y no otras dimensiones, hay muchas maneras diferentes en que se puede diseñar un punto en SLD.

Advertencia

Los ejemplos de código que se muestran en esta páginano son el código SLD completo, ya que omiten la información del encabezado y pie de página de SLD en aras de la brevedad.Utilice los enlaces para descargar el SLD completo de cada ejemplo.

Capa de puntos de ejemplo

Elutilizado en los ejemplos siguientes contiene información sobre el nombre y la población de las principales ciudades de un país ficticio.Como referencia, la tabla de atributos para los puntos de esta capa se incluye a continuación.points layer

fid(ID de función)

nombre(nombre de la ciudad)

pop(población)

punto 1

Borfin

157860

punto.2

Ciudad Supox

578231

punto.3

Ruckis

98159

punto.4

Esta tierra

34879

punto.5

Sinópolis

24567

punto.6

San Glissando

76024

punto.7

Detrania

205609

Download the points shapefile

punto simple

Este ejemplo especifica que los puntos deben diseñarse como círculos rojos con un diámetro de 6 píxeles.


punto simple

Código

View and download the full "Simple point" SLD

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

<FeatureTypeStyle>

<Regla>

<PointSymbolizer>

<Gráfico>

<Marca>

<WellKnownName> círculo </WellKnownName>

<Relleno>

<CssParameter nombre= "relleno" > #FF0000 </CssParameter>

</Fill>

</Mark>

<Tamaño > 6 </Size>

</Graphic>

</PointSymbolizer>

</Rule>

</FeatureTypeStyle>

Detalles

Hay uno<Rule>en uno<FeatureTypeStyle>para este SLD, que es la situación más sencilla posible.(Todos los ejemplos posteriores contendrán uno<Rule>y uno<FeatureTypeStyle>a menos que se especifique lo contrario). Los puntos de estilo se logran a través de<PointSymbolizer>(líneas 3-13).La línea 6especifica que la forma del símbolo será un círculo, yla línea 8determina que el color de relleno será rojo (#FF0000).La línea 11establece el tamaño (diámetro) del gráfico en 6 píxeles.

Punto simple con trazo

Este ejemplo agrega un trazo (o borde) alrededor delPunto simple, con el trazo de color negro y con un grosor de 2 píxeles.


Punto simple con trazo

Código

View and download the full "Simple point with stroke" SLD

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

dieciséis

17

18

19

<FeatureTypeStyle>

<Rule>

<PointSymbolizer>

<Graphic>

<Mark>

<WellKnownName> círculo </WellKnownName>

<Relleno>

<CssParameter nombre= "relleno" > #FF0000 </CssParameter>

</Fill>

<Stroke>

<CssParameter nombre = "trazo" > #000000 </CssParameter>

<CssParameter nombre= "ancho de trazo" > 2 </CssParameter>

</Stroke>

</Mark>

< Tamaño> 6 </ Tamaño> </Graphic>

</PointSymbolizer>

</Rule> </FeatureTypeStyle>

Detalles

Este ejemplo es similar al ejemplodel punto simple.Las líneas 10 a 13especifican el trazo,la línea 11establece el color en negro (#000000) yla línea 12establece el ancho en 2 píxeles.

Cuadrado girado

Este ejemplo crea un cuadrado en lugar de un círculo, lo colorea de verde, lo dimensiona a 12 píxeles y lo gira 45 grados.


Cuadrado girado

Código

View and download the full "Rotated square" SLD

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

dieciséis

<FeatureTypeStyle>

<Regla>

<PointSymbolizer>

<Gráfico>

<Marca>

<WellKnownName> cuadrado </WellKnownName>

<Relleno>

<CssParameter nombre= "relleno" > #009900 </CssParameter>

</Fill>

</Mark>

<Tamaño > 12 </Tamaño>

<Rotación> 45 < /Rotación>

</Graphic>

</PointSymbolizer>

</Rule>

</FeatureTypeStyle>

Detalles

En este ejemplo,la línea 6establece la forma como un cuadrado, yla línea 8establece el color en verde oscuro (#009900).La línea 11establece el tamaño del cuadrado en 12 píxeles yla línea 12establece la rotación en 45 grados.

Triangulo transparente

Este ejemplo dibuja un triángulo, crea un trazo negro idéntico al ejemplode Punto simple con trazoy establece el relleno del triángulo en un 20% de opacidad (principalmente transparente).


Triangulo transparente

Código

View and download the full "Transparent triangle" SLD

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

dieciséis

17

18

19

20

<FeatureTypeStyle>

<Regla>

<PointSymbolizer>

<Gráfico>

<Marca>

<WellKnownName> triángulo </WellKnownName>

<Relleno>

<CssParameter nombre= "relleno" > #009900 </CssParameter>

<CssParameter nombre= "relleno-opacidad" > 0.2 </CssParameter>

</Fill>

<Stroke>

<CssParameter name= "stroke" > #000000 </CssParameter>

<CssParameter name= "stroke-width" > 2 </CssParameter>

</Stroke>

</Mark>

< Tamaño> 12 </Tamaño>

</Graphic>

</PointSymbolizer>

</Rule>

</FeatureTypeStyle>

Detalles

En este ejemplo,la línea 6vuelve a establecer la forma, en este caso un triángulo.La línea 8establece el color de relleno en verde oscuro (#009900) yla línea 9establece la opacidad en 0,2 (20% opaco).Un valor de opacidad de 1 significa que la forma se dibuja 100% opaca, mientras que un valor de opacidad de 0 significa que la forma se dibuja 0% opaca o completamente transparente.El valor de 0,2 (20% opaco) significa que el relleno de los puntos adquiere parcialmente el color y estilo de lo que se dibuje debajo.En este ejemplo, como el fondo es blanco, el verde oscuro parece más claro.Si los puntos se impusieran sobre un fondo oscuro, el color resultante sería más oscuro.Las líneas 12 y 13establecen el color del trazo en negro (#000000) y el ancho en 2 píxeles.Finalmente,la línea 16establece el tamaño del punto en 12 píxeles de diámetro.

Punto como gráfico

Este ejemplo aplica estilo a cada punto como un gráfico en lugar de una forma simple.


Punto como gráfico

Código

View and download the full "Point as graphic" SLD

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

<FeatureTypeStyle>

<Regla>

<PointSymbolizer>

<Gráfico>

<ExternalGraphic>

<OnlineResource

xlink:type= "simple"

xlink:href= "smileyface.png" />

<Formato> imagen/png </Format>

</ExternalGraphic>

< Tamaño> 32 </Tamaño>

</Graphic>

</PointSymbolizer>

</Rule>

</FeatureTypeStyle>

Detalles

Este estilo utiliza un gráfico en lugar de una forma simple para representar los puntos.En SLD, esto se conoce como<ExternalGraphic>, para distinguirlo de las formas comúnmente utilizadas, como cuadrados y círculos, que son "internos" al renderizador.Las líneas 5 a 10especifican los detalles de este gráfico.La línea 8establece la ruta y el nombre del archivo del gráfico, mientras quela línea 9indica el formato (tipo MIME) del gráfico (imagen/png).En este ejemplo, el gráfico está contenido en el mismo directorio que el SLD, por lo que no es necesaria información de ruta en lalínea 8, aunque si se desea se puede usar una URL completa.La línea 11determina el tamaño del gráfico mostrado;esto se puede configurar independientemente de las dimensiones del propio gráfico, aunque en este caso son las mismas (32 píxeles).Si un gráfico es rectangular, el<Size>valor se aplicará únicamente a laalturadel gráfico, con el ancho escalado proporcionalmente.


Gráfico utilizado para puntos.

Punto con etiqueta predeterminada

Este ejemplo muestra una etiqueta de texto en elpunto simpleque muestra el atributo "nombre" del punto.Así es como se mostrará una etiqueta a falta de cualquier otra personalización.


Punto con etiqueta predeterminada

Código

View and download the full "Point with default label" SLD

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

dieciséis

17

18

19

20

21

22

23

<FeatureTypeStyle>

<Regla>

<PointSymbolizer>

<Gráfico>

<Marca>

<WellKnownName> círculo </WellKnownName>

<Relleno>

<CssParameter nombre= "relleno" > #FF0000 </CssParameter>

</Fill>

</Mark>

<Tamaño > 6 </Size>

</Graphic>

</PointSymbolizer>

<TextSymbolizer>

<Label>

<ogc:PropertyName> nombre </ogc:PropertyName>

</Label>

<Fill>

<CssParameter name= "relleno" > #000000 < /CssParameter>

</Fill>

</TextSymbolizer>

</Rule>

</FeatureTypeStyle>

Detalles

Las líneas 3 a 13, que contienen<PointSymbolizer>, son idénticas al ejemplode punto simpleanterior.La etiqueta se establece en las<TextSymbolizer>líneas14-27.Las líneas 15 a 17determinan qué texto mostrar en la etiqueta, que en este caso es el valor del atributo "nombre".(Consulte la tabla de atributos en la secciónCapa de puntos de ejemplosi es necesario).La línea 19establece el color del texto.Todos los demás detalles sobre la etiqueta se configuran con el valor predeterminado del renderizador, que aquí es la fuente Times New Roman, el color de fuente negro y el tamaño de fuente de 10 píxeles.La parte inferior izquierda de la etiqueta está alineada con el centro del punto.

Punto con etiqueta con estilo

Este ejemplo mejora el estilo de la etiqueta del ejemploPunto con etiqueta predeterminadaal centrar la etiqueta sobre el punto y proporcionar un nombre y tamaño de fuente diferentes.


Punto con etiqueta con estilo

Código

View and download the full "Point with styled label" SLD

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

dieciséis

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

<FeatureTypeStyle>

<Regla>

<PointSymbolizer>

<Gráfico>

<Marca>

<WellKnownName> círculo </WellKnownName>

<Relleno>

<CssParameter nombre= "relleno" > #FF0000 </CssParameter>

</Fill>

</Mark>

<Tamaño > 6 </Size>

</Graphic>

</PointSymbolizer>

<TextSymbolizer>

<Label>

<ogc:PropertyName> nombre </ogc:PropertyName>

</Label>

<Font>

<CssParameter name= "font-family" > Arial </CssParameter>

<CssParameter name= "font-size" > 12 </CssParameter>

<CssParameter name= "font-style" > normal </CssParameter>

<CssParameter name= "font-weight" > negrita </CssParameter>

< /Font>

<LabelPlacement>

<PointPlacement>

<AnchorPoint>

<AnchorPointX> 0.5 </AnchorPointX>

<AnchorPointY> 0.0 </AnchorPointY>

</AnchorPoint>

<Desplazamiento>

<DisplacementX> 0 </DisplacementX>

<DisplacementY> 5 </DisplacementY >

</Displacement>

</PointPlacement>

</LabelPlacement>

<Fill>

<CssParameter name= "fill" > #000000 </CssParameter>

</Fill>

</TextSymbolizer>

</Rule>

</FeatureTypeStyle>

Detalles

En este ejemplo,las líneas 3 a 13son idénticas al ejemplode punto simpleanterior.Las<TextSymbolizer>líneas 14 a 39 contienen muchos más detalles sobre el estilo de la etiqueta que el ejemplo anterior,Punto con etiqueta predeterminada.Las líneas 15 a 17especifican una vez más el atributo "nombre" como texto para mostrar.Las líneas 18 a 23configuran la información de fuente:la línea 19establece la familia de fuentes en "Arial",la línea 20establece el tamaño de fuente en 12,la línea 21establece el estilo de fuente en "normal" (a diferencia de "cursiva" u "oblicua"). ”), yla línea 22establece el peso de la fuente en “negrita” (en lugar de “normal”).Las líneas 24-35(<LabelPlacement>) determinan la ubicación de la etiqueta en relación con el punto.(líneas 26-29) establece el punto de intersección entre la etiqueta y el punto, que aquí (línea 27-28<AnchorPoint>) establece elpunto que se centrará (0,5) en el eje horizontal y se alineará con la parte inferior (0,0) verticalmente con la etiqueta.También está(líneas 30-33), que establece el desplazamiento de la etiqueta con respecto a la línea, que en este caso es 0 píxeles horizontalmente (línea 31) y 5 píxeles verticalmente (línea 32).Finalmente,la línea 37establece el color de fuente de la etiqueta en negro ().<Displacement>#000000

El resultado es una etiqueta en negrita centrada colocada ligeramente encima de cada punto.

Punto con etiqueta girada

Este ejemplo se basa en el ejemplo anterior,Punto con etiqueta con estilo, rotando la etiqueta 45 grados, colocando las etiquetas más lejos de los puntos y cambiando el color de la etiqueta a violeta.


Punto con etiqueta girada

Código

View and download the full "Point with rotated label" SLD

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

dieciséis

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

<FeatureTypeStyle>

<Regla>

<PointSymbolizer>

<Gráfico>

<Marca>

<WellKnownName> círculo </WellKnownName>

<Relleno>

<CssParameter nombre= "relleno" > #FF0000 </CssParameter>

</Fill>

</Mark>

<Tamaño > 6 </Size>

</Graphic>

</PointSymbolizer>

<TextSymbolizer>

<Label>

<ogc:PropertyName> nombre </ogc:PropertyName>

</Label>

<Font>

<CssParameter name= "font-family" > Arial </CssParameter>

<CssParameter name= "font-size" > 12 </CssParameter>

<CssParameter name= "font-style" > normal </CssParameter>

<CssParameter name= "font-weight" > negrita </CssParameter>

< /Font>

<LabelPlacement>

<PointPlacement>

<AnchorPoint>

<AnchorPointX> 0.5 </AnchorPointX>

<AnchorPointY> 0.0 </AnchorPointY>

</AnchorPoint>

<Desplazamiento>

<DisplacementX> 0 </DisplacementX>

<DisplacementY> 25 </DisplacementY >

</Displacement>

<Rotation> -45 </Rotation>

</PointPlacement>

</LabelPlacement>

<Fill>

<CssParameter name= "fill" > #990099 </CssParameter>

</Fill>

</TextSymbolizer>

</Rule >

</FeatureTypeStyle>

Detalles

Este ejemplo es similar alPunto con etiqueta con estilo, pero hay tres diferencias importantes.La línea 32especifica 25 píxeles de desplazamiento vertical.La línea 34especifica una rotación de “-45” o 45 grados en sentido antihorario.(Los valores de rotación aumentan en el sentido de las agujas del reloj, razón por la cual el valor es negativo). Finalmente,la línea 38establece el color de fuente en un tono violeta (#99099).

Tenga en cuenta que el desplazamiento tiene efecto antes de la rotación durante el renderizado, por lo que en este ejemplo, el desplazamiento vertical de 25 píxeles se gira 45 grados.

Punto basado en atributos

Este ejemplo modifica el tamaño del símbolo según el valor del atributo de población (“pop”).


Punto basado en atributos

Código

View and download the full "Attribute-based point" SLD

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

dieciséis

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

sesenta y cinco

66

67

68

69

70

71

<FeatureTypeStyle>

<Rule>

<Name> SmallPop </Name>

<Title> 1 a 50000 </Title>

<ogc:Filter>

<ogc:PropertyIsLessThan>

<ogc:PropertyName> pop </ogc:PropertyName>

<ogc:Literal > 50000 </ogc:Literal>

</ogc:PropertyIsLessThan>

</ogc:Filter>

<PointSymbolizer>

<Graphic>

<Mark>

<WellKnownName> círculo </WellKnownName>

<Relleno>

<CssParameter name= "relleno" > #0033CC </CssParameter>

</Fill>

</Mark>

<Size> 8 </Size>

</Graphic>

</PointSymbolizer>

</Rule>

<Rule>

<Name> MediumPop </Name>

<Title> 50000 a 100000 < /Título>

<ogc:Filter>

<ogc:And>

<ogc:PropertyIsGreaterThanOrEqualTo>

<ogc:PropertyName> pop </ogc:PropertyName>

<ogc:Literal> 50000 </ogc:Literal>

</ogc:PropertyIsGreaterThanOrEqualTo>

<ogc :PropertyIsLessThan>

<ogc:PropertyName> pop </ogc:PropertyName>

<ogc:Literal> 100000 </ogc:Literal>

</ogc:PropertyIsLessThan>

</ogc:And>

</ogc:Filter>

<PointSymbolizer>

<Gráfico >

<Marca>

<NombreConocido> círculo </NombreConocido>

<Relleno>

<CssParameter nombre= "relleno" > #0033CC </CssParameter>

</Relleno>

</Marca>

<Tamaño> 12 </ Tamaño> </

Gráfico>

< /PointSymbolizer>

</Rule>

<Rule>

<Name> LargePop </Name>

<Title> Mayor que 100000 </Title>

<ogc:Filter>

<ogc:PropertyIsGreaterThanOrEqualTo>

<ogc:PropertyName> pop </ogc:PropertyName>

<ogc:Literal> 100000 </ogc:Literal>

</ogc:PropertyIsGreaterThanOrEqualTo>

</ogc:Filtro>

<PointSymbolizer>

<Gráfico

> <Marca>

<NombreConocido> círculo </NombreConocido>

<Relleno>

<CssParameter nombre= "relleno" > #0033CC </CssParameter>

</Relleno>

</Marca>

<Tamaño> 16 </ Tamaño>

</Graphic>

</PointSymbolizer>

</Rule>

</FeatureTypeStyle>

Detalles

Nota

Consulte lacapa de puntos de ejemplopara ver los atributos de estos datos.En este ejemplo se han evitado las etiquetas para simplificar el estilo, pero puede consultar el ejemploPunto con etiqueta con estilopara ver qué atributos corresponden a qué puntos.

Este estilo contiene tres reglas.Cada uno<Rule>varía el estilo según el valor del atributo de población (“pop”) para cada punto, donde los valores más pequeños producen un círculo más pequeño y los valores más grandes producen un círculo más grande.

Las tres reglas están diseñadas de la siguiente manera:

Orden de reglas

Nombre de la regla

Población(“población”)

Tamaño

1

pequeñopop

Menos de 50.000

8

2

Pop medio

50.000 a 100.000

12

3

Pop grande

Más de 100.000

dieciséis

El orden de las reglas no importa en este caso, ya que cada forma sólo se representa mediante una única regla.

La primera regla, enlas líneas 2-22, especifica el estilo de aquellos puntos cuyo atributo de población es inferior a 50.000.Las líneas 5 a 10establecen este filtro, laslíneas 6 a 9configuran el filtro "menor que",la línea 7indica el atributo ("pop") yla línea 8el valor de 50 000.El símbolo es un círculo (línea 14), el color es azul oscuro (#0033CC, enla línea 16) y el tamaño es de 8 píxeles de diámetro (línea 19).

La segunda regla, enlas líneas 23-49, especifica un estilo para puntos cuyo atributo de población es mayor o igual a 50.000 y menor que 100.000.El filtro de población se establece enlas líneas 26-37.Este filtro es más largo que en la primera regla porque es necesario especificar dos criterios en lugar de uno: un filtro "mayor o igual que" y uno "menor que".Observe lasAndlíneas27y36.Esto exige que ambos filtros sean verdaderos para que la regla sea aplicable.El tamaño del gráfico se establece en 12 píxeles enla línea 46.Todas las demás directivas de estilo son idénticas a la primera regla.

La tercera regla, enlas líneas 50-70, especifica un estilo para puntos cuyo atributo de población es mayor o igual a 100.000.El filtro de población se establece enlas líneas 53 a 58, y la única otra diferencia es el tamaño del círculo, que en esta regla (línea 67) es de 16 píxeles.

El resultado de este estilo es que las ciudades con mayor población tienen puntos más grandes.

Punto basado en zoom

Este ejemplo altera el estilo de los puntos en diferentes niveles de zoom.


Punto basado en zoom: ampliado


Punto basado en zoom: parcialmente ampliado


Punto basado en zoom: Alejado

Código

View and download the full "Zoom-based point" SLD

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

dieciséis

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

<FeatureTypeStyle>

<Rule>

<Name> Large </Name>

<MaxScaleDenominator> 160000000 </MaxScaleDenominator>

<PointSymbolizer>

<Graphic>

<Mark>

<WellKnownName> círculo </WellKnownName>

<Relleno>

<CssParameter nombre= "relleno" > #CC3300 </CssParameter>

</Fill>

</Mark>

<Size> 12 </Size>

</Graphic>

</PointSymbolizer>

</Rule>

<Rule>

<Name> Medium </Name>

<MinScaleDenominator> 160000000 < /MinScaleDenominator>

<MaxScaleDenominator> 320000000 </MaxScaleDenominator>

<PointSymbolizer>

<Graphic>

<Mark>

<WellKnownName> círculo </WellKnownName>

<Fill>

<CssParameter name= "fill" > #CC3300 </CssParameter>

</Fill>

< /Marca>

<Tamaño> 8 <

/Tamaño> </Gráfico

> </PointSymbolizer>

</Regla>

<Regla>

<Nombre> Pequeño </Nombre>

<MinScaleDenominator> 320000000 </MinScaleDenominator>

<PointSymbolizer> <

Gráfico

> <Marca >

<NombreConocido> círculo </NombreConocido>

<Relleno>

<CssParameter nombre= "relleno" > #CC3300 </CssParameter>

</Relleno>

</Marca>

< Tamaño> 4 </ Tamaño> </

Gráfico> </PointSymbolizer>

</Rule> </FeatureTypeStyle>

Detalles

A menudo es deseable agrandar las formas con niveles de zoom más altos al crear un mapa de aspecto natural.Este ejemplo diseña los puntos para que varíen en tamaño según el nivel de zoom (o más exactamente, el denominador de escala).Los denominadores de escala se refieren a la escala del mapa.Un denominador de escala de 10.000 significa que el mapa tiene una escala de 1:10.000 en las unidades de proyección del mapa.

Nota

Determinar los denominadores de escala apropiados (niveles de zoom) a utilizar está más allá del alcance de este ejemplo.

Este estilo contiene tres reglas.Las tres reglas están diseñadas de la siguiente manera:

Orden de reglas

Nombre de la regla

denominador de escala

Tamaño del punto

1

Grande

1:160.000.000 o menos

12

2

Medio

1:160.000.000 a 1:320.000.000

8

3

Pequeño

Mayor que 1:320.000.000

4

El orden de estas reglas no importa ya que los baremos denominados en cada regla no se superponen.

La primera regla (líneas 2 a 16) es para el denominador de escala más pequeño, correspondiente a cuando la vista se “acerca”.La regla de escala se establece enla línea 4, de modo que la regla se aplicará a cualquier mapa con un denominador de escala de 160.000.000 o menos.La regla dibuja un círculo (línea 8), de color rojo (#CC3300en lalínea 10) con un tamaño de 12 píxeles (línea 13).

La segunda regla (líneas 17 a 32) es el denominador de escala intermedia, correspondiente a cuando la vista está "parcialmente ampliada".Las reglas de escala se establecen enlas líneas 19 y 20, de modo que la regla se aplicará a cualquier mapa con un denominador de escala entre 160.000.000 y 320.000.000.(El<MinScaleDenominator>es inclusivo y el<MaxScaleDenominator>es exclusivo, por lo que aquínose aplicaría un nivel de zoom de exactamente 320.000.000). Aparte de la escala, la única diferencia entre esta regla y la primera es el tamaño del símbolo, que se establece en 8 píxeles enlínea 29.

La tercera regla (líneas 33 a 47) es el denominador de escala más grande, correspondiente a cuando el mapa se “aleja”.La regla de escala se establece enla línea 35, de modo que la regla se aplicará a cualquier mapa con un denominador de escala de 320.000.000 o más.Nuevamente, la única otra diferencia entre esta regla y las demás es el tamaño del símbolo, que se establece en 4 píxeles enla línea 44.

El resultado de este estilo es que los puntos se dibujan más grandes cuando se acerca y más pequeños cuando se aleja.


Líneas

Si bien las líneas también pueden parecer formas simples, con longitud pero sin ancho, existen muchas opciones y trucos para hacer que las líneas se vean bien.

Advertencia

Los ejemplos de código que se muestran en esta páginano son el código SLD completo, ya que omiten la información del encabezado y pie de página de SLD en aras de la brevedad.Utilice los enlaces para descargar el SLD completo de cada ejemplo.

Capa de líneas de ejemplo

Elutilizado en los ejemplos siguientes contiene información sobre carreteras de un país ficticio.Como referencia, la tabla de atributos para los puntos de esta capa se incluye a continuación.lines layer

fid(ID de función)

nombre(nombre de la carretera)

tipo(clase de carretera)

línea 1

Latway

carretera

línea 2

Avenida creciente

secundario

línea 3

Avenida del bosque

secundario

línea.4

Largo camino

carretera

línea.5

Avenida Saxer

secundario

línea.6

Avenida Ridge

secundario

línea.7

carril del acebo

carretera local

línea.8

calle morera

carretera local

línea.9

Nathan Lane

carretera local

línea.10

Calle Central

carretera local

línea.11

Luisa Lane

carretera local

línea.12

Camino rocoso

carretera local

línea.13

Fleet Street

carretera local

línea.14

Diana Corte

carretera local

línea.15

Sendero del cedro

carretera local

línea.16

Camino de la victoria

carretera local

línea.17

Carretera de las tierras altas

carretera local

línea.18

Calle facil

carretera local

línea.19

calle Colina

carretera local

línea.20

Camino rural

carretera local

línea.21

Calle principal

carretera local

línea.22

Jani Lane

carretera local

línea.23

Callejón de la espinilla

carretera local

línea.24

Calle del estado

carretera local

línea.25

carretera del río

carretera local

Download the lines shapefile

linea simple

Este ejemplo especifica que las líneas serán de color negro con un grosor de 3 píxeles.


linea simple

Código

View and download the full "Simple line" SLD

1

2

3

4

5

6

7

8

9

10

<FeatureTypeStyle>

<Rule>

<LineSymbolizer>

<Stroke>

<CssParameter name= "stroke" > #000000 </CssParameter>

<CssParameter name= "stroke-width" > 3 </CssParameter>

</Stroke>

</LineSymbolizer>

< /Regla>

</FeatureTypeStyle>

Detalles

Hay uno<Rule>en uno<FeatureTypeStyle>para este SLD, que es la situación más sencilla posible.(Todos los ejemplos posteriores contendrán uno<Rule>y uno<FeatureTypeStyle>a menos que se especifique lo contrario). El estilo de las líneas se logra mediante<LineSymbolizer>(líneas 3-8).La línea 5especifica que el color de la línea será negro (#000000), mientras quela línea 6especifica que el ancho de las líneas será de 3 píxeles.

Línea con borde

Este ejemplo muestra cómo dibujar líneas con bordes (a veces llamadas “líneas en mayúsculas”).En este caso las líneas se dibujan con un centro azul de 3 píxeles y un borde gris de 1 píxel de ancho.


Línea con borde

Código

View and download the full "Line with border" SLD

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

dieciséis

17

18

19

20

21

22

<FeatureTypeStyle>

<Rule>

<LineSymbolizer>

<Stroke>

<CssParameter name= "stroke" > #333333 </CssParameter>

<CssParameter name= "stroke-width" > 5 </CssParameter>

<CssParameter name= "stroke-linecap" > redondo </CssParameter>

</Stroke>

</LineSymbolizer>

</Rule>

</FeatureTypeStyle>

<FeatureTypeStyle>

<Rule>

<LineSymbolizer>

<Stroke>

<CssParameter name= "stroke" > #6699FF </CssParameter>

<CssParameter name= "stroke-width" > 3 </CssParameter>

<CssParameter name= "stroke-linecap" > redondo </CssParameter>

</Stroke>

</LineSymbolizer>

</Rule>

</FeatureTypeStyle>

Detalles

Las líneas en SLD no tienen noción de “relleno”, sólo “trazo”.Por lo tanto, a diferencia de los puntos o polígonos, no es posible aplicar estilo al "borde" de la geometría de la línea.Sin embargo, es posible lograr este efecto dibujando cada línea dos veces: una con un ancho determinado y otra con un ancho ligeramente menor.Esto da la ilusión de relleno y trazo al oscurecer las líneas más grandes en todas partes excepto a lo largo de los bordes de las líneas más pequeñas.

Dado que cada línea se dibuja dos veces, el orden de representación esmuyimportante.GeoServer representa<FeatureTypeStyle>los correos electrónicos en el orden en que se presentan en el SLD.En este estilo, las líneas de borde grises se dibujan primero a través del primero<FeatureTypeStyle>, seguidas por las líneas centrales azules en un segundo<FeatureTypeStyle>.Esto garantiza que las líneas grises no oscurezcan las líneas azules y también garantiza una representación adecuada en las intersecciones, de modo que las líneas azules se “conecten”.

En este ejemplo,las líneas 1 a 11comprenden la primera<FeatureTypeStyle>, que es la línea exterior (o "trazo").La línea 5especifica que el color de la línea será gris oscuro (#333333),la línea 6especifica que el ancho de esta línea será de 5 píxeles y en lalínea 7unstroke-linecapparámetroroundrepresenta los extremos de la línea como redondeados en lugar de planos.(Cuando se trabaja con líneas con borde, el uso de un remate de línea redondo garantiza que el borde se conecte correctamente en los extremos de las líneas).

Las líneas 12 a 22comprenden la segunda<FeatureTypeStyle>, que es la línea interior (o "relleno").La línea 16especifica que el color de la línea será azul medio (#6699FF),la línea 17especifica que el ancho de esta línea será de 3 píxeles yla línea 18nuevamente representa los bordes de la línea para que sean redondeados en lugar de planos.

El resultado es una línea azul de 3 píxeles con un borde gris de 1 píxel, ya que la línea gris de 5 píxeles mostrará 1 píxel a cada lado de la línea azul de 3 píxeles.

Linea discontinua

Este ejemplo modifica lalínea simplepara crear una línea discontinua que consta de 5 píxeles de línea dibujada que se alternan con 2 píxeles de espacio en blanco.


Linea discontinua

Código

View and download the full "Dashed line" SLD

1

2

3

4

5

6

7

8

9

10

11

<FeatureTypeStyle>

<Rule>

<LineSymbolizer>

<Stroke>

<CssParameter name= "stroke" > #0000FF </CssParameter>

<CssParameter name= "stroke-width" > 3 </CssParameter>

<CssParameter name= "stroke-dasharray" > 5 2 </CssParameter>

</Stroke>

</LineSymbolizer>

</Rule>

</FeatureTypeStyle>

Detalles

En este ejemplo,la línea 5establece el color de las líneas en azul (#0000FF) yla línea 6establece el ancho de las líneas en 3 píxeles.La línea 7determina la composición de los guiones.El valor decrea un patrón repetido de 5 píxeles de línea dibujada, seguido de 2 píxeles de línea omitida.52

Ferrocarril (eclosión)

Este ejemplo utiliza sombreado para crear un estilo de ferrocarril.Tanto la línea como los sombreados son negros, con un grosor de 2 píxeles para la línea principal y un ancho de 1 píxel para los sombreados perpendiculares.

Nota

Este ejemplo aprovecha una extensión SLD en GeoServer.El sombreado no forma parte de la especificación estándar SLD 1.0.


Ferrocarril (eclosión)

Código

View and download the full "Railroad (hatching)" SLD

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

dieciséis

17

18

19

20

21

22

23

24

25

26

<FeatureTypeStyle>

<Rule>

<LineSymbolizer>

<Stroke>

<CssParameter name= "stroke" > #333333 </CssParameter>

<CssParameter name= "stroke-width" > 3 </CssParameter>

</Stroke>

</LineSymbolizer>

< LineSymbolizer>

<Stroke>

<GraphicStroke>

<Graphic>

<Mark>

<WellKnownName> shape://vertline </WellKnownName>

<Stroke>

<CssParameter name= "stroke" > #333333 </CssParameter>

<CssParameter name= "stroke- ancho" > 1 </CssParameter>

</Stroke>

</Mark>

<Size> 12 </Size>

</Graphic>

</GraphicStroke>

</Stroke>

</LineSymbolizer>

</Rule>

</FeatureTypeStyle>

Detalles

En este ejemplo hay dos<LineSymbolizer>s.El primer simbolizador, enlas líneas 3 a 8, dibuja una línea estándar, dondela línea 5dibuja las líneas en gris oscuro (#333333) yla línea 6establece el ancho de las líneas en 2 píxeles.

El sombreado se invoca en el segundo simbolizador, en laslíneas 9-24.La línea 14especifica que el simbolizador dibuje una línea rayada vertical (shape://vertline) perpendicular a la geometría de la línea.Las líneas 16 y 17establecen el color del sombreado en gris oscuro (#333333) y el ancho en 1 píxel.Finalmente,la línea 20especifica que tanto la longitud del sombreado como la distancia entre cada sombreado serán de 12 píxeles.

Símbolos gráficos espaciados

Este ejemplo utiliza un trazo gráfico junto con matrices de guiones para crear un tipo de línea de "puntos y espacios".Agregar la especificación de matriz de guiones permite controlar la cantidad de espacio entre un símbolo y el siguiente.Sin utilizar la matriz de guiones, las líneas estarían densamente pobladas de puntos, cada uno tocando al anterior.

Nota

Es posible que este ejemplo no funcione en otros sistemas que utilicen SLD, ya que es posible que no admitan la combinación del uso destroke-dasharrayyGraphicStroke.Si bien el SLD cumple con las especificaciones, la especificación SLD no indica qué se supone que debe producir esta combinación.


Símbolos espaciados a lo largo de una línea

Código

View and download the full "Spaced symbols" SLD

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

dieciséis

17

18

19

20

21

22

23

24

<FeatureTypeStyle>

<Rule>

<LineSymbolizer>

<Stroke>

<GraphicStroke>

<Graphic>

<Mark>

<WellKnownName> círculo </WellKnownName>

<Relleno>

<CssParameter name= "relleno" > #666666 </CssParameter>

</Fill>

<Stroke>

<CssParameter name= "stroke" > #333333 </CssParameter>

<CssParameter name= "stroke-width" > 1 </CssParameter>

</Stroke>

</Mark>

<Size> 4 </Size>

</ Gráfico>

</GraphicStroke>

<CssParameter name= "stroke-dasharray" > 4 ​​6 </CssParameter>

</Stroke>

</LineSymbolizer>

</Rule>

</FeatureTypeStyle>

Detalles

Este ejemplo, como otros anteriores, utiliza aGraphicStrokepara colocar un símbolo gráfico a lo largo de una línea.El símbolo, definido enlas líneas 7 a 16, es un círculo gris de 4 píxeles con un contorno gris oscuro.El espaciado entre símbolos se controla con lastroke-dasharraylínea20, que especifica 4 píxeles de lápiz hacia abajo (lo suficiente para dibujar el círculo) y 6 píxeles de lápiz hacia arriba, para proporcionar el espaciado.

Símbolos alternos con desplazamientos de guiones

Este ejemplo muestra cómo crear un estilo de línea complejo que alterna una línea discontinua y un símbolo gráfico.El código se basa en las características que se muestran en los ejemplos anteriores:

stroke-dasharraycontrola el comportamiento de escritura hacia abajo y hacia arriba para generar líneas discontinuas

GraphicStrokecoloca símbolos a lo largo de una línea

la combinación de los dos permite el control del espaciado de símbolos

Esto también muestra el uso de undesplazamiento de guión, que controla dónde comienza la representación en la matriz de guiones.Por ejemplo, con una matriz de guionesy un desplazamiento de guión delrenderizador comienza a dibujar el patrón 7 píxeles desde el principio.Se salta la sección de lápiz hacia abajo de 5 píxeles y los 2 píxeles de la sección de lápiz hacia arriba, luego dibuja los 8 píxeles restantes de la sección de lápiz hacia arriba, luego 5 hacia abajo, 10 hacia arriba, y así sucesivamente.5107

El ejemplo muestra cómo utilizar estas funciones para crear dos secuencias sincronizadas de matrices de guiones, una que dibuja segmentos de línea y la otra símbolos.

Nota

Es posible que este ejemplo no funcione en otros sistemas que utilicen SLD, ya que es posible que no admitan la combinación del uso destroke-dasharrayyGraphicStroke.Si bien el SLD cumple con las especificaciones, la especificación SLD no indica qué se supone que debe producir esta combinación.


Guión y símbolo alternos

Código

View and download the full "Spaced symbols" SLD

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

dieciséis

17

18

19

20

21

22

23

24

25

26

27

28

29

<FeatureTypeStyle>

<Rule>

<LineSymbolizer>

<Stroke>

<CssParameter name= "stroke" > #0000FF </CssParameter>

<CssParameter name= "stroke-width" > 1 </CssParameter>

<CssParameter name= "stroke-dasharray" > 10 10 </CssParameter>

</Stroke>

</LineSymbolizer>

<LineSymbolizer>

<Stroke>

<GraphicStroke>

<Graphic>

<Mark>

<WellKnownName> círculo </WellKnownName>

<Stroke>

<CssParameter name= "stroke" > # 000033 </CssParameter>

<CssParameter name= "trazo-ancho" > 1 </CssParameter>

</Stroke>

</Mark>

<Tamaño > 5 </Size>

</Graphic>

</GraphicStroke>

<CssParameter name= "trazo -dasharray" > 5 15 </CssParameter>

<CssParameter name= "stroke-dashoffset" > 7.5 </CssParameter>

</Stroke>

</LineSymbolizer>

</Rule>

</FeatureTypeStyle>

Detalles

En este ejemplo, dosLineSymbolizersímbolos utilizanstroke-dasharrayuna simbología diferente para producir una secuencia de guiones y símbolos alternos.El primer simbolizador (líneas 3 a 9) es una línea discontinua simple que alterna 10 píxeles de lápiz hacia abajo con 10 píxeles de lápiz hacia arriba.El segundo simbolizador (líneas 10 a 27) alterna un círculo vacío de 5 píxeles con 15 píxeles de espacio en blanco.El símbolo del círculo es producido por unMarkelemento, con su simbología especificada porstrokeparámetros (líneas 17-18).El espacio entre símbolos se controla constroke-dasharray(línea 24), que especifica 5 píxeles de lápiz hacia abajo (lo suficiente para dibujar el círculo) y 15 píxeles de lápiz hacia arriba.Para tener las dos secuencias posicionadas correctamente, la segunda usa un valorstroke-dashoffsetde 7,5 (línea 25).Esto hace que la secuencia comience con 12,5 píxeles de espacio en blanco, luego un círculo (que luego se centra entre los dos segmentos de línea del otro patrón), luego 15 píxeles de espacio en blanco, y así sucesivamente.

Línea con etiqueta predeterminada

Este ejemplo muestra una etiqueta de texto en la línea simple.Así es como se mostrará una etiqueta a falta de cualquier otra personalización.


Línea con etiqueta predeterminada

Código

View and download the full "Line with default label" SLD

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

dieciséis

17

18

19

20

<FeatureTypeStyle>

<Rule>

<LineSymbolizer>

<Stroke>

<CssParameter name= "stroke" > #FF0000 </CssParameter>

</Stroke>

</LineSymbolizer>

<TextSymbolizer>

<Label>

<ogc:PropertyName> nombre </ogc: PropertyName>

</Label>

<LabelPlacement>

<LinePlacement />

</LabelPlacement>

<Fill>

<CssParameter name= "fill" > #000000 </CssParameter>

</Fill>

</TextSymbolizer>

</Rule>

</FeatureTypeStyle>

Detalles

En este ejemplo, hay una regla con a<LineSymbolizer>y a<TextSymbolizer>.Las<LineSymbolizer>(líneas 3-7) dibujan líneas rojas (#FF0000).Como no se especifica ningún ancho, el valor predeterminado se establece en 1 píxel.Las<TextSymbolizer>(líneas 8-15) determinan el etiquetado de las líneas.Las líneas 9 a 11especifican que el texto de la etiqueta estará determinado por el valor del atributo "nombre" de cada línea.(Consulte la tabla de atributos en la secciónCapa de líneas de ejemplosi es necesario).La línea 13establece el color del texto en negro.Todos los demás detalles sobre la etiqueta se configuran con el valor predeterminado del renderizador, que aquí es la fuente Times New Roman, el color de fuente negro y el tamaño de fuente de 10 píxeles.

Etiqueta siguiente línea

Este ejemplo representa la etiqueta de texto para seguir el contorno de las líneas.

Nota

Las etiquetas que siguen a las líneas son una extensión SLD específica de GeoServer.No forma parte de la especificación SLD 1.0.


Etiqueta siguiente línea

Código

View and download the full "Label following line" SLD

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

dieciséis

17

18

19

20

21

<FeatureTypeStyle>

<Rule>

<LineSymbolizer>

<Stroke>

<CssParameter name= "stroke" > #FF0000 </CssParameter>

</Stroke>

</LineSymbolizer>

<TextSymbolizer>

<Label>

<ogc:PropertyName> nombre </ogc: PropertyName>

</Label>

<LabelPlacement>

<LinePlacement />

</LabelPlacement>

<Fill>

<CssParameter name= "fill" > #000000 </CssParameter>

</Fill>

<VendorOption name= "followLine" > true </VendorOption >

</TextSymbolizer>

</Rule>

</FeatureTypeStyle>

Detalles

Como mostró el ejemplode Símbolos alternos con desplazamientos de guiones, el comportamiento predeterminado de la etiqueta no es óptimo.La etiqueta se muestra tangente a la línea misma, lo que genera incertidumbre sobre qué etiqueta corresponde a qué línea.

Este ejemplo es similar al ejemplode Símbolos alternos con desplazamientos de guiones, con la excepción delas líneas 12 a 18.La línea 18establece la opción de que la etiqueta siga la línea, mientras quelas líneas 12 a 14especifican que la etiqueta se coloca a lo largo de una línea.Sino se especifica en un SLD,se supone que no es compatible con las opciones de representación específicas de la línea.<LinePlacement/><PointPlacement/>

Nota

No se muestran todas las etiquetas debido a la resolución de conflictos de etiquetas.Consulte la siguiente sección sobreColocación optimizada de etiquetaspara ver un ejemplo de cómo maximizar la visualización de etiquetas.

Colocación de etiquetas optimizada

Este ejemplo optimiza la ubicación de las etiquetas para las líneas de modo que se muestre el número máximo de etiquetas.

Nota

Este ejemplo utiliza opciones que son específicas de GeoServer y no forman parte de la especificación SLD 1.0.


Etiqueta optimizada

Código

View and download the full "Optimized label" SLD

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

dieciséis

17

18

19

20

21

22

23

24

<FeatureTypeStyle>

<Rule>

<LineSymbolizer>

<Stroke>

<CssParameter name= "stroke" > #FF0000 </CssParameter>

</Stroke>

</LineSymbolizer>

<TextSymbolizer>

<Label>

<ogc:PropertyName> nombre </ogc: PropertyName>

</Label>

<LabelPlacement>

<LinePlacement />

</LabelPlacement>

<Fill>

<CssParameter name= "fill" > #000000 </CssParameter>

</Fill>

<VendorOption name= "followLine" > true </VendorOption >

<VendorOption nombre= "maxAngleDelta" > 90 </VendorOption>

<VendorOption nombre= "maxDisplacement" > 400 </VendorOption>

<VendorOption nombre= "repetir" > 150 </VendorOption>

</TextSymbolizer>

</Rule>

</ Estilo de tipo de característica>

Detalles

GeoServer utiliza la “resolución de conflictos” para garantizar que las etiquetas no se dibujen encima de otras etiquetas, oscureciéndolas a ambas.Esto explica la razón por la cual muchas líneas no tienen etiquetas en el ejemplo anterior,Etiqueta siguiente línea.Si bien esta configuración se puede alternar, generalmente es una buena idea dejarla activada y usar otras opciones de ubicación de etiquetas para garantizar que las etiquetas se dibujen con la frecuencia deseada y en los lugares correctos.Este ejemplo hace precisamente eso.

Este ejemplo es similar al ejemplo anterior,Etiqueta siguiente línea.Las únicas diferencias están contenidas enlas líneas 18-21.La línea 19establece el ángulo máximo que seguirá la etiqueta.Esto configura la etiqueta para que nunca se doble más de 90 grados para evitar que se vuelva ilegible debido a una curva o ángulo pronunciado.La línea 20establece el desplazamiento máximo de la etiqueta en 400 píxeles.Para resolver conflictos con etiquetas superpuestas, GeoServer intentará mover las etiquetas de modo que ya no se superpongan.Este valor establece hasta qué punto se puede mover la etiqueta en relación con su ubicación original.Finalmente,la línea 21establece las etiquetas que se repetirán cada 150 píxeles.Por lo general, una función recibirá solo una etiqueta, pero esto puede causar confusión en las filas largas.Configurar la etiqueta para que se repita garantiza que la línea siempre esté etiquetada localmente.

Etiqueta optimizada y con estilo

Este ejemplo mejora el estilo de las etiquetas del ejemplode Ubicación optimizada de etiquetas.


Etiqueta optimizada y con estilo

Código

View and download the full "Optimized and styled label" SLD

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

dieciséis

17

18

19

20

21

22

23

24

25

26

27

28

29

30

<FeatureTypeStyle>

<Rule>

<LineSymbolizer>

<Stroke>

<CssParameter name= "stroke" > #FF0000 </CssParameter>

</Stroke>

</LineSymbolizer>

<TextSymbolizer>

<Label>

<ogc:PropertyName> nombre </ogc: PropertyName>

</Label>

<LabelPlacement>

<LinePlacement />

</LabelPlacement>

<Fill>

<CssParameter name= "fill" > #000000 </CssParameter>

</Fill>

<Font>

<CssParameter name= "font-family" > Arial </CssParameter>

<CssParameter nombre= "tamaño de fuente" > 10 </CssParameter>

<CssParameter nombre= "estilo de fuente" > normal </CssParameter>

<CssParameter nombre= "peso de fuente" > negrita </CssParameter >

</Font>

<VendorOption nombre= "followLine" > verdadero </VendorOption>

<VendorOption nombre= "maxAngleDelta" > 90 </VendorOption>

<VendorOption nombre= "maxDisplacement" > 400 </VendorOption>

<VendorOption nombre= "repetir " > 150 </VendorOption>

</TextSymbolizer>

</Rule>

</FeatureTypeStyle>

Detalles

Este ejemplo es similar a laubicación de etiqueta optimizada.La única diferencia está en la información de la fuente, que se encuentra enlas líneas 18-23.La línea 19establece la familia de fuentes en "Arial",la línea 20establece el tamaño de fuente en 10,la línea 21establece el estilo de fuente en "normal" (a diferencia de "cursiva" u "oblicua") y lalínea 22establece la fuente peso a “negrita” (en lugar de “normal”).

Línea basada en atributos

Este ejemplo aplica estilos a las líneas de manera diferente según el atributo "tipo" (clase de carretera).


Línea basada en atributos

Código

View and download the full "Attribute-based line" SLD

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

dieciséis

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

<FeatureTypeStyle>

<Rule>

<Name> carretera local </Name>

<ogc:Filter>

<ogc:PropertyIsEqualTo>

<ogc:PropertyName> tipo </ogc:PropertyName>

<ogc:Literal> carretera local </ogc: Literal>

</ogc:PropertyIsEqualTo>

</ogc:Filter>

<LineSymbolizer>

<Stroke>

<CssParameter name= "stroke" > #009933 </CssParameter>

<CssParameter name= "stroke-width" > 2 </CssParameter>

< /Stroke>

</LineSymbolizer>

</Rule>

</FeatureTypeStyle>

<FeatureTypeStyle>

<Rule>

<Name> secundario </Name>

<ogc:Filter> <

ogc:PropertyIsEqualTo>

<ogc:PropertyName> tipo </ogc:PropertyName >

<ogc:Literal> secundario </ogc:Literal>

</ogc:PropertyIsEqualTo>

</ogc:Filter>

<LineSymbolizer>

<Stroke>

<CssParameter name= "stroke" > #0055CC </CssParameter>

<CssParameter name= " ancho de trazo" > 3 </CssParameter>

</Stroke>

</LineSymbolizer>

</Rule>

</FeatureTypeStyle>

<FeatureTypeStyle>

<Rule>

<Name> autopista </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= "ancho de trazo" > 6 </CssParameter>

</Stroke>

</LineSymbolizer>

</Rule>

</FeatureTypeStyle>

Detalles

Nota

Consulte lacapa de líneas de ejemplopara ver los atributos de la capa.En este ejemplo se han evitado las etiquetas para simplificar el estilo, pero puede consultar el ejemploEtiqueta optimizada y con estilopara ver qué atributos corresponden a qué puntos.

Hay tres tipos de carreteras en nuestro país ficticio, que van desde carreteras secundarias hasta autopistas de alta velocidad: “autopista”, “secundaria” y “carretera local”.Para tratar cada caso por separado, hay más de uno<FeatureTypeStyle>, cada uno de los cuales contiene una única regla.Esto garantiza que cada tipo de carretera se represente en orden, ya que cada uno<FeatureTypeStyle>se dibuja según el orden en que aparece en el SLD.

Las tres reglas están diseñadas de la siguiente manera:

Orden de reglas

Nombre/tipo de regla

Color

Tamaño

1

carretera local

#009933(verde)

2

2

secundario

#0055CC(azul)

3

3

carretera

#FF0000(rojo)

6

Las líneas 2 a 16comprenden la primera<Rule>.Las líneas 4 a 9establecen el filtro para esta regla, de modo que el atributo "tipo" tenga un valor de "carretera local".Si esta condición es verdadera para una línea en particular, la regla se representa de acuerdo con la<LineSymbolizer>que se encuentra enlas líneas 10 a 15.Las líneas 12 y 13establecen el color de la línea en verde oscuro (#009933) y el ancho en 2 píxeles.

Las líneas 19-33comprenden la segunda<Rule>.Las líneas 21 a 26establecen el filtro para esta regla, de modo que el atributo "tipo" tenga un valor de "secundario".Si esta condición es verdadera para una línea en particular, la regla se representa según lo<LineSymbolizer>que se encuentra enlas líneas 27-32.Las líneas 29-30establecen el color de la línea en azul oscuro (#0055CC) y el ancho en 3 píxeles, lo que hace que las líneas sean ligeramente más gruesas que las líneas de “carretera local” y también de un color diferente.

Las líneas 36-50comprenden la tercera y última<Rule>.Las líneas 38 a 43establecen el filtro para esta regla, de modo que el atributo "tipo" tenga un valor de "primario".Si esta condición es verdadera para una línea en particular, la regla se representa según lo<LineSymbolizer>que se encuentra enlas líneas 44-49.Las líneas 46-47establecen el color de la línea en rojo brillante (#FF0000) y el ancho en 6 píxeles, de modo que estas líneas se representen encima y sean más gruesas que las otras dos clases de carreteras.De esta manera, las carreteras "principales" tienen prioridad en la representación del mapa.

Línea basada en zoom

Este ejemplo modifica el estilode línea simpleen diferentes niveles de zoom.


Línea basada en zoom: ampliada


Línea basada en zoom: parcialmente ampliada


Línea basada en zoom: alejada

Código

View and download the full "Zoom-based line" SLD

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

dieciséis

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

<FeatureTypeStyle>

<Rule>

<Name> Large </Name>

<MaxScaleDenominator> 180000000 </MaxScaleDenominator>

<LineSymbolizer>

<Stroke>

<CssParameter nombre= "trazo" > #009933 </CssParameter>

<CssParameter nombre= "ancho de trazo " > 6 </CssParameter>

</Stroke>

</LineSymbolizer>

</Rule>

<Rule>

<Name> Medio </Name>

<MinScaleDenominator> 180000000 </MinScaleDenominator>

<MaxScaleDenominator> 360000000 </MaxScaleDenominator>

<LineSymbolizer>

< Trazo>

<CssParameter name= "stroke" > #009933 </CssParameter>

<CssParameter name= "stroke-width" > 4 ​​</CssParameter>

</Stroke>

</LineSymbolizer>

</Rule>

<Rule>

<Name> Pequeño </Name>

<MinScaleDenominator> 360000000 </MinScaleDenominator>

<LineSymbolizer>

<Stroke>

<CssParameter nombre= "trazo" > #009933 </CssParameter>

<CssParameter nombre= "ancho de trazo" > 2 </CssParameter>

</Stroke >

</LineSymbolizer>

</Rule>

</FeatureTypeStyle>

Detalles

A menudo es deseable agrandar las formas con niveles de zoom más altos al crear un mapa de aspecto natural.Este ejemplo varía el grosor de las líneas según el nivel de zoom (o más exactamente, el denominador de escala).Los denominadores de escala se refieren a la escala del mapa.Un denominador de escala de 10.000 significa que el mapa tiene una escala de 1:10.000 en las unidades de proyección del mapa.

Nota

Determinar los denominadores de escala apropiados (niveles de zoom) a utilizar está más allá del alcance de este ejemplo.

Este estilo contiene tres reglas.Las tres reglas están diseñadas de la siguiente manera:

Orden de reglas

Nombre de la regla

denominador de escala

Ancho de línea

1

Grande

1:180.000.000 o menos

6

2

Medio

1:180.000.000 a 1:360.000.000

4

3

Pequeño

Mayor que 1:360.000.000

2

El orden de estas reglas no importa ya que los baremos denominados en cada regla no se superponen.

La primera regla (líneas 2 a 11) es el denominador de escala más pequeño, correspondiente a cuando la vista se “acerca”.La regla de escala se establece enla línea 4, de modo que la regla se aplicará a cualquier mapa con un denominador de escala de 180.000.000 o menos.Las líneas 7-8dibujan la línea de color verde oscuro (#009933) con un ancho de 6 píxeles.

La segunda regla (líneas 12-22) es el denominador de escala intermedia, correspondiente a cuando la vista está "parcialmente ampliada".Las líneas 14 y 15establecen la escala de manera que la regla se aplicará a cualquier mapa con denominadores de escala entre 180.000.000 y 360.000.000.(El<MinScaleDenominator>es inclusivo y el<MaxScaleDenominator>es exclusivo, por lo que aquínose aplicaría un nivel de zoom de exactamente 360.000.000). Aparte de la escala, la única diferencia entre esta regla y la anterior es el ancho de las líneas, que se establece en 4 píxeles enlínea 19.

La tercera regla (líneas 23-32) es el denominador de escala más grande, correspondiente a cuando el mapa se “aleja”.La regla de escala se establece enla línea 25, de modo que la regla se aplicará a cualquier mapa con un denominador de escala de 360.000.000 o mayor.Nuevamente, la única otra diferencia entre esta regla y las demás es el ancho de las líneas, que se establece en 2 píxeles enla línea 29.

El resultado de este estilo es que las líneas se dibujan con anchos mayores cuando se acerca y con anchos más pequeños cuando se aleja.


Polígonos

Los polígonos son formas bidimensionales que contienen tanto un borde exterior (o "trazo") como un borde interior (o "relleno").Un polígono puede considerarse como un punto de forma irregular y tiene un estilo similar al de los puntos.

Advertencia

Los ejemplos de código que se muestran en esta páginano son el código SLD completo, ya que omiten la información del encabezado y pie de página de SLD en aras de la brevedad.Utilice los enlaces para descargar el SLD completo de cada ejemplo.

Ejemplo de capa de polígonos

Loque se utiliza a continuación contiene información del condado para un país ficticio.Como referencia, la tabla de atributos de los polígonos se incluye a continuación.polygons layer

fid(ID de función)

nombre(nombre del condado)

pop(población)

polígono.1

Condado de ironía

412234

polígono.2

Condado de rastreador

235421

polígono.3

Condado de Drácula

135022

polígono.4

Condado de Poly

1567879

polígono.5

Condado de rodamiento

201989

polígono.6

Condado de Montecristo

152734

polígono.7

Condado masivo

67123

polígono.8

Condado de rombo

198029

Download the polygons shapefile

polígono simple

Este ejemplo muestra un polígono relleno de azul.


polígono simple

Código

View and download the full "Simple polygon" SLD

1

2

3

4

5

6

7

8

9

<FeatureTypeStyle>

<Rule>

<PolygonSymbolizer>

<Fill>

<CssParameter name= "relleno" > #000080 </CssParameter>

</Fill>

</PolygonSymbolizer>

</Rule>

</FeatureTypeStyle>

Detalles

Hay uno<Rule>en uno<FeatureTypeStyle>para este estilo, que es la situación más sencilla posible.(Todos los ejemplos posteriores compartirán esta característica a menos que se especifique lo contrario). El estilo de los polígonos se logra mediante<PolygonSymbolizer>(líneas 3-7).La línea 5especifica azul oscuro (#000080) como color de relleno del polígono.

Nota

Los bordes de color claro alrededor de los polígonos en la figura son artefactos del renderizador causados ​​por la proximidad de los polígonos.No hay fronteras en este estilo.

Polígono simple con trazo

Este ejemplo agrega un trazo blanco de 2 píxeles al ejemplode Polígono simple.


Polígono simple con trazo

Código

View and download the full "Simple polygon with stroke" SLD

1

2

3

4

5

6

7

8

9

10

11

12

13

<FeatureTypeStyle>

<Rule>

<PolygonSymbolizer>

<Fill>

<CssParameter name= "fill" > #000080 </CssParameter>

</Fill>

<Stroke>

<CssParameter name= "stroke" > #FFFFFF </CssParameter>

<CssParameter nombre = "ancho de trazo" > 2 </CssParameter>

</Stroke>

</PolygonSymbolizer>

</Rule>

</FeatureTypeStyle>

Detalles

Este ejemplo es similar al ejemplo anteriorde Polígono simple, con la adición de la<Stroke>etiqueta (líneas 7-10).La línea 8establece el color del trazo en blanco (#FFFFFF) yla línea 9establece el ancho del trazo en 2 píxeles.

Polígono transparente

Este ejemplo se basa en el ejemplode Polígono simple con trazoy hace que el relleno sea parcialmente transparente estableciendo la opacidad al 50%.


Polígono transparente

Código

View and download the full "Transparent polygon" SLD

1

2

3

4

5

6

7

8

9

10

11

12

13

14

<FeatureTypeStyle>

<Rule>

<PolygonSymbolizer>

<Fill>

<CssParameter name= "fill" > #000080 </CssParameter>

<CssParameter name= "fill-opacity" > 0.5 </CssParameter>

</Fill>

<Stroke>

<CssParameter nombre= "trazo" > #FFFFFF </CssParameter>

<CssParameter nombre= "ancho de trazo" > 2 </CssParameter>

</Stroke>

</PolygonSymbolizer>

</Rule>

</FeatureTypeStyle>

Detalles

Este ejemplo es similar al ejemplode Polígono simple con trazo, excepto por definir la opacidad del relleno enla línea 6.El valor de 0,5 da como resultado un relleno parcialmente transparente que es 50% opaco.Un valor de opacidad de 1 dibujaría el relleno como 100 % opaco, mientras que un valor de opacidad de 0 daría como resultado un relleno completamente transparente (0 % opaco).En este ejemplo, como el fondo es blanco, el azul oscuro parece más claro.Si los puntos se impusieran sobre un fondo oscuro, el color resultante sería más oscuro.

Relleno gráfico

Este ejemplo llena los polígonos con un gráfico en mosaico.


Relleno gráfico

Código

View and download the full "Graphic fill" SLD

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

dieciséis

17

18

19

<FeatureTypeStyle>

<Regla>

<PolygonSymbolizer>

<Relleno>

<GraphicFill> <Gráfico

> <ExternalGraphic> <

OnlineResource xlink:type= "simple" xlink:href= "colorblocks.png" /> <Formato> imagen/png </Formato > </ExternalGraphic> <Size> 93 </Size> </Graphic> </GraphicFill> </Fill> </PolygonSymbolizer> </Rule> </FeatureTypeStyle>

Detalles

Este estilo rellena el polígono con un gráfico en mosaico.Esto se conoce como<ExternalGraphic>SLD, para distinguirlo de las formas comúnmente utilizadas, como cuadrados y círculos, que son "internos" al renderizador.Las líneas 7 a 12especifican los detalles del gráfico,la línea 10establece la ruta y el nombre del archivo del gráfico yla línea 11indica el formato de archivo (tipo MIME) del gráfico (image/png).Aunque si se desea se puede especificar una URL completa, no es necesaria ninguna información de ruta en lalínea 11porque este gráfico está contenido en el mismo directorio que el SLD.La línea 13determina la altura del gráfico mostrado en píxeles;si el valor difiere de la altura del gráfico, se escalará en consecuencia conservando la relación de aspecto.


Gráfico utilizado para el relleno.

relleno de eclosión

Este ejemplo rellena los polígonos con un patrón de sombreado.

Nota

Este ejemplo aprovecha una extensión SLD en GeoServer.El sombreado no forma parte de la especificación estándar SLD 1.0.


relleno de eclosión

Código

View and download the full "Hatching fill" SLD

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

dieciséis

17

18

19

20

<FeatureTypeStyle>

<Rule>

<PolygonSymbolizer>

<Relleno>

<GraphicFill>

<Graphic>

<Mark>

<WellKnownName> shape://times </WellKnownName>

<Trazo>

<CssParameter nombre= "trazo" > #990099 </CssParameter>

<CssParameter nombre= "ancho de trazo" > 1 </CssParameter>

</Stroke>

</Mark>

<Size> 16 </Size>

</Graphic>

</GraphicFill>

</Fill>

</PolygonSymbolizer>

</Rule >

</FeatureTypeStyle>

Detalles

En este ejemplo, hay una<GraphicFill>etiqueta como en el ejemplode Relleno gráfico, pero se usa<Mark>(líneas 7-13) en lugar de<ExternalGraphic>.La línea 8especifica un símbolo de “veces” (una “x”) que se colocará en mosaico en todo el polígono.La línea 10establece el color en violeta (#990099),la línea 11establece el ancho de los sombreados en 1 píxel yla línea 14establece el tamaño del mosaico en 16 píxeles.Debido a que los mosaicos sombreados siempre son cuadrados,<Size>establece tanto el ancho como el alto.

Polígono con etiqueta predeterminada

Este ejemplo muestra una etiqueta de texto en el polígono.A falta de cualquier otra personalización, así es como se mostrará una etiqueta.


Polígono con etiqueta predeterminada

Código

View and download the full "Polygon with default label" SLD

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

dieciséis

17

18

<FeatureTypeStyle>

<Rule>

<PolygonSymbolizer>

<Fill>

<CssParameter name= "relleno" > #40FF40 </CssParameter>

</Fill>

<Stroke>

<CssParameter name= "stroke" > #FFFFFF </CssParameter>

<CssParameter nombre = "ancho de trazo" > 2 </CssParameter>

</Stroke>

</PolygonSymbolizer>

<TextSymbolizer>

<Label>

<ogc:PropertyName> nombre </ogc:PropertyName>

</Label>

</TextSymbolizer>

</Rule>

</FeatureTypeStyle>

Detalles

En este ejemplo hay a<PolygonSymbolizer>y a<TextSymbolizer>.Las líneas 3-11comprenden el<PolygonSymbolizer>.El relleno del polígono se establece enla línea 5en verde claro (#40FF40), mientras que el trazo del polígono se establece enlas líneas 8 y 9en blanco (#FFFFFF) con un grosor de 2 píxeles.La etiqueta se establece en las<TextSymbolizer>líneas12 a 16, yla línea 14determina qué texto mostrar, en este caso el valor del atributo "nombre".(Consulte la tabla de atributos en la secciónde capa de polígonos de ejemplosi es necesario). Todos los demás detalles sobre la etiqueta se configuran en el valor predeterminado del renderizador, que aquí es la fuente Times New Roman, el color de fuente negro y el tamaño de fuente de 10 píxeles.

halo de etiqueta

Este ejemplo altera el aspecto delPolígono con etiqueta predeterminadaagregando un halo blanco a la etiqueta.


halo de etiqueta

Código

View and download the full "Label halo" SLD

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

dieciséis

17

18

19

20

21

22

23

24

<FeatureTypeStyle>

<Rule>

<PolygonSymbolizer>

<Fill>

<CssParameter name= "relleno" > #40FF40 </CssParameter>

</Fill>

<Stroke>

<CssParameter name= "stroke" > #FFFFFF </CssParameter>

<CssParameter nombre = "ancho de trazo" > 2 </CssParameter>

</Stroke>

</PolygonSymbolizer>

<TextSymbolizer>

<Label>

<ogc:PropertyName> nombre </ogc:PropertyName>

</Label>

<Halo>

<Radius> 3 < /Radius>

<Fill>

<CssParameter name= "fill" > #FFFFFF </CssParameter>

</Fill>

</Halo>

</TextSymbolizer>

</Rule>

</FeatureTypeStyle>

Detalles

Este ejemplo es similar alPolígono con etiqueta predeterminada, con la adición de un halo alrededor de las etiquetas en laslíneas 16 a 21.Un halo crea una zona de influencia de color alrededor de la etiqueta para mejorar su legibilidad.La línea 17establece el radio del halo, extendiendo el halo 3 píxeles alrededor del borde de la etiqueta, yla línea 19establece el color del halo en blanco (#FFFFFF).Dado que los halos son más útiles cuando se configuran con un contraste nítido en relación con el color del texto, este ejemplo utiliza un halo blanco alrededor del texto negro para garantizar una legibilidad óptima.

Polígono con etiqueta con estilo

Este ejemplo mejora el estilo de etiqueta del ejemploPolígono con etiqueta predeterminadaal centrar la etiqueta en el polígono, especificar un nombre y tamaño de fuente diferentes y configurar optimizaciones adicionales de ubicación de etiquetas.

Nota

Las optimizaciones de ubicación de etiquetas que se analizan a continuación (las<VendorOption>etiquetas) son extensiones SLD personalizadas para GeoServer.No forman parte de la especificación SLD 1.0.


Polígono con etiqueta con estilo

Código

View and download the full "Polygon with styled label" SLD

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

dieciséis

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

<FeatureTypeStyle>

<Rule>

<PolygonSymbolizer>

<Fill>

<CssParameter name= "relleno" > #40FF40 </CssParameter>

</Fill>

<Stroke>

<CssParameter name= "stroke" > #FFFFFF </CssParameter>

<CssParameter nombre = "ancho de trazo" > 2 </CssParameter>

</Stroke>

</PolygonSymbolizer>

<TextSymbolizer>

<Label>

<ogc:PropertyName> nombre </ogc:PropertyName>

</Label>

<Font>

<CssParameter name= " font-family" > Arial </CssParameter>

<CssParameter name= "font-size" > 11 </CssParameter>

<CssParameter name= "font-style" > normal </CssParameter>

<CssParameter name= "font-weight" > negrita </CssParameter>

</Font>

<LabelPlacement>

<PointPlacement>

<AnchorPoint>

<AnchorPointX> 0.5 </AnchorPointX>

<AnchorPointY> 0.5 </AnchorPointY>

</AnchorPoint>

</PointPlacement>

</LabelPlacement>

<Fill>

< CssParameter nombre= "relleno" > #000000 </CssParameter>

</Fill>

<VendorOption nombre= "autoWrap" > 60 </VendorOption>

<VendorOption nombre= "maxDisplacement" > 150 </VendorOption>

</TextSymbolizer>

</Rule >

</FeatureTypeStyle>

Detalles

Este ejemplo es similar al ejemplode Polígono con etiqueta predeterminada, con opciones de estilo adicionales dentro de las<TextSymbolizer>líneas12-35.Las líneas 16 a 21establecen el estilo de fuente.La línea 17establece la familia de fuentes en Arial,la línea 18establece el tamaño de fuente en 11 píxeles,la línea 19establece el estilo de fuente en "normal" (a diferencia de "cursiva" u "oblicua") y lalínea 20establece el peso de la fuente a "negrita" (en contraposición a "normal").

La<LabelPlacement>etiqueta enlas líneas 22-29afecta dónde se coloca la etiqueta en relación con el centroide del polígono.La línea 21centra la etiqueta colocándola al 50% (o 0,5) del camino horizontalmente a lo largo del centroide del polígono.La línea 22centra la etiqueta verticalmente exactamente de la misma manera.

Finalmente, hay dos toques adicionales para la optimización de la ubicación de las etiquetas:la línea 33garantiza que las etiquetas largas se divida en varias líneas configurando el ajuste de línea en las etiquetas en 60 píxeles, y lalínea 34permite que la etiqueta se desplace hasta 150 píxeles.Esto garantiza que las etiquetas estén compactas y sea menos probable que superen los límites del polígono.Observe el pequeño Massive County en la esquina, cuya etiqueta ahora se muestra”.

Polígono basado en atributos

Este ejemplo aplica estilos a los polígonos de forma diferente según el atributo "pop" (población).


Polígono basado en atributos

Código

View and download the full "Attribute-based polygon" SLD

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

dieciséis

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

<FeatureTypeStyle>

<Rule>

<Name> SmallPop </Name>

<Title> Menos de 200.000 </Title>

<ogc:Filter>

<ogc:PropertyIsLessThan>

<ogc:PropertyName> pop </ogc:PropertyName>

<ogc:Literal > 200000 </ogc:Literal>

</ogc:PropertyIsLessThan>

</ogc:Filter>

<PolygonSymbolizer>

<Fill>

<CssParameter name= "relleno" > #66FF66 </CssParameter>

</Fill>

</PolygonSymbolizer>

</ Regla>

<Regla>

<Nombre> MediumPop </Nombre>

<Título> 200.000 a 500.000 </Título> <

ogc:Filter>

<ogc:And>

<ogc:PropertyIsGreaterThanOrEqualTo>

<ogc:PropertyName> pop </ogc:PropertyName>

<ogc:Literal> 200000 </ogc:Literal>

</ogc:PropertyIsGreaterThanOrEqualTo>

<ogc:PropertyIsLessThan>

<ogc:PropertyName> pop </ogc:PropertyName>

<ogc:Literal> 500000 </ogc:Literal>

</ogc :PropertyIsLessThan>

</ogc:And>

</ogc:Filter>

<PolygonSymbolizer>

<Fill>

<CssParameter name= "fill" > #33CC33 </CssParameter>

</Fill>

</PolygonSymbolizer>

</Rule>

<Rule>

<Name> LargePop </Name>

<Title> Mayor que 500.000 </Title>

<ogc:Filter>

<ogc:PropertyIsGreaterThan>

<ogc:PropertyName> pop </ogc:PropertyName>

<ogc:Literal> 500000 </ogc: Literal>

</ogc:PropertyIsGreaterThan>

</ogc:Filter>

<PolygonSymbolizer>

<Fill>

<CssParameter name= "fill" > #009900 </CssParameter>

</Fill>

</PolygonSymbolizer>

</Rule>

</FeatureTypeStyle>

Detalles

Nota

Consulte lacapa de polígonos de ejemplopara ver los atributos de la capa.En este ejemplo se han evitado las etiquetas para simplificar el estilo, pero puede consultar el ejemplo dePolígono con etiqueta con estilopara ver qué atributos corresponden a qué polígonos.

Cada polígono de nuestro país ficticio tiene una población que está representada por el atributo de población (“pop”).Este estilo contiene tres reglas que alteran el relleno según el valor del atributo "pop": los valores más pequeños producen un color más claro y los valores más grandes producen un color más oscuro.

Las tres reglas están diseñadas de la siguiente manera:

Orden de reglas

Nombre de la regla

Población(“población”)

Color

1

pequeñopop

Menos de 200.000

#66FF66

2

Pop medio

200.000 a 500.000

#33CC33

3

Pop grande

Más de 500.000

#009900

El orden de las reglas no importa en este caso, ya que cada forma sólo se representa mediante una única regla.

La primera regla, enlas líneas 2 a 16, especifica el estilo de los polígonos cuyo atributo de población es inferior a 200.000.Las líneas 5 a 10configuran este filtro, laslíneas 6 a 9configuran el filtro "menor que",la línea 7indica el atributo ("pop") yla línea 8el valor de 200.000.El color del relleno del polígono se establece en verde claro (#66FF66) enla línea 13.

La segunda regla, enlas líneas 17 a 37, es similar y especifica un estilo para polígonos cuyo atributo de población es mayor o igual a 200 000 pero menor que 500 000.El filtro se establece enlas líneas 20-31.Este filtro es más largo que en la primera regla porque es necesario especificar dos criterios en lugar de uno: un filtro "mayor o igual que" y uno "menor que".Observe lasAndlíneas21y30.Esto exige que ambos filtros sean verdaderos para que la regla sea aplicable.El color del relleno del polígono se establece en verde medio en (#33CC33) enla línea 34.

La tercera regla, enlas líneas 38-52, especifica un estilo para polígonos cuyo atributo de población es mayor o igual a 500.000.El filtro se establece enlas líneas 41-46.El color del relleno del polígono es la única otra diferencia en esta regla, que se establece en verde oscuro (#009900) enla línea 49.

Polígono basado en zoom

Este ejemplo altera el estilo del polígono en diferentes niveles de zoom.


Polígono basado en zoom: ampliado


Polígono basado en zoom: parcialmente ampliado


Polígono basado en zoom: alejado

Código

View and download the full "Zoom-based polygon" SLD

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

dieciséis

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

<FeatureTypeStyle>

<Rule>

<Name> Large </Name>

<MaxScaleDenominator> 100000000 </MaxScaleDenominator>

<PolygonSymbolizer>

<Fill>

<CssParameter name= "fill" > #0000CC </CssParameter>

</Fill>

<Stroke>

< CssParameter nombre= "trazo" > #000000 </CssParameter>

<CssParameter nombre= "ancho de trazo" > 7 </CssParameter>

</Stroke>

</PolygonSymbolizer>

<TextSymbolizer>

<Label>

<ogc:PropertyName> nombre </ ogc:PropertyName>

</Label>

<Font>

<CssParameter name= "font-family" > Arial </CssParameter>

<CssParameter name= "font-size" > 14 </CssParameter>

<CssParameter name= "font-style" > normal </CssParameter>

<CssParameter name= "font-weight" > negrita </CssParameter>

</Font>

<LabelPlacement>

<PointPlacement>

<AnchorPoint>

<AnchorPointX> 0.5 </AnchorPointX>

<AnchorPointY> 0.5 </AnchorPointY>

</AnchorPoint>

</PointPlacement>

</LabelPlacement>

<Fill>

<CssParameter name= "fill" > #FFFFFF </CssParameter>

</Fill>

</TextSymbolizer>

</Rule>

<Rule>

< Nombre> Medio </Nombre>

<MinScaleDenominator> 100000000 </MinScaleDenominator>

<MaxScaleDenominator> 200000000 </MaxScaleDenominator>

<PolygonSymbolizer>

<Fill>

<CssParameter name= "fill" > #0000CC </CssParameter>

</Fill>

<Stroke>

<CssParameter name= "stroke" > #000000 </CssParameter>

<CssParameter name= "stroke-width" > 4 ​​</CssParameter>

</Stroke>

</PolygonSymbolizer>

</Rule>

<Rule>

<Name> Small </ Nombre>

<MinScaleDenominator> 200000000 </MinScaleDenominator>

<PolygonSymbolizer>

<Relleno>

<CssParameter nombre= "relleno" > #0000CC </CssParameter>

</Fill>

<Stroke>

<CssParameter nombre= "trazo" > #000000 </CssParameter>

<CssParameter nombre= "ancho de trazo" > 1 </CssParameter>

</Stroke>

</PolygonSymbolizer>

</Rule>

</FeatureTypeStyle>

Detalles

A menudo es deseable agrandar las formas con niveles de zoom más altos al crear un mapa de aspecto natural.Este ejemplo varía el grosor de las líneas según el nivel de zoom.Los polígonos ya hacen esto por su naturaleza bidimensional, pero otra forma de ajustar el estilo de los polígonos según el nivel de zoom es ajustar el grosor del trazo (para que sea más grande a medida que se acerca el mapa) o limitar las etiquetas a solo cierto zoom. niveles.Esto garantiza que el tamaño y la cantidad de trazos y etiquetas sigan siendo legibles y no eclipsen los propios polígonos.

Los niveles de zoom (o más exactamente, los denominadores de escala) se refieren a la escala del mapa.Un denominador de escala de 10.000 significa que el mapa tiene una escala de 1:10.000 en las unidades de proyección del mapa.

Nota

Determinar los denominadores de escala apropiados (niveles de zoom) a utilizar está más allá del alcance de este ejemplo.

Este estilo contiene tres reglas, definidas de la siguiente manera:

Orden de reglas

Nombre de la regla

denominador de escala

Anchura del trazo

¿Visualización de etiquetas?

1

Grande

1:100.000.000 o menos

7

2

Medio

1:100.000.000 a 1:200.000.000

4

No

3

Pequeño

Mayor que 1:200.000.000

2

No

La primera regla, enlas líneas 2 a 36, ​​es para el denominador de escala más pequeño, correspondiente a cuando la vista se “acerca”.La regla de escala se establece enla línea 40de manera que la regla se aplicará solo cuando el denominador de la escala sea 100.000.000 o menos.La línea 7define el relleno como azul (#0000CC).Tenga en cuenta que el relleno se mantiene constante en todas las reglas independientemente del denominador de la escala.Al igual que en los ejemplosde Polígono con etiqueta predeterminadaoPolígono con etiqueta con estilo, la regla también contiene una<TextSymbolizer>enlas líneas 14-35para dibujar una etiqueta de texto encima del polígono.Las líneas 19 a 22configuran la información de fuente en Arial, 14 píxeles y negrita sin cursiva.La etiqueta se centra tanto horizontal como verticalmente a lo largo del centroide del polígono configurando<AnchorPointX>y<AnchorPointY>para que ambas sean 0,5 (o 50%) enlas líneas 27-28.Finalmente, el color de la fuente se establece en blanco (#FFFFFF) en lalínea 33.

La segunda regla, enlas líneas 37-50, es para los denominadores de escala intermedia, correspondientes a cuando la vista está "parcialmente ampliada".Las reglas de escala enlas líneas 39-40establecen la regla de manera que se aplicará a cualquier mapa con un denominador de escala entre 100.000.000 y 200.000.000.(El<MinScaleDenominator>es inclusivo y el<MaxScaleDenominator>es exclusivo, por lo que aquínose aplicaría un nivel de zoom de exactamente 200.000.000). Aparte de la escala, hay dos diferencias entre esta regla y la primera: el ancho del trazo se establece en 4 píxeles en lalínea 47y a<TextSymbolizer>no están presentes, por lo que no se mostrarán etiquetas.

La tercera regla, enlas líneas 51-63, es para el denominador de escala más grande, correspondiente a cuando el mapa se “aleja”.La regla de escala se establece enla línea 53de manera que la regla se aplicará a cualquier mapa con un denominador de escala de 200.000.000 o mayor.Nuevamente, las únicas diferencias entre esta regla y las demás son el ancho de las líneas, que se establece en 1 píxel enla línea 60, y la ausencia de a<TextSymbolizer>para que no se muestren etiquetas.

El estilo resultante produce un trazo de polígono que se hace más grande a medida que uno se acerca y etiquetas que solo se muestran cuando se acerca a un nivel suficiente.


Rásteres

Los rásteres son datos geográficos que se muestran en una cuadrícula.Son similares a archivos de imagen como los archivos PNG, excepto que en lugar de que cada punto contenga información visual, cada punto contiene información geográfica en forma numérica.Los rásteres pueden considerarse como una tabla georreferenciada de valores numéricos.

Un ejemplo de ráster es una capa de Modelo de Elevación Digital (DEM), que tiene datos de elevación codificados numéricamente en cada punto de datos georreferenciado.

Advertencia

Los ejemplos de código que se muestran en esta páginano son el código SLD completo, ya que omiten la información del encabezado y pie de página de SLD en aras de la brevedad.Utilice los enlaces para descargar el SLD completo de cada ejemplo.

Ráster de ejemplo

Elque se utiliza en los ejemplos siguientes contiene datos de elevación para un mundo ficticio.Los datos se almacenan en EPSG:4326 (longitud/latitud) y tienen un rango de datos de 70 a 256. Si se representan en escala de grises, donde los valores mínimos están coloreados en negro y los valores máximos están coloreados en blanco, el ráster se vería así:raster layer


Archivo ráster renderizado en escala de grises

Download the raster shapefile

Degradado de dos colores

Este ejemplo muestra un estilo de dos colores con verde en elevaciones más bajas y marrón en elevaciones más altas.


Degradado de dos colores

Código

View and download the full "Two-color gradient" SLD

1

2

3

4

5

6

7

8

9

10

<FeatureTypeStyle>

<Rule>

<RasterSymbolizer>

<ColorMap>

<ColorMapEntry color= "#008000" cantidad= "70" />

<ColorMapEntry color= "#663333" cantidad= "256" />

</ColorMap>

</RasterSymbolizer>

</Rule>

</FeatureTypeStyle>

Detalles

Hay uno<Rule>en uno<FeatureTypeStyle>para este ejemplo, que es la situación más sencilla posible.Todos los ejemplos posteriores compartirán esta característica.El estilo de los rásteres se realiza mediante la<RasterSymbolizer>etiqueta (líneas 3-8).

Este ejemplo crea un degradado suave entre dos colores correspondientes a dos valores de elevación.El degradado se crea mediante las<ColorMap>líneas4-7.Cada entrada en<ColorMap>representa una entrada o ancla en el degradado.La línea 5establece el valor inferior de 70 a través delquantityparámetro, cuyo estilo es verde oscuro (#008000).La línea 6establece nuevamente el valor superior de 256 a través delquantityparámetro, que tiene el estilo marrón oscuro (#663333).Todos los valores de datos entre estas dos cantidades se interpolarán linealmente: un valor de 163 (el punto medio entre 70 y 256) se coloreará como el punto medio entre los dos colores (en este caso, aproximadamente,#335717un verde turbio).

gradiente transparente

Este ejemplo crea el mismo degradado de dos colores que en eldegradado de dos coloresdel ejemplo anterior, pero hace que toda la capa sea mayoritariamente transparente al establecer una opacidad del 30%.


gradiente transparente

Código

View and download the full "Transparent gradient" SLD

1

2

3

4

5

6

7

8

9

10

11

<FeatureTypeStyle>

<Rule>

<RasterSymbolizer>

<Opacity> 0.3 </Opacity>

<ColorMap>

<ColorMapEntry color= "#008000" cantidad= "70" />

<ColorMapEntry color= "#663333" cantidad= "256" />

</ColorMap>

</RasterSymbolizer>

</Rule>

</FeatureTypeStyle>

Detalles

Este ejemplo es similar al ejemplodel degradado de dos colores, salvo por la adición de lalínea 4, que establece la opacidad de la capa en 0,3 (o 30 % de opacidad).Un valor de opacidad de 1 significa que la forma se dibuja 100% opaca, mientras que un valor de opacidad de 0 significa que la forma se representa completamente transparente.El valor de 0,3 significa que el ráster adopta parcialmente el color y el estilo de lo que se dibuje debajo.Dado que el fondo es blanco en este ejemplo, los colores generados a partir del<ColorMap>aspecto se ven más claros, pero si el ráster se impusiera sobre un fondo oscuro, los colores resultantes serían más oscuros.

Brillo y contraste

Este ejemplo normaliza la salida de color y luego aumenta el brillo en un factor de 2.


Brillo y contraste

Código

View and download the full "Brightness and contrast" SLD

1

2

3

4

5

6

7

8

9

10

11

12

13

14

<FeatureTypeStyle>

<Rule>

<RasterSymbolizer>

<ContrastEnhancement>

<Normalize />

<GammaValue> 0.5 </GammaValue>

</ContrastEnhancement>

<ColorMap>

<ColorMapEntry color= "#008000" cantidad= "70" />

<ColorMapEntry color= "#663333" cantidad= "256" />

</ColorMap>

</RasterSymbolizer>

</Rule>

</FeatureTypeStyle>

Detalles

Este ejemplo es similar aldegradado de dos colores, excepto por la adición de la<ContrastEnhancement>etiqueta enlas líneas 4 a 7.La línea 5normaliza la salida aumentando el contraste al máximo.Luego, la línea 6ajusta el brillo en un factor de 0,5.Dado que los valores inferiores a 1 hacen que la salida sea más brillante, un valor de 0,5 hace que la salida sea dos veces más brillante.

Al igual que con los ejemplos anteriores,las líneas 8 a 11determinan el<ColorMap>, conla línea 9configurando el límite inferior (70) para que sea de color verde oscuro (#008000) yla línea 10configura el límite superior (256) para que sea de color marrón oscuro (#663333).

Degradado de tres colores

Este ejemplo crea un degradado de tres colores en colores primarios.


Degradado de tres colores

Código

View and download the full "Three-color gradient" SLD

1

2

3

4

5

6

7

8

9

10

11

<FeatureTypeStyle>

<Regla>

<RasterSymbolizer>

<ColorMap>

<ColorMapEntry color= "#0000FF" cantidad= "150" />

<ColorMapEntry color= "#FFFF00" cantidad= "200" />

<ColorMapEntry color= "#FF0000" cantidad= "250" />

</ColorMap>

</RasterSymbolizer>

</Rule>

</FeatureTypeStyle>

Detalles

Este ejemplo crea un degradado de tres colores basado en<ColorMap>tres entradas enlas líneas 4 a 8:la línea 5especifica el límite inferior (150) con estilo en azul (#0000FF),la línea 6especifica un punto intermedio (200) con estilo en amarillo (#FFFF00), yla línea 7especifica que el límite superior (250) tendrá un estilo rojo (#FF0000).

Dado que nuestros valores de datos oscilan entre 70 y 256, algunos puntos de datos no se tienen en cuenta en este estilo.Los valores que se encuentran debajo de la entrada más baja en el mapa de colores (el rango de 70 a 149) tienen el mismo color que el límite inferior, en este caso azul.Los valores por encima del límite superior en el mapa de colores (el rango de 251 a 256) tienen el mismo color que el límite superior, en este caso rojo.

canal alfa

Este ejemplo crea un efecto de "canal alfa" tal que los valores más altos son cada vez más transparentes.


canal alfa

Código

View and download the full "Alpha channel" SLD

1

2

3

4

5

6

7

8

9

10

<FeatureTypeStyle>

<Rule>

<RasterSymbolizer>

<ColorMap>

<ColorMapEntry color= "#008000" cantidad= "70" />

<ColorMapEntry color= "#008000" cantidad= "256" opacidad= "0" />

</ColorMap >

</RasterSymbolizer>

</Rule>

</FeatureTypeStyle>

Detalles

Un canal alfa es otra forma de referirse a la transparencia variable.Al igual que un degradado asigna valores a colores, cada entrada en a<ColorMap>puede tener un valor de opacidad (el valor predeterminado es 1.0 o completamente opaco).

En este ejemplo, hay un<ColorMap>con dos entradas:la línea 5especifica que el límite inferior de 70 será de color verde oscuro (#008000), mientras quela línea 6especifica que el límite superior de 256 también será de color verde oscuro pero con un valor de opacidad de 0. Esto significa que los valores de 256 se representarán con 0% de opacidad (completamente transparente).Al igual que el color del degradado, la opacidad también se interpola linealmente de modo que un valor de 163 (el punto medio entre 70 y 256) se representa con una opacidad del 50 %.

Colores discretos

Este ejemplo muestra un degradado que no está interpolado linealmente sino que tiene valores asignados precisamente a uno de tres colores específicos.

Nota

Este ejemplo aprovecha una extensión SLD en GeoServer.Los colores discretos no forman parte de la especificación estándar SLD 1.0.


Colores discretos

Código

View and download the full "Discrete colors" SLD

1

2

3

4

5

6

7

8

9

10

<FeatureTypeStyle>

<Rule>

<RasterSymbolizer>

<ColorMap type= "intervals" >

<ColorMapEntry color= "#008000" cantidad= "150" />

<ColorMapEntry color= "#663333" cantidad= "256" />

</ColorMap >

</RasterSymbolizer>

</Rule>

</FeatureTypeStyle>

Detalles

A veces, las bandas de color en pasos discretos son más apropiadas que un degradado de color.Eltype="intervals"parámetro agregado a la<ColorMap>línea4configura la pantalla para generar colores discretos en lugar de un degradado.Los valores en cada entrada corresponden al límite superior de la banda de color, de modo que los colores se asignan a valores menores que el valor de una entrada pero mayores o iguales que la siguiente entrada inferior.Por ejemplo,la línea 5colorea todos los valores inferiores a 150 en verde oscuro (#008000) y la línea 6 colorea todos los valores inferiores a 256 pero mayores o iguales a 150 en marrón oscuro (#663333).

Muchos degradados de color

Este ejemplo muestra un degradado interpolado en ocho colores diferentes.


Muchos degradados de color

Código

View and download the full "Many color gradient" SLD

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

dieciséis

<FeatureTypeStyle>

<Regla>

<RasterSymbolizer>

<ColorMap>

<ColorMapEntry color= "#000000" cantidad= "95" />

<ColorMapEntry color= "#0000FF" cantidad= "110" />

<ColorMapEntry color= "#00FF00" cantidad= "135" />

<ColorMapEntry color= "#FF0000" cantidad= "160" />

<ColorMapEntry color= "#FF00FF" cantidad= "185" />

<ColorMapEntry color= "#FFFF00" cantidad= "210" />

<ColorMapEntry color= "#00FFFF" cantidad= "235" />

<ColorMapEntry color= "#FFFFFF" cantidad= "256" />

</ColorMap>

</RasterSymbolizer>

</Rule>

</FeatureTypeStyle>

Detalles

A<ColorMap>puede incluir hasta 255<ColorMapEntry>elementos.Este ejemplo tiene ocho entradas (líneas 4-13):

Número de entrada

Valor

Color

código RGB

1

95

Negro

#000000

2

110

Azul

#0000FF

3

135

Verde

#00FF00

4

160

Rojo

#FF0000

5

185

Púrpura

#FF00FF

6

210

Amarillo

#FFFF00

7

235

cian

#00FFFF

8

256

Blanco

#FFFFFF


Referencia SLD

El estándar OGCStyled Layer Descriptor (SLD)define un lenguaje para expresar estilos de datos geoespaciales.GeoServer utiliza SLD como lenguaje de estilo principal.

SLD 1.0.0 se define en la siguiente especificación:

Especificación de implementación del descriptor de capa con estilo OGC, versión 1.0.0

Posteriormente, la funcionalidad de SLD se dividió en dos especificaciones:

Especificación de implementación de codificación de simbología OGC, versión 1.1.0

Perfil de descriptor de capa con estilo OGC de la especificación de implementación del servicio de mapas web, versión 1.1.0

GeoServer implementa el estándar SLD 1.0.0, así como algunas partes de los estándares SE 1.1.0 y WMS-SLD 1.1.0.

Elementos de SLD

Las siguientes secciones describen los elementos SLD implementados en GeoServer.

El elemento raíz de un SLD es<StyledLayerDescriptor>.Contiene elementosde CapasyEstilosque describen cómo se debe componer y diseñar un mapa.

Descriptor de capa con estilo

Capas

Capa con nombre

Capa de usuario

Característica en línea

Estilos

Estilo de usuario

CaracterísticaTipoEstilo

Los estilos contienenreglasyfiltrospara determinar conjuntos de características a las que se les aplicará estilo con una simbología específica.Las reglas también pueden especificar el rango de escala en el que es visible el estilo de la característica.

Normas

Sintaxis

Selección de escala

Orden de evaluación

Ejemplos

Filtros

Operadores de comparación

Operadores espaciales

Operadores logicos

Filtrar expresiones

Las reglas contienensimbolizadorespara especificar cómo se diseñan las entidades.Hay 5 tipos de simbolizadores:

PointSymbolizer, qué estilos presenta características comopuntos

LineSymbolizer, qué estilos presenta características comolíneas

PolygonSymbolizer, que diseña características comopolígonos

TextSymbolizer, que aplica estilosa las etiquetas de textode las funciones.

RasterSymbolizer, que diseñacoberturas ráster

Cada tipo de simbolizador tiene sus propios parámetros para controlar el estilo.

Simbolizador de puntos

Sintaxis

Ejemplo

Usar expresiones en valores de parámetros

LíneaSymbolizer

Sintaxis

Ejemplo

PolígonoSimbolizador

Sintaxis

Ejemplo

Simbolizador de texto

Sintaxis

Ejemplo

Etiquetado

Colocación de etiquetas

Colocación de puntos

Colocación de línea

Componer etiquetas a partir de múltiples atributos

Opciones mejoradas de Geoserver

RásterSymbolizer

Sintaxis


Descriptor de capa con estilo

El elemento raíz de un SLD es<StyledLayerDescriptor>.Contiene una secuencia decapasque definen el contenido del mapa con estilo.

El<StyledLayerDescriptor>elemento contiene los siguientes elementos:

Etiqueta

¿Requerido?

Descripción

<NamedLayer>

0..N

Una referencia a una capa con nombre en el catálogo de servidores

<UserLayer>

0..N

Una capa definida en el propio estilo.


Capas

Un documento SLD contiene una secuencia de definiciones de capas que indican las capas a las que se les aplicará estilo.Cada definición de capa es una referenciade NamedLayero unaUserLayerproporcionada .

Capa con nombre

NamedLayer especifica una capa existente alaque se le aplicará estilo y el estilo que se le aplicará.El estilo puede ser cualquier combinación de estilos de catálogo y estilos definidos explícitamente.Si no se especifica ningún estilo, se utiliza el estilo predeterminado para la capa.

El<NamedLayer>elemento contiene los siguientes elementos:

Etiqueta

¿Requerido?

Descripción

<Name>

El nombre de la capa a la que se le aplicará estilo.(Se ignora en los estilos del catálogo).

<Description>

No

La descripción de la capa.

<NamedStyle>

0..N

El nombre de un estilo de catálogo que se aplicará a la capa.

<UserStyle>

0..N

La definición de un estilo para aplicar a la capa.Verestilos

Capa de usuario

UnaUserLayerdefine una nueva capa a la que se le aplicará estilo y el estilo que se le aplicará.Los datos de la capa se proporcionan directamente en la definición de capa utilizando el<InlineFeature>elemento.Dado que el servidor no conoce la capa, el estilo también debe especificarse explícitamente.

El<UserLayer>elemento contiene los siguientes elementos:

Etiqueta

¿Requerido?

Descripción

<Name>

No

El nombre de la capa que se está definiendo.

<Description>

No

La descripción de la capa.

<InlineFeature>

No

Una o más colecciones de entidades que proporcionan los datos de la capa, especificadas mediante GML.

<UserStyle>

1..N

La definición de los estilos que se utilizarán para la capa.Verestilos

Un uso común es definir una geometría que se representará para indicar un área de interés.

Característica en línea

Un elementoInlineFeaturecontiene datos que definen una capa a la que se le aplicará estilo.El elemento contiene uno o más<FeatureCollection>elementos que definen los datos.Cada colección de funciones puede contener cualquier cantidad de<featureMember>elementos, cada uno de los cuales contiene una función especificada mediante el marcado GML.Las entidades pueden contener cualquier tipo de geometría (punto, línea o polígono, y colecciones de estos).También pueden contener atributos con valores escalares, que pueden resultar útiles para el etiquetado.

Ejemplo

El siguiente estilo especifica una capa con nombre que utiliza el estilo predeterminado y una capa definida por el usuario con datos y estilo en línea.Muestra la capa de Estados de EE. UU., con un cuadro rojo etiquetado que rodea el noroeste del Pacífico.

<sld:StyledLayerDescriptor xmlns:xsi= "http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation= "http://www.opengis.net/sld StyledLayerDescriptor.xsd"

xmlns:sld= " http://www.opengis.net/sld" version= "1.0.0" >

<sld:NamedLayer>

<sld:Name> usa:states </sld:Name>

</sld:NamedLayer>

<sld:UserLayer>

<sld:Name> En línea </sld:Name>

<sld:InlineFeature>

<sld:FeatureCollection>

<sld:featureMember>

<feature>

<geometryProperty>

<gml:Polygon>

<gml:outerBoundaryIs> <

gml:LinearRing>

<gml :coordenadas>

-127,0,51,0 -110,0,51,0 -110,0,41,0 -127,0,41,0 -127,0,51,0

</gml:coordinates>

</gml:LinearRing>

</gml:outerBoundaryIs>

</gml:Polygon>

</geometryProperty>

<title> Pacífico Noroeste </title>

</feature>

</sld:featureMember>

</sld :FeatureCollection>

</sld:InlineFeature>

<sld:UserStyle>

<sld:FeatureTypeStyle>

<sld:Rule>

<sld:PolygonSymbolizer>

<Stroke>

<CssParameter name= "stroke" > #FF0000 </CssParameter>

<CssParameter name= "ancho de trazo" > 2 </CssParameter>

</Stroke>

</sld:PolygonSymbolizer>

<sld:TextSymbolizer>

<sld:Label>

<ogc:PropertyName> título </ogc:PropertyName>

</sld:Label>

< sld:Fill>

<sld:CssParameter name= "relleno" > #FF0000 </sld:CssParameter>

</sld:Fill>

</sld:TextSymbolizer>

</sld:Rule>

</sld:FeatureTypeStyle>

</sld: UserStyle>

</sld:UserLayer> </sld:StyledLayerDescriptor>


Estilos

Los elementos de estilo especifican el estilo que se aplicará a una capa.

Estilo de usuario

El elementoUserStyledefine el estilo de una capa.

El<UserStyle>elemento contiene los siguientes elementos:

Etiqueta

¿Requerido?

Descripción

<Name>

No

El nombre del estilo, utilizado para hacer referencia a él externamente.(Se ignora para los estilos de catálogo).

<Title>

No

El título del estilo.

<Abstract>

No

La descripción del estilo.

<IsDefault>

No

Si el estilo es el predeterminado para una capa con nombre.Se utiliza en el modo BibliotecaSLD.Los valores son1o0(predeterminado).

<FeatureTypeStyle>

1..N

Define la simbología para representar un único tipo de entidad.

CaracterísticaTipoEstilo

El elementoFeatureTypeStyleespecifica el estilo que se aplica a un único tipo de entidad de una capa.Contiene una lista de reglas que determinan la simbología que se aplicará a cada característica de una capa.

El<FeatureTypeStyle>elemento contiene los siguientes elementos:

Etiqueta

¿Requerido?

Descripción

<Name>

No

No utilizado en la actualidad

<Title>

No

El título del estilo.

<Abstract>

No

La descripción del estilo.

<FeatureTypeName>

No

Identifica el tipo de característica al que se aplicará el estilo.Se omite si el estilo se aplica a todas las entidades de una capa.

<Rule>

1..N

Una regla de estilo a evaluar.Verreglas

Por lo general, una capa contiene solo un tipo de entidad, por lo que se<FeatureTypeName>omite.

<FeatureTypeStyle>Se puede especificarcualquier número de elementos en un estilo.En GeoServer, cada uno se representa en un búfer de imagen separado.Una vez renderizadas todas las funciones, las zonas de influencia se componen para formar la imagen de capa final.La composición se realiza en el orden en que se proporcionan los FeatureTypeStyles en el SLD, con el primero en la parte inferior (el “Modelo del pintor”).Esto crea efectivamente "capas virtuales", que se pueden usar para lograr efectos de estilo, como líneas revestidas.

Normas

Las reglasde estilodefinen la representación de las características.Una regla combina unfiltrocon cualquier número de simbolizadores.Las entidades para las cuales la condición del filtro se evalúa como verdadera se representan utilizando los simbolizadores de la regla.

Sintaxis

El<Rule>elemento contiene los siguientes elementos:

Etiqueta

¿Requerido?

Descripción

<Name>

No

Especifica un nombre para la regla.

<Title>

No

Especifica un título para la regla.El título se utiliza en listas de visualización y leyendas.

<Abstract>

No

Especifica un resumen que describe la regla.

<Filter>

No

Especifica un filtro que controla cuándo se aplica la regla.VerFiltros

<MinScaleDenominator>

No

Especifica el denominador de escala mínimo (inclusive) para el rango de escala en el que se aplica esta regla.Si está presente, la regla se aplica a la escala dada y a todas las escalas más pequeñas.

<MaxScaleDenominator>

No

Especifica el denominador de escala máximo (exclusivo) para el rango de escala en el que se aplica esta regla.Si está presente, la regla se aplica a escalas mayores que la escala dada.

<PointSymbolizer>

0..N

Especifica el estilo como puntos.VerPointSymbolizer

<LineSymbolizer>

0..N

Especifica el estilo como líneas.VerLineSymbolizer

<PolygonSymbolizer>

0..N

Especifica el estilo como polígonos.VerPolygonSymbolizer

<TextSymbolizer>

0..N

Especifica el estilo de las etiquetas de texto.VerTextSymbolizer

<RasterSymbolizer>

0..N

Especifica el estilo de los datos ráster.VerRasterSymbolizer

Selección de escala

Las reglas admitenla selección de escalapara permitir especificar el rango de escala en el que se puede aplicar una regla (suponiendo que la condición del filtro también se cumpla, si está presente).La selección de escala permite variar la representación de características en diferentes escalas de mapa.En particular, en escalas más pequeñas es común utilizar estilos más simples para las funciones, o incluso evitar la visualización de algunas funciones por completo.

Los rangos de escala se especifican mediantedenominadores de escala.Estos valores corresponden directamente a la distancia terrestre cubierta por un mapa, pero están inversamente relacionados con la terminología común "grande" y "pequeña" para la escala del mapa.En otras palabras:

Los mapas a gran escalacubrenmenosárea y tienen undenominador de escalamás pequeño .

Los mapas a pequeña escalacubrenmásárea y tienen undenominador de escalamayor .

Dos elementos opcionales especifican el rango de escala de una regla:

Etiqueta

¿Requerido?

Descripción

<MinScaleDenominator>

No

Especifica el denominador de escala mínimo (inclusive) para el rango de escala en el que se aplica esta regla.Si está presente, la regla se aplica a la escala dada y a todas las escalas más pequeñas.

<MaxScaleDenominator>

No

Especifica el denominador de escala máximo (exclusivo) para el rango de escala en el que se aplica esta regla.Si está presente, la regla se aplica a escalas mayores que la escala dada.

Nota

La escala actual también se puede obtener a través de lawms_scale_denominatorvariable de entorno SLD.Esto permite incluir dependencia de escala enFilter Expressions.

El siguiente ejemplo muestra el uso de la selección de escala en un par de reglas.Las reglas especifican que:

en escalassuperiores a1:20.000 ( escalasmás grandes, con denominadores de escalainferioresa 20.000), las características se simbolizan con cuadrados rojos de 10 píxeles,

En escalasiguales o inferiores a1:20.000 ( escalasmás pequeñas, con denominadores de escalasuperioresa 20.000), las características se simbolizan con triángulos azules de 4 píxeles.

<Regla>

<MaxScaleDenominator> 20000 </MaxScaleDenominator>

<PointSymbolizer>

<Gráfico>

<Marca>

<WellKnownName> cuadrado </WellKnownName>

<Relleno><CssParameter nombre= "relleno" > #FF0000 </CssParameter>

</Mark>

< Tamaño> 10 </ Tamaño>

</Graphic>

</PointSymbolizer> </Rule> <Rule>

<MinScaleDenominator> 20000 </MinScaleDenominator>

<PointSymbolizer>

<Gráfico>

<Marca>

<NombreConocido> triángulo </NombreConocido>

<Relleno> <CssParameter nombre= "relleno" > #0000FF </CssParameter>

</Mark>

<Size> 4 </Size>

</Graphic>

</PointSymbolizer> </Rule>

Orden de evaluación

Dentro de un documento SLD, cada uno<FeatureTypeStyle>puede contener muchas reglas.Los SLD de reglas múltiples son la base del estilo temático.En GeoServer, cada uno<FeatureTypeStyle>se evalúa una vez por cada característica procesada.Las reglas que contiene se evalúan en el orden en que ocurren.Se aplica una regla cuando su condición de filtro (si corresponde) es verdadera para una característica y la regla está habilitada en la escala del mapa actual.La regla se aplica representando la característica utilizando cada simbolizador dentro de la regla, en el orden en que aparecen.La representación se realiza en el búfer de imagen del padre<FeatureTypeStyle>.Por lo tanto, los simbolizadores anteriores en aFeatureTypeStyleyRulese representanantes quelos simbolizadores que aparecen más adelante en el documento (este es el método de representación del “Modelo del pintor”).

Ejemplos

La siguiente regla se aplica solo a entidades que tienen unPOPULATIONatributo mayor que 100.000 y simboliza las entidades como puntos rojos.

<Regla>

<ogc:Filter>

<ogc:PropertyIsGreaterThan>

<ogc:PropertyName> POBLACIÓN </ogc:PropertyName>

<ogc:Literal> 100000 </ogc:Literal>

</ogc:PropertyIsGreaterThan>

</ogc:Filter>

< PointSymbolizer>

<Graphic>

<Mark>

<Fill><CssParameter name= "fill" > #FF0000 </CssParameter>

</Mark>

</Graphic>

</PointSymbolizer> </Rule>

Se puede agregar una regla adicional que se aplica a entidades cuyoPOPULATIONatributo es menor que 100.000 y las simboliza como puntos verdes.

<Regla>

<ogc:Filter>

<ogc:PropertyIsLessThan>

<ogc:PropertyName> POBLACIÓN </ogc:PropertyName>

<ogc:Literal> 100000 </ogc:Literal>

</ogc:PropertyIsLessThan>

</ogc:Filter>

< PointSymbolizer>

<Graphic>

<Mark>

<Fill><CssParameter name= "fill" > #0000FF </CssParameter>

</Mark>

</Graphic>

</PointSymbolizer> </Rule>


Filtros

Unfiltroes el mecanismo en SLD para especificar condiciones.Son similares en funcionalidad a la cláusula “WHERE” de SQL.Los filtros se utilizan dentro delas Reglaspara determinar qué estilos se deben aplicar a qué características en un conjunto de datos.El lenguaje de filtro utilizado por SLD sigue elestándar de codificación de filtro OGC.Se describe en detalle en laReferencia de codificación de filtros.

Una condición de filtro se especifica mediante el uso de unoperador de comparacióno unoperador espacial, o dos o más de estos combinados medianteoperadores lógicos.Los operadores se utilizan normalmente para comparar las propiedades de las entidades que se filtran con otras propiedades o con datos literales.

Operadores de comparación

Los operadores de comparación se utilizan para especificar condiciones sobre los atributos no espaciales de una característica.Están disponibleslos siguientesoperadores de comparación binaria :

<PropertyIsEqualTo>

<PropertyIsNotEqualTo>

<PropertyIsLessThan>

<PropertyIsLessThanOrEqualTo>

<PropertyIsGreaterThan>

<PropertyIsGreaterThanOrEqualTo>

Estos operadores contienen dosexpresiones de filtropara comparar.El primer operando suele ser un<PropertyName>, pero ambos operandos pueden ser cualquier expresión, función o valor literal.

Los operadores de comparación binaria pueden incluir unmatchCaseatributo con el valortrueofalse.Si este atributo estrue(que es el predeterminado), las comparaciones de cadenas distinguen entre mayúsculas y minúsculas.Si el atributo está especificado y tienefalsecomparaciones de cadenas de valor, no marque mayúsculas y minúsculas.

Otros operadores de comparación de valoresdisponiblesson:

<PropertyIsLike>

<PropertyIsNull>

<PropertyIsBetween>

<PropertyIsLike>compara un valor de propiedad de cadena con unpatrónde texto .Contiene un<PropertyName>elemento que contiene el nombre de la propiedad que contiene la cadena que se va a comparar y un<Literal>elemento que contiene el patrón.El patrón se especifica mediante una secuencia de caracteres regulares y tres caracteres de patrón especiales.Los caracteres del patrón están definidos por los siguientes atributos requeridos del<PropertyIsLike>elemento:

wildCardespecifica un carácter de patrón que coincide con cualquier secuencia de cero o más caracteres

singleCharespecifica un carácter de patrón que coincide con cualquier carácter individual

escapeCharespecifica un carácter de escape que se puede utilizar para escapar de estos caracteres de patrón

<PropertyIsNull>prueba si el valor de una propiedad es nulo.Contiene un único<PropertyName>elemento que contiene el nombre de la propiedad que contiene el valor que se va a probar.

<PropertyIsBetween>prueba si el valor de una expresión se encuentra dentro de un rango.Contiene unaexpresión de filtroque proporciona el valor a probar, seguida de los elementos<LowerBoundary>y<UpperBoundary>, cada uno de los cuales contiene unaexpresión de filtro.

Ejemplos

El siguiente filtro selecciona entidades cuyoNAMEatributo tiene el valor de “Nueva York”:

<PropertyIsEqualTo>

<PropertyName> NOMBRE </PropertyName>

<Literal> Nueva York </Literal> </PropertyIsEqualTo>

El siguiente filtro selecciona entidades cuyo área de geometría es mayor que 1.000.000:

<PropertyIsGreaterThan>

<ogc:Función nombre= "área" >

<PropertyName> GEOMETRÍA </PropertyName>

</ogc:Función>

<Literal> 1000000 </Literal> </PropertyIsEqualTo>

Operadores espaciales

Los operadores espaciales se utilizan para especificar condiciones sobre los atributos geométricos de una característica.Están disponibles los siguientes operadores espaciales:

Operadores topológicos

Estos operadores prueban las relaciones espaciales topológicas utilizando los predicados estándar de características simples de OGC:

<Intersects>

<Equals>

<Disjoint>

<Touches>

<Within>

<Overlaps>

<Crosses>

<Intersects>

<Contains>

El contenido de estos operadores es un<PropertyName>elemento para una propiedad con valores de geometría y un literal de geometría GML.

Operadores a distancia

Estos operadores calculan las relaciones de distancia entre geometrías:

<DWithin>

<Beyond>

El contenido de estos elementos es un<PropertyName>elemento para una propiedad con valores de geometría, un literal de geometría GML y un<Distance>elemento que contiene el valor de la tolerancia de distancia.El<Distance>elemento puede incluir ununitsatributo opcional.

Operador de cuadro delimitador

Este operador prueba si un atributo de geometría de entidad intersecta un cuadro delimitador determinado:

<BBOX>

El contenido es un<PropertyName>elemento opcional y un literal de sobre GML.Si sePropertyNameomite, se asume el atributo de geometría predeterminado.

Ejemplos

El siguiente filtro selecciona entidades con una geometría que intersecta el punto (1,1):

<Intersectas>

<NombrePropiedad> GEOMETRÍA </NombrePropiedad>

<Literal>

<gml:Punto>

<gml:coordenadas> 1 1 </gml:coordenadas>

</gml:Punto>

</Literal> </Intersectas>

El siguiente filtro selecciona entidades con una geometría que intersecta el cuadro [-10,0: 10,10]:

<ogc:BBOX>

<ogc:PropertyName> GEOMETRÍA </ogc:PropertyName>

<gml:Box srsName= "urn:x-ogc:def:crs:EPSG:4326" >

<gml:coord> <

gml:X> - 10 </gml:X> <gml:Y> 0 </gml:Y>

</gml:coord>

<gml:coord>

<gml:X> 10 </gml:X> <gml:Y> 10 </ gml:Y>

</gml:coord>

</gml:Box> </ogc:BBOX>

Operadores logicos

Los operadores lógicos se utilizan para crear combinaciones lógicas de otros operadores de filtro.Pueden anidarse a cualquier profundidad.Están disponibles los siguientes operadores lógicos:

<And>

<Or>

<Not>

El contenido de<And>y<Or>son dos elementos del operador de filtro.El contenido de<Not>es un elemento operador de filtro único.

Ejemplos

El siguiente filtro se utiliza<And>para combinar un operador de comparación y un operador espacial:

<Y>

<PropertyIsEqualTo>

<PropertyName> NOMBRE </PropertyName>

<Literal> Nueva York </Literal>

</PropertyIsEqualTo>

<Intersects>

<PropertyName> GEOMETRÍA </PropertyName>

<Literal>

<gml:Punto>

<gml:coordenadas > 1 1 </gml:coordenadas>

</gml:Punto>

</Literal>

</Intersects> </And>

Filtrar expresiones

Las expresiones de filtro permiten realizar cálculos sobre valores de datos.Los siguientes elementos se pueden utilizar para formar expresiones.

Operadores aritméticos

Estos operadores realizan aritmética sobre valores numéricos.Cada uno contiene dos expresiones como subelementos.

<Add>

<Sub>

<Mul>

<Div>

Funciones

El<Function>elemento especifica una función de filtro que se evaluará.Elnameatributo proporciona el nombre de la función.El elemento contiene una secuencia de cero o más expresiones de filtro que proporcionan los argumentos de la función.Consulte laReferencia de funciones de filtropara obtener detalles de las funciones proporcionadas por GeoServer.

Valores de propiedad de característica

El<PropertyName>elemento permite hacer referencia al valor de un atributo de característica determinado.Contiene una cadena que especifica el nombre del atributo.

Literales

El<Literal>elemento permite especificar valores constantes de tipo numérico, booleano, cadena, fecha o geometría.


Simbolizador de puntos

UnPointSymbolizerdiseña entidades comopuntos.Los puntos se representan como símbolos gráficos en una única ubicación del mapa.

Sintaxis

A<PointSymbolizer>contiene un elemento opcional<Geometry>y un<Graphic>elemento obligatorio que especifica la simbología del punto.

Etiqueta

¿Requerido?

Descripción

<Geometry>

No

Especifica la geometría que se va a representar.

<Graphic>

Especifica el estilo del símbolo de punto.

Geometría

El<Geometry>elemento es opcional.Si está presente, especifica la propiedad de tipo de característica desde la cual obtener la geometría a la que aplicar estilo utilizando un<PropertyName>elemento.Consulte tambiénTransformaciones de geometría en SLDpara extensiones de GeoServer para especificar la geometría.

Se puede diseñar cualquier tipo de geometría con un archivo<PointSymbolizer>.Para geometrías que no son puntuales, se utiliza un punto representativo (como el centroide de una línea o un polígono).

Gráfico

La simbología se especifica mediante un<Graphic>elemento.El símbolo se especifica mediante un elemento<ExternalGraphic>o un<Mark>elemento.Los gráficos externosson archivos de imagen (en un formato como PNG o SVG) que contienen información sobre la forma y el color que define cómo representar un símbolo.Las marcasson formas vectoriales cuyo trazo y relleno se definen explícitamente en el simbolizador.

Hay cinco posibles subelementos del<Graphic>elemento.Se debe especificaruno de<ExternalGraphic>o ;<Mark>los demás son opcionales.

Etiqueta

¿Requerido?

Descripción

<ExternalGraphic>

No (cuando se usa<Mark>)

Especifica un archivo de imagen externo para utilizar como símbolo.

<Mark>

No (cuando se usa<ExternalGraphic>)

Especifica una forma con nombre para usar como símbolo.

<Opacity>

No

Especifica la opacidad (transparencia) del símbolo.Los valores varían de0(completamente transparente) a1(completamente opaco).El valor puede contenerexpresiones.El valor predeterminado es1(opaco).

<Size>

No

Especifica el tamaño del símbolo, en píxeles.Cuando se utiliza con un archivo de imagen, especifica la altura de la imagen y el ancho se escala en consecuencia.si se omite, se utiliza el tamaño del símbolo nativo.El valor puede contenerexpresiones.

<Rotation>

No

Especifica la rotación del símbolo alrededor de su punto central, en grados decimales.Los valores positivos indican rotación en el sentido de las agujas del reloj, los valores negativos indican rotación en el sentido contrario a las agujas del reloj.El valor puede contenerexpresiones.El valor predeterminado es0.

Gráfico externo

Los gráficos externosson archivos de imagen (en formatos como PNG o SVG) que contienen información de forma y color que define cómo representar un símbolo.Para obtener extensiones de GeoServer para especificar gráficos externos, consulteSimbología gráfica en GeoServer.

El<ExternalGraphic>elemento tiene los subelementos:

Etiqueta

¿Requerido?

Descripción

<OnlineResource>

Elxlink:hrefatributo especifica la ubicación del archivo de imagen.El valor puede ser una URL o una ruta local relativa al directorio SLD.El valor puede contener expresiones CQL delimitadas por.El atributotambién es obligatorio.El elemento no contiene ningún contenido.${}xlink:type="simple"

<Format>

El tipo MIME del formato de imagen.Se admiten la mayoría de los formatos de imágenes web estándar.Los tipos MIME comunes sonimage/png,image/jpeg,image/gifyimage/svg+xml

Marca

Las marcasson formas vectoriales predefinidas identificadas por un nombre conocido.Su relleno y trazo se pueden definir explícitamente en el SLD.Para obtener extensiones de GeoServer para especificar símbolos de marca, consulteSimbología gráfica en GeoServer.

El<Mark>elemento tiene los subelementos:

Etiqueta

¿Requerido?

Descripción

<WellKnownName>

El nombre de la forma.Las formas SLD estándar soncircle,square,triangle,star,crossox.El valor predeterminado essquare.

<Fill>

No

Especifica cómo se debe rellenar el símbolo (para formas cerradas).Las opciones se utilizanpara especificar un color de relleno sólido opara un relleno gráfico en mosaico.Consulte elRellenopara conocer la sintaxis completa.<CssParametername="fill"><GraphicFill>PolygonSymbolizer

<Stroke>

No

Especifica cómo se deben dibujar las líneas del símbolo.Algunas opciones se utilizanpara especificar un color de trazo opara un gráfico repetido.Consulte elTrazopara conocer la sintaxis completa.<CssParametername="stroke"><GraphicStroke>LineSymbolizer

Ejemplo

El siguiente simbolizador está tomado de la secciónPuntosdelLibro de recetas de SLD.

1

2

3

4

5

6

7

8

9

10

11

<PointSymbolizer>

<Gráfico>

<Marca>

<NombreConocido> círculo </NombreConocido>

<Relleno>

<CssParameter nombre= "relleno" > #FF0000 </CssParameter>

</Relleno>

</Marca>

<Tamaño> 6 < /Tamaño>

</Graphic>

</PointSymbolizer>

El simbolizador contiene el<Graphic>elemento requerido.Dentro de este elemento está el<Mark>elemento y<Size>el elemento, que son el elemento mínimo requerido en el interior<Graphic>(cuando no se usa el<ExternalGraphic>elemento).El<Mark>elemento contiene el<WellKnownName>elemento y un<Fill>elemento.No se requiere ningún otro elemento.En resumen, este ejemplo especifica lo siguiente:

Las características se representarán como puntos.

Los puntos se representarán como círculos.

Los círculos se representarán con un diámetro de 6 píxeles y se rellenarán con el color rojo.

El siguiente ejemplo utiliza un gráfico externo cargado desde el sistema de archivos:

1

2

3

4

5

6

7

8

9

<PointSymbolizer>

<Gráfico>

<ExternalGraphic>

<OnlineResource xlink:type= "simple"

xlink:href= "file:///var/www/htdocs/sun.png" />

<Formato> imagen.png </Formato>

</ExternalGraphic>

</Graphic>

</PointSymbolizer>

Parafile://las URL, el archivo debe ser legible para el usuario con el que se ejecuta el proceso Geoserver.También puede utilizarhref://URL para hacer referencia a gráficos remotos.

Se pueden encontrar más ejemplos en la secciónPuntosdelLibro de recetas de SLD.

Usar expresiones en valores de parámetros

Muchos parámetros SLD permiten que sus valores sean detipo mixto.Esto significa que el contenido del elemento puede ser:

un valor constante expresado como una cadena

unaexpresión de filtro

cualquier combinación de cadenas y expresiones de filtro.

El uso de expresiones en los valores de los parámetros proporciona la capacidad de determinar el estilo dinámicamente por función, calculando los valores de los parámetros a partir de las propiedades de la función.El uso de parámetros calculados es una alternativa al uso de reglas en algunas situaciones y puede proporcionar un documento SLD más compacto.

GeoServer también admite el uso de variables de sustitución proporcionadas en las solicitudes WMS.Esto se describe enSustitución de variables en SLD.


LíneaSymbolizer

UnLineSymbolizerdiseña características comolíneas.Las líneas son geometrías unidimensionales que tienen tanto posición como longitud.Cada línea se compone de uno o mássegmentos de líneay tiene dosextremoso ninguno (si está cerrada).

Sintaxis

A<LineSymbolizer>contiene un elemento opcional<Geometry>y un<Stroke>elemento obligatorio que especifica la simbología de la línea.

Etiqueta

¿Requerido?

Descripción

<Geometry>

No

Especifica la geometría que se va a representar.

<Stroke>

Especifica el estilo de la línea.

Geometría

El<Geometry>elemento es opcional.Si está presente, especifica la propiedad de tipo de característica desde la cual obtener la geometría a la que aplicar estilo utilizando elPropertyNameelemento.Consulte tambiénTransformaciones de geometría en SLDpara extensiones de GeoServer para especificar la geometría.

Se puede diseñar cualquier tipo de geometría con un archivo<LineSymbolizer>.Las geometrías de puntos se tratan como líneas de longitud cero, con orientación horizontal.Para geometrías poligonales, el límite (o límites) se utilizan como líneas, siendo cada línea un anillo cerrado sin extremos.

Ataque

El<Stroke>elemento especifica el estilo de una línea.Hay tres elementos que se pueden incluir dentro del<Stroke>elemento.

Etiqueta

¿Requerido?

Descripción

<GraphicFill>

No

Representa los píxeles de la línea con un patrón repetido.

<GraphicStroke>

No

Representa la línea con un gráfico lineal repetido.

<CssParameter>

0..N

Determina los parámetros de estilo del trazo.

Relleno gráfico

El<GraphicFill>elemento especifica que los píxeles de la línea se rellenarán con una imagen gráfica o un símbolo repetido.El gráfico se especifica mediante un<Graphic>subelemento, que se describe en lasecciónPointSymbolizerGráfico .

Trazo gráfico

El<GraphicStroke>elemento especifica que la línea se dibujará utilizando una imagen gráfica repetida o un símbolo que sigue a la línea.El gráfico se especifica mediante un<Graphic>subelemento, que se describe en lasecciónPointSymbolizerGráfico .

El espaciado del símbolo gráfico se puede especificar utilizando el<Size>elemento en el<Graphic>elemento oen elelemento.<CSSParametername="stroke-dasharray">Stroke

Parámetro CSS

Los<CssParameter>elementos describen el estilo básico de la línea.<CssParameter>Se puede especificarcualquier número de elementos.

Elnameatributoindica qué aspecto del estilo especifica un elemento, utilizando el modelo de estilo estándar CSS/SVG.Elcontenidodel elemento proporciona el valor del parámetro de estilo.El valor puede contenerexpresiones.

Se admiten los siguientes parámetros:

Parámetro

¿Requerido?

Descripción

name="stroke"

No

Especifica el color sólido dado a la línea, en el formato#RRGGBB.El valor predeterminado es negro (#000000).

name="stroke-width"

No

Especifica el ancho de la línea en píxeles.El valor predeterminado es1.

name="stroke-opacity"

No

Especifica la opacidad (transparencia) de la línea.El valor es un número entre0(completamente transparente) y1(completamente opaco).El valor predeterminado es1.

name="stroke-linejoin"

No

Determina cómo se representan las líneas en las intersecciones de segmentos de línea.Los valores posibles sonmitre(esquina pronunciada),round(esquina redondeada) ybevel(esquina diagonal).El valor predeterminado esmitre.

name="stroke-linecap"

No

Determina cómo se representan las líneas en sus extremos.Los valores posibles sonbutt(borde cuadrado afilado),round(borde redondeado) ysquare(borde cuadrado ligeramente alargado).El valor predeterminado esbutt.

name="stroke-dasharray"

No

Codifica un patrón de guiones como una serie de números separados por espacios.Los números impares (primero, tercero, etc.) determinan la longitud en píxeles para dibujar la línea, y los números pares (segundo, cuarto, etc.) determinan la longitud en píxeles para borrar la línea.El valor predeterminado es una línea continua.A partir de la versión 2.1,las matrices de guiones se pueden combinar con trazos gráficos para generar estilos de línea complejos con símbolos alternos o una combinación de líneas y símbolos.

name="stroke-dashoffset"

No

Especifica la distancia en píxeles dentro deldasharraypatrón en el que comenzar a dibujar.El valor predeterminado es0.

Ejemplo

El siguiente simbolizador está tomado de la secciónLíneasdelLibro de recetas SLD.

1

2

3

4

5

6

7

<LineSymbolizer>

<Stroke>

<CssParameter name= "stroke" > #0000FF </CssParameter>

<CssParameter name= "stroke-width" > 3 </CssParameter>

<CssParameter name= "stroke-dasharray" > 5 2 </CssParameter >

</Stroke>

</LineSymbolizer>

El simbolizador diseña una característica como una línea azul discontinua de 3 píxeles de ancho.


Línea azul discontinua

PolígonoSimbolizador

UnPolygonSymbolizerdiseña entidades comopolígonos.Los polígonos son geometrías bidimensionales.Se pueden representar con estilo para su interior (relleno) y su borde (trazo).Los polígonos pueden contener uno o más agujeros, que se trazan pero no se rellenan.Al renderizar un polígono, el relleno se renderiza antes de trazar el borde.

Sintaxis

A contiene unelemento<PolygonSymbolizer>opcionaly dos elementospara especificar el estilo:<Geometry><Fill><Stroke>

Etiqueta

¿Requerido?

Descripción

<Geometry>

No

Especifica la geometría que se va a representar.

<Fill>

No

Especifica el estilo del interior del polígono.

<Stroke>

No

Especifica el estilo del borde del polígono.

Geometría

El<Geometry>elemento es opcional.Si está presente, especifica la propiedad de tipo de característica desde la cual obtener la geometría a la que aplicar estilo utilizando elPropertyNameelemento.Consulte tambiénTransformaciones de geometría en SLDpara extensiones de GeoServer para especificar la geometría.

Se puede diseñar cualquier tipo de geometría con un archivo<PolygonSymbolizer>.Las geometrías de puntos se tratan como pequeños polígonos cuadrados ortonormales.Las geometrías lineales se cierran uniendo sus extremos.

Ataque

El<Stroke>elemento especifica el estilo delbordede un polígono.La sintaxis se describe en la sección<LineSymbolizer>Trazo.

Llenar

El<Fill>elemento especifica el estilo delinteriorde un polígono.Puede contener los subelementos:

Etiqueta

¿Requerido?

Descripción

<GraphicFill>

No

Representa el relleno del polígono con un patrón repetido.

<CssParameter>

0..N

Especifica parámetros para rellenar con un color sólido.

Relleno gráfico

El<GraphicFill>elemento contiene un<Graphic>elemento que especifica una imagen gráfica o un símbolo que se utilizará en un patrón de relleno repetido.La sintaxis se describe en la secciónPointSymbolizerGráfico.

Parámetro CSS

Los<CssParameter>elementos describen el estilo de un relleno de polígono sólido.<CssParameter>Se puede especificarcualquier número de elementos.

Elnameatributoindica qué aspecto del estilo especifica un elemento, utilizando el modelo de estilo estándar CSS/SVG.Elcontenidodel elemento proporciona el valor del parámetro de estilo.El valor puede contenerexpresiones.

Se admiten los siguientes parámetros:

Parámetro

¿Requerido?

Descripción

name="fill"

No

Especifica el color de relleno, en el formulario#RRGGBB.El valor predeterminado es gris (#808080).

name="fill-opacity"

No

Especifica la opacidad (transparencia) del relleno.El valor es un número decimal entre0(completamente transparente) y1(completamente opaco).El valor predeterminado es1.

Ejemplo

El siguiente simbolizador está tomado de la secciónPolígonosdelLibro de recetas de SLD.

1

2

3

4

5

<PolygonSymbolizer>

<Fill>

<CssParameter nombre= "relleno" > #000080 </CssParameter>

</Fill>

</PolygonSymbolizer>

Este simbolizador contiene sólo un<Fill>elemento.Dentro de este elemento hay un<CssParameter>que especifica el color de relleno del polígono#000080(un azul apagado).

Se pueden encontrar más ejemplos en la secciónPolígonosdelLibro de recetas de SLD.


Simbolizador de texto

UnTextSymbolizerdiseña características comoetiquetas de texto.Las etiquetas de texto se colocan en puntos o a lo largo de rutas lineales derivadas de la geometría que se está etiquetando.

El etiquetado es una operación compleja y un etiquetado eficaz es crucial para obtener resultados cartográficos legibles y visualmente agradables.Por este motivo, SLD ofrece muchas opciones para controlar la colocación de etiquetas.Para mejorar aún más la calidad, GeoServer proporciona opciones y parámetros adicionales.El uso de las opciones estándar y extendida se describe con mayor detalle en la siguiente sección sobreEtiquetado.

Sintaxis

A<TextSymbolizer>contiene los siguientes elementos:

Etiqueta

¿Requerido?

Descripción

<Geometry>

No

La geometría que se va a etiquetar.

<Label>

No

El contenido del texto de la etiqueta.

<Font>

No

La información de fuente de la etiqueta.

<LabelPlacement>

No

Establece la posición de la etiqueta en relación con su geometría asociada.

<Halo>

No

Crea un fondo de color alrededor del texto de la etiqueta para mejorar la legibilidad.

<Fill>

No

El estilo de relleno del texto de la etiqueta.

<Graphic>

No

Un gráfico que se mostrará detrás del texto de la etiqueta.ConsulteGráficopara conocer la sintaxis del contenido.

<Priority>

No

La prioridad de la etiqueta durante la resolución de conflictos.El contenido puede contenerexpresiones.Véase tambiénEtiquetado de prioridades.

<VendorOption>

0..N

Una opción específica de GeoServer.ConsulteEtiquetadopara obtener descripciones de las opciones disponibles.Se puede especificar cualquier número de opciones.

Geometría

El<Geometry>elemento es opcional.Si está presente, especifica la propiedad de tipo de característica de la cual obtener la geometría a etiquetar, utilizando un<PropertyName>elemento.Consulte tambiénTransformaciones de geometría en SLDpara extensiones de GeoServer para especificar la geometría.

Cualquier tipo de geometría puede etiquetarse con un<TextSymbolizer>.Para geometrías que no son puntuales, se utiliza un punto representativo (como el centroide de una línea o un polígono).

Etiqueta

El<Label>elemento especifica el texto que se representará como etiqueta.Permite contenido de tipo mixto, lo que significa que el contenido puede ser una mezcla de datos de cadena yexpresiones de filtro.Estos se concatenan para formar el texto de la etiqueta final.Si una propiedad de característica proporciona una etiqueta directamente, el contenido es un único archivo<PropertyName>.Se pueden incluir varias propiedades en la etiqueta y los valores de las propiedades se pueden manipular mediante expresiones y funciones de filtro.También se puede proporcionar texto repetitivo adicional.Los espacios en blanco se pueden conservar rodeándolos con<![CDATA[]]>delimitadores XML.

Si se omite este elemento, no se representa ninguna etiqueta.

Fuente

El<Font>elemento especifica la fuente que se utilizará para la etiqueta.Un conjunto de<CssParameter>elementos especifica los detalles de la fuente.

Elnameatributoindica qué aspecto de la fuente se describe, utilizando el modelo de fuente CSS/SVG estándar.Elcontenidodel elemento proporciona el valor del parámetro de fuente.El valor puede contenerexpresiones.

Parámetro

¿Requerido?

Descripción

name="font-family"

No

El apellido de la fuente que se utilizará para la etiqueta.El valor predeterminado esTimes.

name="font-style"

No

El estilo de la fuente.Las opciones sonnormal,italicyoblique.El valor predeterminado esnormal.

name="font-weight"

No

El peso de la fuente.Las opciones sonnormalybold.El valor predeterminado esnormal.

name="font-size"

No

El tamaño de la fuente en píxeles.El valor predeterminado es10.

Colocación de etiquetas

El<LabelPlacement>elemento especifica la ubicación de la etiqueta en relación con la geometría que se está etiquetando.Hay dos subelementos posibles:<PointPlacement>o<LinePlacement>.Se debe especificar exactamente uno de ellos.

Etiqueta

¿Requerido?

Descripción

<PointPlacement>

No

Etiqueta una geometría en un solo punto

<LinePlacement>

No

Etiqueta una geometría a lo largo de una ruta lineal

Colocación de puntos

El<PointPlacement>elemento indica que la etiqueta se coloca en un punto de etiquetado derivado de la geometría que se está etiquetando.La posición de la etiqueta con respecto al punto de etiquetado puede controlarse mediante los siguientes subelementos:

Etiqueta

¿Requerido?

Descripción

<AnchorPoint>

No

La ubicación dentro del cuadro delimitador de la etiqueta que está alineada con el punto de la etiqueta.La ubicación se especifica mediantesubelementos<AnchorPointX>y , con valores en el rango [0..1].<AnchorPointY>Los valores pueden contenerexpresiones.

<Displacement>

No

Especifica que el punto de la etiqueta debe estar desplazado del punto original.El desplazamiento se especifica mediantesubelementos<DisplacementX>y , con valores en píxeles.<DisplacementY>Los valores pueden contenerexpresiones.El valor predeterminado es.(0,0)

<Rotation>

No

La rotación de la etiqueta en grados en el sentido de las agujas del reloj (los valores negativos son en el sentido contrario a las agujas del reloj).El valor puede contenerexpresiones.El valor predeterminado es0.

La justificación del punto de anclaje, el desplazamiento y la rotación se aplican en ese orden.

Colocación de línea

El<LinePlacement>elemento indica que la etiqueta se coloca a lo largo de una ruta lineal derivada de la geometría que se está etiquetando.La posición de la etiqueta con respecto a la trayectoria lineal puede controlarse mediante el siguiente subelemento:

Etiqueta

¿Requerido?

Descripción

<PerpendicularOffset>

No

El desplazamiento de la ruta lineal, en píxeles.Los valores positivos se desplazan a la izquierda de la línea y los negativos a la derecha.El valor puede contenerexpresiones.El valor predeterminado es0.

La apariencia del texto a lo largo de rutas lineales se puede controlar aún más mediante las opciones del proveedorfollowLine,maxDisplacement,repeat,labelAllGroupymaxAngleDelta.Estos se describen enEtiquetado.

aureola

Un halo crea un fondo de color alrededor del texto de la etiqueta, lo que mejora la legibilidad en situaciones de bajo contraste.Dentro del<Halo>elemento hay dos subelementos que controlan la apariencia del halo:

Etiqueta

¿Requerido?

Descripción

<Radius>

No

El radio del halo, en píxeles.El valor puede contenerexpresiones.El valor predeterminado es1.

<Fill>

No

El color y la opacidad del halo medianteCssParameterelementos parafillyfill-opacity.ConsulteRellenarpara conocer la sintaxis completa.Los valores de los parámetros pueden contenerexpresiones.El valor predeterminado es unrellenoblanco#FFFFFF( ) con100%de opacidad.

Llenar

El<Fill>elemento especifica el estilo de relleno del texto de la etiqueta.La sintaxis es la misma que la del elementoPolygonSymbolizerRelleno.El color de relleno predeterminado esnegro(#FFFFFF) con100%de opacidad.

Gráfico

El<Graphic>elemento especifica un símbolo gráfico que se mostrará detrás del texto de la etiqueta (si corresponde).Un uso clásico de esto es mostrar "protectores de carreteras" detrás de los números de las carreteras proporcionados por los atributos de las entidades.El contenido del elemento tiene la misma sintaxis que el elemento<PointSymbolizer>Gráfico.Los gráficos pueden proporcionarse mediantesímbolos de marcasinternos o mediante imágenes externas o archivos SVG.Su tamaño y relación de aspecto se pueden cambiar para que coincidan con el texto que se muestra usando las opciones del proveedor:cambio de tamaño gráficoymargen gráfico.

Ejemplo

El siguiente simbolizador está tomado de la secciónPuntosdelLibro de recetas de SLD.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

dieciséis

17

18

19

20

21

22

23

24

25

26

27

<TextSymbolizer>

<Label>

<ogc:PropertyName> nombre </ogc:PropertyName>

</Label>

<Font>

<CssParameter name= "font-family" > Arial </CssParameter>

<CssParameter name= "font-size" > 12 </CssParameter>

<CssParameter name= "font-style" > normal </CssParameter>

<CssParameter name= "font-weight" > negrita </CssParameter>

</Font>

<LabelPlacement>

<PointPlacement>

<AnchorPoint>

<AnchorPointX > 0.5 </AnchorPointX>

<AnchorPointY> 0.0 </AnchorPointY>

</AnchorPoint>

<Desplazamiento>

<DesplazamientoX> 0 </DesplazamientoX>

<DesplazamientoY> 25 </DesplazamientoY>

</Desplazamiento>

<Rotación> -45 </ Rotación>

</PointPlacement>

</LabelPlacement>

<Fill>

<CssParameter name= "relleno" > #990099 </CssParameter>

</Fill>

</TextSymbolizer>

El simbolizador etiqueta las entidades con el texto de lanamepropiedad.La fuente es Arial en negrita en tamaño 12 pt, rellena en color violeta.Las etiquetas se centran en el punto a lo largo de su borde inferior, luego se desplazan 25 píxeles hacia arriba y finalmente se giran 45 grados en el sentido contrario a las agujas del reloj.

El desplazamiento tiene efecto antes de la rotación durante el renderizado, por lo que el desplazamiento vertical de 25 píxeles se gira 45 grados.


Punto con etiqueta girada


Etiquetado

Esta sección analiza los detalles del control de la colocación de etiquetas a través de las opciones SLD estándar.También describe una serie de opciones mejoradas de GeoServer para la colocación de etiquetas que proporcionan una mejor salida cartográfica.

Colocación de etiquetas

La especificación SLD define dos estrategias alternativas de colocación de etiquetas que se pueden utilizar en el<LabelPlacement>elemento:

<PointPlacement>coloca etiquetas en un solo punto

<LinePlacement>coloca etiquetas a lo largo de una línea

Colocación de puntos

Cuando<PointPlacement>se utiliza, la geometría se etiqueta en un únicopunto de etiqueta.En el caso de las líneas, este punto se encuentra en el medio de la parte visible de la línea.Para los polígonos, el punto es el centroide de la parte visible del polígono.La posición de la etiqueta con respecto al punto de la etiqueta se puede controlar mediante los siguientes subelementos:

Elemento

Descripción

<AnchorPoint>

Determina la ubicación de la etiqueta en relación con el punto de la etiqueta.Valores dados como decimales entre 0-1.

<Displacement>

Desplaza la etiqueta desde el punto de anclaje.Valores dados en píxeles.

<Rotation>

Gira la etiqueta en el sentido de las agujas del reloj un número determinado de grados.

La mejor manera de explicar estas opciones es con ejemplos.

Punto de anclaje

El punto de anclaje determina dónde se coloca la etiqueta en relación con el punto de la etiqueta.

<Punto de anclaje>

<Punto de anclajeX>

0,5

</AnchorPointX>

<AnchorPointY>

0,5

</AnchorPointY> </AnchorPoint>

Los valores de los puntos de anclaje, enumerados aquí como pares ordenados (X, Y), se especifican en relación con el cuadro delimitador de la etiqueta, con valores de 0 a 1 inclusive.Por ejemplo:

(Predeterminado)La parte inferior izquierda del cuadro es (0, 0)

Arriba a la derecha es (1, 1)

El centro es (0,5, 0,5)

Entonces, para tener la ubicación del ancla centrada justo debajo de la etiqueta (etiqueta centrada en la parte superior), use (0.5, 0):

<Punto de anclaje>

<Punto de anclajeX>

0,5

</AnchorPointX>

<AnchorPointY>

0

</AnchorPointY> </AnchorPoint>


Los siguientes ejemplos muestran cómo el cambio del punto de anclaje afecta la posición de las etiquetas:


(0, 0,5) coloca la etiqueta a la derecha del punto de la etiqueta


(0,5, 0,5) coloca el centro de la etiqueta en el punto de la etiqueta


(1, 0.5) coloca la etiqueta a la izquierda del punto de la etiqueta


(0,5, 0) coloca la etiqueta horizontalmente centrada sobre el punto de la etiqueta

Desplazamiento

El desplazamiento permite un control preciso de la colocación de la etiqueta.Los valores de desplazamiento compensan la ubicación de la etiqueta desde el punto de anclaje en un número específico de píxeles.La sintaxis del elemento es:

<Desplazamiento>

<DesplazamientoX>

10

</DesplazamientoX>

<DesplazamientoY>

0

</DesplazamientoY> </Desplazamiento>

Ejemplos:


Desplazamiento de X=10 píxeles (compárese con el punto de anclaje predeterminado de (X=0, Y=0,5) que se muestra arriba)


Desplazamiento de Y=-10 píxeles (compárese con el punto de anclaje (X= 0,5, Y=1,0) - no se muestra)

Rotación

El<Rotation>elemento opcional especifica que las etiquetas deben girarse en el sentido de las agujas del reloj un número determinado de grados.

<Rotación>

45</Rotación>

Los siguientes ejemplos muestran cómo la rotación interactúa con los puntos de anclaje y los desplazamientos.


rotación de 45 grados


Rotación de 45 grados con punto de anclaje (X=0,5, Y=0,5)


Rotación de 45 grados con desplazamiento X de 40 píxeles


Rotación de 45 grados con desplazamiento Y de 40 píxeles con punto de anclaje (X=0,5, Y=0,5)

Colocación de línea

Para etiquetar entidades lineales (como una carretera o un río),<LinePlacement>se puede especificar el elemento.Esto indica que el estilista debe determinar la mejor ubicación y rotación de las etiquetas a lo largo de las líneas.

El elemento SLD LinePlacement estándar proporciona un subelemento opcional,<PerpendicularOffset>.GeoServer proporciona mucho más control sobre la colocación de etiquetas de línea a través de opciones específicas del proveedor;consulte a continuación para obtener más detalles.

Desplazamiento perpendicular

El<PerpendicularOffset>elemento opcional le permite colocar una etiqueta encima o debajo de una línea.(Esto es similar a los<DisplacementY>puntos de etiqueta descritos anteriormente). El valor de desplazamiento se especifica en píxeles.Un valor positivo se desplaza hacia arriba y un valor negativo hacia abajo.

<Colocación de etiquetas>

<Colocación de líneas

> <Desplazamiento perpendicular>

10

</PerpendicularOffset>

</LinePlacement> </LabelPlacement>

Ejemplos:


Desplazamiento perpendicular = 0 (predeterminado)


Desplazamiento perpendicular = 10

Componer etiquetas a partir de múltiples atributos

El<Label>elemento en<TextSymbolizer>permite contenido mixto.Esto significa que su contenido puede ser una mezcla de texto sin formato yexpresiones de filtro.La mezcla se interpreta como una concatenación.Puede aprovechar esto para crear etiquetas complejas a partir de múltiples atributos.

Por ejemplo, si desea que tanto el nombre de un estado como su abreviatura aparezcan en una etiqueta, puede hacer lo siguiente:

<Etiqueta>

<ogc:NombrePropiedad> NOMBRE_ESTADO </ogc:NombrePropiedad> ( <ogc:NombrePropiedad> ESTADO_ABBR </ogc:NombrePropiedad> )

</Etiqueta>

y obtendrás una etiqueta que parece.Texas(TX)

Si necesita agregar espacios en blanco adicionales o una nueva línea, se topará con una rareza XML.El manejo de espacios en blanco en el elemento Etiqueta sigue una regla XML llamada "contraer", en la que todos los espacios en blanco iniciales y finales deben eliminarse, mientras que todos los espacios en blanco (y nuevas líneas) en el medio del elemento xml se contraen en un solo espacio en blanco.

Entonces, ¿qué sucede si necesita insertar una nueva línea o una secuencia de dos o más espacios entre los nombres de sus propiedades?Ingrese CDATA.CDATA es una sección XML especial que debe devolverse al intérprete tal como está, sin seguir ninguna regla de manejo de espacios en blanco.Entonces, por ejemplo, si quisieras tener la abreviatura del estado en la siguiente línea, usarías lo siguiente:

<Etiqueta>

<ogc:NombrePropiedad> NOMBRE_ESTADO </ogc:NombrePropiedad> <![CDATA[ ]]> ( <ogc:NombrePropiedad> STATE_ABBR </ogc:NombrePropiedad> )

</Etiqueta>

Opciones mejoradas de Geoserver

GeoServer proporciona una serie de opciones de estilo de etiquetas como extensiones de la especificación SLD.El uso de estas opciones brinda más control sobre la apariencia del mapa, ya que el estándar SLD no es lo suficientemente expresivo como para brindar todas las opciones que uno podría desear.

Estas opciones se especifican como subelementos de<TextSymbolizer>.

Etiquetado de prioridad

El elemento opcional<Priority>permite especificar la prioridad de la etiqueta.Esto controla cómo se resuelven los conflictos (superposiciones) entre etiquetas durante la renderización.El contenido del elemento puede ser unaexpresiónpara recuperar o calcular un valor de prioridad relativa para cada característica en una capa.Alternativamente, el contenido puede ser un valor constante, para establecer la prioridad de las etiquetas de una capa en relación con otras capas en un mapa renderizado.

La prioridad predeterminada para las etiquetas es 1000.

Nota

Resolución de conflictos SLD estándar

Si el<Priority>elemento no está presente, o si un grupo de etiquetas tiene la misma prioridad, se utiliza la resolución de conflictos de etiquetas SLD estándar.Según esta estrategia, la etiqueta que se mostrará entre un grupo de etiquetas en conflicto se elige esencialmente al azar.

Por ejemplo, tomemos el siguiente conjunto de datos de ciudades:

Nombre de la ciudad | población

------------+------------

Yonkers | 197,818

ciudad de jersey | 237.681

Nueva York | 280,123

Nueva York | 8.107.916


Ubicaciones de ciudades (mapa a gran escala)

Más gente sabe dónde está la ciudad de Nueva York que dónde está la ciudad de Jersey.Por lo tanto, queremos darle prioridad a la etiqueta “Nueva York” para que sea visible cuando entre en conflicto con (superpuesta) “Jersey City”.Para ello incluimos el siguiente código en<TextSymbolizer>:

<Prioridad>

<NombrePropiedad> población </NombrePropiedad> </Prioridad>

Esto asegura que, a pequeña escala, Nueva York sea etiquetada con preferencia a las ciudades cercanas menos pobladas:


Ubicaciones de ciudades (mapa a pequeña escala)

Sin un etiquetado de prioridad, la ciudad de Jersey podría ser etiquetada con preferencia a Nueva York, lo que dificultaría la interpretación del mapa.En escalas que muestran muchas características, el etiquetado de prioridades es esencial para garantizar que las ciudades más grandes sean más visibles que las ciudades más pequeñas.


Funciones de agrupación (grupo)

Lagroupopción permite mostrar una sola etiqueta para múltiples funciones en un grupo lógico.

<VendorOption nombre= "grupo" > sí </VendorOption>

La agrupación funciona recopilando todas las entidades con el mismo texto de etiqueta y luego eligiendo una geometría representativa para el grupo, de acuerdo con las siguientes reglas:

Geometría

Punto de etiqueta

Conjunto de puntos

Se utiliza el primer punto dentro del rectángulo de vista.

Conjunto de líneas

Las líneas se unen, se recortan en el rectángulo de vista y se utiliza el camino más largo.

Conjunto de polígonos

Los polígonos se recortan en el rectángulo de vista y se utiliza el polígono más grande.

Si lo desea, se puede obligar al etiquetador a etiquetar cada elemento de un grupo especificando la opciónlabelAllGroup.

Advertencia

Tenga cuidado de que las etiquetas indiquen realmente las características que deben agruparse.Por ejemplo, agrupar solo por el nombre de la ciudad podría terminar creando un grupo que contenga tantoParís(Francia) comoParís(Texas).

Los datos de carreteras son un ejemplo clásico que muestra por qué es útil la agrupación.Por lo general, es deseable mostrar una sola etiqueta para toda “Main Street”, no una etiqueta para cada cuadra de “Main Street”.

Cuando lagroupopción está desactivada (la opción predeterminada), no se realiza la agrupación y cada característica del bloque está etiquetada (sujeta a la eliminación de conflictos de etiquetas):


Cuandogroupse utiliza esta opción, las geometrías con la misma etiqueta se agrupan y la posición de la etiqueta se determina a partir de todo el grupo.Esto produce un mapa mucho menos desordenado:


etiquetaTodoGrupo

LalabelAllGroupopción se puede utilizar junto con lagroupopción (consulteFunciones de agrupación (grupo)).Hace quese etiqueten todos los caminos separados en un grupo de líneas, no solo el más largo.

<VendorOption nombre= "labelAllGroup" > verdadero </VendorOption>

Etiquetas superpuestas y separadas (spaceAround)

De forma predeterminada, GeoServer no mostrará etiquetas "una encima de la otra".Al utilizar estaspaceAroundopción, puede permitir que las etiquetas se superpongan o agregar espacio adicional alrededor de las etiquetas.El valor proporcionado para la opción es un tamaño positivo o negativo, en píxeles.

<VendorOption nombre= "spaceAround" > 10 </VendorOption>

Usando el valor predeterminado de 0, el cuadro delimitador de una etiqueta no puede superponerse al cuadro delimitador de otra etiqueta:


ConspaceAroundvalor negativo se permite la superposición:


Con unspaceAroundvalor positivo de 10, cada etiqueta está separada por al menos 20 píxeles de las demás:


Los valores positivosspaceArounden realidad proporcionan el doble de espacio de lo que cabría esperar.Esto se debe a que puede especificar un espacio alrededor para una etiqueta como 5 y para otra etiqueta (en otro TextSymbolizer) como 3. La distancia total entre ellas es 8. Dos etiquetas en el primer simbolizador (“5”) tendrán cada una 5 píxeles. separados entre sí, para un total de 10 píxeles.

Nota

Interacción entre valores en diferentes TextSymbolizers

Puede tener varios TextSymbolizers en su archivo SLD, cada uno con unaspaceAroundopción diferente.Si todas lasspaceAroundopciones son >=0, esto hará lo que normalmente esperaría.Si tiene valores negativos ("permitir superposición"), estas etiquetas pueden superponerse a etiquetas que usted ha dicho que no deberían superponerse.Si no te gusta este comportamiento, no es difícil cambiarlo. ¡No dudes en enviar un parche!

seguirLínea

LafollowLineopción obliga a una etiqueta a seguir la curva de la línea.Para usar esta opción agregue lo siguiente al archivo<TextSymbolizer>.

Nota

Lineas rectas

No es necesario utilizar followLine para líneas rectas.GeoServer seguirá automáticamente la orientación de la línea.Sin embargo, en este casofollowLinese puede utilizar para garantizar que el texto no se represente si es más largo que la línea.

<VendorOption nombre= "followLine" > verdadero </VendorOption>

Es necesario utilizar<LinePlacement>junto con esta opción para garantizar que las etiquetas se coloquen a lo largo de las líneas:

<LabelPlacement>

<LinePlacement/> </LabelPlacement>

desplazamiento máximo

LamaxDisplacementopción controla el desplazamiento de la etiqueta a lo largo de una línea, alrededor de un punto y dentro de un polígono.

Para líneas, normalmente GeoServer etiqueta una línea solo en su punto central.Si esta etiqueta entra en conflicto con otra, es posible que no se muestre en absoluto.Cuando esta opción está habilitada, el etiquetador intentará evitar conflictos utilizando una ubicación alternativa dentro de los píxelesde desplazamiento máximoa lo largo de la línea desde el punto de etiqueta precalculado.

Si se usa junto conrepetir, el valor demaxDisplacementsiempre debe sermenorque el valor derepeat.

Para los puntos, esto hace que el renderizador comience a girar alrededor del punto en busca de una parada vacía para colocar la etiqueta, aumentando paso a paso el tamaño del círculo hasta alcanzar el desplazamiento máximo.Lo mismo ocurre con los polígonos, alrededor del punto de etiquetado del polígono (normalmente el centroide).

<VendorOption nombre= "maxDisplacement" > 10 </VendorOption>

repetir

Larepeatopción determina con qué frecuencia GeoServer muestra etiquetas a lo largo de una línea.Normalmente GeoServer etiqueta cada línea solo una vez, independientemente de su longitud.Al especificar un valor positivo para esta opción, el etiquetador intenta dibujar la etiqueta cadarepeticiónde píxeles.Para líneas largas o complejas (como líneas de contorno), esto hace que el etiquetado sea más informativo.

<VendorOption nombre= "repetir" > 100 </VendorOption>

maxAngleDelta

Cuando se usa junto confollowLine, lamaxAngleDeltaopción establece el ángulo máximo, en grados, entre dos caracteres posteriores en una etiqueta curva.Los ángulos grandes crean palabras visualmente desconectadas o caracteres superpuestos.Se recomienda no utilizar ángulos mayores a 30.

<VendorOption nombre= "maxAngleDelta" > 15 </VendorOption>

envoltura automática

LaautoWrapopción ajusta las etiquetas cuando exceden el ancho dado (en píxeles).El tamaño debe ser lo suficientemente ancho para acomodar la palabra más larga; de lo contrario, las palabras individuales se dividirán en varias líneas.

<VendorOption nombre= "autoWrap" > 50 </VendorOption>


Etiquetado con autoWrap habilitado

fuerza de izquierda a derecha

El renderizador intenta dibujar etiquetas a lo largo de líneas para que el texto esté en posición vertical, para una máxima legibilidad.Esto significa que es posible que una etiqueta no siga la orientación de la línea, sino que se pueda girar 180° para mostrar el texto en la posición correcta hacia arriba.En algunos casos no se desea alterar la orientación de la etiqueta;por ejemplo, si la etiqueta es una flecha direccional que muestra la orientación de la línea.

LaforceLeftToRightopción se puede configurar parafalsedeshabilitar el volteo de etiquetas, haciendo que la etiqueta siempre siga la orientación inherente de la línea que se está etiquetando:

<VendorOption nombre= "forceLeftToRight" > falso </VendorOption>

la resolución de conflictos

De forma predeterminada, las etiquetas están sujetas aresolución de conflictos, lo que significa que el renderizador no permitirá que ninguna etiqueta se superponga con una etiqueta que ya se ha dibujado.Establecer laconflictResolutionopción enfalsehace que esta etiqueta omita la resolución de conflictos.Esto significa que la etiqueta se dibujará incluso si se superpone con otras etiquetas, y otras etiquetas dibujadas después pueden superponerse.

<VendorOption nombre= "conflictResolution" > falso </VendorOption>

bondad de ajuste

Geoserver eliminará las etiquetas si se ajustan particularmente mal a la geometría que están etiquetando.

Geometría

Algoritmo de bondad de ajuste

Punto

Siempre devuelve 1.0 ya que la etiqueta está en el punto

Línea

Siempre devuelve 1.0 ya que la etiqueta siempre se coloca en la línea.

Polígono

La etiqueta se muestra aproximadamente en cada letra.Se determina la distancia desde estos puntos al polígono y cada muestra vota en función de qué tan cerca está del polígono.(ver LabelCacheDefault#goodnessOfFit())

El valor predeterminado es 0,5, pero se puede modificar usando:

<VendorOption nombre= "bondadDeFit" > 0.3 </VendorOption>

polígonoAlinear

GeoServer normalmente intenta colocar etiquetas horizontalmente dentro de un polígono y desiste si la posición de la etiqueta está ocupada o si la etiqueta no cabe lo suficiente en el polígono.Esta opción permite a GeoServer probar rotaciones alternativas para las etiquetas.

<VendorOption nombre= "polygonAlign" > mbr </VendorOption>

Opción

Descripción

manual

El valor predeterminado.<Rotation>Sólo se utilizaráuna rotación especificada manualmente en la etiqueta.

ortho

Si la etiqueta no encaja horizontalmente y el polígono es más alto que ancho, también se intentará la alineación vertical.

mbr

Si la etiqueta no encaja horizontalmente, se calculará el rectángulo delimitador mínimo y también se probará una etiqueta alineada con él.

cambiar el tamaño del gráfico

Cuando<Graphic>se especifica a para una etiqueta de forma predeterminada, se muestra en su tamaño y relación de aspecto nativos.Lagraphic-resizeopción indica al renderizador que amplíe o estire el gráfico para contener completamente el texto de la etiqueta.Si se utiliza esta opción,graphic-margintambién se puede especificar la opción.

<VendorOption nombre= "cambiar tamaño gráfico" > estirar </VendorOption>

Opción

Descripción

none

El gráfico se muestra en su tamaño original (predeterminado)

proportional

El tamaño del gráfico aumenta uniformemente para contener el texto de la etiqueta.

stretch

El tamaño del gráfico aumenta anisotrópicamente para contener el texto de la etiqueta.


Etiquetado con Marca Gráfica “cuadrado” - L) en tamaño nativo;R) con “graphic-resize”=stretch y “graphic-margin”=3

margen gráfico

Lasgraphic-marginopciones especifican un margen (en píxeles) para usar alrededor del texto de la etiqueta cuandographic-resizese especifica la opción.

<VendorOption nombre= "margen-gráfico" > margen </VendorOption>

parciales

Laspartialsopciones indican al renderizador que renderice etiquetas que cruzan la extensión del mapa, que normalmente no están pintadas ya que no hay garantía de que un mapa colocado al lado del actual (renderizado en mosaico) contendrá la otra mitad de la etiqueta.Al habilitar "parciales", el editor de estilo asume la responsabilidad de que la otra mitad esté allí (tal vez porque los puntos de etiqueta se colocaron a mano y se garantiza que no entrarán en conflicto entre sí, en todos los niveles de zoom).

<VendorOption nombre= "parciales" > verdadero </VendorOption>

RásterSymbolizer

GeoServer admite la capacidad de mostrar datos ráster además de datos vectoriales.

Los datos ráster no son simplemente una imagen, sino que se pueden considerar como una cuadrícula de información georreferenciada, de la misma manera que un gráfico es una cuadrícula de información visual (con una combinación de rojos, verdes y azules).A diferencia de los gráficos, que solo contienen datos visuales, cada punto/píxel en una cuadrícula ráster puede tener muchos atributos diferentes (bandas), y posiblemente ninguno de ellos tenga un componente visual inherente.

Teniendo en cuenta lo anterior, es necesario elegir cómo visualizar los datos y esto, como en todos los demás casos, se hace mediante el uso de un SLD.La analogía con los datos vectoriales es evidente en la denominación de las etiquetas utilizadas.A los vectores, que constan de puntos, líneas y polígonos, se les aplica estilo utilizando las etiquetas<PointSymbolizer>,<LineSymbolizer>y<PolygonSymbolizer>.Por lo tanto, no es muy sorprendente que los datos ráster tengan estilo con la etiqueta <RasterSymbolizer>.

Sintaxis

Los siguientes elementos se pueden utilizar dentro del<RasterSymbolizer>elemento.

<Opacidad>

<Mapa de colores>

<Selección de canal>

<Mejora del contraste>

<Relieve sombreado> *

<Comportamiento de superposición> *

<Contorno de imagen> *

Advertencia

Los elementos marcados con estrella (*) aún no están implementados en GeoServer.

Opacidad

El<Opacity>elemento establece el nivel de transparencia para toda la imagen renderizada.Como es estándar, los valores oscilan entre cero (0) y uno (1), siendo cero transparente y uno opaco.La sintaxis es:

<Opacidad> 0,5 </Opacidad>

donde, en este caso, el ráster se representa con un 50% de opacidad.

Mapa de colores

El<ColorMap>elemento define los valores de color para los píxeles de una imagen rasterizada, ya sea como gradientes de color o una asignación de valores específicos a colores fijos.

Un mapa de colores está definido por una secuencia de<ColorMapEntry>elementos.Cada<ColorMapEntry>elemento especifica uncolory unquantityatributo.La cantidad se refiere al valor de un píxel rasterizado.Elcolorvalor se indica en formato RGB hexadecimal estándar (#RRGGBB).<ColorMapEntry>Los elementos también pueden tener atributosopacityylabel.Elopacityatributo anula el<Opacity>valor global.Ellabelatributo se utiliza para proporcionar texto para las leyendas.Un mapa de colores puede contener hasta 255<ColorMapEntry>elementos.

El más simple<ColorMap>tiene dos entradas de mapa de colores.Uno especifica un color para la "parte inferior" del conjunto de datos y el otro especifica un color para la "parte superior" del conjunto de datos.Los píxeles con valores iguales o inferiores al valor mínimo se representan con el color inferior (y la opacidad).Los píxeles con valores iguales o superiores al valor máximo se representan con el color y la opacidad superiores.Los colores de los valores intermedios se interpolan automáticamente, lo que facilita la creación de degradados de color.

Un mapa de colores se puede perfeccionar agregando entradas intermedias adicionales.Esto es útil si el conjunto de datos tiene valores discretos en lugar de un gradiente, o si se desea un gradiente multicolor.Se agrega una entrada para cada color diferente que se utilizará, junto con el valor de cantidad correspondiente.

Por ejemplo, un mapa de colores simple puede definir un degradado de color desde el color #323232 hasta el color #BBBBBB sobre valores de cantidad de -300 a 200:

<ColorMap>

<ColorMapEntry color= "#323232" cantidad= "-300" etiqueta= "label1" opacidad= "1" />

<ColorMapEntry color= "#BBBBBB" cantidad= "200" etiqueta= "label2" opacidad= " 1" /> < /Mapa de colores>


Un ejemplo más refinado define un degradado de color desde el color #FFCC32 hasta el color #BBBBBB, pasando por el color #3645CC y el color #CC3636.El color inferior #FFCC32 está definido como transparente. Esto simula un canal alfa, ya que los píxeles con valores de -300 e inferiores no se representarán.Observe que la opacidad predeterminada es 1 (opaca) cuando no se especifica.

<ColorMap>

<ColorMapEntry color= "#FFCC32" cantidad= "-300" etiqueta= "label1" opacidad= "0" />

<ColorMapEntry color= "#3645CC" cantidad= "0" etiqueta= "label2" opacidad= " 1" />

<ColorMapEntry color= "#CC3636" cantidad= "100" etiqueta= "label3" opacidad= "1" />

<ColorMapEntry color= "#BBBBBB" cantidad= "200" etiqueta= "label4" opacidad= " 1" /> < /Mapa de colores>


GeoServer amplía el<ColorMap>elemento para permitir dos atributos:typeyextended.

tipo

El<ColorMap>typeatributo especifica el tipo de ColorMap que se utilizará.Hay tres tipos diferentes de ColorMaps que se pueden especificar:rampy.intervalsvalues

type="ramp"es el tipo de mapa de colores predeterminado.Especifica que los colores deben interpolarse para los valores entre las entradas del mapa de colores.El resultado se muestra en el siguiente ejemplo.

<ColorMap tipo= "rampa" >

<ColorMapEntry color= "#EEBE2F" cantidad= "-300" etiqueta= "label" opacidad= "0" />

<ColorMapEntry color= "#2851CC" cantidad= "0" etiqueta= " valores" opacidad= "1" />

<ColorMapEntry color= "#211F1F" cantidad= "50" etiqueta= "label" opacidad= "1" />

<ColorMapEntry color= "#EE0F0F" cantidad= "100" etiqueta= " etiqueta" opacidad= "1" />

<ColorMapEntry color= "#AAAAAA" cantidad= "200" etiqueta= "label" opacidad= "1" />

<ColorMapEntry color= "#6FEE4F" cantidad= "250" etiqueta= " etiqueta" opacidad= "1" />

<ColorMapEntry color= "#3ECC1B" cantidad= "300" etiqueta= "label" opacidad= "1" />

<ColorMapEntry color= "#886363" cantidad= "350" etiqueta= " etiqueta" opacidad= "1" />

<ColorMapEntry color= "#5194CC" cantidad= "400" etiqueta= "label" opacidad= "1" />

<ColorMapEntry color= "#2C58DD" cantidad= "450" ​​etiqueta= " etiqueta" opacidad= "1" />

<ColorMapEntry color= "#DDB02C" cantidad= "600" etiqueta= "label" opacidad= "1" /> </ColorMap>


type="values"significa que solo se representan los píxeles con los valores de cantidad de entrada especificados.Los píxeles con otros valores no se representan.Usando el conjunto de ejemplo de entradas del mapa de colores:

<ColorMap tipo= "valores" >

<ColorMapEntry color= "#EEBE2F" cantidad= "-300" etiqueta= "label" opacidad= "0" />

...

<ColorMapEntry color= "#DDB02C" cantidad= "600" etiqueta= "label" opacidad= "1" /> </ColorMap>

La imagen resultante es:

type="intervals"valor significa que cada intervalo definido por dos entradas se representa utilizando el color de la primera entrada (el valor más bajo).No se aplica ninguna interpolación de color en los intervalos.Usando el conjunto de ejemplo de entradas del mapa de colores:

<ColorMap tipo= "intervalos" extendido= "true" >

<ColorMapEntry color= "#EEBE2F" cantidad= "-300" etiqueta= "label" opacidad= "0" />

...

<ColorMapEntry color= "#DDB02C" cantidad= "600" etiqueta= "label" opacidad= "1" /> </ColorMap>

La imagen resultante es:


El tipo de mapa de colores también se refleja en el gráfico de leyenda.Una solicitud típica para una leyenda ráster es (usando laforceRule:trueopción para forzar la salida del mapa de colores):

http://localhost:8080/geoserver/wms?REQUEST=GetLegendGraphic&VERSION=1.0.0&&STYLE=raster100&FORMAT=image/png&WIDTH=50&HEIGHT=20&LEGEND_OPTIONS=forceRule:true&LAYER=it.geosolutions:di08032_da

Las leyendas devueltas para los diferentes tipos son:


extendido

Elextendedatributo especifica si el degradado del mapa de colores utiliza 256 (8 bits) o 65536 (16 bits).El valorfalse(el valor predeterminado) especifica que la escala de colores se calcula utilizando colores de 8 bits ytrueespecifica el uso de colores de 16 bits.

Expresiones CQL

La mayoría de los atributos de ColorMapEntry (color, cantidad y opacidad) se pueden definir usando, con la sintaxis ${...expresión...}.cqlexpressions

Las expresiones CQL son útiles para dinamizar el mapa de colores, utilizando valores tomados del cliente:

<ColorMapEntry color= "#00FF00" cantidad= "${env('low',3)}" label= "Baja" opacidad= "1" /> <ColorMapEntry color= "#FFFF00" cantidad= "${env( 'media',10)}" etiqueta= "Media" opacidad= "1" /> <ColorMapEntry color= "#FF0000" cantidad= "${env('high',1000)}" etiqueta= "Alta" opacidad= "1" />

En este ejemplo, los valores de cantidad no son fijos, pero el cliente puede especificarlos mediante el parámetro de solicitud ENV:

http://localhost:8080/geoserver/wms?REQUEST=GetMap&VERSION=1.0.0&...&ENV=low:10;medium:100;high:500

Para obtener una referencia completa de las capacidades de CQL, consulteaquí

Selección del canal

El<ChannelSelection>elemento especifica cómo se asignan las bandas del conjunto de datos a los canales de color de la imagen.Las bandas del conjunto de datos con nombre se pueden asignar a canales rojo, verde y azul, o una única banda con nombre se puede asignar a un canal en escala de grises.

El siguiente ejemplo asigna los canales de origen 1, 2 y 3 a los canales de color rojo, verde y azul.

<ChannelSelection>

<RedChannel>

<SourceChannelName> 1 </SourceChannelName>

</RedChannel>

<GreenChannel>

<SourceChannelName> 2 </SourceChannelName>

</GreenChannel>

<BlueChannel>

<SourceChannelName> 3 </SourceChannelName>

</BlueChannel> </ Selección de canal>


El siguiente ejemplo muestra cómo seleccionar una sola banda de una imagen RGB como canal en escala de grises y volver a colorearla mediante un ColorMap:

<RasterSymbolizer>

<Opacity> 1.0 </Opacity>

<ChannelSelection>

<GrayChannel>

<SourceChannelName> 1 </SourceChannelName>

</GrayChannel>

</ChannelSelection>

<ColorMap extended= "true" >

<ColorMapEntry color= "#0000ff" cantidad = "3189.0" />

<ColorMapEntry color= "#009933" cantidad= "6000.0" />

<ColorMapEntry color= "#ff9900" cantidad= "9000.0" />

<ColorMapEntry color= "#ff0000" cantidad= "14265.0" / >

</ColorMap> </RasterSymbolizer>


Mejora de contraste

El<ContrastEnhancement>elemento se utiliza para ajustar el brillo relativo de los datos de la imagen.Se puede especificar un<ContrastEnhancement>elemento para toda la imagen o enChannelelementos individuales.De esta forma se pueden utilizar diferentes mejoras en cada canal.

Hay tres tipos de mejoras posibles:

Normalizar

Histograma

Valor gamma

<Normalize>significa expandir el contraste de modo que la cantidad mínima se asigne al brillo mínimo y la cantidad máxima se asigne al brillo máximo.

<Histogram>es similar a Normalizar, pero el algoritmo utilizado intenta producir una imagen con el mismo número de píxeles en todos los niveles de brillo.

<GammaValue>es un factor de escala que ajusta el brillo de la imagen.Un valor inferior a uno (1) oscurece la imagen y un valor superior a uno (1) la ilumina.El valor predeterminado es 1 (sin cambios).

Estos ejemplos activan Normalizar e Histograma, respectivamente:

<Mejora de contraste>

<Normalizar/> < /Mejora de contraste>

<Mejora de contraste>

<Histograma/> </Mejora de contraste>

Este ejemplo aumenta el brillo de la imagen en un factor de dos.

<Mejora de contraste>

<Valor gamma> 2 < /Valor gamma> </Mejora de contraste>

También es posible personalizar el elemento Normalizar mejora del contraste para RasterSymbolizer.Se admiten 3 nuevas VendorOptions:

<VendorOption name=”algorithm”>ALGORITHM_NAME</VendorOption> para controlar el algoritmo a aplicar

<VendorOption name=”minValue”>MIN_VALUE</VendorOption> para controlar el valor mínimo del algoritmo

<VendorOption name=”maxValue”>MAX_VALUE</VendorOption> para controlar el valor máximo del algoritmo

Los algoritmos admitidos son:

StretchToMinimumMaximumestirará linealmente el ráster de origen asignando linealmente valores dentro del rango [MIN_VALUE, MAX_VALUE] a [0,255].Esto también dará como resultado automáticamente un clip de los valores fuera del rango de entrada especificado.

ClipToMinimumMaximumresultará en una operación de sujeción.Los valores menores que MIN_VALUE se forzarán a MIN_VALUE.Los valores superiores a MAX_VALUE se forzarán a MAX_VALUE.Los valores en el rango [MIN_VALUE, MAX_VALUE] se transmitirán sin cambios.

ClipToZeroes similar a ClipToMinimumMaximum.Sin embargo, los valores fuera del rango [MIN_VALUE, MAX_VALUE] se verán obligados a ser 0.

Nota

El tipo de datos de destino para el algoritmo de extensiónsiemprees byte (esto podría cambiar en el futuro).Esto significa que si MAX_VALUE para los algoritmos orientados a Clip es mayor que 255, se aplicará una abrazadera implícita de todos modos para fijar a 255.

A continuación algunos ejemplos

<ContrastEnhancement>

<Normalize>

<VendorOption nombre= "algoritmo" > StretchToMinimumMaximum </VendorOption>

<VendorOption nombre= "minValue" > 50 </VendorOption>

<VendorOption nombre= "maxValue" > 100 </VendorOption>

</Normalize> < /Mejora del contraste>

Este ejemplo aplicará una mejora de contraste normalizada extendiendo linealmente desde los valores de píxeles [50, 100] a [0, 255]

<ContrastEnhancement>

<Normalize>

<VendorOption nombre= "algoritmo" > ClipToMinimumMaximum </VendorOption>

<VendorOption nombre= "minValue" > 50 </VendorOption>

<VendorOption nombre= "maxValue" > 100 </VendorOption>

</Normalize> < /Mejora del contraste>

<ContrastEnhancement>

<Normalize>

<VendorOption nombre= "algoritmo" > ClipToMinimumMaximum </VendorOption>

<VendorOption nombre= "minValue" > 50 </VendorOption>

<VendorOption nombre= "maxValue" > 100 </VendorOption>

</Normalize> < /Mejora del contraste>

A continuación se muestra un ejemplo más complejo que muestra la posibilidad de controlar los valores de un cliente utilizando funciones env.Esto es extremadamente interesante para aplicaciones interactivas.

...

<ContrastEnhancement>

<Normalize>

<VendorOption name= "algorithm" >

<ogc:Function name= "env" >

<ogc:Literal> algoritmo </ogc:Literal>

<ogc:Literal> StretchToMinimumMaximum </ogc:Literal >

</ogc:Función>

</VendorOption>

<VendorOption nombre= 'minValue' >

<ogc:Función nombre= "env" >

<ogc:Literal> minValue </ogc:Literal>

<ogc:Literal> 10 </ogc :Literal>

</ogc:Función>

</VendorOption>

<VendorOption nombre= 'maxValue' >

<ogc:Función nombre= "env" >

<ogc:Literal> maxValue </ogc:Literal>

<ogc:Literal> 1200 < /ogc:Literal>

</ogc:Function>

</VendorOption>

</Normalize> </ContrastEnhancement>

...

Relieve sombreado

Advertencia

El soporte para este elemento aún no se ha implementado.

El<ShadedRelief>elemento se puede utilizar para crear un efecto 3D ajustando selectivamente el brillo.Este es un buen efecto para usar en un conjunto de datos de elevación.Hay dos tipos de relieve sombreado posibles.

Solo brillo

Factor de alivio

BrightnessOnly, que no toma parámetros, aplica el sombreado ¿de QUÉ MANERA?ReliefFactor establece la cantidad de exageración del sombreado (por ejemplo, para hacer que las colinas parezcan más altas).Según la especificación OGC SLD, un valor de alrededor de 55 proporciona "resultados razonables" para conjuntos de datos terrestres:

<ShadedRelief>

<BrightnessOnly />

<ReliefFactor> 55 </ReliefFactor> </ShadedRelief>

El ejemplo anterior activa el sombreado de Relieve ¿de QUÉ MANERA?

Comportamiento de superposición

Advertencia

El soporte para este elemento aún no se ha implementado.

A veces, los datos ráster se componen de varios conjuntos de imágenes.Tomemos, por ejemplo, unavista satelital de la Tierra por la noche.Como no toda la Tierra puede estar de noche a la vez, se toma una combinación de múltiples imágenes.Estas imágenes están georreferenciadas y se ensamblan para crear el producto terminado.Dicho esto, es posible que dos imágenes del mismo conjunto de datos se superpongan ligeramente, y el elemento OverlapBehavior está diseñado para determinar cómo se maneja esto.Hay cuatro tipos de OverlapBehavior:

PROMEDIO

ALEATORIO

ÚLTIMO_ON_TOP

EARLIEST_ON_TOP

PROMEDIOtoma cada punto superpuesto y muestra su valor promedio.RANDOMdetermina qué imagen se muestra según el azar (lo que a veces puede dar como resultado una imagen más nítida).LATEST_ON_TOPyEARLIEST_ON_TOPestablecen que el factor determinante es la marca de tiempo interna en cada imagen del conjunto de datos.Ninguno de estos elementos tiene parámetros y todos se llaman de la misma manera:

<ComportamientoOverlap>

<PROMEDIO /> </ComportamientoOverlap>

Lo anterior establece OverlapBehavior en PROMEDIO.

Contorno de imagen

Advertencia

El soporte para este elemento aún no se ha implementado.

Dada la situación mencionada anteriormente de la composición de imágenes, es posible diseñar cada imagen para que tenga un contorno.Incluso se puede establecer un color de relleno y opacidad para cada imagen;una razón para hacer esto sería “atenuar” una imagen.Para usar ImageOutline, definirías un <LineSymbolizer> o <PolygonSymbolizer> dentro del elemento:

<ImageOutline>

<LineSymbolizer>

<Stroke>

<CssParameter name= "stroke" > #0000ff </CssParameter>

</Stroke>

</LineSymbolizer> </ImageOutline>

Lo anterior crearía una línea de borde (de color azul con un grosor predeterminado de un píxel) alrededor de cada imagen en el conjunto de datos.


Extensiones SLD en GeoServer

GeoServer proporciona una serie de extensiones específicas de proveedores para SLD 1.0.Aunque no son portátiles para otras aplicaciones, estas extensiones hacen que el estilo sea más potente y conciso y permiten la generación de mapas más atractivos.

Transformaciones de geometría en SLD

Ejemplos

Consejos de rendimiento

Añadiendo nuevas transformaciones

Transformaciones de renderizado

Instalación

Uso

Ejemplos

Simbología gráfica en GeoServer

Marcas

Gráficos externos

Simbolizadores dinámicos

Sustitución de variables en SLD

Variables predefinidas

Ejemplo

Especificación de tamaños de simbolizadores en unidades terrestres

Ejemplo

Obstáculos de etiquetas

Agregar espacio alrededor de rellenos gráficos

Se llena con símbolos aleatorios

Composición y combinación de colores.

Especificación de composición y combinación en SLD

Modos compuestos y de fusión.

Ejemplo de composición y combinación

Funciones de orden Z dentro y entre tipos de entidades y capas

Habilitar el orden z en un único FeatureTypeStyle

Orden z en FeatureTypeStyle

orden z entre capas

Ejemplo de orden Z de una sola capa

Transformaciones de geometría en SLD

Los simbolizadores SLD pueden contener un<Geometry>elemento opcional, que permite especificar qué atributo de geometría se va a representar.En el caso común de un tipo de característica con un solo atributo de geometría, este elemento generalmente se omite, pero es útil cuando un tipo de característica tiene múltiples atributos con valores de geometría.

SLD 1.0 requiere que el<Geometry>contenido sea un archivo<ogc:PropertyName>.GeoServer amplía esto para permitir el uso de una expresión SLD general.La expresión puede contener funciones de filtro que manipulan geometrías transformándolas en algo diferente.Esta facilidad se llamatransformaciones de geometríaSLD .

GeoServer proporciona una serie de funciones de filtro que pueden transformar la geometría.Una lista completa está disponible en laReferencia de funciones de filtro.Se pueden utilizar para hacer cosas como extraer vértices o puntos finales de líneas, compensar polígonos o almacenar geometrías en zonas de influencia.

Las transformaciones geométricas se calculan en el sistema de referencia de coordenadas original de la geometría, antes de realizar cualquier reproyección y reescalado al mapa de salida.Por este motivo, los parámetros de transformación deben expresarse en las unidades de la geometría CRS.Esto debe tenerse en cuenta al utilizar transformaciones geométricas en diferentes escalas de pantalla, ya que los parámetros no cambiarán con la escala.

Ejemplos

Veamos algunos ejemplos.

Extrayendo vértices

Aquí hay un ejemplo que permite extraer todos los vértices de una geometría y hacerlos visibles en un mapa, usando laverticesfunción:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

dieciséis

<PointSymbolizer>

<Geometry>

<ogc:Function name= "vertices" >

<ogc:PropertyName> the_geom </ogc:PropertyName>

</ogc:Function>

</Geometry>

<Graphic>

<Mark>

<WellKnownName> cuadrado </ WellKnownName>

<Fill>

<CssParameter name= "fill" > #FF0000 </CssParameter>

</Fill>

</Mark>

<Size> 6 </Size>

</Graphic>

</PointSymbolizer>

View the full "Vertices" SLD

Aplicado a la capa de muestratasmania_roads, esto dará como resultado:


Extraer y mostrar los vértices de una geometría.

Punto inicial y final

Las funcionesstartPointyendPointse pueden utilizar para extraer el punto inicial y final de una línea.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

dieciséis

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

<PointSymbolizer>

<Geometry>

<ogc:Function name= "startPoint" >

<ogc:PropertyName> the_geom </ogc:PropertyName>

</ogc:Function>

</Geometry>

<Graphic>

<Mark>

<WellKnownName> cuadrado </ WellKnownName>

<Stroke>

<CssParameter name= "stroke" > 0x00FF00 </CssParameter>

<CssParameter name= "stroke-width" > 1.5 </CssParameter>

</Stroke>

</Mark>

<Size> 8 </Size>

< /Gráfico>

</PointSymbolizer>

<PointSymbolizer>

<Geometry>

<ogc:Function name= "endPoint" >

<ogc:PropertyName> the_geom </ogc:PropertyName>

</ogc:Function>

</Geometry>

<Graphic>

<Mark >

<WellKnownName> círculo </WellKnownName>

<Fill>

<CssParameter name= "fill" > 0xFF0000 </CssParameter>

</Fill>

</Mark>

<Size> 4 </Size>

</Graphic>

</PointSymbolizer>

View the full "StartEnd" SLD

Aplicado a la capa de muestratasmania_roads, esto dará como resultado:


Extraer el punto inicial y final de una línea

Sombra paralela

La funciónde desplazamientose puede utilizar para crear efectos de sombra paralela debajo de los polígonos.Observe que los valores de compensación reflejan el hecho de que los datos utilizados en el ejemplo están en un sistema de coordenadas geográficas.

1

2

3

4

5

6

7

8

9

10

11

12

<PolygonSymbolizer>

<Geometry>

<ogc:Function name= "offset" >

<ogc:PropertyName> the_geom </ogc:PropertyName>

<ogc:Literal> 0.00004 </ogc:Literal>

<ogc:Literal> -0.00004 </ogc :Literal>

</ogc:Function>

</Geometry>

<Fill>

<CssParameter name= "fill" > #555555 </CssParameter>

</Fill>

</PolygonSymbolizer>

View the full "Shadow" SLD

Aplicado a la capa de muestratasmania_roads, esto dará como resultado:


Dejando caer las sombras de los edificios

Consejos de rendimiento

Las funciones de filtro de GeoServer contienen una serie de funciones geométricas constructivas o relacionadas con conjuntos ,comobuffer,y otras.Se pueden utilizar como transformaciones geométricas, pero pueden consumir bastante CPU, por lo que es recomendable utilizarlas con cuidado.Una estrategia es activarlos sólo en niveles de zoom más altos, para que se procesen menos funciones.intersectiondifference

El buffering a menudo se puede aproximar visualmente mediante el uso de trazos muy grandes junto con uniones de líneas redondas y finales de línea.Esto evita incurrir en el costo de rendimiento de una verdadera transformación de buffer geométrico.

Añadiendo nuevas transformaciones

Se pueden desarrollar funciones de filtro adicionales en Java y luego implementarlas en un archivo JAR como un complemento de GeoServer.No hay una guía disponible en este momento, pero consulte elmainmódulo GeoTools para ver ejemplos.


Transformaciones de renderizado

Las transformaciones de renderizadopermiten que el procesamiento se lleve a cabo en conjuntos de datos dentro del proceso de renderizado de GeoServer.Una transformación típica calcula un resultado derivado o agregado a partir de los datos de entrada, lo que permite obtener varios efectos de visualización útiles.Las transformaciones pueden transformar datos de un formato a otro (es decir, de vector a ráster o viceversa), para proporcionar un formato apropiado para su visualización.

La siguiente tabla enumera ejemplos de varios tipos de transformaciones de renderizado disponibles en GeoServer:

Tipo

Ejemplos

De ráster a vector

Contourextrae contornos de un ráster DEM.RasterAsPointCollectionsextrae un campo vectorial de un ráster multibanda

Vector a ráster

BarnesSurfaceInterpolationcalcula una superficie a partir de puntos de datos dispersos.Heatmapcalcula una superficie de mapa de calor a partir de puntos de datos ponderados.

Vector a Vector

PointStackeragrega datos de puntos densos en grupos.

Las transformaciones de renderizado se invocan dentro de los estilos SLD.Se pueden proporcionar parámetros para controlar la apariencia de la salida.La salida renderizada de la capa se produce aplicando las reglas de estilo y simbolizadores en el SLD al resultado de la transformación.

Las transformaciones de renderizado se implementan utilizando el mismo mecanismo quelos procesos WPS.De este modo, si es necesario, también se pueden ejecutar a través del protocolo WPS.Por el contrario, cualquier proceso WPS se puede ejecutar como una transformación, siempre que la entrada y la salida sean apropiadas para su uso dentro de un SLD.

Esta sección es una guía general para el uso de la transformación de renderizado en GeoServer.Para obtener detalles sobre la entrada, los parámetros y la salida de cualquier transformación de renderizado en particular, consulte su propia documentación.

Instalación

El uso de Rendering Transformations requiere que esté instalada la extensión WPS.ConsulteInstalación de la extensión WPS.

Nota

No es necesario habilitar el servicio WPSparautilizar Transformaciones de renderizado.Para evitar el consumo no deseado de recursos del servidor, puede ser conveniente desactivar el servicio WPS si no se utiliza directamente.

Uso

Las transformaciones de renderizado se invocan agregando el<Transformation>elemento a un<FeatureTypeStyle>elemento en un documento SLD.Este elemento especifica el nombre del proceso de transformación y normalmente incluye valores de parámetros que controlan la operación de la transformación.

La<Transformation>sintaxis del elemento aprovecha la sintaxis de la función de filtro OGC.El contenido del elemento es un<ogc:Function>con el nombre del proceso de transformación de renderizado.Los procesos de transformación pueden aceptar una cierta cantidad de parámetros, que pueden ser obligatorios (en cuyo caso deben especificarse) u opcionales (en cuyo caso pueden omitirse si el valor predeterminado es aceptable).Los parámetros se proporcionan como pares de nombre/valor.El nombre y el valor de cada parámetro se proporcionan a través de otra función.El primer argumento de esta funcióncontiene el nombre del parámetro.Los siguientes argumentos opcionales proporcionan el valor del parámetro (si corresponde).Algunos parámetros aceptan solo un valor único, mientras que otros pueden aceptar una lista de valores.Como ocurre con cualquier argumento de función de filtro, los valores se pueden proporcionar de varias maneras:<ogc:Functionname="parameter"><ogc:Literal>

Como valor literal

Como expresión calculada

Como variable de entorno SLD, cuyo valor real se proporciona en la solicitud WMS (consulteSustitución de variables en SLD).

Como variable de entorno SLD predefinida (que permite obtener valores para la solicitud actual, como el ancho y alto de la imagen de salida).

El orden de los parámetros suministrados no es significativo.

La mayoría de las transformaciones de renderizado toman como entrada un conjunto de datos a transformar.Esto se proporciona a través de un parámetro con nombre especial que no tiene un valor especificado.El nombre del parámetro está determinado por la transformación particular que se utiliza.Cuando se ejecuta la transformación, el conjunto de datos de entrada se le pasa a través de este parámetro.

El conjunto de datos de entrada está determinado por el mismo mecanismo de consulta que se utiliza para todas las solicitudes WMS y, por lo tanto, se puede filtrar en la solicitud si es necesario.

Al representar transformaciones que toman como entrada un tipo de característica (conjunto de datos vectoriales) y lo convierten en un conjunto de datos ráster, para pasar la validación, el SLD debe mencionar el atributo de geometría del conjunto de datos de entrada (aunque no se utilice).Esto se hace especificando el nombre del atributo en el<Geometry>elemento simbolizador.

A la salida de la transformación de representación se le aplica estilo utilizando simbolizadores apropiados para su formato:PointSymbolizer,LineSymbolizer,PolygonSymbolizeryTextSymbolizerpara datos vectoriales, yRasterSymbolizerpara datos de cobertura ráster.

Si se desea mostrar el conjunto de datos de entrada en su forma original, o transformado de otra forma, existen dos opciones:

<FeatureTypeStyle>Se puede utilizarotro en el mismo SLD.

Se puede crear otro SLD y la capa se muestra dos veces usando los diferentes SLD.

Notas

Es posible que las transformaciones de renderizado no funcionen correctamente en modo mosaico, a menos que hayan sido escritas específicamente para adaptarse a ello.

Ejemplos

Extracción de contorno

gs:Contoures una transformación de renderizadode ráster a vectorque extrae líneas de contorno en niveles específicos de un DEM ráster.El siguiente SLD invoca la transformación y diseña los contornos como líneas negras.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

dieciséis

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

sesenta y cinco

66

67

68

69

70

71

72

73

74

75

<?xml versión="1.0" codificación="ISO-8859-1"?>

<StyledLayerDescriptor versión= "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" >

<NamedLayer>

<Name> contour_dem </Name>

<UserStyle>

<Title> Contour DEM </Title>

<Abstract> Extrae contornos de DEM </Abstract>

<FeatureTypeStyle>

<Transformación>

<ogc: Nombre de función= "gs:Contorno" >

<ogc: Nombre de función= "parámetro" >

<ogc:Literal> datos </ogc:Literal>

</ogc:Función >

<ogc: Nombre de función= "parámetro" >

<ogc:Literal> niveles </ogc:Literal>

<ogc:Literal> 1100 </ogc:Literal>

<ogc:Literal> 1200 </ogc:Literal>

<ogc: Literal> 1300 </ogc:Literal>

<ogc:Literal> 1400 </

ogc:Literal> <ogc:Literal> 1500 </ogc:Literal>

<ogc:Literal> 1600 </ogc:Literal>

<ogc:Literal> 1700 </ogc:Literal>

<ogc:Literal> 1800 </ogc:Literal>

</ogc:Función>

</ogc:Función> </

Transformación >

<Regla>

<Nombre> regla1 </Nombre>

<Título> Contorno Línea </Title>

<LineSymbolizer>

<Stroke>

<CssParameter name= "stroke" > #000000 </CssParameter>

<CssParameter name= "stroke-width" > 1 </CssParameter>

</Stroke>

</LineSymbolizer>

<TextSymbolizer >

<Etiqueta>

<ogc:NombrePropiedad> valor </ogc:PropertyName>

</Label>

<Font>

<CssParameter name= "font-family" > Arial </CssParameter>

<CssParameter name= "font-style" > Normal </CssParameter>

<CssParameter name= "font-size" > 10 </CssParameter>

</Font>

<LabelPlacement>

<LinePlacement/>

</LabelPlacement>

<Halo>

<Radius>

<ogc:Literal> 2 </ogc:Literal>

</Radius>

<Fill>

<CssParameter name= "relleno" > #FFFFFF </CssParameter>

<CssParameter name= "fill-opacity" > 0.6 </CssParameter>

</Fill>

</Halo>

<Fill>

<CssParameter name= "fill" > #000000 </CssParameter>

</Fill>

<Prioridad> 2000 </ Prioridad>

<VendorOption nombre= "followLine" > verdadero </VendorOption>

<VendorOption nombre= "repetir" > 100 </VendorOption>

<VendorOption nombre= "maxDisplacement" > 50 </VendorOption>

<VendorOption nombre= "maxAngleDelta" > 30 </VendorOption>

</TextSymbolizer>

</Rule>

</FeatureTypeStyle>

</UserStyle>

</NamedLayer>

</StyledLayerDescriptor>

Los aspectos clave del SLD son:

Las líneas 14 y 15definen la transformación de renderizado, utilizando el procesogs:Contour.

Las líneas 16 a 18proporcionan el parámetro de datos de entrada, denominadodataen este proceso.

Las líneas 19 a 29proporcionan valores para ellevelsparámetro del proceso, que especifica los niveles de elevación para los contornos a extraer.

Las líneas 35-40especifican unLineSymbolizerestilo para las líneas de contorno.

Las líneas 41-70especifican aTextSymbolizerpara mostrar los niveles de contorno a lo largo de las líneas.

El resultado del uso de esta transformación se muestra en la siguiente imagen del mapa (que también muestra el ráster DEM subyacente):


Generación de mapas de calor

gs:Heatmapes una transformación de renderizadode vector a rásterque genera una superficie de mapa de calor a partir de datos de puntos ponderados.El siguiente SLD invoca una transformación de representación de mapa de calor en un tipo de entidad con geometrías de puntos y un atributopop2000que proporciona el peso de los puntos (en este ejemplo, se utiliza un conjunto de datos de áreas urbanas mundiales).La salida tiene estilo utilizando una rampa de color en todo el rango de valores de datos de salida [0 .. 1].

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

dieciséis

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

sesenta y cinco

66

67

68

69

70

71

72

73

74

<?xml versión="1.0" codificación="ISO-8859-1"?>

<StyledLayerDescriptor versión= "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" >

<NamedLayer>

<Name> Heatmap </Name>

<UserStyle>

<Title> Heatmap </Title>

<Abstract> Una superficie de mapa de calor que muestra densidad de población </Abstract>

<FeatureTypeStyle>

<Transformation>

<ogc:Function name= "gs:Heatmap" >

<ogc:Function name= "parámetro" >

<ogc:Literal> datos </ogc:Literal>

</ogc: Función>

<ogc: Nombre de función= "parámetro" >

<ogc:Literal> pesoAttr </ogc:Literal>

<ogc:Literal> pop2000 </ogc:Literal>

</ogc:Función>

<ogc: Nombre de función= "parámetro " >

<ogc:Literal> radioPixels </ogc:Literal>

<ogc:Function name= "env" >

<ogc:Literal> radio </ogc:Literal>

<ogc:Literal> 100 </ogc:Literal>

</ ogc:Función>

</ogc:Función>

<ogc:Función nombre= "parámetro" >

<ogc:Literal> píxeles por celda </ogc:Literal>

<ogc:Literal> 10 </ogc:Literal>

</ogc:Función>

<ogc: Nombre de función= "parámetro" >

<ogc:Literal> salidaBBOX </ogc:Literal>

<ogc: Nombre de función= "env" >

<ogc:Literal> wms_bbox </ogc:Literal>

</ogc:Función>

</ogc:Función>

<ogc: Nombre de función= "parámetro" >

<ogc:Literal> ancho de salida </ogc:Literal>

<ogc: Nombre de función = "env" >

<ogc:Literal> wms_width </ogc:Literal>

</ogc:Función>

</ogc:Función>

<ogc: Nombre de función= "parámetro" >

<ogc:Literal> altura de salida </ogc :Literal>

<ogc: Nombre de función="env" >

<ogc:Literal> wms_height </ogc:Literal>

</ogc:Function>

</ogc:Function>

</ogc:Function>

</Transformation>

<Rule>

<RasterSymbolizer>

<!-- especificar geometría atributo para pasar la validación -->

<Geometry>

<ogc:PropertyName> the_geom </ogc:PropertyName></Geometry>

<Opacity> 0.6 </Opacity>

<ColorMap type= "ramp" >

<ColorMapEntry color= "#FFFFFF" cantidad= "0" etiqueta= "nodata"

opacidad= "0" />

<ColorMapEntry color= "#FFFFFF" cantidad= "0.02" etiqueta= "nodata"

opacidad= "0" />

<ColorMapEntry color= "#4444FF" cantidad= ".1" etiqueta= "nodata" />

<ColorMapEntry color= "#FF0000" cantidad= ".5" etiqueta= "valores" />

<ColorMapEntry color= "#FFFF00" cantidad= "1.0" etiqueta= " valores" />

</ColorMap>

</RasterSymbolizer>

</Rule>

</FeatureTypeStyle>

</UserStyle>

</NamedLayer>

</StyledLayerDescriptor>

Los aspectos clave del SLD son:

Las líneas 14 y 15definen la transformación de renderizado, utilizando el procesogs:Heatmap.

Las líneas 16 a 18proporcionan el parámetro de datos de entrada, denominadodataen este proceso.

Las líneas 19 a 22proporcionan un valor para elweightAttrparámetro del proceso, que especifica el atributo de entrada y proporciona un peso para cada punto de datos.

Las líneas 23 a 29proporcionan el valor delradiusPixelsparámetro, que controla la "extensión" del mapa de calor alrededor de cada punto.En este SLD, el valor de este parámetro puede ser proporcionado por una variable de sustitución de SLD llamadaradius, con un valor predeterminado de100píxeles.

Las líneas 30 a 33proporcionan elpixelsPerCellparámetro que controla la resolución a la que se calcula el ráster del mapa de calor.

Las líneas 34 a 38proporcionan eloutputBBOXparámetro, al que se le asigna el valor de la variable de entorno SLD estándarwms_bbox.

Las líneas 40 a 45proporcionan eloutputWidthparámetro, al que se le asigna el valor de la variable de entorno SLD estándarwms_width.

Las líneas 46 a 52proporcionan eloutputHeightparámetro, al que se le asigna el valor de la variable de entorno SLD estándarwms_height.

Las líneas 55-70especifican unRasterSymbolizerestilo para la superficie ráster calculada.El simbolizador contiene un mapa de colores en rampa para el rango de datos [0..1].

La línea 58especifica el atributo de geometría del tipo de entidad de entrada, que es necesario para pasar la validación SLD.

Esta transformación aplica estilo a una capa para producir una superficie de mapa de calor para los datos en la extensión del mapa solicitada, como se muestra en la imagen siguiente.(La imagen del mapa también muestra los puntos de datos de entrada originales diseñados por otro SLD, así como una capa de mapa base).



Simbología gráfica en GeoServer

La simbología gráfica se admite a través del<Graphic>elemento SLD.Este elemento puede aparecer en varios contextos en SLD:

en unPointSymbolizer, para mostrar símbolos en puntos

en el<Stroke>/<GraphicStroke>elemento deLineSymbolizeryPolygonSymbolizer, para mostrar símbolos repetidos a lo largo de líneas y límites de polígonos.

en el<Stroke>/<GraphicFill>elemento deLineSymbolizeryPolygonSymbolizer, para rellenar líneas y límites de polígonos con símbolos en mosaico.

en el<Fill>/<GraphicFill>elemento dePolygonSymbolizer, para rellenar polígonos con símbolos en mosaico (punteado).

en unTextSymbolizerpara mostrar un gráfico detrás o en lugar de etiquetas de texto (esta es una extensión de GeoServer).

<Graphic>contiene un<Mark>o un<ExternalGraphic>elemento.Las marcasson símbolos vectoriales puros cuya geometría está predefinida pero con trazo y relleno definidos en el propio SLD.Los gráficos externosson archivos externos (como imágenes PNG o gráficos SVG) que contienen información de forma y color que define cómo representar un símbolo.

En SLD estándar, los nombres<Mark>y<ExternalGraphic>son cadenas fijas.GeoServer amplía esto proporcionandosimbolizadores dinámicos, que permiten calcular los nombres de los símbolos por función incorporando expresiones CQL en ellos.

Marcas

GeoServer admite los<Mark>símbolos SLD estándar, un conjunto de símbolos extendidos ampliable por el usuario y también glifos de fuentes TrueType.Los nombres de los símbolos se especifican en el<WellKnownName>elemento.

Consulte también la referenciade PointSymbolizerpara obtener más detalles, así como los ejemplos en la sección Libro de recetasde puntos.

Símbolos estándar

La especificación SLD exige el soporte de los siguientes símbolos:

Nombre

Descripción

square

Un cuadrado

circle

Un circulo

triangle

Un triángulo apuntando hacia arriba

star

estrella de cinco puntas

cross

Una cruz cuadrada con espacio alrededor (no adecuada para rellenos de sombreado)

x

Una X cuadrada con espacio alrededor (no apto para rellenos de sombreado)

Símbolos de forma

El conjunto de símbolos de forma agrega símbolos adicionales que no forman parte del conjunto básico.Sus nombres tienen el prefijoshape://

Nombre

Descripción

shape://vertline

Una línea vertical (adecuada para rellenos de sombreado o para crear símbolos ferroviarios)

shape://horline

Una línea horizontal (adecuada para rellenos de sombreado)

shape://slash

Una línea diagonal inclinada hacia adelante como el símbolo del teclado "barra oblicua" (adecuada para sombreados diagonales)

shape://backslash

Igual queshape://slash, pero orientado en dirección opuesta

shape://dot

Un círculo muy pequeño con espacio alrededor.

shape://plus

Símbolo A +, sin espacio alrededor (apto para rellenos de sombreado cruzado)

shape://times

Un símbolo "X", sin espacio alrededor (adecuado para rellenos de sombreado cruzado)

shape://oarrow

Un símbolo de flecha abierta (triángulo sin un lado, adecuado para colocar flechas al final de las líneas)

shape://carrow

Un símbolo de flecha cerrada (triángulo cerrado, adecuado para colocar flechas al final de las líneas)

Los símbolos meteorológicos tienen el prefijo delextshape://protocolo en el SLD:

Nombre

Descripción

produce

extshape://triangle

frente frio

extshape://emicircle

frente cálido

extshape://triangleemicircle

frente estacionario

Puede utilizarextshape://algunas formas integradas adicionales:

extshape://narrow

Flecha norte

extshape://sarrow

Flecha Sur

Se pueden crear símbolos más complejos como Wind Barbs con elwindbarbs://prefijo.Hay algunos ejemplos:

Nombre

Descripción

windbarbs://default(15)[kts]

15intensidad del viento conunidad de medida[kts]

windbarbs://default(9)[m/s]?hemisphere=s

9intensidad del viento con unidad de medida[m/s], en el hemisferio sur

Formas WKT personalizadas

Se pueden definir formas personalizadas utilizando su propia geometría.La geometría se define utilizando el mismo formato de texto conocido utilizado para CQL_FILTER.

<Simbolizador

de línea> <Trazo>

<Trazo gráfico> <

Gráfico>

<Marca> <

Nombre conocido> wkt://MULTILINESTRING((-0,25 -0,25, -0,125 -0,25), (0,125 -0,25, 0,25 -0,25), (-0,25 0,25 , -0,125 0,25), (0,125 0,25, 0,25 0,25)) </WellKnownName>

<Relleno>

<CssParameter nombre= "relleno" > #0000ff </CssParameter>

</Fill>

<Stroke>

<CssParameter nombre= "stroke" > #0000ff </CssParameter>

<CssParameter name= "ancho de trazo" > 1 </CssParameter>

</Stroke>

</Mark>

<Tamaño> 6 </Size>

</Graphic>

</GraphicStroke>

</Stroke> < /LineSymbolizer>

Lo que produce una doble línea discontinua:


También puedes utilizar curvas al definir WKT:

<Simbolizador

de línea> <Trazo>

<Trazo gráfico> <

Gráfico>

<Marca> <

Nombre conocido> wkt://COMPOUNDCURVE((0 0, 0,25 0), CIRCULARSTRING(0,25 0, 0,5 0,5, 0,75 0), (0,75 0, 1 0 )) </WellKnownName>

<Fill>

<CssParameter nombre= "relleno" > #0000ff </CssParameter>

</Fill>

<Stroke>

<CssParameter nombre= "stroke" > #0000ff </CssParameter>

<CssParameter name= "stroke" -width" > 1 </CssParameter>

</Stroke>

</Mark>

<Size> 10 </Size>

</Graphic>

</GraphicStroke>

</Stroke> </LineSymbolizer>

Produciendo una línea de “emicírculo”:


Formas WKT a granel

Es posible crear un conjunto de símbolos de sus propias marcas personalizadas utilizando un archivo de propiedades.

Aquí hay unexample.properties:

zig=LINESTRING(0,0 0,25, 0,25 0,25, 0,5 0,75, 0,75 0,25, 1,00 0,25)

bloque=POLÍGONO((0 0, 1 0, 1 1, 0 1, 0 0))

Para hacer referencia al archivo de propiedades anterior en su SLD, con el prefijo siguiente (tenga en cuenta que el protocolo cambió a “wktlib://”):

<NombreConocido>wktlib://ejemplo.properties#zig</NombreConocido>

Marcas TTF masivas

Es posible crear una marca utilizando glifos de cualquier fuente True Type decorativa o simbólica, como Wingdings, WebDings o las muchas fuentes de símbolos disponibles en Internet.La sintaxis para especificar esto es:

ttf://<nombre de fuente>#<código hexadecimal>

dondefontnamees el nombre completo de una fuente TTF disponible para GeoServer yhexcodees el código hexadecimal del símbolo.Para obtener el código hexadecimal de un símbolo, utilice la utilidad “Char Map” disponible en la mayoría de los sistemas operativos (Windows y Linux Gnome tienen uno).

Por ejemplo, para utilizar el símbolo de "escudo" contenido en la fuente WebDings, Gnomecharmapinforma el código hexadecimal del símbolo como se muestra:


Seleccionar un código hexadecimal de símbolo en el mapa de caracteres de Gnome

El SLD para usar el glifo de escudo como símbolo es:

1

2

3

4

5

6

7

8

9

10

11

12

<PointSymbolizer>

<Graphic>

<Mark>

<WellKnownName> ttf://Webdings#0x0064 </WellKnownName>

<Fill>

<CssParameter name= "fill" > #AAAAAA </CssParameter>

</Fill>

<Stroke/>

</ Marca>

<Tamaño> 16 < /Tamaño>

</Graphic>

</PointSymbolizer>

Esto da como resultado la siguiente visualización del mapa:


Símbolos de escudo representados en el mapa.

Ampliando el subsistema Mark usando Java

El subsistema Mark es extensible por el usuario.Para hacer esto usando código Java, implemente laMarkFactoryinterfaz y declare la implementación en elMETA-INF/services/org.geotools.renderer.style.MarkFactoryarchivo.

Para obtener más información, consulte el Javadoc de GeoToolsMarkFactory, junto con el siguiente código de ejemplo:

Elarchivo de registro SPI de fábrica

Laimplementaciónde TTFMarkFactory

Laimplementaciónde ShapeMarkFactory

Gráficos externos

<ExternalGraphic>es la otra forma de definir la simbología de puntos.A diferencia de las marcas, los gráficos externos se utilizan tal cual, por lo que la especificación es algo más sencilla.El contenido del elemento especifica un gráfico<OnlineResource>mediante una URL o ruta de archivo, y el gráfico<Format>mediante un tipo MIME:

1

2

3

4

5

6

7

8

<PointSymbolizer>

<Graphic>

<ExternalGraphic>

<OnlineResource xlink:type= "simple" xlink:href= "http://mywebsite.com/pointsymbol.png" />

<Format> image/png </Format>

</ExternalGraphic >

</Graphic>

</PointSymbolizer>

Al igual que con<Mark>,<Size>se puede especificar opcionalmente un elemento.Al utilizar imágenes como símbolos gráficos, es mejor evitar cambiar el tamaño, ya que esto puede desdibujar su apariencia.Utilice imágenes en su resolución nativa omitiendo el<Size>elemento.Por el contrario, para gráficos SVG<Size>se recomienda especificar a.Los archivos SVG son un formato basado en vectores que describe tanto la forma como el color, por lo que se escalan limpiamente a cualquier tamaño.

Si la ruta del archivo de símbolos es relativa, el archivo se busca en$GEOSERVER_DATA_DIR/styles.Por ejemplo:

1

2

3

4

5

6

7

8

9

<PointSymbolizer>

<Gráfico>

<ExternalGraphic>

<OnlineResource xlink:type= "simple" xlink:href= "burg02.svg" />

<Formato> imagen/svg+xml </Format>

</ExternalGraphic>

<Tamaño> 20 < /Tamaño>

</Gráfico>

</PointSymbolizer>

En este ejemplo se utiliza un gráfico SVG, por lo que el tamaño se especifica explícitamente.

Posicionamiento de símbolos

Los símbolos gráficos se representan de modo que el centro de la extensión gráfica se encuentre en el punto de colocación (o puntos, en el caso de gráficos repetidos o en mosaico).Si se desea tener un gráfico desplazado desde un punto (como un símbolo que actúa como puntero), es necesario desplazar la parte visible del gráfico dentro de la extensión general.En el caso de las imágenes, esto se puede lograr ampliando la imagen con píxeles transparentes.Para gráficos SVG, esto se puede hacer rodeando la forma con un rectángulo invisible con la posición relativa deseada.

Simbolizadores dinámicos

En SLD estándar, elMark/WellKnowNameelemento y elExternalGraphic/OnlineResource/@xlink:hrefatributo son cadenas fijas.Esto significa que tienen el mismo valor para todas las funciones renderizadas.Cuando los símbolos que se mostrarán varían dependiendo de los atributos de las características, esta restricción conduce a un estilo muy detallado, como un separadoRuleySymbolizerdebe usarse para cada símbolo diferente.

GeoServer mejora esto al permitirque se incrustenexpresiones CQLWellKnownNamedentro del contenido de yOnlineResource/@xlink:href.Cuando los nombres de los símbolos se pueden derivar de los valores de los atributos de las características, esto proporciona un estilo mucho más compacto.Las expresiones CQL se pueden incrustar en una<WellKnownName>cadena de contenido o en un<OnlineResource>xlink:hrefatributo mediante la sintaxis:

${<expresión cql>}

Nota

Actualmente,xlink:hreflas cadenas deben ser URL válidasantes derealizar la expansión de la expresión.Esto significa que una expresión no puede proporcionar la URL completamente.Laxlink:hrefcadena debe incluir explícitamente al menos el prefijohttp://

La forma más simple de expresión es un nombre de atributo único, como${STATE_ABBR}.Por ejemplo, supongamos que queremos mostrar las banderas de los estados de EE. UU. usando símbolos cuyos nombres de archivo coincidan con el nombre del estado.El siguiente estilo especifica los símbolos de bandera usando una sola regla:

1

2

3

4

5

<ExternalGraphic>

<OnlineResource xlink:type= "simple"

xlink:href= "http://mysite.com/tn_${STATE_ABBR}.jpg" />

<Formato> imagen/jpeg </Format> </ExternalGraphic>

Si se requiere manipulación de los valores de los atributos, se puede especificar una expresión CQL completa.Por ejemplo, si los valores delSTATE_ABBRatributo están en mayúsculas pero la URL requiere un nombre en minúscula,strToLowerCasese puede utilizar la función CQL:

1

2

3

4

5

<ExternalGraphic>

<OnlineResource xlink:type= "simple"

xlink:href= "http://mysite.com/tn_${strToLowerCase(STATE_ABBR)}.jpg" />

<Formato> imagen/jpeg </Formato> </ Gráfico externo>


Sustitución de variables en SLD

La sustitución de variables en SLD es una extensión de GeoServer (a partir de la versión 2.0.2) que permite pasar valores de solicitudes WMS a estilos SLD.Esto permite configurar dinámicamente valores como colores, fuentes, tamaños y umbrales de filtro.

Las variables se especifican enGetMaplas solicitudes WMS utilizando elenvparámetro de solicitud seguido de una lista dename:valuepares separados por punto y coma:

...& entorno = nombre1 : valor1 ; nombre2 = valor2 &...

En un SLD se accede a los valores de las variables mediante laenvfunción.La función recupera un valor de variable de sustitución especificado en la solicitud actual:

<ogc: Nombre de función= "env" >

<ogc:Literal> tamaño </ogc:Literal> </ogc:Función>

Se puede proporcionar un valor predeterminado.Se utilizará si la variable no fue especificada en la solicitud:

<ogc: Nombre de función= "env" >

<ogc:Literal> tamaño </ogc:Literal>

<ogc:Literal> 6 </ogc:Literal> </ogc:Función>

Laenvfunción se puede utilizar en un SLD en cualquier lugar donde se permita una expresión OGC.Por ejemplo, se puede utilizar enCSSParameterelementos, en elementos de tamaño y desplazamiento y en expresiones de filtro de reglas.También se acepta en algunos lugares donde no se permiten expresiones completas, como en elMark/WellKnownNameelemento.

Variables predefinidas

GeoServer tiene variables predefinidas que proporcionan información sobre propiedades específicas de la salida de la solicitud.Son útiles cuando los parámetros SLD deben depender de las dimensiones de salida.Las variables predefinidas son:

Nombre

Tipo

Descripción

wms_bbox

ReferencedEnvelope

la extensión georreferenciada de la salida de la solicitud

wms_crs

CoordinateReferenceSystem

la definición del sistema de referencia de coordenadas de salida

wms_srs

String

el código para el sistema de referencia de coordenadas de salida

wms_width

Integer

el ancho (en píxeles) de la imagen de salida

wms_height

Integer

la altura (en píxeles) de la imagen de salida

wms_scale_denominator

Integer

el denominador de la escala del mapa de salida

kmlOutputMode

Cualquieravectoro vacío

esta variable se establecevectorcuando el generador kml escribe características vectoriales como marcas de posición, en lugar de superposiciones terrestres.

Ejemplo

El siguiente simbolizador SLD se ha parametrizado en tres lugares, con valores predeterminados proporcionados en cada caso:

<PointSymbolizer>

<Graphic>

<Mark>

<WellKnownName><ogc:Function name= "env" >

<ogc:Literal> nombre </ogc:Literal>

<ogc:Literal> cuadrado </ogc:Literal>

</ogc: Función>

</WellKnownName>

<Fill>

<CssParameter name= "fill" >

# <ogc:Function name= "env" >

<ogc:Literal> color </ogc:Literal>

<ogc:Literal> FF0000 </ogc: Literal>

</ogc:Function>

</CssParameter>

</Fill>

</Mark>

<Tamaño

> <ogc:Function nombre= "env" >

<ogc:Literal> tamaño </ogc:Literal>

<ogc:Literal> 6 </ogc:Literal>

</ogc:Function>

</Size>

</Graphic> </PointSymbolizer>

Download the full SLD style

Cuando no se proporcionan variables en la solicitud WMS, SLD utiliza los valores predeterminados y representa elsf:bugsitesconjunto de datos de muestra como se muestra:


Representación predeterminada

Si la solicitud se cambia para especificar los siguientes valores de variable:

&env=color:00FF00;nombre:triángulo;tamaño:12

el resultado es en cambio:


Renderizado con variables proporcionadas


Especificación de tamaños de simbolizadores en unidades terrestres

La especificación SLD 1.0 permite dar tamaños de simbolizadores en una sola unidad de medida: píxeles.Esto significa que el tamaño de los simbolizadores es el mismo en todos los niveles de zoom (que suele ser el comportamiento deseado).

La especificación Symbology Encoding 1.1 proporciona unuomatributo enSymbolizerlos elementos.Esto permite especificar los tamaños de los parámetros de estilo en unidades terrestres de metros o pies, así como el valor predeterminado, que son los píxeles de la pantalla.Cuando se utilizan unidades terrestres, el tamaño de la pantalla de los elementos con estilo aumenta a medida que el mapa se acerca a escalas mayores.GeoServer admite eluomatributo SE 1.1 en su soporte extendido SLD 1.0.

Nota

Esta característica extendida es oficialmente compatible con GeoServer 2.1.0.Está disponible en GeoServer 2.0.3 si la-DenableDpiUomRescaling=truevariable del sistema se especifica para la JVM.

El valor deluomatributo es un URI que indica la unidad deseada.Las unidades de medida admitidas son las que figuran en la especificación SE 1.1:

http://www.opengeospatial.org/se/units/metre

http://www.opengeospatial.org/se/units/foot

http://www.opengeospatial.org/se/units/pixel

Nota

pxActualmente no se admiteel modificador de anulación para los valores de los parámetros.

Ejemplo

El siguiente SLD muestra eluomatributo utilizado para especificar el ancho de aLineSymbolizeren metros:

<?xml versión="1.0" codificación="ISO-8859-1"?> <StyledLayerDescriptor versión= "1.0.0" 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" >

<NamedLayer>

<Name> Línea azul de 5 m </Name>

<UserStyle>

<Title> tm línea azul </Title>

<Abstract> Estilo de línea predeterminado, azul de 5 m de ancho </Abstract>

<FeatureTypeStyle>

<Rule>

<Title> Línea azul, 5 m de largo </Title>

<LineSymbolizer uom= "http://www.opengeospatial.org/se/units/metre" >

<Stroke>

<CssParameter name= "stroke" > #0000FF </CssParameter>

<CssParameter name= "ancho de trazo" > 5 </CssParameter>

</Stroke>

</LineSymbolizer>

</Rule>

</FeatureTypeStyle>

</UserStyle>

</NamedLayer> </StyledLayerDescriptor>

La aplicación del estilo altiger:tiger_roadsconjunto de datos muestra cómo los anchos de línea aumentan a medida que se acerca el mapa:



Obstáculos de etiquetas

GeoServer implementa un algoritmo para la resolución de conflictos de etiquetas, para evitar que las etiquetas se superpongan entre sí.Por defecto, este algoritmo sólo considera conflictos con otras etiquetas.Esto puede provocar que las etiquetas se superpongan a otros simbolizadores, lo que puede producir un efecto no deseado.



GeoServer admite una opción de proveedor llamadalabelObstacleque permite marcar un simbolizador como obstáculo.Esto le indica al etiquetador que evite generar etiquetas que se superpongan.

<?xml versión="1.0" codificación="ISO-8859-1"?> <StyledLayerDescriptor versión= "1.0.0" 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" >

<Capa con nombre>

<Estilo de usuario>

<FeatureTypeStyle>

<Regla>

<PointSymbolizer>

<Gráfico>

<ExternalGraphic>

<OnlineResource

xlink:type= "simple"

xlink:href= "smileyface.png" />

<Formato> imagen/png </Format>

</ExternalGraphic>

< Tamaño> 32 </Size>

</Graphic>

<VendorOption name= "labelObstacle" > verdadero </VendorOption>

</PointSymbolizer>

</Rule>

</FeatureTypeStyle>

</UserStyle>

</NamedLayer> </StyledLayerDescriptor>



Aplicando el obstáculo a un estilo de punto regular:

<PointSymbolizer>

<Graphic>

<ExternalGraphic>

<OnlineResource

xlink:type= "simple"

xlink:href= "smileyface.png" />

<Format> image/png </Format>

</ExternalGraphic>

<Size> 32 </Size >

</Graphic>

<VendorOption nombre= "labelObstacle" > verdadero </VendorOption> </PointSymbolizer>


Aplicar el obstáculo al estilo de línea/polígono:


Advertencia

Tenga cuidado al marcar una línea o un polisimbolizador como obstáculo de etiqueta.La rutina de resolución de conflictos de etiquetas se basa en el cuadro delimitador, por lo que marcarlo como un obstáculo de etiqueta dará como resultado que ninguna etiqueta se superponga no solo a la geometría en sí, sino también a su cuadro delimitador.


Agregar espacio alrededor de rellenos gráficos

A partir de GeoServer 2.3.4 es posible agregar espacios en blanco alrededor de los símbolos utilizados dentro de los rellenos gráficos, lo que permite controlar efectivamente la densidad de los símbolos en el mapa.

<PolygonSymbolizer>

<Relleno>

<GraphicFill> <Gráfico

> <ExternalGraphic> <

OnlineResource xlink:type= "simple" xlink:href= "./rockFillSymbol.png" /> <Formato> imagen/png </Format> </ExternalGraphic > </Graphic> </GraphicFill> </Fill> <VendorOption nombre= "margen-gráfico" > 10 </VendorOption> </PolygonSymbolizer>

Lo anterior fuerza 10 píxeles de espacio en blanco encima, debajo y a cada lado del símbolo, agregando efectivamente 20 píxeles de espacio en blanco entre los símbolos en el relleno.Segraphic-marginpuede expresar, al igual que el margen CSS, de cuatro maneras diferentes:

arriba, derecha, abajo, izquierda (un valor explícito por margen)

arriba, derecha-izquierda, abajo (tres valores, derecha e izquierda comparten el mismo valor)

arriba-abajo, derecha-izquierda (dos valores, arriba y abajo comparten el mismo valor)

arriba-derecha-abajo-izquierda (valor único para los cuatro márgenes)

La capacidad de especificar diferentes márgenes permite utilizar más de un símbolo en un relleno y sincronizar las posiciones relativas de los distintos símbolos para generar un relleno compuesto:

<PolygonSymbolizer>

<Relleno>

<GraphicFill> <Gráfico

> <ExternalGraphic> <

OnlineResource xlink:type= "simple" xlink:href= "./boulderGeometry.png" /> <Formato> imagen/png </Format> </ExternalGraphic > </Graphic> </GraphicFill> </Fill> <VendorOption nombre= "margen-gráfico" > 35 17 17 35 </VendorOption> </PolygonSymbolizer> <PolygonSymbolizer> <Fill> <GraphicFill> <Graphic> <ExternalGraphic> <OnlineResource xlink:type= "simple" xlink:href= "./roughGrassFillSymbol.png" /> <Format> image/png </Format> </ExternalGraphic> </Graphic> </GraphicFill> </Fill> <VendorOption nombre = "margen-gráfico" > 16 16 32 32 </VendorOption> </PolygonSymbolizer>

Se llena con símbolos aleatorios

A partir de GeoServer 2.4.2 es posible generar rellenos repitiendo aleatoriamente un símbolo en los polígonos a rellenar.O, para ser más precisos, generar el relleno de textura habitual repitiendo una y otra vez un mosaico, cuyo contenido es la repetición aleatoria de un relleno.La distribución aleatoria es estable, por lo que será la misma en todas las llamadas y mosaicos, y está controlada por la semilla utilizada para generar la distribución.

El relleno aleatorio se genera especificando un GraphicFill con una marca o un gráfico externo y luego agregando opciones de proveedor para controlar cómo se repite aleatoriamente el símbolo.Aquí hay una tabla con opciones, valores predeterminados y valores posibles:

Opción

Valor por defecto

Descripción

aleatorio

ninguno

Activa la distribución aleatoria del símbolo.Los valores posibles sonnone,free,grid.ningunodeshabilita la distribución aleatoria,gratisgenera una distribución completamente aleatoria,la cuadrículagenerará una cuadrícula regular de posiciones y solo aleatoriza la posición del símbolo alrededor de los centros de las celdas, proporcionando una distribución más uniforme en el espacio.

tamaño de mosaico aleatorio

256

Dimensione el mosaico de relleno de textura que contendrá los símbolos distribuidos aleatoriamente

rotación aleatoria

ninguno

Activa la rotación aleatoria de símbolos.Los valores posibles sonninguno(sin rotación) olibre

recuento de símbolos aleatorios

dieciséis

El número de símbolos en el mosaico.El número de símbolos realmente pintados puede ser menor, ya que la distribución garantizará que no se superpongan dos símbolos entre sí.

Semilla aleatoria

0

La "semilla" utilizada para generar la distribución aleatoria.Cambiar este valor dará como resultado una distribución de símbolo diferente

Aquí hay un ejemplo:

<sld:PolygonSymbolizer>

<sld:Fill>

<sld:GraphicFill>

<sld:Graphic>

<sld:Mark>

<sld:WellKnownName> forma://barra </sld:WellKnownName>

<sld:Stroke>

<sld:CssParameter nombre= "trazo" > #0000ff </sld:CssParameter>

<sld:CssParameter nombre= "trazo-linecap" > redondo </sld:CssParameter>

<sld:CssParameter nombre= "trazo-ancho" > 4 ​​</sld: CssParameter>

</sld:Stroke>

</sld:Mark>

<sld:Size> 8 </sld:Size>

</sld:Graphic>

</sld:GraphicFill>

</sld:Fill>

<sld:VendorOption nombre= "semilla aleatoria" > 5 </sld:VendorOption>

<sld:VendorOption nombre= "random" > grid </sld:VendorOption>

<sld:VendorOption nombre= "random-tile-size" > 100 </sld:VendorOption >

<sld:VendorOption nombre= "rotación-aleatoria" > gratis </sld:VendorOption>

<sld:VendorOption nombre= "random-symbol-count" > 50 </sld:VendorOption> </sld:PolygonSymbolizer>


Distribución aleatoria de una línea diagonal.

Las distribuciones aleatorias también se pueden utilizar para mapeo temático; por ejemplo, aquí está el SLD para una versión de topp:states que muestra el número de habitantes que varían la densidad de una distribución de puntos aleatoria:

<?xml versión="1.0" codificación="UTF-8"?> <sld:UserStyle xmlns= "http://www.opengis.net/sld" xmlns:sld= "http://www.opengis.net /sld" xmlns:ogc= "http://www.opengis.net/ogc" xmlns:gml= "http://www.opengis.net/gml" >

<sld:Name> Estilo predeterminado </sld:Name >

<sld:FeatureTypeStyle>

<sld:Name> nombre </sld:Name>

<sld:Rule>

<ogc:Filter>

<ogc:And>

<ogc:Not>

<ogc:PropertyIsLessThan>

<ogc:PropertyName> PERSONAS < /ogc:PropertyName>

<ogc:Literal> 2000000 </ogc:Literal>

</ogc:PropertyIsLessThan>

</ogc:Not>

<ogc:Not>

<ogc:PropertyIsGreaterThanOrEqualTo>

<ogc:PropertyName> PERSONAS </ogc:PropertyName >

<ogc:Literal> 4000000 </ogc:Literal>

</ogc:PropertyIsGreaterThanOrEqualTo>

</ogc:Not>

</ogc:And> <

/ogc:Filter>

<sld:PolygonSymbolizer>

<sld:Fill>

<sld: GraphicFill>

<sld:Graphic> <

sld:Mark>

<sld:WellKnownName> círculo </sld:WellKnownName>

<sld:Fill>

<sld:CssParameter name= "relleno" > #a9a9a9 </sld:CssParameter>

</sld :Fill>

</sld:Mark>

<sld:Size> 2 </sld:Size>

</sld:Graphic>

</sld:GraphicFill>

</sld:Fill>

<sld:VendorOption name= "random" > cuadrícula </sld:VendorOption>

<sld:VendorOption nombre= "tamaño-mosaico-aleatorio" > 100 </sld:VendorOption>

<sld:VendorOption nombre= "recuento-de-símbolos-aleatorios" > 150 </sld:VendorOption>

</ sld:PolygonSymbolizer>

<sld:LineSymbolizer>

<sld:Stroke/>

</sld:LineSymbolizer>

</sld:Rule>

<sld:Rule>

<ogc:Filter>

<ogc:PropertyIsLessThan>

<ogc:PropertyName> PERSONAS </ ogc:NombrePropiedad>

<ogc:Literal> 2000000 </ogc:Literal>

</ogc:PropertyIsLessThan>

</ogc:Filter>

<sld:PolygonSymbolizer>

<sld:Fill>

<sld:GraphicFill>

<sld:Graphic>

<sld:Mark>

<sld:WellKnownName> círculo </sld:WellKnownName>

<sld:Fill>

<sld:CssParameter nombre= "relleno" >#a9a9a9 </sld:CssParameter>

</sld:Fill>

</sld:Mark>

<sld:Size> 2 </sld:Size>

</sld:Graphic>

</sld:GraphicFill>

</sld:Fill>

<sld:VendorOption nombre= "random" > grid </sld:VendorOption>

<sld:VendorOption nombre= "random-tile-size" > 100 </sld:VendorOption>

<sld:VendorOption name= "random-symbol-count " > 50 </sld:VendorOption>

</sld:PolygonSymbolizer>

<sld:LineSymbolizer>

<sld:Stroke/>

</sld:LineSymbolizer>

</sld:Rule> <sld

:Rule>

<ogc:Filter>

<ogc :PropertyIsGreaterThanOrEqualTo>

<ogc:PropertyName> PERSONAS </ogc:PropertyName>

<ogc:Literal> 4000000 </ogc:Literal>

</ogc:PropertyIsGreaterThanOrEqualTo>

</ogc:Filter>

<sld:PolygonSymbolizer>

<sld:Fill>

< sld:GraphicFill>

<sld:Graphic>

<sld:Mark>

<sld:WellKnownName> círculo </sld:WellKnownName>

<sld:Fill>

<sld:CssParameter name= "relleno" > #a9a9a9 </sld:CssParameter>

< /sld:Fill>

</sld:Mark>

<sld:Size> 2 </sld:Size>

</sld:Graphic>

</sld:GraphicFill>

</sld:Fill>

<sld:VendorOption nombre= "aleatorio" > grid </sld:VendorOption>

<sld:VendorOption nombre= "tamaño-mosaico-aleatorio" > 100 </sld:VendorOption>

<sld:VendorOption nombre= "recuento-de-símbolo-aleatorio" > 500 </sld:VendorOption>

</sld:PolygonSymbolizer>

<sld:LineSymbolizer>

<sld:Stroke/>

</sld:LineSymbolizer>

</sld:Rule>

</sld:FeatureTypeStyle> </sld:UserStyle>


Mapa temático mediante el enfoque de densidad de puntos


Composición y combinación de colores.

Es posible realizar combinación y composición de colores, ya sea entre estilos de tipo de entidad o asociando operaciones de combinación con cada simbolizador.

GeoServer implementa la mayoría de los modos de composición y fusión de color sugeridos por laespecificación de nivel 1 de composición y fusión SVG.Cualquiera de los conjuntos de operaciones permite controlar cómo se fusionan dos capas/símbolos superpuestos para formar un mapa final (a diferencia del comportamiento normal de simplemente apilar imágenes una encima de la otra).

Esta sección utilizará las siguientes definiciones para los términos comunes “fuente” y “destino”:

Fuente: Imagen que se está pintando actualmenteen la parte superior delmapa.

Destino: Imagende fondoen la que se está dibujando la imagen de origen.

Especificación de composición y combinación en SLD

Composicion

Bases compuestas

Modos compuestos y de fusión.

Modos de composición alfa

Modos de fusión de colores

Ejemplo de composición y combinación


Specifying compositing and blending in SLD

Composites

Both compositing and blending can be specified in SLD by adding the following VendorOption to either the end of a Symbolizer or FeatureTypeStyle:

<VendorOption name="composite">multiply</VendorOption>

In case a custom opacity is desired, it can be added after the operation name separated with a comma:

<VendorOption name="composite">multiply, 0.5</VendorOption>

Note

See thefull list of available modes.

Warning

Blending against symbolizers causes exceptions inside the JDK when using OpenJDK. Theissue is knownand has been reportedly fixed, but only in OpenJDK 9.

One way to get around this issue with OpenJDK 7/8 is to install theMarlin renderer. This replaces the OpenJDK core renderer and does not suffer from the same issue.

Oracle JDK 7 or 8 does not show this issue.

Composite bases

For FeatureTypeStyles an additional vendor option can be added to control compositing groups:

<VendorOption name="composite-base">true</VendorOption>

This will tell the rendering engine to use that FeatureTypeStyle as the destination, and will compose all subsequent FeatureTypeStyle/Layers on top of it, until another base is found. Once the full set of layers against a base is composed, then the base itself will be composed against the next set of composed layers, using its own compositing operator, if present.

Without this setting, the destination will be the full stack of all previous FeatureTypeStyles and layers drawn before the current one. This can be limiting for two reasons:

It limits the usefulness of alpha-composite masking operations

It breaks the WMS model, where the client can decide freely how to stack layers (the desired compositing effects will be achieved only when a certain stack of layers is used)

Consider the following example:


In this example, the first two layers are drawn on top of each other, forming “Merge1”.

The third layer is a composite base, as such it won’t be merged on top of the already drawn map immediately, but it will be drawn to an off-screen buffer, and layer 4 and 5 will be drawn/composited on top of it. Once that happens, “Merge2” is ready, and gets drawn on top of “Merge1”,

The next layer is another base, so “Base2” will be again drawn to an off-screen buffer, and layer 7 and 8 will be drawn/composited on top of it, forming Merge3. Once Merge3 is ready, it will be drawn/composited on top of the already fused Merge1/Merge2, generating the final map.


Composite and blending modes

There are two types of modes: alpha composite and color blending.

Alpha compositing controls how two images are merged together by using the alpha levels of the two. No color mixing is being performed, only pure binary selection (either one or the other).

Color blending modes mix the colors of source and destination in various ways. Each pixel in the result will be some sort of combination between the source and destination pixels.

The following page shows the full list of available modes. (See thesyntaxpage for more details.) To aid in comprehension, two source and two destination images will be used to show visually how each mode works:

Source 1

Source 2




Destination 1

Destination 2



Alpha compositing modes

copy

Only the source will be present in the output.

Example 1

Example 2



destination

Only the destination will be present in the output

Example 1

Example 2



source-over

The source is drawn over the destination, and the destination is visible where the source is transparent. Opposite ofdestination-over.

Example 1

Example 2



destination-over

The source is drawn below the destination, and is visible only when the destination is transparent. Opposite ofsource-over.

Example 1

Example 2



source-in

The source is visible only when overlapping some non-transparent pixel of the destination. This allows the background map to act as a mask for the layer/feature being drawn. Opposite ofdestination-in.

Example 1

Example 2



destination-in

The destination is retained only when overlapping some non transparent pixel in the source. This allows the layer/feature to be drawn to act as a mask for the background map. Opposite ofsource-in.

Example 1

Example 2



source-out

The source is retained only in areas where the destination is transparent. This acts as a reverse mask when compared tosource-in.

Example 1

Example 2



destination-out

The destination is retained only in areas where the source is transparent. This acts as a reverse mask when compared todestination-in.

Example 1

Example 2



source-atop

The destination is drawn fully, while the source is drawn only where it intersects the destination.

Example 1

Example 2



destination-atop

The source is drawn fully, and the destination is drawn over the source and only where it intersects it.

Example 1

Example 2



xor

“Exclusive Or” mode. Each pixel is rendered only if either the source or the destination is not blank, but not both.

Example 1

Example 2



Color blending modes

multiply

The source color is multiplied by the destination color and replaces the destination. The resulting color is always at least as dark as either the source or destination color. Multiplying any color with black results in black. Multiplying any color with white preserves the original color.

Example 1

Example 2



screen

Multiplies the complements of the source and destination color values, then complements the result. The end result color is always at least as light as either of the two constituent colors. Screening any color with white produces white; screening with black leaves the original color unchanged.

The effect is similar to projecting multiple photographic slides simultaneously onto a single screen.

Example 1

Example 2



overlay

Multiplies (screens) the colors depending on the destination color value. Source colors overlay the destination while preserving its highlights and shadows. The backdrop color is not replaced but is mixed with the source color to reflect the lightness or darkness of the backdrop.

Example 1

Example 2



darken

Selects the darker of the destination and source colors. The destination is replaced with the source only where the source is darker.

Example 1

Example 2



lighten

Selects the lighter of the destination and source colors. The destination is replaced with the source only where the source is lighter.

Example 1

Example 2



color-dodge

Brightens the destination color to reflect the source color. Drawing with black produces no changes.

Example 1

Example 2



color-burn

Darkens the destination color to reflect the source color. Drawing with white produces no change.

Example 1

Example 2



hard-light

Multiplies or screens the colors, depending on the source color value. The effect is similar to shining a harsh spotlight on the destination.

Example 1

Example 2



soft-light

Darkens or lightens the colors, depending on the source color value. The effect is similar to shining a diffused spotlight on the destination.

Example 1

Example 2



difference

Subtracts the darker of the two constituent colors from the lighter color. White inverts the destination color; black produces no change.

Example 1

Example 2



exclusion

Produces an effect similar to that ofdifferencebut lower in contrast. White inverts the destination color; black produces no change.

Example 1

Example 2



Compositing and blending example

Let’s say we want to draw thetopp:stateslayer so that the polygons are not filled with the population keyed colors, but only an inner border inside the polygon should appear, leaving the internal fully transparent.

This is the destination:


topp:states layer

Using alpha blending, this can be achived by creating a mask around the state borders with a thick stroke, and then using a “destination-in” alpha compositing.

This is the source (mask):


Layer mask

The SLD will contain three FeatureTypeStyles. The first one would be the standard rules (states colored by population) and the last one will contain the label rules. The second (middle) one is where the blending will occur:

...<FeatureTypeStyle>

<!-- Usual states rules, skipped for brevity --></FeatureTypeStyle><FeatureTypeStyle>

<Rule>

<LineSymbolizer>

<Stroke>

<CssParameter name="stroke-width">10</CssParameter>

<CssParameter name="stroke">#000000</CssParameter>

</Stroke>

</LineSymbolizer>

</Rule>

<VendorOption name="composite">destination-in</VendorOption></FeatureTypeStyle><FeatureTypeStyle>

<!-- The label rules, skipped for brevity --></FeatureTypeStyle>

...

This is the result of the composition:


Now, if for example someone makes a WMS call in which the another layer is drawn below this one, the result will look like this:


This other background layer is hardly visible, because it has been cut by the mask. This shows the risks of using alpha compositing without care in a WMS setting.

In order to achieve the desired result no matter how the client composes the request, the first FeatureTypeStyle that draws the polygons (the states themselves) needs to be set as acompositing base, ensuring the mask will only be applied to it.

<VendorOption name="composite-base">true</VendorOption>

The result will look like the following (though a multiply blend was added to the base to ensure a nice visual transparency effect on the border lines):


Download the final style

Note

See thefull list of available modes.


Z ordering features within and across feature types and layers

Starting with GeoServer 2.8.0 it is possible to control the order in which the features are being loaded and painted on the map, thus replicating the same above/below relationships found in the reality.

Enabling z-ordering in a single FeatureTypeStyle

z-ordering across FeatureTypeStyle

z-ordering across layers

Z ordering single layer example

Enabling z-ordering in a single FeatureTypeStyle

The z-ordering is implemented as a new FeatureTypeStyle vendor option,sortBy, which controls in which order the features are extracted from the data source, and thus painted. ThesortBysyntax is the same as the WFS one, that is, a list of comma separated field names, with an optional direction modifier (ascending being the default):

field1 [A|D], field2 [A|D], ... , fieldN [A|D]

Some examples:

“z”: sorts the features based on thezfield, ascending (lower z values are painted first, higher later)

“cat,z D”: sorts the features on thecatattribute, with ascending order, and for those that have the samecatvalue, the sorting is on descendingz

“cat D,z D”: sorts the features on thecatattribute, with descending order, and for those that have the samecatvalue, the sorting is on descendingz

So, if we wanted to order features based on a single “elevation” attribute we’d be using the following SLD snippet:

...<sld:FeatureTypeStyle>

<sld:Rule>

...

<!-- filters and symbolizers here -->

...

</sld:Rule>

<sld:VendorOption name="sortBy">elevation</sld:VendorOption></sld:FeatureTypeStyle>

...

z-ordering across FeatureTypeStyle

It is a common need to perform road casing against a complex road network, which can have its own z-ordering needs (e.g., over and under passes). Casing is normally achieved by using two separate twoFeatureTypeStyle, one drawing a thick line, one drawing a thin one.

Let’s consider a simple data set, made of just three roads:

_=geom:LineString:404000,z:int

Line.1=LINESTRING(0 4, 10 4)|1

Line.2=LINESTRING(0 6, 10 6)|3

Line.3=LINESTRING(7 0, 7 10)|1

Adding a “sortBy” rule to bothFeatureTypeStyleobjects will achieve no visible result:

<?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>

<UserStyle>

<FeatureTypeStyle>

<Rule>

<LineSymbolizer>

<Stroke>

<CssParameter name="stroke">#FF0000</CssParameter>

<CssParameter name="stroke-width">8</CssParameter>

</Stroke>

</LineSymbolizer>

</Rule>

<sld:VendorOption name="sortBy">z</sld:VendorOption>

</FeatureTypeStyle>

<FeatureTypeStyle>

<Rule>

<LineSymbolizer>

<Stroke>

<CssParameter name="stroke">#FFFFFF</CssParameter>

<CssParameter name="stroke-width">6</CssParameter>

</Stroke>

</LineSymbolizer>

</Rule>

<sld:VendorOption name="sortBy">z</sld:VendorOption>

</FeatureTypeStyle>

</UserStyle>

</NamedLayer></StyledLayerDescriptor>

The result will be the following:


This is happening because while the roads are loaded in the right order,Line.1,Line.3,Line.2, they are all painted with the tick link first, and then the code will start over, and paint them all with the thin line.

In order to get both casing and z-ordering to work a new vendor option,sortByGroup, needs to be added to bothFeatureTypeStyle, grouping them in a single z-ordering paint.

<?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>

<UserStyle>

<FeatureTypeStyle>

<Rule>

<LineSymbolizer>

<Stroke>

<CssParameter name="stroke">#FF0000</CssParameter>

<CssParameter name="stroke-width">8</CssParameter>

</Stroke>

</LineSymbolizer>

</Rule>

<sld:VendorOption name="sortBy">z</sld:VendorOption>

<sld:VendorOption name="sortByGroup">roads</sld:VendorOption>

</FeatureTypeStyle>

<FeatureTypeStyle>

<Rule>

<LineSymbolizer>

<Stroke>

<CssParameter name="stroke">#FFFFFF</CssParameter>

<CssParameter name="stroke-width">6</CssParameter>

</Stroke>

</LineSymbolizer>

</Rule>

<sld:VendorOption name="sortBy">z</sld:VendorOption>

<sld:VendorOption name="sortByGroup">roads</sld:VendorOption>

</FeatureTypeStyle>

</UserStyle>

</NamedLayer></StyledLayerDescriptor>

The result will be the following:


When grouping is used, the code will first paintLine.1,Line3with the thick line, then track back and paint them with the thin line, then move to paintLine.2with the thick line, and finallyLine.2with the thin line, achieving the desired result.

z-ordering across layers

Different layers, such for example roads and rails, can have their features z-ordered together by putting all theFeatureTypeStylein their styles in the samesortByGroup, provided the following conditions are met:

The layers are side by side in the WMS request/layer group. In other words, the z-ordering allows to break the WMS specified order only if the layers are directly subsequent in the request. This can be extended to any number of layers, provided the progression ofFeatureTypeStylein the same group is not broken

There is no FeatureTypeStyle in the layer style that’s breaking the sequence

Let’s consider an example, with a rails layer having twoFeatureTypeStyle, one with a group, the other not:

FeatureTypeStyle id

SortByGroup id

rails1

linework

rails2

none

We then have a roads layer with twoFeatureTypeStyle, both in the same group:

FeatureTypeStyle id

SortByGroup id

road1

linework

road2

linework

If the WMS request asks for&layers=roads,rails, then the expandedFeatureTypeStylelist will be:

FeatureTypeStyle id

SortByGroup id

road1

linework

road2

linework

rails1

linework

rails2

none

As a result, theroad1,road2,rails1will form a single group, and this will result in the rails be merged with the roads when z-ordering.

If instead the WMS request asks for&layers=rails,roads`, then the expandedFeatureTypeStylelist will be:

FeatureTypeStyle id

SortByGroup id

rails1

linework

rails2

none

road1

linework

road2

linework

Therails2feature type style breaks the sequence, as a result, the rails will not be z-ordered in the same group as the roads.


Z ordering single layer example

The OpenStreetMap dataset uses extensively az_orderattribute to model the above/below relationships between elements in the real world.

Asmall downloadable shapefileis provided that shows a small area with a rich set of different z-orders, where roads and rails go above and below each other. For reference, this is the dataset schema:

Name

Type

Notes

osm_id

numeric


type

string

The type of the segment, can be “mainroads”, “minorroads”, “railways”, ...

bridge

numeric

0 or 1

ref

numeric

0 or 1

tunnel

numeric


oneway

numeric

0 or 1

z_order

numeric


class

string


The dataset contains several different values for z_order, in particular: -10, -7, -5, -3, -1, 0, 3, 4, 5, 7, 9, 10, 13, 14, 15, 17, 19.

Here is a sample CSS style using z-ordering, but not groups, to perform the display. Road casing is achieved by multiple FeatureTypeStyle, orz-indexvalues in CSS:

[class = 'railways' and bridge = 1] {

stroke: #333333;

stroke-width: 8;

z-index: 0;}[class = 'minorroads'] {

stroke: #a69269;

stroke-width: 3;

z-index: 0;}[class = 'mainroads'] {

stroke: #ff0000;

stroke-width: 5;

z-index: 0;}[class = 'motorways'] {

stroke: #990000;

stroke-width: 8;

z-index: 0;}[class = 'railways' and bridge = 1] {

stroke: #ffffff;

stroke-width: 6;

z-index: 1;}[class = 'railways'] {

stroke: #333333;

stroke-width: 3;

z-index: 2;}[class = 'railways'] {

stroke: #ffffff;

stroke-width: 1.5;

stroke-dasharray: 5, 5;

z-index: 3;}[class = 'motorways'] {

stroke: #ff6666;

stroke-width: 6;

stroke-linecap: round;

z-index: 3;}[class = 'minorroads'] {

stroke: #ffffff;

stroke-width: 2,5;

stroke-linecap: round;

z-index: 3;}[class = 'mainroads'] {

stroke: #ff9999;

stroke-width: 4;

stroke-linecap: round;

z-index: 3;}* {

sort-by: "z_order";}

The sorting is achieved by using thesort-byproperty, which translates into asortByVendorOption in SLD. A full equivalent SLD isavailable for download.

This is the resulting map:


As one can see, there are evident issues:

Roads and rails are not showing any evident z-ordering, in fact, all rails are below roads, but their dashed white center shows a mix of below and above roads

The rails bridges (depicted with a third thicker line around the rail symbol) are consistently below some other road or rail, while they should be above.

This is mostly happening because the various FeatureTypeStyle elements are not put doctor in a single group.

A slight change in the CSS, grouping all levels in the same sortByGroup, solves the issues above:

[class = 'railways' and bridge = 1] {

stroke: #333333;

stroke-width: 8;

z-index: 0;}[class = 'minorroads'] {

stroke: #a69269;

stroke-width: 3;

z-index: 0;}[class = 'mainroads'] {

stroke: #ff0000;

stroke-width: 5;

z-index: 0;}[class = 'motorways'] {

stroke: #990000;

stroke-width: 8;

z-index: 0;}[class = 'railways' and bridge = 1] {

stroke: #ffffff;

stroke-width: 6;

z-index: 1;}[class = 'railways'] {

stroke: #333333;

stroke-width: 3;

z-index: 2;}[class = 'railways'] {

stroke: #ffffff;

stroke-width: 1.5;

stroke-dasharray: 5, 5;

z-index: 3;}[class = 'motorways'] {

stroke: #ff6666;

stroke-width: 6;

stroke-linecap: round;

z-index: 3;}[class = 'minorroads'] {

stroke: #ffffff;

stroke-width: 2,5;

stroke-linecap: round;

z-index: 3;}[class = 'mainroads'] {

stroke: #ff9999;

stroke-width: 4;

stroke-linecap: round;

z-index: 3;}* {

sort-by: "z_order";

sort-by-group: "roadsGroup";}

A full equivalent SLD is alsoavailable for download.

The result now shows proper z-ordering:



Consejos y trucos SLD

Esta sección detalla varias estrategias avanzadas para trabajar con SLD.

Aplicar estilos a tipos de geometría mixta

Reestructurando los datos

Uso de reglas SLD y funciones de filtro

Estilo usando funciones de transformación

Recodificar

Clasificar por categorías

Interpolar

Aplicar estilos a tipos de geometría mixta

En ocasiones, es posible que sea necesario aplicar estilo a una columna de geometría cuyo tipo de geometría puede ser diferente para cada entidad (algunas son polígonos, otras son puntos, etc.) y utilizar estilos diferentes para diferentes tipos de geometría.

SLD 1.0 no proporciona una solución clara para abordar esta situación.Los simbolizadores de punto, línea y polígono no seleccionan geometría por tipo, ya que cada uno puede aplicarse a todos los tipos de geometría:

Los simbolizadores de puntos se aplican a cualquier tipo de geometría.Si la geometría no es un punto, se utiliza el centroide de la geometría.

Los simbolizadores de líneas se aplican tanto a líneas como a polígonos.Para los polígonos, se aplica estilo al límite.

Los simbolizadores de polígonos se aplican a las líneas, agregando un segmento de cierre que conecta el primer y el último punto de la línea.

Tampoco existe un predicado de filtro estándar para identificar el tipo de geometría que podría usarse en las reglas.

Esta sección sugiere varias formas de lograr estilos por tipo de geometría.Requieren reestructuración de datos o el uso de funciones de filtrado no estándar.

Reestructurando los datos

Hay algunas formas de reestructurar los datos para que se les pueda aplicar estilo por tipo de geometría utilizando únicamente construcciones SLD estándar.

dividir la mesa

La primera y obvia es dividir la tabla original en un conjunto de tablas separadas, cada una de las cuales contiene un único tipo de geometría.Por ejemplo, si la tablafindingstiene una columna de geometría que puede contener puntos, líneas y polígonos, se pueden crear tres tablas, cada una de las cuales contiene un único tipo de geometría.

Columnas de geometría separadas

Una segunda forma es utilizar una tabla y columnas de geometría separadas.Entonces, si la tablafindingstiene una columna,lageomtabla reestructurada tendrápointycolumnas, cada una de las cuales contendrá solo un tipo de geometría.Después de la reestructuración, los simbolizadores se referirán a una geometría específica, por ejemplo:linepolygon

<PolygonSymbolizer>

<Geometry><ogc:PropertyName> polígono </ogc:PropertyName></Geometry> </PolygonSymbolizer>

De esta manera, cada simbolizador coincidirá solo con los tipos de geometría que se supone que debe representar y omitirá las filas que contienen un valor nulo.

Agregar una columna de tipo de geometría

Una tercera forma es agregar una columna de tipo de geometría que permita utilizar construcciones de filtrado estándar y luego crear una regla separada por tipo de geometría.gtypeEn el ejemplo anterior se agregaráun nuevo atributo que contienelos valoresPointyLine.PolygonLa siguiente plantilla SLD se puede utilizar después del cambio:

<Regla>

<ogc:Filter>

<ogc:PropertyIsEqualTo>

<ogc:PropertyName> gtype </ogc:PropertyName>

<ogc:Literal> Punto </ogc:Literal>

</ogc:PropertyIsEqualTo>

</ogc:Filter>

< Simulador de puntos>

...

</PointSymbolizer> </Rule> <Rule>

<ogc:Filter>

<ogc:PropertyIsEqualTo>

<ogc:PropertyName> gtype </ogc:PropertyName>

<ogc:Literal> Línea </ogc:Literal>

</ogc:PropertyIsEqualTo >

</ogc:Filter>

<LineSymbolizer>

...

</LineSymbolizer> </Rule> <Rule>

<ogc:Filter>

<ogc:PropertyIsEqualTo>

<ogc:PropertyName> gtype </ogc:PropertyName>

<ogc:Literal> Polígono </ogc:Literal>

</ogc:PropertyIsEqualTo >

</ogc:Filter>

<PolygonSymbolizer>

...

</PolygonSymbolizer> </Rule>

Las sugerencias anteriores suponen que la reestructuración de los datos es técnicamente posible.Esto suele ser cierto en bases de datos espaciales que proporcionan funciones que permiten determinar el tipo de geometría.

Crear vistas

Una forma menos invasiva de obtener los mismos resultados sin cambiar la estructura de la tabla es crear vistas que tengan la estructura requerida.Esto permite que los datos originales se mantengan intactos y las vistas se pueden utilizar para renderizar.

Uso de reglas SLD y funciones de filtro

SLD 1.0 utiliza la especificación OGC Filter 1.0 para filtrar los datos a los que se aplicará estilo según cada regla.Los filtros pueden contenerfunciones de filtropara calcular propiedades de valores geométricos.En GeoServer, el filtrado por tipo de geometría se puede realizar utilizando las funciones de filtrogeometryTypeodimension.

Nota

La especificación Filter Encoding proporciona una sintaxis estándar para funciones de filtro, pero no exige un conjunto específico de funciones.Es posible que los SLD que utilizan estas funciones no sean portátiles a otro software de diseño.

Función de tipo de geometría

LageometryTypefunción toma una propiedad de geometría y devuelve una cadena, que (actualmente)esunodelosPointvalores,,,,,,y.LineStringLinearRingPolygonMultiPointMultiLineStringMultiPolygonGeometryCollection

Usando esta función, unRulepunto único que coincida se puede escribir como:

<Rule>

<ogc:PropertyIsEqualTo>

<ogc:Function name= "geometryType" >

<ogc:PropertyName> geom </ogc:PropertyName>

</ogc:Function>

<ogc:Literal> Punto </ogc:Literal>

</ ogc:PropertyIsEqualTo>

<Simbolizador de puntos>

...

</PointSymbolizer> </Rule>

El filtro es más complejo si tiene que coincidir con todos los tipos de geometría lineal.En este caso, se parece a:

<Regla>

<ogc:Filtro>

<ogc:PropertyIsEqualTo>

<ogc: Nombre de función= "in3" >

<ogc:Nombre de función = "tipo de geometría" >

<ogc:Nombre de propiedad> geom </ogc:Nombre de propiedad>

</ogc:Función >

<ogc:Literal> LineString </ogc:Literal>

<ogc:Literal> LinearRing </ogc:Literal>

<ogc:Literal> MultiLineString </ogc:Literal>

</ogc:Function>

<ogc:Literal> verdadero < /ogc:Literal>

</ogc:PropertyIsEqualTo>

</ogc:Filter>

<LineSymbolizer>

...

</LineSymbolizer> </Rule>

Este filtro se lee como.Las funciones de filtro en Filter 1.0 tienen un número fijo de argumentos, por lo que existen una serie defunciones cuyos nombres corresponden al número de argumentos que aceptan:,, ...,.geometryType(geom)in("LineString","LinearRing","MultiLineString")inin2in3in10

función de dimensión

Una alternativa ligeramente más sencilla es utilizar ladimensionfunción de geometría para seleccionar geometrías de una dimensión deseada.La dimensión 0 selecciona Puntos y MultiPuntos, la dimensión 1 selecciona LineStrings, LinearRings y MultiLineStrings, y la dimensión 2 selecciona Polígonos y MultiPolygons.El siguiente ejemplo muestra cómo seleccionar geometrías lineales:

<Rule>

<ogc:PropertyIsEqualTo>

<ogc:Function name= "dimensión" >

<ogc:PropertyName> geom </ogc:PropertyName>

</ogc:Function>

<ogc:Literal> 1 </ogc:Literal>

</ ogc:PropertyIsEqualTo>

<LineSymbolizer>

...

</LineSymbolizer> </Rule>


Estilo usando funciones de transformación

La especificación Symbology Encoding 1.1 define las siguientesfunciones de transformación:

Recodetransforma un conjunto de valores de atributos discretos en otro conjunto de valores

Categorizetransforma un atributo de valor continuo en un conjunto de valores discretos

Interpolatetransforma un atributo de valor continuo en otro rango continuo de valores

Estas funciones proporcionan una forma concisa de calcular parámetros de estilo a partir de valores de atributos de características.Geoserver los implementa comofunciones de filtrocon los mismos nombres.

Nota

La sintaxis de la función GeoServer es ligeramente diferente a la definición de SE 1.1, ya que la especificación define elementos de sintaxis adicionales que no están disponibles en las funciones de GeoServer.

Estas funciones pueden hacer que los documentos de estilo sean más concisos, ya que expresan una lógica que de otro modo requeriría muchas reglas separadas o expresiones de filtro complejas. Incluso permiten una lógica que es imposible expresar de otra manera.Una ventaja adicional es que a menudo proporcionan un rendimiento superior al de las reglas explícitas.

Una desventaja de utilizar estas funciones para diseñar es que no se muestran en los gráficos de leyenda de WMS.

Recodificar

LaRecodefunción de filtro transforma un conjunto de valores discretos para un atributo en otro conjunto de valores.La función se puede utilizar dentro de los parámetros de estilo SLD para convertir el valor de un atributo de característica en valores específicos para un parámetro como color, tamaño, ancho, opacidad, etc.

La recodificación se define mediante un conjunto de pares de valores(entrada, salida).

Ejemplo

Considere un mapa de cloropletas del conjunto de datos de los estados de EE. UU. utilizando el color de relleno para indicar las regiones topográficas de los estados.El conjunto de datos tiene un atributoSUB_REGIONque contiene el código de región de cada estado.LaRecodefunción se utiliza para asignar cada código de región a un color diferente.

El simbolizador de este estilo es:

<PolygonSymbolizer>

<Fill>

<CssParameter name= "fill" >

<ogc:Function name= "Recode" >

<!-- Valor a transformar -->

<ogc:Function name= "strTrim" >

<ogc:PropertyName> SUB_REGION </ogc:NombrePropiedad>

</ogc:Función>

<!-- Mapa de valores de entrada a salida -->

<ogc:Literal> N Eng </ogc:Literal>

<ogc:Literal> #6495ED </ogc:Literal>

<ogc:Literal> Medio Atl </ogc:Literal>

<ogc:Literal> #B0C4DE </ogc:Literal>

<ogc:Literal> S Atl </ogc:Literal>

<ogc:Literal> #00FFFF </ogc:Literal>

<ogc:Literal> ES Cen </ogc:Literal>

<ogc:Literal> #9ACD32 </ogc:Literal>

<ogc:Literal> ES Cen </ogc:Literal>

<ogc:Literal> #00FA9A </ogc:Literal>

<ogc:Literal> Cen WN </ogc:Literal>

<ogc:Literal> #FFF8DC </ogc:Literal>

<ogc:Literal> Cen WS </ogc:Literal>

<ogc:Literal> #F5DEB3 </ogc:Literal>

<ogc:Literal> Montaña </ogc:Literal>

<ogc:Literal> #F4A460 </ogc:Literal>

<ogc:Literal> Pacífico </ogc:Literal>

<ogc:Literal> #87CEEB </ogc:Literal>

</ogc:Function>

</CssParameter>

</Fill> </PolygonSymbolizer>

Este estilo produce el siguiente resultado:


Clasificar por categorías

LaCategorizefunción de filtro transforma un atributo de valor continuo en un conjunto de valores discretos.La función se puede utilizar dentro de los parámetros de estilo SLD para convertir el valor de un atributo de característica en valores específicos para un parámetro como color, tamaño, ancho, opacidad, etc.

La categorización se define mediante una lista de valores de salida y umbrales de datos alternos.Los valores de umbral definen las rupturas entre los rangos de entrada.Las entradas se convierten en valores de salida según el rango en el que se encuentran.

Ejemplo

Considere un mapa de cloropletas del conjunto de datos de los estados de EE. UU. utilizando el color de relleno para indicar una categorización de los estados por población.El conjunto de datos tiene atributosPERSONSyLAND_KMa partir de los cuales se calcula la densidad de población mediante elDivoperador.Este valor se ingresa a laCategorizefunción, que se utiliza para asignar diferentes colores a los rangos de densidad [<= 20], [20 - 100] y [> 100].

El simbolizador de este estilo es:

<PolygonSymbolizer>

<Fill>

<CssParameter name= "fill" >

<ogc:Function name= "Categorize" >

<!-- Valor a transformar -->

<ogc:Div>

<ogc:PropertyName> PERSONS </ogc:PropertyName >

<ogc:NombrePropiedad> LAND_KM </ogc:NombrePropiedad>

</ogc:Div>

<!-- Valores de salida y umbrales -->

<ogc:Literal> #87CEEB </ogc:Literal>

<ogc:Literal> 20 </ogc:Literal>

<ogc:Literal> #FFFACD </ogc:Literal>

< ogc:Literal> 100 </ogc:Literal>

<ogc:Literal> #F08080 </ogc:Literal>

</ogc:Function>

</CssParameter>

</Fill> </PolygonSymbolizer>

Este estilo produce el siguiente resultado:


Interpolar

LaInterpolatefunción de filtro transforma un atributo de valor continuo en otro rango continuo de valores.La función se puede utilizar dentro de los parámetros de estilo SLD para convertir el valor de un atributo de característica en un parámetro de valor continuo como color, tamaño, ancho, opacidad, etc.

La transformación se define mediante un conjunto de puntos de control(entrada, salida)elegidos a lo largo de una curva de mapeo deseada.La interpolación por partes a lo largo de la curva se utiliza para calcular un valor de salida para cualquier valor de entrada.

La función puede calcular valores numéricos o de color como salida.Esto se conoce comométodo de interpolacióny se especifica mediante un parámetro opcional con un valor denumeric(valor predeterminado) ocolor.

Laformade la curva de mapeo entre puntos de control se especifica mediante elmodo de interpolación, que es un parámetro opcional con valores delinear(predeterminado),cubicocosine.

Ejemplo

La interpolación de rangos de colores permite una definición concisa de colores que varían continuamente para mapas (temáticos) de cloropletas.Como ejemplo, considere un mapa del conjunto de datos de los estados de EE. UU. que utiliza el color de relleno para indicar la población de los estados.El conjunto de datos tiene un atributoPERSONSque contiene la población de cada estado.Los valores de población se encuentran en el rango de 0 a aproximadamente 30.000.000.La curva de interpolación está definida por tres puntos de control que asignan colores a los niveles de población 0, 9.000.000 y 23.000.000.Los colores de los valores de población se calculan mediante interpolación lineal por partes a lo largo de esta curva.Por ejemplo, un estado con una población de 16.000.000 se muestra con un color a medio camino entre los de los puntos de control medio y superior.Los estados con poblaciones superiores a 23.000.000 se muestran con el último color.

Debido a que la interpolación se realiza sobre valores de color, se proporciona el parámetro del método con un valor decolor.Dado que se utiliza la interpolación lineal predeterminada, no se proporciona ningún modo de interpolación,

El simbolizador de este estilo es:

<PolygonSymbolizer>

<Fill>

<CssParameter name= "fill" >

<ogc:Function name= "Interpolar" >

<!-- Propiedad a transformar -->

<ogc:PropertyName> PERSONAS </ogc:PropertyName>

<!-- Pares de definición de curvas de mapeo (entrada, salida) -->

<ogc:Literal> 0 </ogc:Literal>

<ogc:Literal> #fefeee </ogc:Literal>

<ogc:Literal> 9000000 </ogc:Literal>

<ogc:Literal> #00ff00 </ogc:Literal>

<ogc:Literal> 23000000 </ogc:Literal>

<ogc:Literal> #ff0000 </ogc:Literal>

<!-- Método de interpolación -->

<ogc:Literal> color </ogc:Literal>

<!-- Modo de interpolación: el valor predeterminado es lineal -->

</ogc:Function>

</CssParameter>

</Fill> </PolygonSymbolizer>

Este simbolizador produce el siguiente resultado:



Servicios

GeoServer sirve datos utilizando protocolos estándar establecidos por elOpen Geospatial Consortium:

ElWeb Feature Service(WFS) admite solicitudes de datos de entidades geográficas (con atributos y geometría vectorial).

ElServicio de mapas web(WMS) admite solicitudes de imágenes de mapas (y otros formatos) generadas a partir de datos geográficos.

ElServicio de Cobertura Web(WCS) admite solicitudes de datos de cobertura (rásteres).

Estos servicios son la forma principal en que GeoServer proporciona información geoespacial.

Servicio de funciones web

Conceptos básicos de WFS

referencia de la CMA

Formatos de salida WFS

Parámetros del proveedor WFS

Mapeo de esquema WFS

Servicio de mapas web

Conceptos básicos de WMS

Referencia WMS

Soporte de tiempo en GeoServer WMS

Formatos de salida WMS

Parámetros del proveedor WMS

Espacio de nombres AUTO no estándar

configuración WMS

Variables globales que afectan a WMS

ObtenerLegendGraphic

Servicio de Cobertura Web

Conceptos básicos de WCS

referencia WCS

Formatos de salida WCS

Parámetros del proveedor de WCS

configuración WCS

Servicios virtuales OWS

Filtrar por espacio de trabajo

Filtrar por capa

Desactivar servicios globales


Servicio de funciones web

Esta sección describe el servicio de funciones web.

Conceptos básicos de WFS

Diferencias entre versiones de WFS

Orden de ejes

referencia de la CMA

Beneficios de WFS

Operaciones

Excepciones

Formatos de salida WFS

Personalización de salida de Shapefile

Opciones de formato como parámetro en solicitudes WFS

Parámetros del proveedor WFS

filtros CQL

Opciones de formato

Reproyección

Validación de solicitudes XML

Filtro de espacio de nombres GetCapabilities

Mapeo de esquema WFS

Personalización del esquema

Cambio de tipo


Conceptos básicos de WFS

GeoServer proporciona soporte para laespecificacióndel Servicio de funciones web (WFS ) del Open Geospatial Consortium (OGC ), versiones 1.0.0,1.1.0y2.0.0.WFS define un estándar para el intercambio de datos vectoriales a través de Internet.Con un WFS compatible, los clientes pueden consultar tanto la estructura de datos como los datos de origen.Las operaciones avanzadas de WFS también admiten operaciones de edición y bloqueo de funciones.

GeoServer es la implementación de referencia de las tres versiones del estándar, implementando completamente cada parte del protocolo.Esto incluye las operaciones básicas deGetCapabilities,DescribeFeatureTypeyGetFeature, así como opciones más avanzadas comoTransaction.GeoServer WFS también está integrado con su sistemade seguridadpara limitar el acceso a datos y transacciones, y admite una variedad deformatos de salida WFS, lo que hace que los datos sin procesar estén más ampliamente disponibles.

Diferencias entre versiones de WFS

Las principales diferencias entre las versiones de WFS son:

WFS 1.1.0 y 2.0.0 devuelven GML3 como GML predeterminado, mientras que en WFS 1.0.0, el valor predeterminado es GML2.GML3 adopta formas marginalmente diferentes de especificar una geometría.GeoServer admite solicitudes en formatos GML3 y GML2.

En WFS 1.1.0 y 2.0.0, el SRS (Sistema de referencia espacial o proyección) se especifica conurn:x-ogc:def:crs:EPSG:XXXX, mientras que en WFS 1.0.0 la especificación erahttp://www.opengis.net/gml/srs/epsg.xml#XXXX.Este cambio tiene implicaciones para elorden de los ejesde los datos devueltos.

WFS 1.1.0 y 2.0.0 admiten la reproyección de datos sobre la marcha, lo que admite la devolución de datos en un SRS distinto del SRS nativo.

WFS 2.0.0 presenta una nueva versión de la especificación de codificación de filtros, agregando soporte para filtros temporales.

WFS 2.0.0 admite uniones mediante una solicitud GetFeature.

WFS 2.0.0 agrega la capacidad de paginar los resultados de una solicitud GetFeature a través de los parámetrosstartIndexycount.GeoServer ahora admite esta funcionalidad en WFS 1.0.0 y 1.1.0.

WFS 2.0.0 admite consultas almacenadas, que son consultas WFS normales almacenadas en el servidor de modo que puedan invocarse pasando el identificador apropiado con una solicitud WFS.

WFS 2.0.0 admite SOAP (Protocolo simple de acceso a objetos) como alternativa a la interfaz OGC.

Nota

También hay dos cambios en los nombres de los parámetros que pueden causar confusión.WFS 2.0.0 usa elcountparámetro para limitar la cantidad de funciones devueltas en lugar delmaxFeaturesparámetro usado en versiones anteriores.También cambiótypeNameatypeNamesaunque GeoServer aceptará cualquiera de los dos.

Orden de ejes

Los servidores WFS 1.0.0 devuelven coordenadas geográficas en orden de longitud/latitud (x/y), la forma más común de distribuir datos.Por ejemplo, la mayoría de los archivos de forma adoptan este orden de forma predeterminada.

Sin embargo, el orden tradicional de los ejes para los sistemas geográficos y cartográficos es el opuesto (latitud/longitud (y/x)) y las especificaciones WFS posteriores respetan esto.El soporte de pedido de ejes predeterminado es:

Latitud/longitud: WFS 1.1.0 y WFS 2.0.0

Longitud/latitud—WFS 1.0.0

Esto puede causar dificultades al cambiar entre servidores con diferentes versiones de WFS o al actualizar su WFS.Para minimizar la confusión y aumentar la interoperabilidad, GeoServer ha adoptado las siguientes suposiciones al especificar proyecciones en los siguientes formatos:

Representación

Orden de eje asumido

EPSG:xxxx

longitud/latitud (x/y)

http://www.opengis.net/gml/srs/epsg.xml#xxxx

longitud/latitud (x/y)

urn:x-ogc:def:crs:EPSG:xxxx

latitud/longitud (y/x)


referencia de la CMA

ElWeb Feature Service(WFS) es un estándar creado por el Open Geospatial Consortium (OGC) para crear, modificar e intercambiar información geográfica en formato vectorial en Internet mediante HTTP.Un WFS codifica y transfiere información en Geography Markup Language (GML), un subconjunto de XML.

La versión actual de WFS es2.0.0.GeoServer admite las versiones 2.0.0, 1.1.0 y 1.0.0.Aunque existen algunas diferencias importantes entre las versiones, la sintaxis de la solicitud suele seguir siendo la misma.

Una especificación OGC relacionada, elWeb Map Service, define el estándar para el intercambio de información geográfica en formato de imagen digital.

Beneficios de WFS

El estándar WFS define el marco para proporcionar acceso y respaldar transacciones en características geográficas discretas de una manera independiente de la fuente de datos subyacente.A través de una combinación de operaciones de descubrimiento, consulta, bloqueo y transacción, los usuarios tienen acceso a los datos espaciales y de atributos de origen de una manera que les permite interrogar, diseñar, editar (crear, actualizar y eliminar) y descargar características individuales.Las capacidades transaccionales de WFS también respaldan el desarrollo y la implementación de aplicaciones cartográficas colaborativas.

Operaciones

Todas las versiones de WFS admiten estas operaciones:

Operación

Descripción

GetCapabilities

Genera un documento de metadatos que describe un servicio WFS proporcionado por el servidor, así como operaciones y parámetros válidos de WFS.

DescribeFeatureType

Devuelve una descripción de los tipos de funciones admitidas por un servicio WFS.

GetFeature

Devuelve una selección de características de una fuente de datos, incluida la geometría y los valores de los atributos.

LockFeature

Evita que una función se edite mediante un bloqueo de función persistente

Transaction

Edita tipos de funciones existentes creando, actualizando y eliminando

Las siguientes operaciones están disponiblessolo en la versión 2.0.0:

Operación

Descripción

GetPropertyValue

Recupera el valor de una propiedad de característica o parte del valor de una propiedad de característica compleja del almacén de datos para un conjunto de características identificadas mediante una expresión de consulta.

GetFeatureWithLock

Devuelve una selección de funciones y también aplica un bloqueo a esas funciones.

CreateStoredQuery

Crear una consulta almacenada en el servidor WFS

DropStoredQuery

Elimina una consulta almacenada del servidor WFS

ListStoredQueries

Devuelve una lista de las consultas almacenadas en un servidor WFS.

DescribeStoredQueries

Devuelve un documento de metadatos que describe las consultas almacenadas en un servidor WFS.

Las siguientes operaciones están disponiblessolo en la versión 1.1.0:

Operación

Descripción

GetGMLObject

Recupera características y elementos por ID de un WFS

Nota

En los ejemplos siguientes, la URL ficticiahttp://example.com/geoserver/wfsse utiliza a modo de ilustración.Para probar los ejemplos, sustituya la dirección de un WFS válido.Además, aunque la solicitud normalmente se definiría en una línea sin interrupciones, se agregan interrupciones para mayor claridad en los ejemplos proporcionados.

Excepciones

WFS también admite varios formatos para informar excepciones.Los valores admitidos para los informes de excepciones son:

Formato

Sintaxis

Descripción

XML

exceptions=text/xml

(predeterminado)Salida XML

JSON

exceptions=application/json

JSON sencillo

JSONP

exceptions=text/javascript

Devuelve un JsonP con el formato: parseResponse(...jsonp...).Consultelos parámetros del proveedor de WMSpara cambiar el nombre de la devolución de llamada.Tenga en cuenta que este formato está deshabilitado de forma predeterminada (consulteVariables globales que afectan a WMS).

Obtener capacidades

La operaciónGetCapabilitieses una solicitud a un servidor WFS para obtener una lista de las operaciones y servicios, ocapacidades, admitidos por ese servidor.

Para emitir una solicitud GET mediante HTTP:

http://example.com/geoserver/wfs?

servicio=wfs&

versión = 1.1.0&

solicitud=ObtenerCapacidad

La solicitud equivalente usando POST:

<GetCapabilities

service= "WFS"

xmlns= "http://www.opengis.net/wfs"

xmlns:xsi= "http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation= "http: //www.opengis.net/wfs http://schemas.opengis.net/wfs/1.1.0/wfs.xsd" />

Las solicitudes GET son las más sencillas de decodificar, pero las solicitudes POST son equivalentes.

Los parámetros para GetCapabilities son:

Parámetro

¿Requerido?

Descripción

service

Nombre del servicio: el valor esWFS

version

Versión del servicio: el valor es el número de versión actual.Se debe proporcionar el número de versión completo (“1.1.0”, “1.0.0”), no la forma abreviada (“1” o “1.1”).

request

Nombre de la operación: el valor esGetCapabilities

Aunque todos los parámetros anteriores son técnicamente necesarios según la especificación, GeoServer proporcionará valores predeterminados si se omite algún parámetro en una solicitud.

La respuesta de GetCapabilities es un documento XML extenso, cuyo formato es diferente para cada una de las versiones admitidas.Hay cinco componentes principales en un documento GetCapabilities:

Componente

Descripción

ServiceIdentification

Contiene información de encabezado básica para la solicitud, comoTitleyServiceType.IndicaServiceTypequé versiones de WFS son compatibles.

ServiceProvider

Proporciona información de contacto sobre la empresa que publica el servicio WFS, incluido el teléfono, el sitio web y el correo electrónico.

OperationsMetadata

Describe las operaciones que admite el servidor WFS y los parámetros para cada operación.Es posible que un servidor WFS esté configurado para no responder a las operaciones enumeradas anteriormente.

FeatureTypeList

Enumera los tipos de funciones publicadas por un servidor WFS.Los tipos de funciones se enumeran en el formularionamespace:featuretype.También se enumera la proyección predeterminada del tipo de característica, junto con el cuadro delimitador de los datos en la proyección indicada.

Filter_Capabilities

Enumera los filtros o expresiones que están disponibles para formar predicados de consulta, por ejemplo,SpatialOperators(comoEquals,Touches) yComparisonOperators(comoLessThan,GreaterThan).Los filtros en sí no están incluidos en el documento GetCapabilities.

Describir tipo de característica

DescribeFeatureTypesolicita información sobre un tipo de característica individual antes de solicitar los datos reales.Específicamente, la operación solicitará una lista de características y atributos para el tipo de característica dado, o enumerará los tipos de características disponibles.

Los parámetros para DescribeFeatureType son:

Parámetro

¿Requerido?

Descripción

service

Nombre del servicio: el valor esWFS

version

Versión del servicio: el valor es el número de versión actual.

request

Nombre de la operación: el valor esDescribeFeatureType

typeNames

Nombre del tipo de característica a describir (typeNamepara WFS 1.1.0 y versiones anteriores)

exceptions

No

Formato para informar excepciones: el valor predeterminado esapplication/vnd.ogc.se_xml

outputFormat

No

Define el lenguaje de descripción del esquema utilizado para describir los tipos de características.

Para devolver una lista de tipos de funciones, la solicitud GET sería la siguiente.Esta solicitud devolverá la lista de tipos de funciones, ordenadas por espacio de nombres:

http://example.com/geoserver/wfs?

servicio=wfs&

versión = 2.0.0&

solicitud = Describir tipo de característica

Para enumerar información sobre un tipo de característica específica llamadanamespace:featuretype, la solicitud GET sería:

http://example.com/geoserver/wfs?

servicio=wfs&

versión = 2.0.0&

solicitud = Describir tipo de característica&

typeNames=espacio de nombres:tipo de característica

Obtener característica

La operaciónGetFeaturedevuelve una selección de características de la fuente de datos.

Esta solicitud ejecutará una solicitud GetFeature para una capa determinadanamespace:featuretype:

http://example.com/geoserver/wfs?

servicio=wfs&

versión = 2.0.0&

solicitud=ObtenerCaracterística&

typeNames=espacio de nombres:tipo de característica

La ejecución de este comando devolverá las geometrías de todas las funciones de un tipo de función determinado, potencialmente una gran cantidad de datos.Para limitar la salida, puede restringir la solicitud GetFeature a una sola característica incluyendo un parámetro adicionalfeatureIDy proporcionando el ID de una característica específica.En este caso, la solicitud GET sería:

http://example.com/geoserver/wfs?

servicio=wfs&

versión = 2.0.0&

solicitud=ObtenerCaracterística&

typeNames=espacio de nombres:tipo de característica&

característicaID=característica

Si se desconoce el ID de la función pero aún desea limitar la cantidad de funciones devueltas, use elcountparámetro para WFS 2.0.0 o elmaxFeaturesparámetro para versiones anteriores de WFS.En los ejemplos siguientes,Nrepresenta el número de funciones que se devolverán:

http://example.com/geoserver/wfs?

servicio=wfs&

versión = 2.0.0&

solicitud=ObtenerCaracterística&

typeNames=espacio de nombres:tipo de característica&

contar=N

http://example.com/geoserver/wfs?

servicio=wfs&

versión = 1.1.0&

solicitud=ObtenerCaracterística&

typeName=espacio de nombres:tipo de característica&

característicasmax=N

Exactamente qué N características se devolverán depende de la estructura interna de los datos.Sin embargo, puede ordenar la selección devuelta según el valor de un atributo.En el siguiente ejemplo, se incluye un atributo en la solicitud mediante elsortBy=attributeparámetro (reempláceloattributecon el atributo por el que desea ordenar):

http://example.com/geoserver/wfs?

servicio=wfs&

versión = 2.0.0&

solicitud=ObtenerCaracterística&

typeNames=espacio de nombres:tipo de característica&

contar=N&

ordenar por = atributo

La operación de clasificación predeterminada es ordenar en orden ascendente.Algunos servidores WFS requieren que se especifique el orden de clasificación, incluso si es necesario un orden ascendente.En este caso, agregue a+Aa la solicitud.Por el contrario, agregue+Da la solicitud para ordenar en orden descendente de la siguiente manera:

http://example.com/geoserver/wfs?

servicio=wfs&

versión = 2.0.0&

solicitud=ObtenerCaracterística&

typeNames=espacio de nombres:tipo de característica&

contar=N&

ordenar por=atributo+D

No es obligatorio utilizarlossortByencountuna solicitud GetFeature, pero se pueden utilizar juntos para gestionar la selección de funciones devuelta de forma más eficaz.

Para restringir una solicitud GetFeature por atributo en lugar de característica, use lapropertyNameclave en el formulariopropertyName=attribute.Puede especificar un único atributo o varios atributos separados por comas.Para buscar un único atributo en todas las entidades, se requeriría la siguiente solicitud:

http://example.com/geoserver/wfs?

servicio=wfs&

versión = 2.0.0&

solicitud=ObtenerCaracterística&

typeNames=espacio de nombres:tipo de característica&

nombre de propiedad = atributo

Para una sola propiedad de una sola característica, use ambosfeatureIDypropertyName:

http://example.com/geoserver/wfs?

servicio=wfs&

versión = 2.0.0&

solicitud=ObtenerCaracterística&

typeNames=espacio de nombres:tipo de característica&

featureID=característica&

nombre de propiedad = atributo

Para más de una propiedad de una sola característica, use una lista de valores separados por comas parapropertyName:

http://example.com/geoserver/wfs?

servicio=wfs&

versión = 2.0.0&

solicitud=ObtenerCaracterística&

typeNames=espacio de nombres:tipo de característica&

featureID=característica&

nombrePropiedad=atributo1,atributo2

Si bien las permutaciones anteriores para una solicitud GetFeature se centraron en parámetros no espaciales, también es posible consultar características basadas en la geometría.Si bien hay opciones limitadas disponibles en una solicitud GET para consultas espaciales (hay más disponibles en solicitudes POST que utilizan filtros), se admite el filtrado por cuadro delimitador (BBOX).

El parámetro BBOX le permite buscar entidades que están contenidas (o parcialmente contenidas) dentro de un cuadro de coordenadas definidas por el usuario.El formato del parámetro BBOX es,,yrepresenta los valores de las coordenadas.El orden de las coordenadas pasadas al parámetro BBOX depende del sistema de coordenadas utilizado.(Es por eso que la sintaxis de coordenadas no se representa cono). Para especificar el sistema de coordenadas, agreguea la solicitud WFS, dóndeestá el sistema de referencia de coordenadas que desea utilizar.bbox=a1,b1,a2,b2``where``a1b1a2b2xysrsName=CRSCRS

En cuanto a qué esquinas del cuadro delimitador especificar, el único requisito es proporcionar primero una esquina inferior (izquierda o derecha).Por ejemplo, abajo a la izquierda y arriba a la derecha, o abajo a la derecha y arriba a la izquierda.

Una solicitud de ejemplo que involucra la devolución de funciones basadas en un cuadro delimitador tendría el siguiente formato:

http://example.com/geoserver/wfs?

servicio=wfs&

versión = 2.0.0&

solicitud=ObtenerCaracterística&

typeNames=espacio de nombres:tipo de característica&

srsNombre=CRS

bcaja=a1,b1,a2,b2

Característica de bloqueo

Una operaciónLockFeatureproporciona un mecanismo de bloqueo de funciones a largo plazo para garantizar la coherencia en las transacciones de edición.Si un cliente recupera una función y realiza algunos cambios antes de enviarla nuevamente al WFS, los bloqueos impiden que otros clientes realicen cambios en la misma función, lo que garantiza una transacción que se puede serializar.Si un servidor WFS admite esta operación, se informará en la respuesta GetCapabilities del servidor.

En la práctica, pocos clientes apoyan esta operación.

Transacción

La operaciónTransacciónpuede crear, modificar y eliminar funciones publicadas por un WFS.Cada transacción constará de cero o más elementos Insertar, Actualizar y Eliminar, y cada elemento de transacción se realizará en orden.Cada transacción de GeoServer esatómica, lo que significa que si alguno de los elementos falla, la transacción se abandona y los datos no se modifican.Un servidor WFS que admitetransaccionesa veces se conoce como servidor WFS-T.GeoServer soporta totalmente las transacciones.

Puede encontrar más información sobre la sintaxis de las transacciones en laespecificación WFSy en lassolicitudes de muestra de GeoServer.

ObtenerGMLObject

Nota

Esta operación es válidasólo para WFS versión 1.1.0.

Una operaciónGetGMLObjectacepta el identificador de un objeto GML (característica o geometría) y devuelve ese objeto.Esta operación es relevante solo en situaciones que requierenfunciones complejasal permitir a los clientes extraer solo una parte de las propiedades anidadas de una función compleja.Como resultado, esta operación no es muy utilizada por las aplicaciones cliente.

Obtener valor de propiedad

Nota

Esta operación es válidasólo para WFS versión 2.0.0.

Una operaciónGetPropertyValuerecupera el valor de una propiedad de característica, o parte del valor de una propiedad de característica compleja, de una fuente de datos para un conjunto determinado de características identificadas por una consulta.

Este ejemplo recupera el contenido geográfico solo de las entidades de latopp:statescapa:

http://example.com/geoserver/wfs?

servicio=wfs&

versión = 2.0.0&

solicitud=ObtenerValorPropiedad&

typeNames=topp:estados&

valueReference=la_geoma

El mismo ejemplo en una solicitud POST:

<wfs:GetPropertyValue service= 'WFS' versión= '2.0.0'

xmlns:topp= 'http://www.openplans.org/topp'

xmlns:fes= 'http://www.opengis.net/fes/ 2.0'

xmlns:wfs= 'http://www.opengis.net/wfs/2.0'

valueReference= 'the_geom' >

<wfs:Query typeNames= 'topp:states' /> </wfs:GetPropertyValue>

Para recuperar el valor de un atributo diferente, modifique elvalueReferenceparámetro.

Obtener característica con bloqueo

Nota

Esta operación es válidasólo para WFS versión 2.0.0.

Una operaciónGetFeatureWithLockes similar a una operaciónGetFeature, excepto que cuando el conjunto de características se devuelve desde el servidor WFS, las características también se bloquean en anticipación de una operación de transacción posterior.

Este ejemplo de POST recupera las características de latopp:statescapa, pero además las bloquea durante cinco minutos.

<wfs:GetFeatureWithLock service= 'WFS' version= '2.0.0'

handle= 'GetFeatureWithLock-tc1' expiry= '5' resultType= 'resultados'

xmlns:topp= 'http://www.openplans.org/topp'

xmlns:fes= 'http://www.opengis.net/fes/2.0'

xmlns:wfs= 'http://www.opengis.net/wfs/2.0'

valueReference= 'the_geom' >

<wfs:Query typeNames= 'topp:estados' /> </wfs:GetFeatureWithLock>

Para ajustar el tiempo de bloqueo, modifique elexpiryparámetro.

Crear consulta almacenada

Nota

Esta operación es válidasólo para WFS versión 2.0.0.

Una operaciónCreateStoredQuerycrea una consulta almacenada en el servidor WFS.La definición de la consulta almacenada está codificada en elStoredQueryDefinitionparámetro y recibe un ID como referencia.

Este ejemplo POST crea una nueva consulta almacenada (llamada “myStoredQuery”) que filtra latopp:statescapa a aquellas características que se encuentran dentro de un área de interés determinada (${AreaOfInterest}):

<wfs:CreateStoredQuery service= 'WFS' versión= '2.0.0'

xmlns:wfs= 'http://www.opengis.net/wfs/2.0'

xmlns:fes= 'http://www.opengis.org/ fes/2.0'

xmlns:gml= 'http://www.opengis.net/gml/3.2'

xmlns:myns= 'http://www.someserver.com/myns'

xmlns:topp= 'http://www .openplans.org/topp' >

<wfs:StoredQueryDefinition id= 'myStoredQuery' >

<wfs:Parameter name= 'AreaOfInterest' tipo= 'gml:Polygon' />

<wfs:QueryExpressionText

returnFeatureTypes= 'topp:states'

idioma= ' urn:ogc:def:queryLanguage:OGC-WFS::WFS_QueryExpression'

isPrivate= 'false' >

<wfs:Query typeNames= 'topp:states' >

<fes:Filter>

<fes:Within>

<fes:ValueReference> the_geom < /fes:ReferenciaValor>

${ÁreaDeInterés}

</fes:Within>

</fes:Filter>

</wfs:Query>

</wfs:QueryExpressionText>

</wfs:StoredQueryDefinition> </wfs:CreateStoredQuery>

DropStoredQuery

Nota

Esta operación es válidasólo para WFS versión 2.0.0.

Una operaciónDropStoredQueryelimina una consulta almacenada creada previamente por una operación CreateStoredQuery.La solicitud acepta el ID de la consulta que se va a descartar.

Este ejemplo eliminará una consulta almacenada con un ID demyStoredQuery:

http://example.com/geoserver/wfs?

solicitud=DropStoredQuery&

almacenadoQuery_Id=miConsultaAlmacenada

El mismo ejemplo en una solicitud POST:

<wfs:DropStoredQuery

xmlns:wfs= 'http://www.opengis.net/wfs/2.0'

servicio= 'WFS' id= 'myStoredQuery' />

Lista de consultas almacenadas

Nota

Esta operación es válidasólo para WFS versión 2.0.0.

Una operaciónListStoredQueriesdevuelve una lista de las consultas almacenadas que mantiene actualmente el servidor WFS.

Este ejemplo enumera todas las consultas almacenadas en el servidor:

http://example.com/geoserver/wfs?

solicitud = Lista de consultas almacenadas&

servicio=wfs&

versión = 2.0.0

El mismo ejemplo en una solicitud POST:

<wfs:ListStoredQueries service= 'WFS'

version= '2.0.0'

xmlns:wfs= 'http://www.opengis.net/wfs/2.0' />

Describir consultas almacenadas

Nota

Esta operación es válidasólo para WFS versión 2.0.0.

Una operaciónDescribeStoredQuerydevuelve metadatos detallados sobre cada consulta almacenada mantenida por el servidor WFS.Se puede solicitar una descripción de una consulta individual proporcionando el ID de la consulta específica.Si no se proporciona ninguna identificación, se describen todas las consultas.

Este ejemplo describe la consulta almacenada existente con un ID deurn:ogc:def:query:OGC-WFS::GetFeatureById:

http://example.com/geoserver/wfs?

request=DescribirConsultasAlmacenadas&

almacenadoQuery_Id=urna:ogc:def:query:OGC-WFS::GetFeatureById

El mismo ejemplo en una solicitud POST:

<wfs:DescribeStoredQueries

xmlns:wfs= 'http://www.opengis.net/wfs/2.0'

service= 'WFS' >

<wfs:StoredQueryId> urn:ogc:def:query:OGC-WFS::GetFeatureById </ wfs:StoredQueryId> </wfs:DescribeStoredQueries>


Formatos de salida WFS

WFS devuelve funciones e información de funciones en varios formatos.La sintaxis para especificar un formato de salida es:

formato de salida=<formato>

¿ Dónde<format>está una de las siguientes opciones?

Formato

Sintaxis

Notas

GML2

outputFormat=GML2

Opción predeterminada para WFS 1.0.0

GML3

outputFormat=GML3

Opción predeterminada para WFS 1.1.0 y 2.0.0

Archivo de forma

outputFormat=shape-zip

Se generará un archivo ZIP que contiene el archivo Shapefile (consultePersonalización de salida del archivo Shapefilea continuación)

JSON

outputFormat=application/json

Devuelve una salida GeoJSON o JSON.NoteoutputFormat=jsonsolo es compatible con getFeature (para compatibilidad con versiones anteriores).

JSONP

outputFormat=text/javascript

Devuelve unJSONPcon el formato:parseResponse(...json...).Consultelos parámetros del proveedor de WMSpara cambiar el nombre de la devolución de llamada.Tenga en cuenta que este formato está deshabilitado de forma predeterminada (consulteVariables globales que afectan a WMS).

CSV

outputFormat=csv

Devuelve un archivo CSV (valores separados por comas)

Nota

Algunos formatos de salida adicionales (comoExcel) están disponibles con el uso de una extensión.La lista completa de formatos de salida admitidos por una instancia particular de GeoServer se puede encontrar realizando una solicitud WFSGetCapabilities.

Personalización de salida de Shapefile

El formato de salida del archivo Shapefile se puede personalizar preparando unaplantilla de Freemarkerque configurará el nombre del archivo (archivo ZIP) y los archivos que contiene.La plantilla predeterminada es:

zip=${tiponombre}

shp=${typename}${geometryType}

txt=solicitudwfs

Lazippropiedad es el nombre del archivo, lashppropiedad es el nombre del archivo de forma para un tipo de característica determinado ytxtes el volcado de la solicitud WFS real.

Las propiedades disponibles en la plantilla son:

typename—Nombre del tipo de característica (para lazippropiedad, este será el primer tipo de característica si la solicitud contiene muchos tipos de característica)

geometryType—Tipo de geometría contenida en el archivo de forma.Esto solo se usa si el tipo de geometría de salida es genérico y las diversas geometrías se almacenan en un archivo de forma por tipo.

workspace—Espacio de trabajo del tipo de entidad

timestamp—Objeto de fecha con la marca de tiempo de la solicitud

iso_timestamp—Cadena (marca de tiempo ISO de la solicitud en GMT) enyyyyMMdd_HHmmssformato

Opciones de formato como parámetro en solicitudes WFS

GeoServer proporciona elformat_optionsparámetro específico del proveedor para especificar parámetros específicos de cada formato.La sintaxis es:

opciones de formato=param1:valor1;param2:valor2;...

La opción de formato actualmente admitida en la salida WFS es:

filename—Se aplica únicamente al formato de salida SHAPE-ZIP.Si se proporciona un nombre de archivo, el nombre se utiliza como nombre del archivo de salida.Por ejemplo,format_options=filename:roads.zip.Si no se especifica un nombre de archivo, el nombre del archivo de salida se infiere del nombre del tipo de característica solicitada.

callback: se aplica únicamente al formato de salida JSONP.Consultelos parámetros del proveedor de WMSpara cambiar el nombre de la devolución de llamada.Tenga en cuenta que este formato está deshabilitado de forma predeterminada (consulteVariables globales que afectan a WMS).

id_policy: se aplica únicamente al formato de salida JSON y se utiliza para determinar si los valores de identificación se incluyen en la salida.Si se proporciona un nombre de atributo, se utilizará.Por ejemplo,format_options=id_policy:reference_no.Úselotruepara la generación de identificación de funciones.Para evitar cualquier salida de identificación de función, utilicefalse.Siid_policyno se especifica la característica, se utiliza la generación de ID.


Parámetros del proveedor WFS

Los parámetros del proveedor WFS son parámetros de solicitud no estándar definidos por una implementación para proporcionar capacidades mejoradas.GeoServer admite una variedad de parámetros WFS específicos del proveedor.

filtros CQL

En las solicitudes GET WFSGetFeature, elcql_filterparámetro se puede utilizar para especificar un filtro en formato ECQL (lenguaje de consulta común extendido).ECQL proporciona una sintaxis más compacta y legible en comparación con los filtros XML de OGC.

Para obtener detalles completos, consulte laReferencia de ECQLy el tutorial deCQL y ECQL.

El siguiente ejemplo ilustra un filtro OGC de solicitud GET:

filter=%3CFilter%20xmlns:gml=%22http://www.opengis.net/gml%22%3E%3CIntersects%3E%3CPropertyName%3Ethe_geom%3C/PropertyName%3E%3Cgml:Point%20srsName=%224326%22 %3E%3Cgml:coordenadas%3E-74.817265,40.5296504%3C/gml:coordenadas%3E%3C/gml:Punto%3E%3C/Intersección%3E%3C/Filtro%3E

Usando ECQL, el filtro idéntico se definiría de la siguiente manera:

cql_filter=INTERSECT(the_geom,%20POINT%20(-74.817265%2040.5296504))

Opciones de formato

Elformat_optionsparámetro es un contenedor para otros parámetros que son específicos del formato.La sintaxis es:

opciones_formato=param1:valor1;param2:valor2;...

La opción de formato admitida es:

callback(el valor predeterminado esparseResponse): especifica el nombre de la función de devolución de llamada para el formato de respuesta JSONP.

id_policy(el valor predeterminado estrue): especifica la generación de identificación para el formato de salida JSON.Para incluir la identificación de la característica en la salida, use un nombre de atributo o utilícelotruepara la generación de identificación de la característica.Para evitar por completo el uso de la identificación de función, utilicefalse.

Reproyección

Como WFS 1.1.0 y 2.0.0 admiten la reproyección de datos, GeoServer puede almacenar los datos en una proyección y devolver GML en otra proyección.Si bien no forma parte de la especificación, GeoServer también admite esto utilizando WFS 1.0.0.Al enviar una solicitud GET WFSGetFeature, puede agregar este parámetro para especificar el SRS de reproyección de la siguiente manera:

srsNombre=<srsNombre>

El código para la proyección está representado por<srsName>, por ejemploEPSG:4326.Para solicitudes POST, puede agregar el mismo código alQueryelemento.

Validación de solicitudes XML

GeoServer es menos estricto que la especificación WFS en lo que respecta a la validez de una solicitud XML.Para forzar que las solicitudes XML entrantes sean válidas, utilice el siguiente parámetro:

estricto = [ verdadero | FALSO ]

La opción predeterminada para este parámetro esfalse.

Por ejemplo, la siguiente solicitud no es válida:

<wfs:GetFeature service= "WFS" version= "1.0.0"

xmlns:wfs= "http://www.opengis.net/wfs" >

<Query typeName= "topp:states" /> </wfs:GetFeature >

La solicitud no es válida por dos motivos:

ElQueryelemento debe tener el prefijowfs:.

El prefijo del espacio de nombres no se ha asignado a un URI de espacio de nombres.

Dicho esto, la solicitud aún se procesará de forma predeterminada.Sin embargo, ejecutar el comando anterior con elstrict=trueparámetro generaría un error.La sintaxis correcta debería ser:

<wfs:GetFeature service= "WFS" version= "1.0.0"

xmlns:wfs= "http://www.opengis.net/wfs"

xmlns:topp= "http://www.openplans.org/topp" >

<wfs:Query typeName= "topp:estados" /> </wfs:GetFeature>

Filtro de espacio de nombres GetCapabilities

Las solicitudes WFSGetCapabilitiesse pueden filtrar para devolver solo aquellas capas que corresponden a un espacio de nombres particular agregando el<namespace>parámetro a la solicitud.

Nota

Este parámetro solo afecta las solicitudes GetCapabilities.

Para aplicar este filtro, agregue el siguiente código a su solicitud:

espacio de nombres=<espacio de nombres>

Aunque proporcionar un espacio de nombres no válido no generará ningún error, el documento GetCapabilities devuelto no contendrá ninguna información de capa.

Advertencia

El uso de este parámetro puede hacer que su documento GetCapabilities deje de ser válido, ya que la especificación WFS requiere que el documento devuelva al menos una capa.

Nota

Este filtro está relacionado conlos servicios virtuales OWS.


Mapeo de esquema WFS

Una de las funciones de GeoServer WFS es asignar automáticamente el esquema interno de un conjunto de datos a un esquema de tipo de característica.Este mapeo se realiza de acuerdo con las siguientes reglas:

El nombre del elemento de característica se asigna al nombre del conjunto de datos.

El nombre del tipo de característica se asigna al nombre del conjunto de datos con la cadena "Tipo" adjunta.

El nombre de cada atributo del conjunto de datos se asigna al nombre de una partícula de elemento contenida en el tipo de característica.

El tipo de cada atributo del conjunto de datos se asigna al tipo de esquema XML apropiado (xsd:int,xsd:doubleetc.).

Por ejemplo, un conjunto de datos tiene el siguiente esquema:

myDataset(intProperty:Entero, stringProperty:String, floatProperty:Float, geometría:Punto)

Este esquema se asignaría al siguiente esquema XML, disponible mediante unaDescribeFeatureTypesolicitud para eltopp:myDatasettipo:

<xsd:esquema xmlns:xsd= "http://www.w3.org/2001/XMLSchema"

xmlns:gml= "http://www.opengis.net/gml"

xmlns:topp= "http://www .openplans.org/topp"

targetNamespace= "http://www.openplans.org/topp"

elementFormDefault= "calificado" >

<xsd:importar espacio de nombres= "http://www.opengis.net/gml"

esquemaLocation= "http://localhost:8080/geoserver/schemas/gml/3.1.1/base/gml.xsd" />

<xsd:complexType name= "myDatasetType" >

<xsd:complexContent>

<xsd:extension base= "gml:AbstractFeatureType" >

<xsd:sequence>

<xsd:element maxOccurs= "1" minOccurs= "0" name= "intProperty " nillable= "true" type= "xsd:int" />

<xsd:element maxOccurs= "1" minOccurs= "0" nombre= "stringProperty" nillable= "true" type= "xsd:string" />

<xsd :element maxOccurs= "1" minOccurs= "0" nombre= "floatProperty" nillable= "true" type= "xsd:double" />

<xsd:element maxOccurs= "1" minOccurs= "0" nombre= "geometría" nillable= "true" type= "gml:PointPropertyType" />

</xsd:sequence>

</xsd:extension>

</xsd:complexContent>

</xsd:complexType>

<xsd:element name= "myDataset" substitutionGroup= "gml:_Feature" type= "topp:myDatasetType" /></xsd:esquema>

Personalización del esquema

GeoServer WFS admite una cantidad limitada de personalización de salida del esquema.Un esquema personalizado puede resultar útil para lo siguiente:

Limitar los atributos que están expuestos en el esquema de tipo de característica

Cambiarlos tipos de atributos en el esquema

Cambiar la estructura del esquema (por ejemplo, cambiar el tipo de característica base)

Por ejemplo, puede resultar útil limitar los atributos expuestos en el conjunto de datos de ejemplo descrito anteriormente.Comience recuperando el resultado predeterminado como punto de referencia del esquema completo.Con el esquema de tipo de característica enumerado anteriormente, laGetFeaturesolicitud sería la siguiente:

<topp:myDataset gml:id= "myDataset.1" >

<topp:intProperty> 1 </topp:intProperty>

<topp:stringProperty> uno </topp:stringProperty>

<topp:floatProperty> 1.1 </topp:floatProperty>

<topp:geometry>

<gml:Point srsName= "urn:x-ogc:def:crs:EPSG:4326" >

<gml:pos> 1.0 1.0 </gml:pos>

</gml:Point>

</topp: geometría> </topp:myDataset>

Para eliminarlofloatPropertyde la lista de atributos, se requerirían los siguientes pasos:


El esquema original se modifica para eliminarfloatProperty, lo que da como resultado la siguiente definición de tipo:


<xsd:complexType name= "myDatasetType" >

<xsd:complexContent>

<xsd:extension base= "gml:AbstractFeatureType" >

<xsd:sequence>

<xsd:element maxOccurs= "1" minOccurs= "0" name= "intProperty " nillable= "true" type= "xsd:int" />

<xsd:element maxOccurs= "1" minOccurs= "0" nombre= "stringProperty" nillable= "true" type= "xsd:string" />

<! -- eliminar el elemento floatProperty <xsd:element maxOccurs="1" minOccurs="0" name="floatProperty" nillable="true" type="xsd:double"/> --> <

xsd:element maxOccurs= "1 " minOccurs= "0" nombre= "geometría" nillable= "true" tipo= "gml:PointPropertyType" />

</xsd:sequence>

</xsd:extension>

</xsd:complexContent> </xsd:complexType>



La modificación se guarda en un archivo llamadoschema.xsd.



Elschema.xsdarchivo se copia en el directorio del tipo de característica, quetopp:myDatasetes:


$GEOSERVER_DATA_DIR/workspaces/<espacio de trabajo>/<almacén de datos>/myDataset/


¿Dónde<workspace>está el nombre del espacio de trabajo que contiene su almacén de datos y<datastore>es el nombre del almacén de datos que contienemyDataset


El esquema modificado solo estará disponible para GeoServer cuando se recargue la configuración o se reinicie GeoServer.

DescribeFeatureTypeUna solicitudposteriortopp:myDatasetconfirma que elfloatPropertyelemento está ausente:

<xsd:esquema xmlns:xsd= "http://www.w3.org/2001/XMLSchema"

xmlns:gml= "http://www.opengis.net/gml"

xmlns:topp= "http://www .openplans.org/topp"

targetNamespace= "http://www.openplans.org/topp"

elementFormDefault= "calificado" >

<xsd:importar espacio de nombres= "http://www.opengis.net/gml"

esquemaLocation= "http://localhost:8080/geoserver/schemas/gml/3.1.1/base/gml.xsd" />

<xsd:complexType name= "myDatasetType" >

<xsd:complexContent>

<xsd:extension base= "gml:AbstractFeatureType" >

<xsd:sequence>

<xsd:element maxOccurs= "1" minOccurs= "0" name= "intProperty " nillable= "true" type= "xsd:int" />

<xsd:element maxOccurs= "1" minOccurs= "0" nombre= "stringProperty" nillable= "true" type= "xsd:string" />

<xsd :elemento maxOccurs= "1" minOccurs= "0" nombre= "geometría" nillable= "true" tipo= "gml:PointPropertyType" />

</xsd:sequence>

</xsd:extension>

</xsd:complexContent>

< /xsd:tipocomplejo>

<xsd:element name= "myDataset" substitutionGroup= "gml:_Feature" type= "topp:myDatasetType" /></xsd:esquema>

UnaGetFeaturesolicitud ahora devolverá características que no incluyen elfloatPropertyatributo:

<topp:myDataset gml:id= "myDataset.1" >

<topp:intProperty> 1 </topp:intProperty>

<topp:stringProperty> uno </topp:stringProperty>

<topp:geometry>

<gml:Point srsName= " urn:x-ogc:def:crs:EPSG:4326" >

<gml:pos> 1.0 1.0 </gml:pos>

</gml:Point>

</topp:geometry> </topp:myDataset>

Cambio de tipo

La personalización del esquema se puede utilizar para realizar algunoscambios de tipo, aunque esto está limitado por el hecho de que un tipo modificado debe estar en el mismodominioque el tipo original.Por ejemplo, los tipos de enteros se deben cambiar a tipos de enteros, los tipos temporales a tipos temporales, etc.

El requisito de tipo de cambio más común es el de los atributos de geometría.En muchos casos, el conjunto de datos subyacente no tiene los metadatos necesarios para informar el tipo de geometría específico de un atributo de geometría.La asignación automática de esquemas daría como resultado una definición de elemento similar a la siguiente:

<xsd:element maxOccurs= "1" minOccurs= "0" nombre= "geometría" nillable= "true" tipo= "gml:GeometryPropertyType" />

Sin embargo, si se conoce el tipo específico de geometría, la definición del elemento anterior podría modificarse.Para la geometría de puntos, la definición del elemento podría modificarse a:

<xsd:element maxOccurs= "1" minOccurs= "0" nombre= "geometría" nillable= "true" tipo= "gml:PointPropertyType" />


Servicio de mapas web

Conceptos básicos de WMS

Diferencias entre versiones de WMS

Orden de ejes

Referencia WMS

Introducción

Beneficios de WMS

Operaciones

Excepciones

Obtener capacidades

Obtener mapa

Obtener información sobre la característica

Describir capa

ObtenerLegendGraphic

Soporte de tiempo en GeoServer WMS

Especificar una hora

Especificar un intervalo absoluto

Especificación de un intervalo relativo

Tiempos de precisión reducidos

Tiempos de precisión reducidos con rangos

Especificar una lista de tiempos

Especificar una periodicidad

Formatos de salida WMS

Parámetros del proveedor WMS

ángulo

buffer

filtro_cql

ambiente

ID de característica

filtrar

opciones_formato

maxFeatures y startIndex

espacio de nombres

paleta

nombre de la propiedad

embaldosado

origen de los azulejos

escalaMétodo

interpolaciones

Espacio de nombres AUTO no estándar

configuración WMS

Grupos de capas

Límites de solicitud

Variables globales que afectan a WMS

MAX_FILTER_RULES

OPTIMIZE_LINE_WIDTH

USE_STREAMING_RENDERER

ENABLE_JSONP

ObtenerLegendGraphic

Controlar la apariencia de la leyenda con LEGEND_OPTIONS

Leyendas ráster explicadas


Conceptos básicos de WMS

GeoServer proporciona soporte para las versiones 1.1.1 y 1.3.0 del servicio de mapas web (WMS) delOpen Geospatial Consortium (OGC).Este es el estándar más utilizado para generar mapas en la web y es la interfaz principal para solicitar productos de mapas de GeoServer.El uso de WMS hace posible que los clientes superpongan mapas de varias fuentes diferentes sin problemas.

La implementación WMS de GeoServer es totalmente compatible con el estándar y está certificado de conformidad con el conjunto de pruebas de OGC.Incluye una amplia variedad de opciones de renderizado y etiquetado, y es uno de los servidores WMS más rápidos para datos rasterizados y vectoriales.

GeoServer WMS admite la reproyección a cualquiersistema de referencia de coordenadasen la base de datos EPSG.Es posible agregar sistemas de coordenadas adicionales si se conoce la definición del Texto conocido.ConsulteManejo del sistema de referencia de coordenadaspara obtener más detalles.

GeoServer es totalmente compatible con el estándarStyled Layer Descriptor (SLD)y utiliza archivos SLD como lenguaje de estilo nativo.Para obtener más información sobre cómo aplicar estilo a los datos en GeoServer, consulte la secciónEstilo.

Diferencias entre versiones de WMS

Las principales diferencias entre las versiones 1.1.1 y 1.3.0 son:

En 1.1.1, los sistemas de coordenadas geográficas especificados con elEPSGespacio de nombres se definen para tener un orden de eje de longitud/latitud.En 1.3.0 el orden es latitud/longitud.ConsulteOrden de ejesa continuación para obtener más detalles.

En la operación GetMap, elsrsparámetro se llamacrsen 1.3.0.GeoServer admite ambas claves independientemente de la versión.

En la operación GetFeatureInfo,se llaman los parámetrosxyyen 1.3.0.GeoServer admite ambas claves independientemente de la versión, excepto cuando está en modo de cumplimiento CITE.yij

Orden de ejes

La especificación WMS 1.3 exige que el orden de los ejes para los sistemas de coordenadas geográficas definidos en la base de datos EPSG sealatitud/longitudoy/x.Esto es contrario al hecho de que la mayoría de los datos espaciales suelen estar enlongitud/latitudox/y.Esto requiere que el orden de las coordenadas en elBBOXparámetro se invierta paraSRSvalores que son sistemas de coordenadas geográficas.

Por ejemplo, considere la solicitud WMS 1.1 utilizando WGS84 SRS (EPSG:4326):

geoserver/wms?VERSION=1.1.1&REQUEST=GetMap&SRS=epsg:4326&BBOX=-180,-90.180,90&...

La solicitud WMS 1.3 equivalente es:

geoserver/wms?VERSION=1.3.0&REQUEST=GetMap&CRS=epsg:4326&BBOX=-90,-180,90,180&...

Tenga en cuenta que las coordenadas especificadas en elBBOXparámetro están invertidas.


Referencia WMS

Introducción

La especificación OGCWeb Map Service(WMS) define una interfaz HTTP para solicitar imágenes de mapas georreferenciados desde un servidor.GeoServer es compatible con WMS 1.1.1, la versión más utilizada de WMS, así como con WMS 1.3.0.

Las especificaciones relevantes de OGC WMS son:

Especificación de implementación del servicio de mapas web OGC, versión 1.1.1

Especificación de implementación del servicio de mapas web OGC, versión 1.3.0

GeoServer también admite algunas extensiones de la especificación WMS realizadas por el estándar Styled Layer Descriptor (SLD) para controlar el estilo de la salida del mapa.Estos se definen en:

Perfil de descriptor de capa con estilo OpenGIS de la especificación de implementación del servicio de mapas web, versión 1.1.0

Beneficios de 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 se pueden superponer unas sobre otras tal y como serían en la realidad.Numerosos servidores y clientes admiten WMS.

Operaciones

Las solicitudes WMS pueden realizar las siguientes operaciones:

Operación

Descripción

Exceptions

Si ocurre una excepción

GetCapabilities

Recupera metadatos sobre el servicio, incluidas las operaciones y parámetros admitidos, y una lista de las capas disponibles.

GetMap

Recupera una imagen de mapa para un área y contenido específicos

GetFeatureInfo(opcional)

Recupera los datos subyacentes, incluidos la geometría y los valores de atributos, para una ubicación de píxel en un mapa.

DescribeLayer(opcional)

Indica el WFS o WCS para recuperar información adicional sobre la capa.

GetLegendGraphic(opcional)

Recupera una leyenda generada para un mapa.

Excepciones

Formatos en los que WMS puede reportar excepciones.Los valores admitidos para las excepciones son:

Formato

Sintaxis

Notas

XML

EXCEPTIONS=application/vnd.ogc.se_xml

Salida XML.(El formato predeterminado)

ENIMAGEN

EXCEPTIONS=application/vnd.ogc.se_inimage

Genera una imagen

BLANCO

EXCEPTIONS=application/vnd.ogc.se_blank

Genera una imagen en blanco

MAPA PARCIAL

EXCEPTIONS=application/vnd.gs.wms_partial

Este es un parámetro del proveedor de GeoServer y solo se aplica a solicitudes getMap.Devuelve todo lo que se procesó en el momento en que el proceso de renderizado generó una excepción.Se puede utilizar con loslímites de configuración de WMSpara devolver una imagen parcial incluso si la solicitud finaliza por exceder uno de estos límites.También funciona con eltimeoutparámetro de proveedor.

JSON

EXCEPTIONS=application/json

Representación Json simple.

JSONP

EXCEPTIONS=text/javascript

Devuelve un JsonP con el formato: paddingOutput(...jsonp...).Consultelos parámetros del proveedor de WMSpara cambiar el nombre de la devolución de llamada.Tenga en cuenta que este formato está deshabilitado de forma predeterminada (consulteVariables globales que afectan a WMS).

Obtener capacidades

La operaciónGetCapabilitiessolicita metadatos sobre las operaciones, servicios y datos (“capacidades”) que ofrece un servidor WMS.

Los parámetros para la operación GetCapabilities son:

Parámetro

¿Requerido?

Descripción

service

Nombre del Servicio.El valor esWMS.

version

Versión de servicio.El valor es uno de1.0.0,1.1.0,1.1.1,1.3.

request

Nombre de la operación.El valor esGetCapabilities.

GeoServer proporciona los siguientes parámetros específicos del proveedor para la operación GetCapabilities.Están completamente documentados en la secciónde parámetros del proveedor de WMS.

Parámetro

¿Requerido?

Descripción

namespace

No

limita la respuesta a las capas en un espacio de nombres determinado

Un ejemplo de solicitud GetCapabilities es:

http://localhost:8080/geoserver/wms?

servicio=wms&

versión=1.1.1&

solicitud=ObtenerCapacidad

Se pasan tres parámetros al servidor WMS:service=wms,version=1.1.1yrequest=GetCapabilities.Elserviceparámetro le dice al servidor WMS que se producirá una solicitud WMS.Elversionparámetro hace referencia a qué versión de WMS se solicita.Elrequestparámetro especifica la operación GetCapabilities.El estándar WMS requiere que las solicitudes incluyan siempre estos tres parámetros.GeoServer relaja estos requisitos (estableciendo la versión predeterminada si se omite), pero para cumplir con los estándares siempre deben especificarse.

La respuesta es un documento XML de capacidades que es una descripción detallada del servicio WMS.Contiene tres secciones principales:

Servicio

Contiene metadatos del servicio, como el nombre del servicio, palabras clave e información de contacto de la organización que opera el servidor.

Pedido

Describe las operaciones que proporciona el servicio WMS y los parámetros y formatos de salida para cada operación.Si lo desea, GeoServer se puede configurar para desactivar la compatibilidad con determinadas operaciones WMS.

Capa

Enumera los sistemas de coordenadas y capas disponibles.En GeoServer, las capas se nombran con el formato "espacio de nombres: capa".Cada capa proporciona metadatos de servicio, como título, resumen y palabras clave.

Obtener mapa

La operaciónGetMapsolicita que el servidor genere un mapa.Los parámetros principales especifican una o más capas y estilos que aparecerán en el mapa, un cuadro delimitador para la extensión del mapa, un sistema de referencia espacial de destino y un ancho, alto y formato para la salida.La información necesariapara especificar valores para parámetros comolayersyse puede obtener en el documento Capacidades.stylessrs

La respuesta es una imagen de mapa u otro artefacto de salida de mapa, según el formato solicitado.GeoServer proporciona una amplia variedad de formatos de salida, descritos enFormatos de salida WMS.

Los parámetros estándar para la operación GetMap son:

Parámetro

¿Requerido?

Descripción

service

Nombre del Servicio.El valor esWMS.

version

Versión de servicio.El valor es uno de1.0.0,1.1.0,1.1.1,1.3.

request

Nombre de la operación.El valor esGetMap.

layers

Capas para mostrar en el mapa.El valor es una lista de nombres de capas separados por comas.

styles

Estilos en los que se van a renderizar las capas.El valor es una lista de nombres de estilos separados por comas o está vacía si se requiere un estilo predeterminado.Los nombres de los estilos pueden estar vacíos en la lista para usar el estilo de capa predeterminado.

srsocrs

Sistema de referencia espacial para salida de mapas.El valor está en la formaEPSG:nnn.crses la clave de parámetro utilizada en WMS 1.3.0.

bbox

Cuadro delimitador para la extensión del mapa.El valor estáminx,miny,maxx,maxyen unidades del SRS.

width

Ancho de la salida del mapa, en píxeles.

height

Altura de la salida del mapa, en píxeles.

format

Formato para la salida del mapa.ConsulteFormatos de salida WMSpara conocer los valores admitidos.

transparent

No

Si el fondo del mapa debe ser transparente.Los valores sontrueofalse.El valor predeterminado esfalse

bgcolor

No

Color de fondo de la imagen del mapa.El valor está en la formaRRGGBB.El valor predeterminado esFFFFFF(blanco).

exceptions

No

Formato en el que informar excepciones.El valor predeterminado esapplication/vnd.ogc.se_xml.

time

No

Valor de tiempo o rango para datos de mapas.ConsulteSoporte de tiempo en GeoServer WMSpara obtener más información.

sld

No

Una URL que hace referencia a un archivo XMLStyledLayerDescriptorque controla o mejora las capas y el estilo del mapa.

sld_body

No

Un documento XML StyledLayerDescriptorcodificado en URLque controla o mejora las capas y el estilo del mapa.

GeoServer proporciona una serie de parámetros útiles específicos del proveedor para la operación GetMap.Estos están documentados en la secciónde parámetros del proveedor de WMS.

Un ejemplo de solicitud WMS para quetopp:statesla capa se genere como una imagen de mapa PNG en SRS EPGS:4326 y use el estilo predeterminado es:

http://localhost:8080/geoserver/wms?

solicitud=ObtenerMapa

&servicio=WMS

&versión=1.1.1

&capas=topp%3Aestados

&estilos=población

&srs=EPSG%3A4326

&bbox=-145.15104058007,21.731919794922,-57.154894212888,58.961058642578&

&ancho=780

&altura=330

&formato=imagen%2Fpng

El estándar especifica que muchos de los parámetros son obligatorios, GeoServer proporciona elReflector WMSpara permitir que muchos de ellos se especifiquen opcionalmente.

Experimentar con esta función es una buena manera de conocer los parámetros de GetMap.

Un ejemplo de solicitud WMS utilizando un documento XML GetMap es:

<?xml versión="1.0" codificación="UTF-8"?> <ogc:GetMap xmlns:ogc= "http://www.opengis.net/ows"

xmlns:gml= "http://www.opengis .net/gml"

version= "1.1.1" service= "WMS" >

<StyledLayerDescriptor version= "1.0.0" >

<NamedLayer>

<Name> topp:states </Name>

<NamedStyle><Name> población </ Nombre></NamedStyle>

</NamedLayer>

</StyledLayerDescriptor>

<BoundingBox srsName= "http://www.opengis.net/gml/srs/epsg.xml#4326" >

<gml:coord><gml:X> -130 </gml:X><gml:Y> 24 </gml:Y></gml:coord>

<gml:coord><gml:X> -55 </gml:X><gml:Y> 50 </gml:Y></gml:coord>

</BoundingBox>

<Salida>

<Formato> imagen/png </Formato>

<Tamaño><Ancho> 550 </Ancho><Alto> 250 </Alto></ Tamaño>

</Output> </ogc:GetMap>

Tiempo

A partir de GeoServer 2.2.0, GeoServer admite un atributo TIME para solicitudes WMS GetMap como se describe en la versión 1.3 de la especificación WMS.Este parámetro permite filtrar un conjunto de datos por sectores temporales, así como por mosaicos espaciales para la renderización.ConsulteSoporte de tiempo en GeoServer WMSpara obtener información sobre su uso.

Obtener información sobre la característica

La operaciónGetFeatureInfosolicita los datos espaciales y de atributos de las entidades en una ubicación determinada en un mapa.Es similar a la operación WFSGetFeature, pero menos flexible tanto en la entrada como en la salida.Dado que GeoServer proporciona un servicio WFS, recomendamos usarlo en lugar deGetFeatureInfosiempre que sea posible.

La única ventajaGetFeatureInfoes que la solicitud utiliza un valor de píxel (x,y) de una imagen WMS devuelta.Esto es más fácil de usar para un cliente ingenuo que no puede realizar referencias geográficas reales.

Los parámetros estándar para la operación GetFeatureInfo son:

Parámetro

¿Requerido?

Descripción

service

Nombre del Servicio.El valor esWMS.

version

Versión de servicio.El valor es uno de1.0.0,1.1.0,1.1.1,1.3.

request

Nombre de la operación.El valor esGetFeatureInfo.

layers

VerObtenerMapa

styles

VerObtenerMapa

srsocrs

VerObtenerMapa

bbox

VerObtenerMapa

width

VerObtenerMapa

height

VerObtenerMapa

query_layers

Lista separada por comas de una o más capas para consultar.

info_format

No

Formato de la respuesta de información de características.Consulte los valores a continuación.

feature_count

No

Número máximo de funciones para devolver.El valor predeterminado es 1.

xoi

Ordenada X del punto de consulta en el mapa, en píxeles.0 es el lado izquierdo.ies la clave de parámetro utilizada en WMS 1.3.0.

yoj

Ordenada Y del punto de consulta en el mapa, en píxeles.0 es la cima.jes la clave de parámetro utilizada en WMS 1.3.0.

exceptions

No

Formato en el que informar excepciones.El valor predeterminado esapplication/vnd.ogc.se_xml.

Nota:Si envía una solicitud GetFeatureInfo contra un grupo de capas, todas las capas de ese grupo de capas deben configurarse como "Consultables" para obtener un resultado (consulteConfiguración de WMS en la página Capas).

Geoserver admite varios formatos de salida para laGetFeatureInforespuesta.HTML con estilo de servidor es el formato más utilizado.Para obtener el máximo control y personalización, el cliente debe utilizar GML3 y aplicar estilo a los datos sin procesar.Los formatos soportados son:

Formato

Sintaxis

Notas

TEXTO

info_format=text/plain

Salida de texto sencilla.(El formato predeterminado)

GML 2

info_format=application/vnd.ogc.gml

Funciona solo para funciones simples (consulteFunciones complejas)

GML 3

info_format=application/vnd.ogc.gml/3.1.1

Funciona tanto para funciones simples como complejas (consulteFunciones complejas)

HTML

info_format=text/html

Utiliza plantillas HTML que están definidas en el servidor.ConsultePlantillas GetFeatureInfopara obtener información sobre cómo crear una plantilla de salida HTML.

JSON

info_format=application/json

Representación Json simple.

JSONP

info_format=text/javascript

Devuelve un JsonP con el formato:parseResponse(...json...).Consultelos parámetros del proveedor de WMSpara cambiar el nombre de la devolución de llamada.Tenga en cuenta que este formato está deshabilitado de forma predeterminada (consulteVariables globales que afectan a WMS).

GeoServer proporciona los siguientes parámetros específicos del proveedor para la operación GetFeatureInfo.Están completamente documentados en la secciónde parámetros del proveedor de WMS.

Parámetro

¿Requerido?

Descripción

buffer

No

ancho del radio de búsqueda alrededor del punto de consulta.

cql_filter

No

Filtrar por datos devueltos, en formato ECQL

filter

No

Filtrar por datos devueltos, en formato de filtro OGC

propertyName

No

Propiedades de características que se devolverán

Un ejemplo de solicitud de información de entidades de latopp:statescapa en formato HTML es:

http://localhost:8080/geoserver/wms?

solicitud = Obtener información de característica

&servicio=WMS

&versión=1.1.1

&capas=topp%3Aestados

&estilos=

&srs=EPSG%3A4326

&formato=imagen%2Fpng

&bbox=-145.151041%2C21.73192%2C-57.154894%2C58.961059

&ancho=780

&altura=330

&query_layers=topp%3Aestados

&info_format=texto%2Fhtml

&feature_count=50

&x=353

&y=145

&excepciones=aplicación%2Fvnd.ogc.se_xml

Un ejemplo de solicitud de información de entidades en formato GeoJSON es:

http://localhost:8080/geoserver/wms?

&INFO_FORMAT=aplicación/json

&REQUEST=Obtener información de característica

&EXCEPCIONES=aplicación/vnd.ogc.se_xml

&SERVICIO=WMS

&VERSIÓN=1.1.1

&ANCHO=970&ALTO=485&X=486&Y=165&BBOX=-180,-90,180,90

&LAYERS=PERFILES DE PAÍS:grp_mapa_administrativo

&QUERY_LAYERS=PERFILES DE PAÍS:grp_mapa_administrativo

&TYPENAME=PERFILES DE PAÍS:grp_mapa_administrativo

El resultado será:

{

"tipo": "Colección de características",

"características":[

{

"tipo": "Característica",

"id": "dt_gaul_geom.fid-138e3070879",

"geometría":{

"tipo": "MultiPolígono",

"coordenadas":[

[

[

[

XXXXXXXXXX,

XXXXXXXXXX

],

...

[

XXXXXXXXXX,

XXXXXXXXXX

]

]

]

]

},

"geometry_name": "at_geom",

"propiedades":{

"bk_gaul":X,

"at_admlevel": 0,

"at_iso3":"XXX",

"ia_name":"XXXX",

"at_gaul_l0":X,

"bbox":[

XXXX,

XXXX,

XXXX,

XXXX

]

}

}

],

"crs":{

"tipo": "EPSG",

"propiedades":{

"código": "4326"

}

},

"bbox":[

XXXX,

XXXX,

XXXX,

XXXX

]

}

Describir capa

La operaciónDescribeLayerla utilizan principalmente clientes que entienden WMS basado en SLD.Para hacer un SLD es necesario conocer la estructura de los datos.Tanto WMS como WFS tienen operaciones para hacer esto, por lo que la operaciónDescribeLayersimplemente enruta al cliente al servicio apropiado.

Los parámetros estándar para la operación DescribeLayer son:

Parámetro

¿Requerido?

Descripción

service

Nombre del Servicio.El valor esWMS.

version

Versión de servicio.El valor es1.1.1.

request

Nombre de la operación.El valor esDescribeLayer.

layers

VerObtenerMapa

exceptions

No

Formato en el que informar excepciones.El valor predeterminado esapplication/vnd.ogc.se_xml.

Geoserver admite varios formatos de salida para laDescribeLayerrespuesta.HTML con estilo de servidor es el formato más utilizado.Los formatos soportados son:

Formato

Sintaxis

Notas

TEXTO

output_format=text/xml

Igual que por defecto.

GML 2

output_format=application/vnd.ogc.wms_xml

El formato predeterminado.

JSON

output_format=application/json

Representación Json simple.

JSONP

output_format=text/javascript

Devuelve un JsonP con el formato: paddingOutput(...jsonp...).Consultelos parámetros del proveedor de WMSpara cambiar el nombre de la devolución de llamada.Tenga en cuenta que este formato está deshabilitado de forma predeterminada (consulteVariables globales que afectan a WMS).

Un ejemplo de solicitud en formato XML (predeterminado) en una capa es:

http://localhost:8080/geoserver/topp/wms?service=WMS

&versión=1.1.1

&request=Describircapa

&capas=topp:cobertura

<?xml versión="1.0" codificación="UTF-8"?> <!DOCTYPE WMS_DescribeLayerResponse SYSTEM "http://localhost:8080/geoserver/schemas/wms/1.1.1/WMS_DescribeLayerResponse.dtd"> <WMS_DescribeLayerResponse versión= "1.1.1" >

<Descripción de capa nombre= "topp:cobertura" owsURL= "http://localhost:8080/geoserver/topp/wcs?" owsType= "WCS" >

<Query typeName= "topp:cobertura" />

</LayerDescription> </WMS_DescribeLayerResponse>

Un ejemplo de solicitud de descripción de característica en formato JSON en un grupo de capas es:

http://localhost:8080/geoserver/wms?service=WMS

&versión=1.1.1

&request=Describircapa

&layers=sf:carreteras,topp:tasmania_roads,nurc:mosaico

&outputFormat=aplicación/json

El resultado será:

{

versión: "1.1.1",

Descripciones de capas: [

{

Nombre de capa: "sf: carreteras",

owsURL: "http://localhost:8080/geoserver/wfs/WfsDispatcher?",

owsType: "WFS",

typeName: "sf:carreteras"

},

{

nombre de capa: "topp:tasmania_roads",

owsURL: "http://localhost:8080/geoserver/wfs/WfsDispatcher?",

owsType: "WFS",

typeName: "topp:tasmania_roads"

},

{

nombre de capa: "nurc:mosaico",

owsURL: "http://localhost:8080/geoserver/wcs?",

Tipo de flujo: "WCS",

typeName: "nurc:mosaico"

}

]

}

ObtenerLegendGraphic

La operaciónGetLegendGraphicproporciona un mecanismo para generar gráficos de leyenda como imágenes, más allá de la referencia LegendURL de las capacidades WMS.Genera una leyenda basada en el estilo definido en el servidor o, alternativamente, basada en un SLD proporcionado por el usuario.Para obtener más información sobre esta operación y las diversas opciones que admite GeoServer, consulteGetLegendGraphic.


Soporte de tiempo en GeoServer WMS

GeoServer admite unTIMEatributo en las solicitudes de GetMap para capas que estén configuradas correctamente con una dimensión de tiempo.Esto se utiliza para especificar un subconjunto temporal para la renderización.

Por ejemplo, es posible que tenga un único conjunto de datos con observaciones meteorológicas recopiladas a lo largo del tiempo y elija trazar las observaciones de un solo día.

El atributo que se utilizará enTIMElas solicitudes se puede configurar a través de la interfaz web de GeoServer navegando aCapas -> [capa específica] -> pestaña Dimensiones.

Nota

Lea más sobre cómoutilizar la interfaz web para configurar un atributo para solicitudes de TIEMPO.

Especificar una hora

El formato utilizado para especificar una hora en el parámetro WMS TIME se basa enISO-8601.Los tiempos pueden especificarse con una precisión de hasta 1 milisegundo;GeoServer no representa consultas de tiempo con más precisión que esto.

El parámetro es:

TIEMPO=<cadena de tiempo>

Los horarios siguen el formato general:

aaaa-MM-ddThh:mm:ss.SSSZ

dónde:

yyyy: año de 4 dígitos

MM: mes de 2 dígitos

dd: día de 2 dígitos

hh: hora de 2 dígitos

mm: minuto de 2 dígitos

ss: segundo de 2 dígitos

SSS: milisegundos de 3 dígitos

Los valores diarios e intradiarios están separados con mayúsculaTy todo tiene el sufijoZ, que indicaUTCpara la zona horaria.(La especificación WMS no prevé otras zonas horarias).

GeoServer aplicará elTIMEvalor a todas las capas habilitadas temporalmente en elLAYERSparámetro de la solicitud GetMap.Las capas sin un componente temporal se servirán normalmente, lo que permitirá a los clientes incluir información de referencia, como límites políticos, junto con datos temporales.

Descripción

Especificación de tiempo

12 de diciembre de 2001 a las 18:00 horas

2001-12-12T18:00:00.0Z

5 de mayo de 1993 a las 23:34

1993-05-05T11:34:00.0Z

Especificar un intervalo absoluto

Un cliente puede solicitar información durante un intervalo continuo en lugar de un solo instante especificando una hora de inicio y finalización, separadas por un/carácter.

En este escenario el inicio y el final soninclusivos;es decir, en el mosaico renderizado se incluirán muestras de exactamente los puntos finales del rango especificado.

Descripción

Especificación de tiempo

El mes de septiembre de 2002.

2002-09-01T00:00:00.0Z/2002-09-30T23:59:59.999Z

Todo el día del 25 de diciembre de 2010.

2010-12-25T00:00:00.0Z/2010-12-25T23:59:59.999Z

Especificación de un intervalo relativo

Un cliente puede solicitar información durante un intervalo de tiempo relativo en lugar de un rango de tiempo establecido especificando una hora de inicio o finalización con una duración asociada, separada por un/carácter.

Un extremo del intervalo debe ser un valor de tiempo, pero el otro puede ser un valor de duración según lo define la norma ISO 8601.La palabra clave especialPRESENTse puede utilizar para especificar una hora relativa a la hora actual del servidor.

Descripción

Especificación de tiempo

El mes de septiembre de 2002.

2002-09-01T00:00:00.0Z/P1M

Todo el día del 25 de diciembre de 2010.

2010-12-25T00:00:00.0Z/P1D

Todo el día anterior al 25 de diciembre de 2010.

P1D/2010-12-25T00:00:00.0Z

36 horas anteriores a la hora actual

PT36H/PRESENT

Nota

El último ejemplo podría combinarse con el servicio KML para proporcionar un enlace de redde Google Earthque siempre esté actualizado con las últimas 36 horas de datos.

Tiempos de precisión reducidos

La especificación WMS también permite truncar las especificaciones de tiempo omitiendo parte de la cadena de tiempo.En este caso, GeoServer trata el tiempo como un rango cuya longitud es igual a launidad más precisa especificadaen la cadena de tiempo.

Por ejemplo, si la especificación de tiempo omite todos los campos excepto el año, identifica un rango de un año de duración que comienza al comienzo de ese año.

Nota

GeoServer implementa esto sumando la unidad apropiada y luego restando 1 milisegundo.Esto evita resultados sorprendentes cuando se utiliza un intervalo que se alinea con la frecuencia de muestreo real de los datos; por ejemplo, si los datos anuales se almacenan de forma nativa con fechas como 2001-01-01T00:00:00.0Z, 2002-01-01T00:00: 00Z, etc., entonces una solicitud para 2001 incluiría las muestras de 2001 y 2002, lo cual no sería deseable.

Descripción

Tiempo de precisión reducido

Rango equivalente

El mes de septiembre de 2002.

2002-09

2002-09-01T00:00:00.0Z/2002-09-30T23:59:59.999Z

El día del 25 de diciembre de 2010.

2010-12-25

2010-12-25T00:00:00.0Z/2010-12-25T23:59:59.999Z

Tiempos de precisión reducidos con rangos

También se permiten tiempos de precisión reducidos al especificar rangos.En este caso, GeoServer expande efectivamente las horas de inicio y finalización como se describe anteriormente, y luego incluye cualquier muestra posterior al inicio del intervalo de inicio y antes del final del intervalo final.

Nota

Nuevamente, los rangos son inclusivos.

Descripción

Tiempo de precisión reducido

Rango equivalente

Los meses de septiembre a diciembre de 2002

2002-09/2002-12

2002-09-01T00:00:00.0Z/2002-12-31T23:59:59.999Z

12:00 a 18:00 horas, 25 de diciembre de 2010

2010-12-25T12/2010-12-25T18

2010-12-25T12:00:00.0Z/2010-12-25T18:59:59.999Z

Nota

En el último ejemplo, tenga en cuenta que el resultado puede no ser intuitivo, ya que incluye todos los horarios desde las 6:00 p. m. hasta las 6:59 p. m.

Especificar una lista de tiempos

GooServer también puede aceptar una lista de valores de tiempo discretos.Esto es útil para algunas aplicaciones como animaciones, donde un tiempo es igual a un fotograma.

Los elementos de una lista están separados por comas.

Nota

Actualmente, GeoServer no admite listas de rangos, por lo que todas las consultas de listas tienen efectivamente una resolución de 1 milisegundo.Si utiliza notación de precisión reducida al especificar un rango, cada rango se convertirá automáticamente al instante al comienzo del rango.

Si la lista está espaciada uniformemente (por ejemplo, muestras diarias u horarias), entonces la lista se puede especificar como un rango, utilizando una hora de inicio, una hora de finalización y un período separados por barras.

Descripción

Notación de lista

Notación de rango equivalente

Mediodía todos los días del 12 al 14 de agosto de 2012

TIME=2012-08-12T12:00:00.0Z,2012-08-13T12:00:00.0Z,2012-08-14T12:00:00.0Z

TIME=2012-08-12T12:00:00.0Z/2012-08-18:T12:00:00.0Z/P1D

Medianoche del primero de septiembre, octubre y noviembre de 1999

TIME=1999-09-01T00:00:00.0Z,1999-10-01T00:00:00.0Z,1999-11-01T00:00:00.0Z

TIME=1999-09-01T00:00:00.0Z/1999-11-01T00:00:00.0Z/P1M

Especificar una periodicidad

La periodicidad también se especifica en formato ISO-8601: una P mayúscula seguida de una o más longitudes de intervalo, cada una de las cuales consta de un número y una letra que identifica una unidad de tiempo:

Unidad

Abreviatura

Años

Y

Meses

M

Días

D

Horas

H

Minutos

M

Segundos

S

El grupo de valores Año/Mes/Día debe estar separado del grupo Horas/Minutos/Segundos por unTcarácter.La propia T puede omitirse si se omiten las horas, los minutos y los segundos.Además, los campos que contienen un 0 pueden omitirse por completo.

Se permiten valores fraccionarios, pero solo para el valor más específico que se incluye.

Nota

El período debe dividirse uniformemente en el intervalo definido por las horas de inicio/finalización.Entonces, si las horas de inicio/finalización indican 12 horas, se permitiría un período de 1 hora, pero no un período de 5 horas.

Por ejemplo, las múltiples representaciones que se enumeran a continuación son todas equivalentes.


Una hora:


P0Y0M0DT1H0M0SPT1H0M0SPT1H



90 minutos:


P0Y0M0DT1H30M0SPT1H30MP90M



18 meses:


P1Y6M0DT0H0M0SP1Y6M0DP0Y18M0DT0H0M0SP18M


Nota


P1.25Y3MNo sería aceptable, porque sólo se permiten valores fraccionarios en el valor más específico dado, que en este caso serían meses.



Formatos de salida WMS

WMS devuelve imágenes en varios formatos posibles.Esta página muestra una lista de los formatos de salida.La sintaxis para configurar un formato de salida es:

formato=<formato>

¿ Dónde<format>está alguna de las opciones siguientes?

Nota

La lista de formatos de salida admitidos por una instancia de GeoServer se puede encontrar mediante una solicitud WMSGetCapabilities.

Formato

Sintaxis

Notas

PNG

format=image/png

Por defecto

PNG8

format=image/png8

Igual que PNG, pero calcula una paleta óptima de 256 colores (8 bits), por lo que el tamaño de la imagen suele ser más pequeño

JPEG

format=image/jpeg


GIF

format=image/gif


PELEA

format=image/tiff


TIFF8

format=image/tiff8

Igual que TIFF, pero calcula una paleta óptima de 256 colores (8 bits), por lo que el tamaño de la imagen suele ser más pequeño

geoTIFF

format=image/geotiff

Igual que TIFF, pero incluye metadatos GeoTIFF adicionales

geoTIFF8

format=image/geotiff8

Igual que TIFF, pero incluye metadatos GeoTIFF adicionales y calcula una paleta óptima de 256 colores (8 bits), por lo que el tamaño de la imagen suele ser más pequeño.

SVG

format=image/svg


PDF

format=application/pdf


GeoRSS

format=rss


KML

format=kml


KMZ

format=kmz


Capas abiertas

format=application/openlayers

Genera una aplicación HTML OpenLayers.


Parámetros del proveedor WMS

Los parámetros del proveedor de WMS son parámetros de solicitud no estándar que se definen mediante una implementación para proporcionar capacidades mejoradas.GeoServer admite una variedad de parámetros WMS específicos del proveedor.

ángulo

Elangleparámetro gira el mapa de salida en el sentido de las agujas del reloj alrededor de su centro.La sintaxis es:

ángulo=<x>

¿ Dónde<x>está el número de grados a rotar?

La rotación de mapas se admite en todos los formatos ráster, PDF y SVG cuando se utiliza el productor Batik (que es el predeterminado).

buffer

Elbufferparámetro especifica el número de píxeles de borde adicionales que se utilizan en las operacionesGetMapyGetFeatureInfo.La sintaxis es:

buffer=<ancho de buffer>

¿Dónde<bufferwidth>está el ancho del búfer en píxeles?

En la operaciónGetMap, el almacenamiento en búfer incluye entidades que se encuentran fuera del cuadro delimitador de la solicitud, pero cuyo estilo es lo suficientemente grueso como para ser visible dentro del área del mapa.

En la operaciónGetFeatureInfo, el almacenamiento en búfer crea un "radio de búsqueda" alrededor de la ubicación de la solicitud.Se devuelve información sobre las funciones que se cruzan con el área de búsqueda.Esto es útil cuando se trabaja con un mapa OpenLayers (como los generados por la páginaVista previa de capa), ya que reduce la necesidad de hacer clic con precisión en un punto para que se devuelva la información de característica adecuada.

En ambas operaciones, GeoServer intenta calcular elbuffervalor automáticamente inspeccionando los estilos de cada capa.Se evalúan todos los simbolizadores activos y se utiliza el tamaño del más grande (es decir, simbolizador de punto más grande, simbolizador de línea más gruesa).El tamaño del búfer automático no se puede calcular si:

el SLD contiene tamaños que se especifican como valores de atributos de características

el SLD contiene gráficos externos y no especifica su tamaño explícitamente

En este caso, se utilizan los siguientes valores predeterminados:

0 píxeles parasolicitudesGetMap

5 píxeles para solicitudesGetFeatureInfo(se puede establecer un valor mínimo diferente a través de laorg.geoserver.wms.featureinfo.minBuffervariable del sistema, por ejemplo, agregar-Dorg.geoserver.wms.featureinfo.minBuffer=10para que el búfer mínimo sea de 10 píxeles)

Si no son lo suficientemente grandes, se puede utilizar el parámetro explícito.

filtro_cql

Elcql_filterparámetro es similar alfilterparámetro estándar, pero el filtro se expresa mediante ECQL (lenguaje de consulta común extendido).ECQL proporciona una sintaxis más compacta y legible en comparación con los filtros XML de OGC.Para obtener detalles completos, consulte laReferencia de ECQLy el tutorial deCQL y ECQL.

Si se especifica más de una capa en ellayersparámetro, se puede especificar un filtro independiente para cada capa, separado por punto y coma.La sintaxis es:

cql_filter = filtro1 ; filtro2 ...

Un ejemplo de un filtro CQL simple es:

cql_filter=INTERSECT(the_geom,%20POINT%20(-74.817265%2040.5296504))

ambiente

Elenvparámetro define el conjunto de valores de sustitución que se pueden utilizar en la sustitución de variables SLD.La sintaxis es:

env=param1:valor1;param2:valor2;...

ConsulteSustitución de variables en SLDpara obtener más información.

ID de característica

Elfeatureidparámetro filtra por ID de característica, un valor único otorgado a todas las características.Se pueden seleccionar varias funciones separando los identificadores de funciones por coma, como en este ejemplo:

featureid=estados.1,estados.45

filtrar

La especificación WMS sólo permite un filtrado limitado de datos.GeoServer mejora la capacidad del filtro WMS para que coincida con la proporcionada por WFS.Elfilterparámetro puede especificar una lista de filtros XML de OGC.La lista está entre paréntesis:( ).Cuando se utilizan en una solicitud GET, los corchetes de las etiquetas XML deben estar codificados en URL.

Si se especifica más de una capa en ellayersparámetro, se puede especificar un filtro independiente para cada capa.

Un ejemplo de un filtro OGC codificado en una solicitud GET es:

filter=%3CFilter%20xmlns:gml=%22http://www.opengis.net/gml%22%3E%3CIntersects%3E%3CPropertyName%3Ethe_geom%3C/PropertyName%3E%3Cgml:Point%20srsName=%224326%22 %3E%3Cgml:coordenadas%3E-74.817265,40.5296504%3C/gml:coordenadas%3E%3C/gml:Punto%3E%3C/Intersección%3E%3C/Filtro%3E

opciones_formato

Esformat_optionsun contenedor para parámetros que son específicos del formato.La sintaxis es:

opciones_formato=param1:valor1;param2:valor2;...

Las opciones de formato admitidas son:

antialiasing(valores =on,off,text): controla el uso de renderizado antialias en la salida ráster.

callback: especifica el nombre de la función de devolución de llamada para el formato de respuesta jsonp (el valor predeterminado esparseResponse).

dpi: establece el DPI (puntos por pulgada) de renderizado para salidas ráster.La resolución de salida estándar de OGC es 90 DPI.Si necesita crear imágenes de alta resolución (por ejemplo, para imprimir), es recomendable solicitar un tamaño de imagen más grande y especificar un DPI más alto.En general, el tamaño de la imagen debe aumentarse en un factor igual atargetDPI/90, con el ppp objetivo establecido en las opciones de formato.Por ejemplo, para imprimir una imagen de 100x100 a 300 DPI, solicite una imagen de 333x333 con el valor de DPI establecido en 300:&width=333&height=333&format_options=dpi:300

layout: especifica un nombre de diseño a utilizar.Los diseños se utilizan para agregar decoradores como compases y leyendas.Esta capacidad se analiza con más detalle en la secciónDecoraciones de WMS.

quantizer((valores =octree,mediancut): controla el cuantificador de color utilizado para producir imágenes PNG8. GeoServer 2.2.0 proporciona dos cuantificadores, un cuantificador RGB rápido llamadooctreeque no maneja la translucidez y un cuantificador RGBA más lento pero más preciso llamadomediancut. De forma predeterminada, el primero es se usa en imágenes opacas, mientras que el segundo se habilita si el cliente solicita una imagen transparente (transparent=true).Este parámetro del proveedor se puede usar para forzar manualmente el uso de un cuantificador en particular.

timeout: aplica un valor de tiempo de espera para una solicitud getMap.Si se alcanza el tiempo de espera, la solicitud getMap se cancela y se devuelve un error.El valor utilizado para el tiempo de espera será el mínimo de esta opción de formato y el tiempo de espera global de WMS definido en laconfiguración de WMS.Un valor de cero significa que no hay tiempo de espera.

kmattr((values ​​=true,``false``)): determina si el KML devuelto por GeoServer debe incluir atributos en los que se puede hacer clic o no.Este parámetro afecta principalmente al renderizado de Google Earth.

legend((values ​​=true,``false``)): KML puede agregar la leyenda.

kmscore((valores = entre0forzar la salida ráster y100forzar la salida vectorial)): el parámetro establece si GeoServer debe representar datos KML como vectoriales o ráster.Este parámetro afecta principalmente al renderizado de Google Earth.

kmltitle: el parámetro establece el título KML.

kmlrefresh((valores = mayor que0oexpires): Fuerza la recarga del enlace de red en el modo de actualización en un intervalo de segundos. Cuando se especifica la caducidad, el cliente se actualizará cada vez que haya transcurrido el tiempo especificado en los encabezados de caducidad de la caché. El tiempo de almacenamiento en caché se puede establecer en la configuración de capa en Configuración de la pestaña de publicación Tiempo de caché HTTP. Este parámetro afecta principalmente al renderizado de Google Earth y depende de que lo respete el cliente. Usar un segundo intervalo es una opción más confiable.

kmlvisible((values ​​=true,``false``)): Indica si las capas seleccionadas estarán habilitadas de forma predeterminada o no.El comportamiento predeterminado está habilitado.Este parámetro afecta principalmente al renderizado de Google Earth.

maxFeatures y startIndex

Los parámetrosmaxFeaturesystartIndexse pueden utilizar juntos para proporcionar soporte de "localización".La paginación es útil en situaciones como el rastreo de KML, donde es deseable poder recuperar el mapa en secciones cuando hay una gran cantidad de entidades.

Elstartindex=nparámetro especifica el índice desde el cual comenzar a renderizar en una lista ordenada de características.ndebe ser un número entero positivo.

Elmaxfeatures=nparámetro establece un límite en la cantidad de funciones renderizadas.ndebe ser un número entero positivo.Cuando se usa constartindex, las características representadas serán las que comienzan en elstartindexvalor.

Tenga en cuenta que no todas las capas admiten la paginación.Para que una capa pueda consultarse de esta manera, el origen de la entidad subyacente debe admitir la paginación.Este suele ser el caso de las bases de datos (como PostGIS).

espacio de nombres

Elnamespaceparámetro hace que las respuestas WMSGetCapabilitiesse filtren para contener solo capas en un espacio de nombres particular.La sintaxis es:

espacio de nombres=<espacio de nombres>

¿ Dónde<namespace>está el prefijo del espacio de nombres?

Advertencia

El uso de un prefijo de espacio de nombres no válido no provocará un error, pero el documento de capacidades devuelto no contendrá capas, solo grupos de capas.

Nota

Esto afecta únicamente al documento de capacidades, no a otras solicitudes.Otras operaciones de WMS seguirán procesando todas las capas, incluso cuando se especifique un espacio de nombres.

paleta

A veces es aconsejable (por motivos de velocidad y ancho de banda) reducir la profundidad de bits de los mapas devueltos.La forma de hacer esto es crear una imagen con una paleta de colores limitada y guardarla en elpalettesdirectorio dentro de su Directorio de datos de GeoServer.Entonces es posible especificar elpaletteparámetro del formulario:

paleta=<imagen>

¿ Dónde<image>está el nombre de archivo de la imagen de la paleta (sin la extensión)?Para forzar una paleta segura para la web, utilice la sintaxispalette=safe.Para obtener más información, consulte el tutorial sobreImágenes con paleta.

nombre de la propiedad

ElpropertyNameparámetro especifica qué propiedades se incluyen en la respuesta de laGetFeatureInfooperación.La sintaxis es la misma que en laGetFeatureoperación WFS.Para una solicitud de una sola capa, la sintaxis es:

nombrePropiedad = nombre1 , ... , nombreN

Para múltiples capas la sintaxis es:

nombrePropiedad=(nombreCapa11,...,nombreCapa1N)...(nombre1CapaN,...,nombreNCapaN)

La naturaleza de las propiedades depende del tipo de capa:

Para las capas vectoriales, los nombres especifican los atributos de la entidad.

Para capas ráster, los nombres especifican las bandas.

Para las capas WMS en cascada, los nombres especifican las propiedades GML que devolverá el servidor remoto.

embaldosado

El meta-mosaico evita problemas con etiquetas duplicadas cuando se utiliza un cliente en mosaico como OpenLayers.Cuando se utiliza meta-mosaico, las imágenes se renderizan y luego se dividen en mosaicos más pequeños (de forma predeterminada en un patrón de 3x3) antes de publicarse.Para que funcione el meta-mosaico, el tamaño del mosaicodebeestablecerse en 256x256 píxeles yse deben especificar los parámetrostiledy .tilesorigin

Eltiledparámetro controla si se utiliza meta-mosaico.La sintaxis es:

mosaico = [ verdadero | FALSO ]

Para invocar el uso de meta-mosaicotiled=true.

origen de los azulejos

Eltilesoriginparámetro también es necesario para el meta-mosaico.La sintaxis es:

origen del mosaico = x , y

dondexyyson las coordenadas de la esquina inferior izquierda (el “origen”) del sistema de cuadrícula de mosaicos.

Ejemplo de capas abiertas

En OpenLayers, una buena forma de especificartilesorigines hacer referencia directamente a la extensión del mapa.

Advertencia

Si las extensiones del mapa se modifican dinámicamente, lastilesoriginde cada capa de meta-mosaicos deben actualizarse en consecuencia.

El siguiente código muestra cómo especificar los parámetros de meta-mosaico:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

dieciséis

17

18

19

20

21

var opciones = {

...

maxExtent : nuevas OpenLayers . Límites ( - 180 , - 90 , 180 , 90 ),

...

};

mapa = nuevas OpenLayers . Mapa ( 'mapa' , opciones );

mosaico = nuevas OpenLayers . Capa . WMS (

"Nombre de capa" , "http://localhost:8080/geoserver/wms" ,

{

srs : 'EPSG:4326' ,

ancho : 391 ,

estilos : '' ,

alto : 550 ,

capas : 'nombre de capa' ,

formato : 'imagen/png' ,

mosaico : verdadero ,

mosaicosorigin : mapa . maxExtent . izquierda + ',' + mapa . maxExtent . inferior

},

{ buffer : 0 }

);

escalaMétodo

ElscaleMethodparámetro controla cómo GeoServer calcula el denominador de escala. Los dos valores posibles son:


OGC(predeterminado): el denominador de escala se calcula de acuerdo con la especificación OGC SLD, que



impone fórmulas simplificadas en aras de la interoperabilidad




Accurate: utilice las expresiones completas para calcular el denominador de escala en función de la ubicación geográfica.



datos, teniendo en cuenta la forma elipsoidal de la Tierra



Los dos métodos tienden a arrojar valores bastante cercanos entre sí cerca del ecuador, pero divergen y generan diferencias mayores a medida que la latitud se acerca a los polos.

interpolaciones

Elinterpolationsparámetro permite elegir un método de remuestreo (interpolación) específico.Se puede utilizar en laGetMapoperación.

Si se especifica más de una capa en ellayersparámetro, se puede especificar un método de interpolación independiente para cada capa, separado por comas.La sintaxis es:

interpolaciones = método1 , método2 , ...

Los valores del método <n> pueden ser uno de los siguientes:

Vecino más cercano

bilineal

bicúbico

o vacío si se debe utilizar el método predeterminado para la capa relacionada.

El parámetro permite anular la configuración global de Opciones de representación ráster de WMS (consulteConfiguración de WMSpara obtener más información), capa por capa.


Espacio de nombres AUTO no estándar

El estándar WMS admite una pequeña cantidad de sistemas de referencia de coordenadas "automáticos" que incluyen un centro de proyección seleccionado por el usuario.Estos se especifican usando:

AUTO:auto_crs_id,factor,lon0,lat0

Por ejemplo:

CRS=AUTO:42003,1,-100,45

Nota

en GeoServer 2.8.x, los espacios de nombres AUTO y AUTO2 se tratan de manera idéntica.

Nota

en GeoServer 2.8.x se ignora el parámetro de factor en el espacio de nombres AUTO.Por lo tanto, el parámetro BBOX de GetMap debe especificarse en metros.

El estándar WMS proporciona proyecciones con ID en el rango de 42001 a 42005.

IDENTIFICACIÓN

Proyección

42001

Mercator transversal universal

42002

Mercator transversal

42003

Ortográfico

42004

Equirectangular

42005

Mollweide (no compatible con GeoServer 2.8.x)

GeoServer también admite algunos sistemas de referencia de coordenadas no estándar.Estos son

IDENTIFICACIÓN

Proyección

97001

Gnomónico

97002

estereográfico

Nota

la proyección auto estereográfica utiliza una esfera.Lo hace estableciendo el semieje menor en el mismo valor que el semieje mayor.


configuración WMS

Grupos de capas

Un grupo de capas es un grupo de capas al que se puede hacer referencia mediante un nombre de capa.Por ejemplo, si coloca tres capas (llámelas capa_A, capa_B y capa_C) debajo de una capa de "Grupo de capas", cuando un usuario realice una solicitud WMS getMap para ese nombre de grupo, obtendrá un mapa de esas tres capas. .

Para obtener información sobre la configuración de grupos de capas en la interfaz de administración web, consulteGrupos de capas.

Límites de solicitud

Las opciones de límite de solicitudes permiten al administrador limitar los recursos consumidos por cadaGetMapsolicitud WMS.

La siguiente tabla muestra los nombres de las opciones, una descripción y la versión mínima de GeoServer en la que la opción está disponible (las versiones anteriores la ignorarán si está configurada).

Opción

Descripción

Versión

maxRequestMemoria

Establece la cantidad máxima de memoria que puede usar una única solicitud GetMap (en kilobytes).El límite se verifica antes de la ejecución de la solicitud estimando cuánta memoria se necesitaría para producir la salida en el formato solicitado.Por ejemplo, para un formato de imagen, la estimación se basa en el tamaño de la memoria de representación requerida (que está determinada por el tamaño de la imagen, la profundidad de bits de los píxeles y el número de FeatureTypeStyles activos en la escala solicitada).Si el tamaño de memoria estimado está por debajo del límite, se ejecuta la solicitud;en caso contrario se cancela.

1.7.5

tiempo máximo de renderizado

Establece la cantidad máxima de tiempo que GeoServer dedicará a procesar una solicitud (en segundos).Este tiempo limita la parte de "procesamiento ciego" de la solicitud, es decir, el tiempo necesario para leer los datos y calcular el resultado de salida (que puede ocurrir simultáneamente).Si el tiempo de ejecución alcanza el límite, la solicitud se cancela.El tiempo necesario para escribir los resultados en el cliente no está limitado por este parámetro, ya que está determinado por la latencia de red (desconocida) entre el servidor y el cliente.Por ejemplo, en el caso de la generación de imágenes PNG/JPEG, esta opción limita el tiempo de lectura y representación de los datos, pero no el tiempo necesario para escribir la imagen.

1.7.5

maxRenderingErrors

Establece la cantidad máxima de errores de representación tolerados por una solicitud GetMap.De forma predeterminada, GetMap hace su mejor esfuerzo para entregar el resultado, ignorando características no válidas, errores de reproyección y similares.Establecer un límite en la cantidad de errores ignorados puede hacer que sea más fácil detectar problemas y conserva los ciclos de la CPU al reducir los errores que deben manejarse y registrarse.

1.7.5

El valor predeterminado de cada límite es0, que especifica que no se aplica el límite.

Si se excede alguno de los límites de solicitud, la operación GetMap se cancela yServiceExceptionse devuelve al cliente.

Al establecer los límites anteriores, se sugiere tener en cuenta las condiciones máximas.Por ejemplo, en circunstancias normales una solicitud GetMap puede tardar menos de un segundo.En condiciones de carga alta, es aceptable que demore más, pero generalmente no es deseable permitir que una solicitud dure 30 minutos.

La siguiente tabla muestra ejemplos de valores razonables para los límites de solicitud:

Opción

Valor

Razón fundamental

maxRequestMemoria

16384

16 MB son suficientes para representar una imagen de 2048 x 2048 a 4 bytes por píxel (a todo color y transparencia), o un meta-mosaico de 8 x 8 cuando se utiliza GeoWebCache o TileCache.Tenga en cuenta que el proceso de renderizado utiliza un búfer de memoria independiente para cada FeatureTypeStyle en un SLD, por lo que esto también afecta el tamaño máximo de la imagen.Por ejemplo, si un SLD contiene dos elementos FeatureTypeStyle para dibujar líneas revestidas para una carretera, el tamaño máximo de la imagen se limitará a 1448x1448 (el requisito de memoria aumenta con el producto de las dimensiones de la imagen, por lo que dividir la memoria a la mitad disminuye las dimensiones de la imagen en sólo alrededor del 30%)

tiempo máximo de renderizado

120

Una solicitud que se procesa durante dos minutos completos probablemente esté generando demasiadas funciones, independientemente de la carga actual del servidor.Esto puede deberse a una solicitud dirigida a una capa grande que utiliza un estilo que no tiene dependencias de escala adecuadas.

maxRenderingErrors

100

Encontrar 100 errores probablemente sea el resultado de una solicitud que intenta reproyectar un gran conjunto de datos en una proyección que no es apropiada para la extensión de salida, lo que genera muchos errores de reproyección.


Variables globales que afectan a WMS

Este documento detalla el conjunto de variables globales que pueden afectar el comportamiento de WMS.GEOSERVER_DATA_DIRCada variable global se puede configurar como una variable de entorno, como una variable de contexto de servlet o como una propiedad del sistema Java, tal como la configuraciónconocida .ConsulteConfiguración del directorio de datospara obtener detalles sobre cómo se puede especificar una variable global.

MAX_FILTER_RULES

Un número entero (el valor predeterminado es 20). Al dibujar un estilo que contiene múltiples reglas activas, el renderizador combina los filtros de las reglas en OR y los agrega al filtro del cuadro delimitador estándar.Este comportamiento está activo hasta que se alcanza el número máximo de reglas de filtrado, después de eso los filtros de reglas ya no se agregan para evitar consultas enormes.De forma predeterminada, se combinan hasta 20 reglas; más allá de las 20 reglas, solo se usa el filtro del cuadro delimitador.Desactivarlo (establecerlo en 0) puede ser útil si los estilos son principalmente clasificaciones, pero perjudicial si los filtros de reglas en realidad filtran una buena cantidad de datos.

OPTIMIZE_LINE_WIDTH

Puede sertrueofalse(por defecto:false).Cuandotruecualquier trazo cuyo ancho sea inferior a 1,5 píxeles se reduce a "cero", que en realidad no es cero, sino una línea muy delgada.Ese era el comportamiento que GeoServer usaba por defecto antes de la serie 2.0.Cuandofalseel ancho del trazo no se modifica y es posible especificar anchos menores a un píxel.Este es el comportamiento predeterminado a partir de la versión 2.0.0.

USE_STREAMING_RENDERER

Puede sertrueofalse(por defecto:false).CuandotrueStreamingRendererse utiliza para todos los datos.StreamingRendereres el que se usa de forma predeterminada para todas las fuentes de datos mediante archivos de forma; generalmente es más rápido para representar estilos con múltipleselementosFeatureTypeStyle, pero más lento para representar una gran cantidad de datos.

ENABLE_JSONP

Puede sertrueofalse(por defecto:false).Cuandotrueel formato de salida JSONP (texto/javascript) está habilitado.


GetLegendGraphic

This chapter describes whether to use the GetLegendGraphics request. The SLD Specifications 1.0.0 gives a good description about GetLegendGraphic requests:

The GetLegendGraphic operation itself is optional for an SLD-enabled WMS. It provides a general mechanism for acquiring legend symbols, beyond the LegendURL reference of WMS Capabilities. Servers supporting the GetLegendGraphic call might code LegendURL references as GetLegendGraphic for interface consistency. Vendor-specific parameters may be added to GetLegendGraphic requests and all of the usual OGC-interface options and rules apply. No XML-POST method for GetLegendGraphic is presently defined.

Here is an example invocation:

http://localhost:8080/geoserver/wms?REQUEST=GetLegendGraphic&VERSION=1.0.0&FORMAT=image/png&WIDTH=20&HEIGHT=20&LAYER=topp:states

which would produce four 20x20 icons that graphically represent the rules of the default style of the topp:states layer.


Sample legend

In the following table the whole set of GetLegendGraphic parameters that can be used.

Parameter

Required

Description

REQUEST

Required

Value must be “GetLegendGraphic”.

LAYER

Required

Layer for which to produce legend graphic.

STYLE

Optional

Style of layer for which to produce legend graphic. If not present, the default style is selected. The style may be any valid style available for a layer, including non-SLD internally-defined styles.

FEATURETYPE

Optional

Feature type for which to produce the legend graphic. This is not needed if the layer has only a single feature type.

RULE

Optional

Rule of style to produce legend graphic for, if applicable. In the case that a style has multiple rules but no specific rule is selected, then the map server is obligated to produce a graphic that is representative of all of the rules of the style.

SCALE

Optional

In the case that a RULE is not specified for a style, this parameter may assist the server in selecting a more appropriate representative graphic by eliminating internal rules that are out-of-scope. This value is a standardized scale denominator, defined in Section 10.2. Specifying the scale will also make the symbolizers using Unit Of Measure resize according to the specified scale.

SLD

Optional

This parameter specifies a reference to an external SLD document. It works in the same way as the SLD= parameter of the WMS GetMap operation.

SLD_BODY

Optional

This parameter allows an SLD document to be included directly in an HTTP-GET request. It works in the same way as the SLD_BODY= parameter of the WMS GetMap operation.

FORMAT

Required

This gives the MIME type of the file format in which to return the legend graphic. Allowed values are the same as for the FORMAT= parameter of the WMS GetMap request.

WIDTH

Optional

This gives a hint for the width of the returned graphic in pixels. Vector-graphics can use this value as a hint for the level of detail to include.

HEIGHT

Optional

This gives a hint for the height of the returned graphic in pixels.

EXCEPTIONS

Optional

This gives the MIME type of the format in which to return exceptions. Allowed values are the same as for the EXCEPTIONS= parameter of the WMS GetMap request.

Controlling legend appearance with LEGEND_OPTIONS

GeoServer allows finer control over the legend appearance via the vendor parameterLEGEND_OPTIONS. The general format ofLEGEND_OPTIONSis the same asFORMAT_OPTIONS, that is:

...&LEGEND_OPTIONS=key1:v1;key2:v2;...;keyn:vn

Here is a description of the various parameters that can be used inLEGEND_OPTIONS:

fontName (string)the name of the font to be used when generating rule titles. The font must be available on the server

fontStyle (string)can be set to italic or bold to control the text style. Other combination are not allowed right now but we could implement that as well.

fontSize (integer)allows us to set the Font size for the various text elements. Notice that default size is 12.

fontColor (hex)allows us to set the color for the text of rules and labels (see above for recommendation on how to create values). Values are expressed in0xRRGGBBformat

fontAntiAliasing (true/false)when true enables antialiasing for rule titles

bgColor (hex)background color for the generated legend, values are expressed in0xRRGGBBformat

dpi (integer)sets the DPI for the current request, in the same way as it is supported by GetMap. Setting a DPI larger than 91 (the default) makes all fonts, symbols and line widths grow without changing the current scale, making it possible to get a high resolution version of the legend suitable for inclusion in printouts

forceLabels“on” means labels will always be drawn, even if only one rule is available. “off” means labels will never be drawn, even if multiple rules are available. Off by default.

Here is a sample request sporting all the options:

http://localhost:8080/geoserver/wms?REQUEST=GetLegendGraphic&VERSION=1.0.0&FORMAT=image/png&WIDTH=20&HEIGHT=20&LAYER=topp:states&legend_options=fontName:Times%20New%20Roman;fontAntiAliasing:true;fontColor:0x000033;fontSize:14;bgColor:0xFFFFEE;dpi:180


Using LEGEND_OPTIONS to control the output

Raster Legends Explained

This chapter aim to briefly describe the work that I have performed in order to support legends for raster data that draw information taken from the various bits of the SLD 1.0 RasterSymbolizer element. Recall, that up to now there was no way to create legends for raster data, therefore we have tried to fill the gap by providing an implementation of the getLegendGraphic request that would work with the ColorMap element of the SLD 1.0 RasterSymbolizer. Notice that some “debug” info about the style, like colormap type and band used are printed out as well.

What’s a raster legend

Here below I have drawn the structure of a typical legend, where some elements of interests are parameterized.


The structure of a typical legend

Take as an instance one of the SLD files attached to this page, each row in the above table draws its essence from the ColorMapEntry element as shown here below:

<ColorMapEntry color="#732600" quantity="9888" opacity="1.0" label="<-70 mm"/>

The producer for the raster legend will make use of this elements in order to build the legend, with this regards, notice that:

the width of the Color element is driven by the requested width for the GetLegendGraphic request

the width and height of label and rules is computed accordingly to the used Font and Font size for the prepared text (no new line management for the moment)

the height of the Color element is driven by the requested width for the GetLegendGraphic request, but notice that for ramps we expand this a little since the goal is to turn the various Color elements into a single long strip

the height of each row is set to the maximum height of the single elements

the width of each row is set to the sum of the width of the various elements plus the various paddings

dx,dythe spaces between elements and rows are set to the 15% of the requested width and height. Notice thatdyis ignored for the colormaps of typerampsince they must create a continuous color strip.

mx,mythe margins from the border of the legends are set to the 1.5% of the total size of the legend

Just to jump right to the conclusions (which is a bad practice I know, but no one is perfect ), here below I am adding an image of a sample legend with all the various options at work. The request that generated it is the following:

http://localhost:8081/geoserver/wms?REQUEST=GetLegendGraphic&VERSION=1.0.0&FORMAT=image/png&WIDTH=100&HEIGHT=20&LAYER=it.geosolutions:di08031_da&LEGEND_OPTIONS=forceRule:True;dx:0.2;dy:0.2;mx:0.2;my:0.2;fontStyle:bold;borderColor:0000ff;border:true;fontColor:ff0000;fontSize:18

Do not worry if it seems like something written in ancient dead language, I am going to explain the various params here below.


Example of a raster legend

Raster legends’ types

As you may know (well, actually you might not since I never wrote any real docs about the RasterSymbolizer work I did) GeoServer supports three types of ColorMaps:

rampthis is what SLD 1.0 dictates, which means a linear interpolation weighted on values between the colors of the various ColorMapEntries.

valuesthis is an extensions that allows link quantities to colors as specified by the ColorMapEntries quantities. Values not specified are translated into transparent pixels.

classesthis is an extensions that allows pure classifications based o intervals created from the ColorMapEntries quantities. Values not specified are translated into transparent pixels.

Here below I am going to list various examples that use the attached styles on a rainfall floating point geotiff.

ColorMap type is VALUES

Refer to the SLD rainfall.sld in attachment.


Raster legend - VALUES type

ColorMap type is CLASSES

Refer to the SLD rainfall_classes.sld in attachment.


Raster legend - CLASSES type

ColorMap type is RAMP

Refer to the SLD rainfall_classes.sld in attachment. Notice that the first legend show the default border behavior while the second has been force to draw a border for the breakpoint color of the the colormap entry quantity described by the rendered text. Notice that each color element has a part that show the fixed color from the colormap entry it depicts (the lowest part of it, the one that has been outlined by the border in the second legend below) while the upper part of the element has a gradient that connects each element to the previous one to point out the fact that we are using linear interpolation.


Raster legend - RAMP type

The various control parameters and how to set them

I am now going to briefly explain the various parameters that we can use to control the layout and content of the legend. A request that puts all the various options is shown here:

http://localhost:8081/geoserver/wms?REQUEST=GetLegendGraphic&VERSION=1.0.0&FORMAT=image/png&WIDTH=100&HEIGHT=20&LAYER=it.geosolutions:di08031_da&LEGEND_OPTIONS=forceRule:True;dx:0.2;dy:0.2;mx:0.2;my:0.2;fontStyle:bold;borderColor:0000ff;border:true;fontColor:ff0000;fontSize:18

Let’s now examine all the interesting elements, one by one. Notice that I am not going to discuss the mechanics of the GetLegendGraphic operation, for that you may want to refer to the SLD 1.0 spec, my goal is to briefly discuss the LEGEND_OPTIONS parameter.

forceRule (boolean)by default rules for a ColorMapEntry are not drawn to keep the legend small and compact, unless there are no labels at all. You can change this behaviour by setting this parameter to true.

dx,dy,mx,my (double)can be used to set the margin and the buffers between elements

border (boolean)activates or deactivates the border on the color elements in order to make the separations clearer. Notice that I decided toalwayshave a line that would split the various color elements for the ramp type of colormap.

borderColor (hex)allows us to set the color for the border in 0xRRGGBB format

CQL Expressions and ENV

If cql expressions are used in ColorMapEntry attributes (seehere) to create a dynamic color map taking values from ENV, the same ENV parameters used for GetMap can be given to GetLegendGraphic to get the desired legend entries.


Web Coverage Service

WCS basics

WCS reference

Introduction

Benefits of WCS

Operations

GetCapabilities

DescribeCoverage

GetCoverage

WCS output formats

WCS Vendor Parameters

WCS configuration

Coverage processing

Request limits


WCS basics

GeoServer provides support for Open Geospatial Consortium (OGC) Web Map Service (WCS) versions 1.0, 1.1 and 2.0. One can think of WCS as the equivalent ofWeb Feature Service, but for raster data instead of vector data. It lets you get at the raw coverage information, not just the image. GeoServer is the reference implementation for WCS 1.1.


WCS reference

Introduction

TheWeb Coverage Service(WCS) is a standard created by the OGC that refers to the receiving of geospatial information as ‘coverages’: digital geospatial information representing space-varying phenomena. One can think of it asWeb Feature Serviceforrasterdata. It gets the ‘source code’ of the map, but in this case its not raw vectors but raw imagery.

An important distinction must be made between WCS andWeb Map Service. They are similar, and can return similar formats, but a WCS is able to return more information, including valuable metadata and more formats. It additionally allows more precise queries, potentially against multi-dimensional backend formats.

Benefits of WCS

WCS provides a standard interface for how to request the raster source of a geospatial image. While a WMS can return an image it is generally only useful as an image. The results of a WCS can be used for complex modeling and analysis, as it often contains more information. It also allows more complex querying - clients can extract just the portion of the coverage that they need.

Operations

WCS can perform the following operations:

Operation

Description

GetCapabilities

Retrieves a list of the server’s data, as well as valid WCS operations and parameters

DescribeCoverage

Retrieves an XML document that fully describes the request coverages.

GetCoverage

Returns a coverage in a well known format. Like a WMS GetMap request, but with several extensions to support the retrieval of coverages.

Note

The following examples show the 1.1 protocol, the full specification for versions 1.0, 1.1 and 2.0 are available on theOGC web site

GetCapabilities

TheGetCapabilitiesoperation is a request to a WCS server for a list of what operations and services (“capabilities”) are being offered by that server.

A typical GetCapabilities request would look like this (at URLhttp://www.example.com/wcs):

Using a GET request (standard HTTP):

http://www.example.com/wcs?

service=wcs&

AcceptVersions=1.1.0&

request=GetCapabilities

Here there are three parameters being passed to our WCS server,service=wcs,AcceptVersions=1.1.0, andrequest=GetCapabilities. At a bare minimum, it is required that a WCS request have the service and request parameters. GeoServer relaxes these requirements (setting the default version if omitted), but “officially” they are mandatory, so they should always be included. Theservicekey tells the WCS server that a WCS request is forthcoming. TheAcceptsVersionkey refers to which version of WCS is being requested. Therequestkey is where the actual GetCapabilities operation is specified.

WCS additionally supports the Sections parameter that lets a client only request a specific section of the Capabilities Document.

DescribeCoverage

The purpose of theDescribeCoveragerequest is to additional information about a Coverage a client wants to query. It returns information about the crs, the metadata, the domain, the range and the formats it is available in. A client generally will need to issue a DescribeCoverage request before being sure it can make the proper GetCoverage request.

GetCoverage

TheGetCoverageoperation requests the actual spatial data. It can retrieve subsets of coverages, and the result can be either the coverage itself or a reference to it. The most powerful thing about a GetCoverage request is its ability to subset domains (height and time) and ranges. It can also do resampling, encode in different data formats, and return the resulting file in different ways.


Formatos de salida WCS

Los formatos de salida WCS se configuran cobertura por cobertura.La lista actual de formatos de salida es la siguiente:

Imágenes:

JPEG - (formato=jpeg)

GIF - (formato=gif)

PNG - (formato=png)

Tiff - (formato=tif)

BMP - (formato=bmp)

Formatos georeferenciados:

GeoTiff - (formato=geotiff)

GTopo30 - (formato=gtopo30)

ArcGrid - (formato=ArcGrid)

ArcGrid comprimido con G - (formato = ArcGrid-GZIP)

Tenga cuidado, en el caso de ArcGrid, la solicitud GetCoverage debe asegurarse de que la resolución x e y sean iguales; de lo contrario, se generará una excepción (ArcGrid está diseñado para tener celdas cuadradas).


Parámetros del proveedor de WCS

Las solicitudes a la operación WCS GetCapabilities se pueden filtrar para devolver solo capas correspondientes a un espacio de nombres particular.

Código de muestra:

http://example.com/geoserver/wcs?

servicio=wcs&

versión = 1.0.0&

solicitud=ObtenerCapacidad&

espacio de nombres=arriba

El uso de un prefijo de espacio de nombres no válido no provocará ningún error, pero el documento devuelto no contendrá información sobre ninguna capa.


configuración WCS

Procesamiento de cobertura

La cadena de procesamiento WCS se puede ajustar con respecto a cómo se utilizan las vistas generales de ráster y el submuestreo de lectura.

La política de descripción general tiene cuatro valores posibles:

Opción

Descripción

Versión

Descripción general de resolución más baja

Busca las dos vistas generales con una resolución más cercana a la solicitada y elige la de menor resolución.

2.0.3

No utilices resúmenes

Se ignorarán las descripciones generales y en su lugar se utilizarán los datos en su resolución nativa.Este es el valor predeterminado.

2.0.3

Descripción general de mayor resolución

Busca las dos vistas generales con una resolución más cercana a la solicitada y elige la de mayor resolución.

2.0.3

Resumen más cercano

Busca la descripción general más cercana a la solicitada

2.0.3

Al leer datos de cobertura a una resolución inferior a la disponible en el almacenamiento persistente, es común utilizar submuestreo, es decir, leer uno cada N píxeles como una forma de reducir la resolución de los datos leídos en la memoria.Utilicecontroles de submuestreo ya sea que el submuestreo esté habilitado o no.

Límites de solicitud

Las opciones de límite de solicitudes permiten al administrador limitar los recursos consumidos por cadaGetCoveragesolicitud de WCS.

Los límites de solicitud limitan el tamaño de la imagen leída del origen y el tamaño de la imagen devuelta al cliente.Ambos límites deben considerarse el peor de los casos y están configurados para garantizar que nunca se le pida al servidor que maneje demasiados datos.

Opción

Descripción

Versión

Memoria de entrada máxima

Establece la cantidad máxima de memoria, en kilobytes, que una solicitud GetCovearge podría utilizar, como máximo, para leer una cobertura del origen de datos.La memoria se calcula como, dondeyson el tamaño del ráster que se va a leer yes la dimensión o un píxel (por ejemplo, una imagen RGBA tendrá píxeles de 32 bits, una batimetría podría tener píxeles enteros con signo de 16 bits)rw*rh*pixelsizerwrhpixelsize

2.0.3

Memoria máxima de salida

Establece la cantidad máxima de memoria, en kilobytes, que una solicitud GetCoverage podría utilizar, como máximo, para alojar el ráster resultante.La memoria se calcula como, dondeyson el tamaño del ráster que se generará en la salida.ow*oh*pixelsizeowoh

2.0.3

Para comprender los límites, consideremos un ejemplo muy simplificado en el que no entran mosaicos ni descripciones generales en el juego:

La solicitud llega a un área determinada del ráster original.Leerlo a resolución completa requiere tomar un ráster de tamaño, que tiene una cierta cantidad de bandas, cada una con un tamaño determinado.La cantidad de memoria utilizada para la lectura será.Este es el valor medido por el límite de memoria de entrada.rw*rhrw*rh*pixelsize

El WCS realiza el procesamiento necesario: selección de banda, cambio de resolución (downsampling o upsampling), reproyección

El ráster resultante tendrá un tamañoy una cierta cantidad de bandas, posiblemente menos que los datos de entrada, cada una con un tamaño determinado.La cantidad de memoria utilizada para el ráster final será.Este es el valor medido por el límite de memoria de salida.ow*ohow*oh*pixelsize

Finalmente, el ráster resultante se codificará en el formato de salida.Dependiendo de la estructura del formato de salida, el tamaño del resultado puede ser mayor que el tamaño en la memoria (caso ArcGrid) o menor (por ejemplo, en el caso de la salida GeoTIFF, que normalmente está comprimida LZW).

De hecho la realidad es un poco más complicada:

La fuente de entrada puede estar en mosaico, lo que significa que no es necesario leer completamente la región en la memoria, pero es suficiente hacerlo un mosaico a la vez.Los límites de entrada no considerarán el mosaico interno al calcular los límites, pero si todas las coberturas de entrada están en mosaico, los límites de entrada deben diseñarse considerando la cantidad de datos que se leerán del almacenamiento persistente en lugar de la cantidad de datos que se almacenarán. en memoria

El lector podría estar utilizando resúmenes o realizando submuestreo durante la lectura para evitar leer todos los datos en la resolución nativa en caso de que la salida sea submuestreada.

El formato de salida también puede ser compatible con mosaicos (GeoTIFF lo es), lo que significa que podría escribir un mosaico a la vez.En este caso, ni siquiera el ráster de salida se almacenará completamente en la memoria en un momento dado.

Sólo unos pocos formatos de entrada están tan mal estructurados que obligan al lector a leer todos los datos de entrada de una sola vez y deben evitarse.Algunos ejemplos son: * Imágenes JPEG o PNG con archivo mundial * Archivos GeoTIFF comprimidos JPEG y de un solo mosaico


Servicios virtuales OWS

Los diferentes tipos de servicios en GeoServer incluyen WFS, WMS y WCS, comúnmente conocidos como servicios "OWS".Estos servicios son globales en el sentido de que cada servicio publica cada capa configurada en el servidor.WFS publica todas las capas vectoriales (tipos de entidades), WCS publica todas las capas ráster (coberturas) y WMS publica todo.

Unservicio virtuales una vista del servicio global que consta únicamente de un subconjunto de capas.Los servicios virtuales se basan en los espacios de trabajo de GeoServer.Para cada espacio de trabajo que existe existe un servicio virtual junto con él.El servicio virtual publica sólo aquellas capas que se encuentran dentro del espacio de trabajo correspondiente.

Advertencia

Los servicios virtuales solo se aplican a los servicios principales de OWS y no a los servicios OWS a los que se accede a través de GeoWebCache.Tampoco se aplica a otros subsistemas como REST.

Cuando un cliente accede a un servicio virtual, ese cliente solo tiene acceso a aquellas capas publicadas por ese servicio virtual.El acceso a capas del servicio global a través del servicio virtual dará lugar a una excepción.Esto hace que los servicios virtuales sean ideales para compartimentar el acceso a capas.Es posible que un proveedor de servicios desee crear múltiples servicios para diferentes clientes entregando una URL de servicio a un cliente y una URL de servicio diferente a otro cliente.Los servicios virtuales permiten al proveedor de servicios lograr esto con una única instancia de GeoServer.

Filtrar por espacio de trabajo

Considere los siguientes fragmentos del documento de capacidades WFS de la configuración de lanzamiento de GeoServer que enumera todos los tipos de funciones:

http://localhost:8080/geoserver/wfs?request=GetCapabilities

<wfs:Capacidad_WFS>

<Tipo de característica xmlns:tiger="http://www.census.gov">

<Nombre>tigre:poly_landmarks</Nombre>

--

<Tipo de característica xmlns:tiger="http://www.census.gov">

<Nombre>tigre:poi</Nombre>

--

<Tipo de característica xmlns:tiger="http://www.census.gov">

<Nombre>tigre:tiger_roads</Nombre>

--

<Tipo de característica xmlns:sf="http://www.openplans.org/spearfish">

<Nombre>sf:archsites</Nombre>

--

<Tipo de característica xmlns:sf="http://www.openplans.org/spearfish">

<Nombre>sf:sitios de errores</Nombre>

--

<Tipo de característica xmlns:sf="http://www.openplans.org/spearfish">

<Nombre>sf:restringido</Nombre>

--

<Tipo de característica xmlns:sf="http://www.openplans.org/spearfish">

<Nombre>sf:carreteras</Nombre>

--

<Tipo de característica xmlns:sf="http://www.openplans.org/spearfish">

<Nombre>sf:corrientes</Nombre>

--

<Tipo de característica xmlns:topp="http://www.openplans.org/topp">

<Nombre>topp:tasmania_cities</Nombre>

--

<Tipo de característica xmlns:topp="http://www.openplans.org/topp">

<Nombre>top:tasmania_roads</Nombre>

--

<Tipo de característica xmlns:topp="http://www.openplans.org/topp">

<Nombre>topp:tasmania_state_boundaries</Nombre>

--

<Tipo de característica xmlns:topp="http://www.openplans.org/topp">

<Nombre>topp:tasmania_water_bodies</Nombre>

--

<Tipo de característica xmlns:topp="http://www.openplans.org/topp">

<Nombre>topp:estados</Nombre>

--

<Tipo de característica xmlns:tiger="http://www.census.gov">

<Nombre>tigre:polígono_gigante</Nombre>

</wfs:WFS_Capabilities>

El documento anterior enumera todos los tipos de funciones configuradas en el servidor.Ahora considere la siguiente solicitud de capacidades:

http://localhost:8080/geoserver/topp/wfs?request=GetCapabilities

La parte de interés en la solicitud anterior es el prefijo "topp" del servicio wfs.La URL anterior da como resultado los siguientes tipos de funciones en el documento de capacidades:

<wfs:Capacidad_WFS>

<Tipo de característica xmlns:topp="http://www.openplans.org/topp">

<Nombre>topp:tasmania_cities</Nombre>

--

<Tipo de característica xmlns:topp="http://www.openplans.org/topp">

<Nombre>top:tasmania_roads</Nombre>

--

<Tipo de característica xmlns:topp="http://www.openplans.org/topp">

<Nombre>topp:tasmania_state_boundaries</Nombre>

--

<Tipo de característica xmlns:topp="http://www.openplans.org/topp">

<Nombre>topp:tasmania_water_bodies</Nombre>

--

<Tipo de característica xmlns:topp="http://www.openplans.org/topp">

<Nombre>topp:estados</Nombre>

</wfs:WFS_Capabilities>

Los tipos de funciones anteriores corresponden a las configuradas en el servidor como parte del espacio de trabajo "topp".

La consecuencia de un servicio virtual no se limita únicamente al documento de capacidades del servicio.Cuando un cliente accede a un servicio virtual, está restringido solo a esas capas para todas las operaciones.Por ejemplo, considere la siguiente solicitud de función WFS:

http://localhost:8080/geoserver/topp/wfs?request=GetFeature&typename=tiger:roads

La solicitud anterior da como resultado una excepción.Dado que el tipo de característica solicitada "tigre:roads" no está en el espacio de trabajo "topp", el cliente recibirá un error indicando que el tipo de característica solicitada no existe.

Filtrar por capa

Es posible filtrar aún más un servicio global especificando el nombre de la capa como parte del servicio virtual.Por ejemplo, considere el siguiente documento de capacidades:

http://localhost:8080/geoserver/topp/states/wfs?request=GetCapabilities

La parte de interés es el prefijo "estados" del servicio wfs.La URL anterior da como resultado el siguiente documento de capacidades que contiene un único tipo de característica:

<wfs:Capacidad_WFS>

<Tipo de característica xmlns:topp="http://www.openplans.org/topp">

<Nombre>topp:estados</Nombre>

<wfs:Capacidad_WFS>

Desactivar servicios globales

Es posible restringir completamente el acceso a los servicios globales de OWS estableciendo un indicador de configuración.Cuando el acceso global está deshabilitado, los servicios OWS solo pueden ocurrir a través de un servicio virtual.Cualquier cliente que intente acceder a un servicio globalmente recibirá una excepción.

Para deshabilitar los servicios globales, inicie sesión en la interfaz de administración web de GeoServer y navegue hasta "Configuración global".Desmarque la casilla de verificación "Habilitar servicios globales".



Configuración de descanso

GeoServer proporciona una interfazRESTfula través de la cual los clientes pueden recuperar información sobre una instancia y realizar cambios de configuración.Usando las simples llamadas HTTP de la interfaz REST, los clientes pueden configurar GeoServer sin necesidad de usar laInterfaz de administración web.

REST es un acrónimo de “Transferencia de Estado Representacional”.REST adopta un conjunto fijo de operaciones en recursos nombrados, donde la representación de cada recurso es la misma para recuperar y configurar información.En otras palabras, puede recuperar (leer) datos en formato XML y también enviar datos al servidor en un formato XML similar para establecer (escribir) cambios en el sistema.

Las operaciones sobre recursos se implementan con las primitivas estándar de HTTP: OBTENER para leer;y PUT, PUBLICAR y ELIMINAR para escribir cambios.Cada recurso se representa como una URL, comohttp://GEOSERVER_HOME/rest/workspaces/topp.

Para obtener más información sobre la API REST, consulte la secciónde referencia de la API de configuración REST.Para ver ejemplos prácticos, consulte la secciónde ejemplos de configuración REST.

Referencia de API de configuración REST

Detalles de la API

Ajustes globales

Espacios de trabajo

Espacios de nombres

Almacenes de datos

Tipos de funciones

Tiendas de cobertura

Coberturas

Coberturas estructuradas

Estilos

Capas

Grupos de capas

Fuentes

Plantillas de marcadores gratuitos

Servicios OWS

Recargando configuración

Restablecimiento de recursos

Manifiestos

Contraseña maestra

Control de acceso

Ejemplos de configuración REST

rizo

PHP

Pitón

Java

Rubí


Referencia de API de configuración REST

Esta sección describe la API de configuración REST de GeoServer.

Detalles de la API

Ajustes globales

Espacios de trabajo

Espacios de nombres

Almacenes de datos

Tipos de funciones

Tiendas de cobertura

Coberturas

Coberturas estructuradas

Estilos

Capas

Grupos de capas

Fuentes

Plantillas de marcadores gratuitos

Servicios OWS

Recargando configuración

Restablecimiento de recursos

Manifiestos

Contraseña maestra

Control de acceso


Detalles de la API

Esta página contiene información sobre la arquitectura de la API REST.

Autenticación

REST requiere que el cliente esté autenticado.De forma predeterminada, el método de autenticación utilizado es la autenticación básica.Consulte la secciónSeguridadpara saber cómo cambiar el método de autenticación.

Códigos de estado

Una solicitud HTTP utiliza un código de estado para transmitir el resultado de la solicitud al cliente.A lo largo de este documento se utilizan diferentes códigos de estado para diversos fines.Estos códigos se describen en detalle en laespecificación HTTP.

Los códigos de estado más comunes se enumeran a continuación, junto con sus descripciones:

Código de estado

Descripción

Notas

200

DE ACUERDO

La solicitud fue exitosa

201

Creado

Se creó correctamente un nuevo recurso, como un nuevo tipo de característica o almacén de datos.

403

Prohibido

A menudo denota una discrepancia en los permisos.

404

Extraviado

El punto final o el recurso no estaba en la ubicación indicada

405

Método no permitido

A menudo denota un punto final al que se accede con una operación incorrecta (por ejemplo, una solicitud GET donde se indica PUT/POST)

500

Error Interno del Servidor

A menudo denota un error de sintaxis en la solicitud.

Formatos y representaciones

Aformatespecifica cómo se debe representar un recurso en particular.Se utiliza un formato:

En una operación para especificar qué representación se debe devolver al cliente.

En una operación POST o PUT para especificar la representación que se envía al servidor

En una operaciónGETel formato se puede especificar de dos maneras.

Hay dos formas de especificar el formato para una operación GET.La primera opción utiliza elAcceptencabezado.Por ejemplo, con el encabezado establecido enel recurso, se devolverá como XML.La segunda opción para configurar el formato es mediante una extensión de archivo.Por ejemplo, dado un recurso, para solicitar una representación comoXML, el URI de solicitud terminaría en.Para solicitar una representación como JSON, el URI de solicitud terminaría en.Cuando no se especifica ningún formato, el servidor utilizará su propio formato interno, normalmente HTML.Cuando el formato de respuesta lo especifica tanto el encabezado como la extensión, el formato especificado por la extensión tiene prioridad."Accept:text/xml"foofoo/foo.xml/foo.json

En una operaciónPOSToPUT, el formato del contenido que se envía al servidor se especifica con elContent-typeencabezado.Por ejemplo, para enviar una representación en XML, utiliceo.Al igual que con las solicitudes GET, la representación del contenido devuelto por el servidor se especifica mediante elencabezado o el formato."Content-type:text/xml""Content-type:application/xml"Accept

La siguiente tabla define losContent-typevalores para cada formato:

Formato

Tipo de contenido

XML

application/xml

JSON

application/json

HTML

application/html

SLD

application/vnd.ogc.sld+xml

CREMALLERA

application/zip


Ajustes globales

Permite el acceso a la configuración global de GeoServer.

/settings[.<format>]

Controla todas las configuraciones globales.

Método

Acción

Código de estado

Formatos

Formato predeterminado

CONSEGUIR

Listar todas las configuraciones globales

200

HTML, XML, JSON

HTML

CORREO


405



PONER

Actualizar la configuración global

200

XML, JSON


BORRAR


405



/settings/contact[.<format>]

Controla únicamente la información de contacto global.

Método

Acción

Código de estado

Formatos

Formato predeterminado

CONSEGUIR

Listar información de contacto global

200

HTML, XML, JSON

HTML

CORREO


405



PONER

Actualizar contacto global

200

XML, JSON


BORRAR


405




Espacios de trabajo

Aworkspacees una agrupación de almacenes de datos.Similar a un espacio de nombres, se utiliza para agrupar datos que están relacionados de alguna manera.

/workspaces[.<format>]

Controla todos los espacios de trabajo.

Método

Acción

Código de estado

Formatos

Formato predeterminado

CONSEGUIR

Listar todos los espacios de trabajo

200

HTML, XML, JSON

HTML

CORREO

Crear un nuevo espacio de trabajo

201 conLocationencabezado

XML, JSON


PONER


405



BORRAR


405



/workspaces/<ws>[.<format>]

Controla un espacio de trabajo específico.

Método

Acción

Código de estado

Formatos

Formato predeterminado

Parámetros

CONSEGUIR

Espacio de trabajo de retornows

200

HTML, XML, JSON

HTML

quietOnNotFound

CORREO


405




PONER

200

Modificar espacio de trabajows

XML, JSON



BORRAR

200

Eliminar espacio de trabajows

XML, JSON


recursivo

Excepciones

Excepción

Código de estado

OBTENER para un espacio de trabajo que no existe

404

PUT que cambia el nombre del espacio de trabajo

403

ELIMINAR en un espacio de trabajo que no esté vacío

403

Parámetros

recurse

Elrecurseparámetro elimina de forma recursiva todas las capas a las que hace referencia el espacio de trabajo especificado, incluidos los almacenes de datos, los almacenes de cobertura, los tipos de entidades, etc.Los valores permitidos para este parámetro son "verdadero" o "falso".El valor predeterminado es "falso".

quietOnNotFound

ElquietOnNotFoundparámetro evita registrar una excepción cuando el espacio de trabajo no está presente.Tenga en cuenta que el código de estado 404 se devolverá de todos modos.

/workspaces/default[.<format>]

Controla el espacio de trabajo predeterminado.

Método

Acción

Código de estado

Formatos

Formato predeterminado

CONSEGUIR

Devuelve el espacio de trabajo predeterminado

200

HTML, XML, JSON

HTML

CORREO


405



PONER

200

Establecer espacio de trabajo predeterminado

XML, JSON


BORRAR


405



/workspaces/<ws>/settings[.<format>]

Controla la configuración en un espacio de trabajo específico.

Método

Acción

Código de estado

Formatos

Formato predeterminado

CONSEGUIR

Devuelve la configuración del espacio de trabajo

200

HTML, XML, JSON

HTML

CORREO


405



PONER

Crea o actualiza la configuración del espacio de trabajo

200

XML, JSON


BORRAR

Elimina la configuración del espacio de trabajo

200

XML, JSON



Espacios de nombres

Anamespacees una agrupación de tipos de características únicamente identificable.Se identifica mediante un prefijo y una URI.

/namespaces[.<format>]

Controla todos los espacios de nombres.

Método

Acción

Código de estado

Formatos

Formato predeterminado

CONSEGUIR

Listar todos los espacios de nombres

200

HTML, XML, JSON

HTML

CORREO

Crear un nuevo espacio de nombres

201 conLocationencabezado

XML, JSON


PONER


405



BORRAR


405



/namespaces/<ns>[.<format>]

Controla un espacio de nombres particular.

Método

Acción

Código de estado

Formatos

Formato predeterminado

Parámetros

CONSEGUIR

Devolver espacio de nombresns

200

HTML, XML, JSON

HTML

quietOnNotFound

CORREO


405




PONER

200

Modificar espacio de nombresns

XML, JSON



BORRAR

200

Eliminar espacio de nombresns

XML, JSON



Excepciones

Excepción

Código de estado

OBTENER para un espacio de nombres que no existe

404

PUT que cambia el prefijo del espacio de nombres

403

ELIMINAR contra un espacio de nombres cuyo espacio de trabajo correspondiente no esté vacío

403

Parámetros

quietOnNotFound

ElquietOnNotFoundparámetro evita registrar una excepción cuando el espacio de nombres no está presente.Tenga en cuenta que el código de estado 404 se devolverá de todos modos.

/namespaces/default[.<format>]

Controla el espacio de nombres predeterminado.

Método

Acción

Código de estado

Formatos

Formato predeterminado

CONSEGUIR

Devolver el espacio de nombres predeterminado

200

HTML, XML, JSON

HTML

CORREO


405



PONER

200

Establecer espacio de nombres predeterminado

XML, JSON


BORRAR


405




Almacenes de datos

Acontiene datos espaciales en formato vectorial.Puede ser un archivo (como un archivo de forma), una base de datos (como PostGIS) o un servidor (como unservicio de funciones web remoto).datastore

/workspaces/<ws>/datastores[.<format>]

Controla todos los almacenes de datos en un espacio de trabajo determinado.

Método

Acción

Código de estado

Formatos

Formato predeterminado

CONSEGUIR

Enumerar todos los almacenes de datos en el espacio de trabajows

200

HTML, XML, JSON

HTML

CORREO

Crear un nuevo almacén de datos

201 conLocationencabezado

XML, JSON


PONER


405



BORRAR


405



/workspaces/<ws>/datastores/<ds>[.<format>]

Controla un almacén de datos particular en un espacio de trabajo determinado.

Método

Acción

Código de estado

Formatos

Formato predeterminado

Parámetros

CONSEGUIR

Almacén de datos de devoluciónds

200

HTML, XML, JSON

HTML

quietOnNotFound

CORREO


405




PONER

Modificar el almacén de datosds





BORRAR

Eliminar almacén de datosds




recursivo

Excepciones

Excepción

Código de estado

GET para un almacén de datos que no existe

404

PUT que cambia el nombre del almacén de datos

403

PUT que cambia el espacio de trabajo del almacén de datos

403

ELIMINAR en un almacén de datos que contiene tipos de funciones configuradas

403

Parámetros

recurse

Elrecurseparámetro elimina de forma recursiva todas las capas a las que hace referencia el almacén de datos especificado.Los valores permitidos para este parámetro son "verdadero" o "falso".El valor predeterminado es "falso".

quietOnNotFound

ElquietOnNotFoundparámetro evita registrar una excepción cuando el almacén de datos no está presente.Tenga en cuenta que el código de estado 404 se devolverá de todos modos.

/workspaces/<ws>/datastores/<ds>/[file|url|external][.<extension>]

Estos puntos finales (file,urlyexternal) permiten agregar un archivo que contiene datos espaciales o una configuración de mapeo (en caso de que el objetivo sea un almacén de datos de esquema de aplicación) (a través de una solicitud PUT) a un almacén de datos existente, o crearán un nuevo almacén de datos si aún no existe.Los tres puntos finales se utilizan para especificar el método que se utiliza para cargar el archivo:

file: carga un archivo desde una fuente local.El cuerpo de la solicitud es el propio archivo.

url: carga un archivo desde una fuente remota.El cuerpo de la solicitud es una URL que apunta al archivo a cargar.Esta URL debe ser visible desde el servidor.

external: utiliza un archivo existente en el servidor.El cuerpo de la solicitud es la ruta absoluta al archivo existente.

Método

Acción

Código de estado

Formatos

Formato predeterminado

Parámetros

CONSEGUIR

Obsoleto.Recupere los archivos subyacentes para el almacén de datos como un archivo zip con tipo MIMEapplication/zip

200




CORREO


405




PONER

Carga archivos al almacén de datosds, creándolo si es necesario

200

Vea la nota abajo


configurar, apuntar, actualizar, conjunto de caracteres

BORRAR


405




Excepciones

Excepción

Código de estado

GET para un almacén de datos que no existe

404

GET para un almacén de datos que no está basado en archivos

404

Parámetros

extension

Elextensionparámetro especifica el tipo de datos que se cargan.Se admiten las siguientes extensiones:

Extensión

Almacén de datos

shp

Archivo de forma

propiedades

Ficha de propiedad

h2

Base de datos H2

espacialita

Base de datos SpatiaLite

esquema de aplicaciones

Configuración de mapeo de esquema de aplicación

Nota

Un archivo se puede PONER en un almacén de datos como un archivo independiente o comprimido.Los archivos independientes sólo son adecuados para almacenes de datos que funcionan con un único archivo, como un almacén GML.Los almacenes de datos que funcionan con varios archivos, como el almacén de archivos Shapefile, deben enviarse como un archivo zip.

Al cargar un archivo independiente, configúreloContent-typeadecuadamente según el tipo de archivo.Si está cargando un archivo zip, configure elContent-typearchivo enapplication/zip.

Nota

La configuración de mapeo del esquema de la aplicación se puede cargar como un solo archivo o dividir en varios archivos para fines de reutilización y/o restricciones de mapeo (por ejemplo, se necesitan múltiples mapeos del mismo tipo de característica).Si se cargan varios archivos de mapeo como un archivo zip, la extensión del archivo de mapeo principal (el que incluye a los demás mediante la<includedTypes>etiqueta) debe ser.appschema; de lo contrario, no se reconocerá como el archivo principal del almacén de datos y la publicación fallará.

Los esquemas de aplicación (archivos XSD) necesarios para definir la asignación se pueden agregar al archivo zip y cargar junto con la configuración de la asignación.Todos los archivos contenidos en el archivo se cargan en la misma carpeta, por lo que la ruta a los archivos de mapeo secundarios y los esquemas de la aplicación, como se especifica en el archivo de mapeo principal, es simplemente el nombre del archivo del recurso incluido.

configure

Elconfigureparámetro controla cómo se configura el almacén de datos al cargar el archivo.Puede tomar uno de los tres valores:

first—(Predeterminado) Configure solo el primer tipo de función disponible en el almacén de datos.

none: no configure ningún tipo de función.

all—Configurar todos los tipos de funciones.

Nota

Al cargar una configuración de asignación de esquema de aplicación, solo los tipos de funciones asignadas en el archivo de asignación principal se consideran funciones de nivel superior y se configurarán automáticamente cuandose especifiqueconfigure=allo .configure=first

target

Eltargetparámetro determina qué formato o motor de almacenamiento se utilizará cuando se cree un nuevo almacén de datos en el servidor para los datos cargados.Al importar datos a un almacén de datos existente, se ignora.Los valores permitidos para este parámetro son los mismos que para elparámetro de extensión, exceptoappschema, que no tiene sentido en este contexto.

update

Elupdateparámetro controla cómo se manejan los datos existentes cuando el archivo se coloca en un almacén de datos que ya existe y que ya contiene un esquema que coincide con el contenido del archivo.El parámetro acepta uno de los siguientes valores:

append—Los datos que se cargan se agregan a los datos existentes.Este es el valor predeterminado.

overwrite—Los datos que se cargan reemplazan los datos existentes.

El parámetro se ignora para los almacenes de datos de esquemas de aplicaciones, que son de solo lectura.

charset

Elcharsetparámetro especifica la codificación de caracteres del archivo que se está cargando (como “ISO-8559-1”).


Tipos de funciones

Aes un recurso espacial o conjunto de datos basado en vectores que se origina en un almacén de datos.En algunos casos, como en el caso de un archivo de forma, un tipo de característica tiene una relación uno a uno con su almacén de datos.En otros casos, como PostGIS, la relación entre el tipo de característica y el almacén de datos es de muchos a uno, y los tipos de característica corresponden a una tabla en la base de datos.featuretype

/workspaces/<ws>/datastores/<ds>/featuretypes[.<format>]

Controla todos los tipos de funciones en un almacén de datos/espacio de trabajo determinado.

Método

Acción

Código de estado

Formatos

Formato predeterminado

Parámetros

CONSEGUIR

Enumere todos los tipos de funciones en el almacén de datosds

200

HTML, XML, JSON

HTML

lista

CORREO

Cree un nuevo tipo de función,consulte la nota a continuación

201 conLocationencabezado

XML, JSON



PONER


405




BORRAR


405




Nota

Al crear un nuevo tipo de característica a través dePOST, si no existe ningún conjunto de datos subyacente con el nombre especificado, se intentará crearlo.Esto funcionará sólo en los casos en que el formato de datos subyacente admita la creación de nuevos tipos (como una base de datos).Al crear un tipo de característica de esta manera, el cliente debe incluir toda la información de atributos en la representación del tipo de característica.

Excepciones

Excepción

Código de estado

OBTENER para un tipo de característica que no existe

404

PUT que cambia el nombre del tipo de característica

403

PUT que cambia el almacén de datos del tipo de característica

403

Parámetros

list

Ellistparámetro se utiliza para controlar la categoría de tipos de características que se devuelven.Puede tomar uno de los siguientes valores:

configured: solo se devuelven los tipos de funciones configurados.Este es el valor predeterminado.

available: solo se devolverán los tipos de funciones que no se hayan configurado pero que estén disponibles en el almacén de datos especificado.

available_with_geom—Igual queavailable, pero solo incluye tipos de entidades que tienen un atributo de geometría.

all—La unión deconfiguredyavailable.

/workspaces/<ws>/datastores/<ds>/featuretypes/<ft>[.<format>]

Controla un tipo de característica particular en un almacén de datos y un espacio de trabajo determinados.

Método

Acción

Código de estado

Formatos

Formato predeterminado

Parámetros

CONSEGUIR

Tipo de característica de devoluciónft

200

HTML, XML, JSON

HTML

quietOnNotFound

CORREO


405




PONER

Modificar tipo de característicaft

200

XML, JSON


recalcular

BORRAR

Eliminar tipo de característicaft

200



recursivo

Excepciones

Excepción

Código de estado

OBTENER para un tipo de característica que no existe

404

PUT que cambia el nombre del tipo de característica

403

PUT que cambia el almacén de datos del tipo de característica

403

Parámetros

recurse

Elrecurseparámetro elimina recursivamente todas las capas a las que hace referencia el tipo de entidad especificado.Los valores permitidos para este parámetro son "verdadero" o "falso".El valor predeterminado es "falso".Una solicitud DELETErecurse=falsefallará si alguna capa hace referencia al tipo de entidad.

recalculate

Elrecalculateparámetro especifica si se deben volver a calcular los cuadros delimitadores para un tipo de entidad.Algunas propiedades de los tipos de entidades se recalculan automáticamente cuando es necesario.En particular, el cuadro delimitador nativo se recalcula cuando se cambia la proyección o la política de proyección, y el cuadro delimitador de latitud/longitud se recalcula cuando se recalcula el cuadro delimitador nativo, o cuando se proporciona explícitamente un nuevo cuadro delimitador nativo en la solicitud.(Los cuadros delimitadores nativos y de latitud/longitud no se recalculan automáticamente cuando se incluyen explícitamente en la solicitud). Además, el cliente puede solicitar explícitamente un conjunto fijo de campos para calcular, incluyendo una lista separada por comas de sus nombres en Elrecalculateparámetro.Por ejemplo:

recalculate=(parámetro vacío): no calcule ningún campo, independientemente de la proyección, la política de proyección, etc. Esto podría resultar útil para evitar un recálculo lento cuando se opera con grandes conjuntos de datos.

recalculate=nativebbox: Vuelva a calcular el cuadro delimitador nativo, pero no vuelva a calcular el cuadro delimitador de latitud/longitud.

recalculate=nativebbox,latlonbbox: Vuelva a calcular tanto el cuadro delimitador nativo como el cuadro delimitador de latitud/longitud.

quietOnNotFound

ElquietOnNotFoundparámetro evita registrar una excepción cuando el tipo de característica no está presente.Tenga en cuenta que el código de estado 404 se devolverá de todos modos.


Tiendas de cobertura

Acontiene datos espaciales en formato ráster.coveragestore

/workspaces/<ws>/coveragestores[.<format>]

Controla todas las tiendas de cobertura en un espacio de trabajo determinado.

Método

Acción

Código de estado

Formatos

Formato predeterminado

CONSEGUIR

Enumerar todas las tiendas de cobertura en el espacio de trabajows

200

HTML, XML, JSON

HTML

CORREO

Crear una nueva tienda de cobertura

201 conLocationencabezado

XML, JSON


PONER


405



BORRAR


405



/workspaces/<ws>/coveragestores/<cs>[.<format>]

Controla un almacén de cobertura particular en un espacio de trabajo determinado.

Método

Acción

Código de estado

Formatos

Formato predeterminado

Parámetros

CONSEGUIR

Tienda de cobertura de devolucióncs

200

HTML, XML, JSON

HTML

quietOnNotFound

CORREO


405




PONER

Modificar tienda de coberturacs





BORRAR

Eliminar tienda de coberturacs




recurrir, purgar

Excepciones

Excepción

Código de estado

GET para una tienda de cobertura que no existe

404

PUT que cambia nombre de tienda de cobertura

403

PUT que cambia el espacio de trabajo de la tienda de cobertura

403

ELIMINAR contra un almacén de cobertura que contiene cobertura configurada

403

Parámetros

recurse

Elrecurseparámetro elimina de forma recursiva todas las capas a las que hace referencia el almacén de cobertura.Los valores permitidos para este parámetro son "verdadero" o "falso".El valor predeterminado es "falso".

purge

Elpurgeparámetro se utiliza para personalizar la eliminación de archivos en el disco (en caso de que el lector subyacente implemente un método de eliminación).Puede tomar uno de los tres valores:

none-(Predeterminado) No elimine ningún archivo de la tienda del disco.

metadata-Eliminar sólo archivos auxiliares y metadatos.Se recomienda cuando los archivos de datos (como los gránulos) no se deben eliminar del disco.

all-Purgar todo lo relacionado con ese almacén (metadatos y gránulos).

quietOnNotFound

ElquietOnNotFoundparámetro evita registrar una excepción cuando el almacén de cobertura no está presente.Tenga en cuenta que el código de estado 404 se devolverá de todos modos.

/workspaces/<ws>/coveragestores/<cs>/file[.<extension>]

Este punto final permite agregar un archivo que contiene datos espaciales (mediante POST o PUT) a un almacén de cobertura existente, o creará un nuevo almacén de cobertura si aún no existe.En el caso de almacenes de cobertura que contengan múltiples coberturas (por ejemplo, mosaico de archivos NetCDF), se configurarán todas las coberturas a menos queconfigure=falsese especifique como parámetro.

Método

Acción

Código de estado

Formatos

Formato predeterminado

Parámetros

CONSEGUIR

Obsoleto.Obtenga los archivos subyacentes para el almacén de cobertura como un archivo zip con tipo MIMEapplication/zip.

200




CORREO

Si el almacén de cobertura es simple (por ejemplo, GeoTiff), devolverá un 405, si el almacén de cobertura es estructurado (por ejemplo, mosaico), recolectará los archivos especificados en él, lo que a su vez integrará los archivos en el almacén. .El significado de la recolección depende de la tienda; para el mosaico, los nuevos archivos se agregarán como nuevos gránulos del mosaico y los archivos existentes actualizarán sus atributos; otras tiendas pueden tener un comportamiento diferente.

405 si el almacén de cobertura es simple, 200 si es estructurado y la operación de cosecha fue exitosa



recalcular

PONER

Crea o sobrescribe los archivos para la tienda de cobertura.cs

200

Vea la nota abajo

:establecer hechizo hechizolang=en_us

configurar, nombre de cobertura

BORRAR


405




Nota

Un archivo se puede PONER en un almacén de cobertura como un archivo independiente o comprimido.Los archivos independientes solo son adecuados para almacenes de cobertura que funcionan con un solo archivo, como el almacén GeoTIFF.Los almacenes de cobertura que funcionan con varios archivos, como el almacén ImageMosaic, deben enviarse como un archivo zip.

Al cargar un archivo independiente, configúreloContent-typeadecuadamente según el tipo de archivo.Si está cargando un archivo zip, configure elContent-typearchivo enapplication/zip.

Excepciones

Excepción

Código de estado

GET para un almacén de datos que no existe

404

GET para un almacén de datos que no está basado en archivos

404

Parámetros

extension

Elextensionparámetro especifica el tipo de almacén de cobertura.Se admiten las siguientes extensiones:

Extensión

Tienda de cobertura

geotif

geoTIFF

imagen mundial

Imagen georreferenciada (JPEG, PNG, TIFF)

mosaico de imágenes

Mosaico de imágenes

configure

Elconfigureparámetro controla cómo se configura el almacén de cobertura al cargar el archivo.Puede tomar uno de los tres valores:

first—(Predeterminado) Configure solo el primer tipo de función disponible en la tienda de cobertura.

none: no configure ningún tipo de función.

all—Configurar todos los tipos de funciones.

coverageName

ElcoverageNameparámetro especifica el nombre de la cobertura dentro del almacén de cobertura.Este parámetro sólo es relevante si elconfigureparámetro no es igual a "ninguno".Si no se especifica, la cobertura resultante recibirá el mismo nombre que el almacén de cobertura que la contiene.

Nota

En la actualidad existe una relación uno a uno entre una tienda de cobertura y una cobertura.Sin embargo, existen planes para admitir coberturas multidimensionales, por lo que este parámetro puede cambiar.

recalculate

Elrecalculateparámetro especifica si se deben volver a calcular los cuadros delimitadores para una cobertura.Algunas propiedades de las coberturas se recalculan automáticamente cuando es necesario.En particular, el cuadro delimitador nativo se vuelve a calcular cuando se cambia la proyección o la política de proyección.El cuadro delimitador de latitud/longitud se vuelve a calcular cuando se recalcula el cuadro delimitador nativo o cuando se proporciona explícitamente un nuevo cuadro delimitador nativo en la solicitud.(Los cuadros delimitadores nativos y de latitud/longitud no se recalculan automáticamente cuando se incluyen explícitamente en la solicitud). Además, el cliente puede solicitar explícitamente un conjunto fijo de campos para calcular incluyendo una lista separada por comas de sus nombres en el cuadro delimitador.recalculateparámetro.Por ejemplo:

recalculate=(parámetro vacío): no calcule ningún campo, independientemente de la proyección, la política de proyección, etc. Esto podría resultar útil para evitar un recálculo lento cuando se opera con grandes conjuntos de datos.

recalculate=nativebbox: vuelva a calcular el cuadro delimitador nativo, pero no vuelva a calcular el cuadro delimitador de latitud/longitud.

recalculate=nativebbox,latlonbbox: vuelva a calcular tanto el cuadro delimitador nativo como el cuadro delimitador de latitud/longitud.


Coberturas

Acoveragees un conjunto de datos ráster que se origina en un almacén de cobertura.

/workspaces/<ws>/coveragestores/<cs>/coverages[.<format>]

Controla todas las coberturas en un almacén de coberturas y un espacio de trabajo determinados.

Método

Acción

Código de estado

Formatos

Formato predeterminado

CONSEGUIR

Listar todas las coberturas en la tienda de coberturascs

200

HTML, XML, JSON

HTML

CORREO

Crear una nueva cobertura

201 conLocationencabezado

XML, JSON


PONER


405



BORRAR


405



/workspaces/<ws>/coveragestores/<cs>/coverages/<c>[.<format>]

Controla una cobertura particular en un almacén de cobertura y espacio de trabajo determinados.

Método

Acción

Código de estado

Formatos

Formato predeterminado

Parámetros

CONSEGUIR

Cobertura de devoluciónc

200

HTML, XML, JSON

HTML

quietOnNotFound

CORREO


405




PONER

Modificar coberturac

200

XML, JSON



BORRAR

Eliminar coberturac

200



recursivo

Excepciones

Excepción

Código de estado

GET para una cobertura que no existe

404

PUT que cambia nombre de cobertura

403

PUT que cambia la tienda de cobertura de cobertura

403

Parámetros

recurse

Elrecurseparámetro elimina recursivamente todas las capas a las que hace referencia la cobertura especificada.Los valores permitidos para este parámetro son "verdadero" o "falso".El valor predeterminado es "falso".

quietOnNotFound

ElquietOnNotFoundparámetro evita registrar una excepción cuando la cobertura no está presente.Tenga en cuenta que el código de estado 404 se devolverá de todos modos.

Coberturas estructuradas

Las coberturas estructuradas son aquellas cuyo contenido está formado por gránulos, normalmente asociados a atributos, a menudo utilizados para representar el tiempo, la elevación y otras dimensiones personalizadas adjuntas a los propios gránulos.El mosaico de imágenes es un ejemplo de un lector de cobertura estructurado en el que se puede escribir, en el que cada uno de los gránulos del mosaico está asociado con atributos.NetCDF es un ejemplo de solo lectura, en el que la cuadrícula multidimensional contenida en el archivo se expone como un conjunto de cortes 2D, cada uno asociado con un conjunto diferente de valores variables.

La siguiente API se aplica exclusivamente a lectores de cobertura estructurada.

/workspaces/<ws>/coveragestores/<cs>/coverages/<coverage>/index[.<format>]

Declara el conjunto de atributos asociados a la cobertura especificada, su nombre, tipo y ocurrencias mínimas/máximas.

Método

Acción

Código de estado

Formatos

Formato predeterminado

Parámetros

CONSEGUIR

Devuelve los atributos, sus nombres y sus tipos.

200

XML, JSON

XML


CORREO


405




PONER


405




BORRAR


405




/workspaces/<ws>/coveragestores/<cs>/coverages/<coverage>/index/granules.<format>

Devuelve la lista completa de gránulos, cada uno con sus atributos, valores y geometría, y permite eliminarlos selectivamente.

Método

Acción

Código de estado

Formatos

Formato predeterminado

Parámetros

CONSEGUIR

Devuelve la lista de gránulos y sus atributos, ya sea en GML (cuando se usa XML) o GeoJSON (cuando se usa JSON)

200

XML, JSON

XML

compensación, límite, filtro

CORREO


405




PONER


405




BORRAR

Elimina los gránulos (todos o solo los seleccionados mediante el parámetro de filtro)

200



filtrar

Parámetros

offset

Eloffsetparámetro indica a GeoServer que omita el número especificado de primeros gránulos al devolver los datos.

limit

Ellimitparámetro indica a GeoServer que devuelva como máximo el número especificado de gránulos al devolver los datos.

filter

Elfilterparámetro es un filtro CQL que permite seleccionar qué gránulos se devolverán en función de los valores de sus atributos.

/workspaces/<ws>/coveragestores/<cs>/coverages/<mosaic>/index/granules/<granuleId>.<format>

Devuelve un solo gránulo y permite su eliminación.

Método

Acción

Código de estado

Formatos

Formato predeterminado

Parámetros

CONSEGUIR

Devuelve lo especificado de gránulos y sus atributos, ya sea en GML (cuando se usa XML) o GeoJSON (cuando se usa JSON)

200

XML, JSON

XML

quietOnNotFound

CORREO


405




PONER


405




BORRAR

Elimina el gránulo

200




Excepciones

Excepción

Código de estado

OBTENER para un gránulo que no existe

404

Parámetros

quietOnNotFound

ElquietOnNotFoundparámetro evita registrar una excepción cuando el gránulo no está presente.Tenga en cuenta que el código de estado 404 se devolverá de todos modos.


Estilos

Astyledescribe cómo el servicio de mapas web debe simbolizar o representar un recurso (tipo de entidad o cobertura).En GeoServer los estilos se especifican conSLD.

/styles[.<format>]

Controla todos los estilos.

Método

Acción

Código de estado

Formatos

Formato predeterminado

Parámetros

CONSEGUIR

Devolver todos los estilos

200

HTML, XML, JSON

HTML


CORREO

Crea un nuevo estilo

201 conLocationencabezado

SLD, XML, JSON, ZIPVer nota a continuación


nombre crudo

PONER


405




BORRAR


405




Al ejecutar una solicitud POST o PUT con un estilo SLD, elContent-typeencabezado debe configurarse en el tipo mime que identifica el formato de estilo.Los formatos de estilo admitidos de fábrica incluyen:

SLD 1.0 con un tipo mimo deapplication/vnd.ogc.sld+xml

SLD 1.1 / SE 1.1 con un tipo mime deapplication/vnd.ogc.se+xml

Paquete SLD (archivo zip que contiene archivos sld y de imagen utilizados en el estilo) con un tipo mime de aplicación/zip

Otras extensiones (comocss) agregan soporte para formatos adicionales.

Parámetros

name

Elnameparámetro especifica el nombre que se le dará al estilo.Esta opción es más útil cuando se ejecuta una solicitud POST con un estilo en formato SLD y no se puede inferir un nombre apropiado del propio SLD.

raw

Elrawparámetro especifica si se debe renunciar al análisis y la codificación del contenido de estilo cargado.Cuando se establece en "verdadero", la carga útil del estilo se transmitirá directamente a la configuración de GeoServer.Utilice esta configuración si desea conservar exactamente el contenido y el formato del estilo.Utilice esta configuración con cuidado, ya que puede generar un estilo no válido e inutilizable.El valor predeterminado es falso".

/styles/<s>[.<format>]

Controla un estilo determinado.

Método

Acción

Código de estado

Formatos

Formato predeterminado

Parámetros

CONSEGUIR

Estilo de retornos

200

SLD, HTML, XML, JSON

HTML

quietOnNotFound bonita

CORREO


405




PONER

Modificar estilos

200

SLD, XML, JSON, ZIPVer nota anterior


crudo

BORRAR

Eliminar estilos

200



purga

Excepciones

Excepción

Código de estado

OBTENER para un estilo que no existe

404

PUT que cambia nombre de estilo

403

ELIMINAR contra el estilo al que hacen referencia las capas existentes

403

Parámetros

purge

Elpurgeparámetro especifica si el archivo SLD subyacente para el estilo debe eliminarse en el disco.Los valores permitidos para este parámetro son "verdadero" o "falso".Cuando se establece en "verdadero", el archivo subyacente se eliminará.

quietOnNotFound

ElquietOnNotFoundparámetro evita registrar una excepción cuando el estilo no está presente.Tenga en cuenta que el código de estado 404 se devolverá de todos modos.

pretty

Elprettyparámetro devuelve el estilo en un formato legible por humanos, con espacios en blanco y sangría adecuados.Este parámetro no tiene ningún efecto si solicita un estilo en su formato nativo; en este caso, la API devuelve el contenido exacto del archivo subyacente.Los formatos HTML, XML y JSON no admiten este parámetro.

/workspaces/<ws>/styles[.<format>]

Controla todos los estilos en un espacio de trabajo determinado.

Método

Acción

Código de estado

Formatos

Formato predeterminado

Parámetros

CONSEGUIR

Devolver todos los estilos dentro del espacio de trabajows

200

HTML, XML, JSON

HTML


CORREO

Crear un nuevo estilo dentro del espacio de trabajows

201 conLocationencabezado

SLD, XML, JSON, ZIPVer nota anterior


nombre crudo

PONER


405




BORRAR


405



purga

/workspaces/<ws>/styles/<s>[.<format>]

Controla un estilo particular en un espacio de trabajo determinado.

Método

Acción

Código de estado

Formatos

Formato predeterminado

Parámetros

CONSEGUIR

Estilo de retornosdentro del espacio de trabajows

200

SLD, HTML, XML, JSON

HTML

quietOnNotFound

CORREO


405




PONER

Modificar estilosdentro del espacio de trabajows

200

SLD, XML, JSON, ZIPVer nota anterior


crudo

BORRAR

Eliminar estilosdentro del espacio de trabajows

200




Excepciones

Excepción

Código de estado

OBTENER para un estilo que no existe para ese espacio de trabajo

404


Capas

Alayeres un recursopublicado(tipo de característica o cobertura).

/layers[.<format>]

Controla todas las capas.

Método

Acción

Código de estado

Formatos

Formato predeterminado

CONSEGUIR

Devolver todas las capas

200

HTML, XML, JSON

HTML

CORREO


405



PONER


405



BORRAR


405



/layers/<l>[.<format>]

Controla una capa particular.

Método

Acción

Código de estado

Formatos

Formato predeterminado

Parámetros

CONSEGUIR

capa de retornol

200

HTML, XML, JSON

HTML

quietOnNotFound

CORREO


405




PONER

Modificar capal

200

XML, JSON



BORRAR

Eliminar capal

200



recursivo

Excepciones

Excepción

Código de estado

OBTENER para una capa que no existe

404

PUT que cambia nombre de capa

403

PUT que cambia el recurso de la capa

403

Parámetros

recurse

Elrecurseparámetro elimina recursivamente todos los estilos a los que hace referencia la capa especificada.Los valores permitidos para este parámetro son "verdadero" o "falso".El valor predeterminado es "falso".

quietOnNotFound

ElquietOnNotFoundparámetro evita registrar una excepción cuando la capa no está presente.Tenga en cuenta que el código de estado 404 se devolverá de todos modos.

/layers/<l>/styles[.<format>]

Controla todos los estilos en una capa determinada.

Método

Acción

Código de estado

Formatos

Formato predeterminado

CONSEGUIR

Devolver todos los estilos para la capal

200

SLD, HTML, XML, JSON

HTML

CORREO

Agregar un nuevo estilo a la capal

201, conLocationencabezado

XML, JSON


PONER


405



BORRAR


405




Grupos de capas

Aes una agrupación de capas y estilos a los que se puede acceder como una sola capa en una solicitud WMS GetMap.En ocasiones, un grupo de capas se denomina “mapa base”.layergroup

/layergroups[.<format>]

Controla todos los grupos de capas.

Método

Acción

Código de estado

Formatos

Formato predeterminado

CONSEGUIR

Devolver todos los grupos de capas

200

HTML, XML, JSON

HTML

CORREO

Agregar un nuevo grupo de capas

201, conLocationencabezado

XML, JSON


PONER


405



BORRAR


405



/layergroups/<lg>[.<format>]

Controla un grupo de capas particular.

Método

Acción

Código de estado

Formatos

Formato predeterminado

Parámetros

CONSEGUIR

Grupo de capas de retornolg

200

HTML, XML, JSON

HTML

quietOnNotFound

CORREO


405




PONER

Modificar grupo de capaslg

200

XML, JSON



BORRAR

Eliminar grupo de capaslg

200




Excepciones

Excepción

Código de estado

GET para un grupo de capas que no existe

404

POST que especifica un grupo de capas sin capas

400

PUT que cambia el nombre del grupo de capas

403

Parámetros

quietOnNotFound

ElquietOnNotFoundparámetro evita registrar una excepción cuando el grupo de capas no está presente.Tenga en cuenta que el código de estado 404 se devolverá de todos modos.

/workspaces/<ws>/layergroups[.<format>]

Controla todos los grupos de capas en un espacio de trabajo determinado.

Método

Acción

Código de estado

Formatos

Formato predeterminado

CONSEGUIR

Devolver todos los grupos de capas dentro del espacio de trabajows

200

HTML, XML, JSON

HTML

CORREO

Agregar un nuevo grupo de capas dentro del espacio de trabajows

201, conLocationencabezado

XML, JSON


PONER


405



BORRAR


405



/workspaces/<ws>/layergroups/<lg>[.<format>]

Controla un grupo de capas particular en un espacio de trabajo determinado.

Método

Acción

Código de estado

Formatos

Formato predeterminado


CONSEGUIR

Devolver grupo de capaslgdentro del espacio de trabajows

200

HTML, XML, JSON

HTML

quietOnNotFound

CORREO


405




PONER

Modificar grupo de capaslgdentro del espacio de trabajows

200

XML, JSON



BORRAR

Eliminar grupo de capaslgdentro del espacio de trabajows

200




Excepciones

Excepción

Código de estado

OBTENER para un grupo de capas que no existe para ese espacio de trabajo

404


Fuentes

Esta operación proporciona la lista defontsdisponibles en GeoServer.Puede resultar útil utilizar esta operación para verificar si unfontarchivo usado en un archivo SLD está disponible antes de cargar el SLD.

/fonts[.<format>]

Método

Acción

Código de estado

Formatos

Formato predeterminado

CONSEGUIR

Devolver las fuentes disponibles en GeoServer

200

XML, JSON

XML

CORREO


405



PONER


405



BORRAR


405




Plantillas de marcadores gratuitos

Freemarkeres un motor de plantillas simple pero potente que GeoServer utiliza para la personalización de resultados por parte del usuario.

Es posible utilizar la API REST de GeoServer para administrar plantillas de Freemarker para recursos del catálogo.

/templates/<template>.ftl

Este punto final gestiona una plantilla que es global para todo el catálogo.

Método

Acción

Código de estado

Formatos

Formato predeterminado

CONSEGUIR

Devolver una plantilla

200



PONER

Insertar o actualizar una plantilla

405



BORRAR

Eliminar una plantilla

405



Se aplican operaciones idénticas a los siguientes puntos finales:

Plantillas de espacio de trabajo—/workspaces/<ws>/templates/<template>.ftl

Plantillas de tienda de vectores—/workspaces/<ws>/datastores/<ds>/templates/<template>.ftl

Plantillas de tipos de características—/workspaces/<ws>/datastores/<ds>/featuretypes/<f>/templates/<template>.ftl

Plantillas de tienda ráster—/workspaces/<ws>/coveragestores/<cs>/templates/<template>.ftl

Plantillas de cobertura—/workspaces/<ws>/coveragestores/<cs>/coverages/<c>/templates/<template>.ftl

/templates[.<format>]

Este punto final gestiona todas las plantillas globales.

Método

Acción

Código de estado

Formatos

Formato predeterminado

CONSEGUIR

Plantillas de devolución

200

HTML, XML, JSON

HTML

Se aplican operaciones idénticas a los siguientes puntos finales:

Plantillas de espacio de trabajo—/workspaces/<ws>/templates[.<format>]

Plantillas de tienda de vectores—/workspaces/<ws>/datastores/<ds>/templates[.<format>]

Plantillas de tipos de características—/workspaces/<ws>/datastores/<ds>/featuretypes/<f>/templates[.<format>]

Plantillas de tienda ráster—/workspaces/<ws>/coveragestores/<cs>/templates[.<format>]

Plantillas de cobertura—/workspaces/<ws>/coveragestores/<cs>/coverages/<c>/templates[.<format>]


Servicios OWS

GeoServer incluye varios tipos de servicios OGC como WCS, WFS y WMS, comúnmente conocidos como servicios "OWS".Estos servicios pueden ser globales para toda la instancia de GeoServer o locales para un espacio de trabajo en particular.En este último caso se denominanservicios virtuales.

/services/wcs/settings[.<format>]

Controla la configuración del servicio de cobertura web.

Método

Acción

Código de estado

Formatos

Formato predeterminado

CONSEGUIR

Devolver la configuración global de WCS

200

XML, JSON

HTML

CORREO


405



PONER

Modificar la configuración global de WCS

200



BORRAR


405



/services/wcs/workspaces/<ws>/settings[.<format>]

Controla la configuración del Servicio de cobertura web para un espacio de trabajo determinado.

Método

Acción

Código de estado

Formatos

Formato predeterminado

CONSEGUIR

Devolver la configuración de WCS para el espacio de trabajows

200

HTML, XML, JSON

HTML

CORREO


405



PONER

Crear o modificar la configuración de WCS para el espacio de trabajows

200

XML, JSON


BORRAR

Eliminar la configuración de WCS para el espacio de trabajows

200



/services/wfs/settings[.<format>]

Controla la configuración del servicio de funciones web.

Método

Acción

Código de estado

Formatos

Formato predeterminado

CONSEGUIR

Devolver la configuración global de WFS

200

HTML, XML, JSON

HTML

CORREO


405



PONER

Modificar la configuración global de WFS

200

XML, JSON


BORRAR


405



/services/wfs/workspaces/<ws>/settings[.<format>]

Controla la configuración del servicio de funciones web para un espacio de trabajo determinado.

Método

Acción

Código de estado

Formatos

Formato predeterminado

CONSEGUIR

Devolver la configuración de WFS para el espacio de trabajows

200

HTML, XML, JSON

HTML

CORREO


405



PONER

Modificar la configuración de WFS para el espacio de trabajows

200

XML, JSON


BORRAR

Eliminar la configuración de WFS para el espacio de trabajows

200



/services/wms/settings[.<format>]

Controla la configuración del servicio de mapas web.

Método

Acción

Código de estado

Formatos

Formato predeterminado

CONSEGUIR

Devolver la configuración global de WMS

200

HTML, XML, JSON

HTML

CORREO


405



PONER

Modificar la configuración global de WMS

200

XML, JSON


BORRAR


405



/services/wms/workspaces/<ws>/settings[.<format>]

Controla la configuración del servicio de mapas web para un espacio de trabajo determinado.

Método

Acción

Código de estado

Formatos

Formato predeterminado

CONSEGUIR

Devolver la configuración de WMS para el espacio de trabajows

200

HTML, XML, JSON

HTML

CORREO


405



PONER

Modificar la configuración de WMS para el espacio de trabajows

200

XML, JSON


BORRAR

Eliminar la configuración de WMS para el espacio de trabajows

200




Recargando configuración

Recarga el catálogo y la configuración de GeoServer desde el disco.Esta operación se utiliza en los casos en que una herramienta externa ha modificado la configuración en el disco.Esta operación también obligará a GeoServer a eliminar los cachés internos y volver a conectarse a todos los almacenes de datos.

/reload

Método

Acción

Código de estado

Formatos

Formato predeterminado

CONSEGUIR


405



CORREO

Recargar la configuración desde el disco.

200



PONER

Recargar la configuración desde el disco.

200



BORRAR


405




Restablecimiento de recursos

Restablece todas las cachés de almacenamiento, ráster y esquema.Esta operación se utiliza para obligar a GeoServer a descartar todos los cachés y almacenar conexiones y volver a conectarse a cada uno de ellos la próxima vez que una solicitud los necesite.Esto es útil en caso de que las propias tiendas almacenen en caché alguna información sobre las estructuras de datos que administran que puedan haber cambiado mientras tanto.

/reset

Método

Acción

Código de estado

Formatos

Formato predeterminado

CONSEGUIR


405



CORREO

Restablecer todas las cachés de almacenamiento, ráster y esquemas

200



PONER

Restablecer todas las cachés de almacenamiento, ráster y esquemas

200



BORRAR


405




Manifiestos

GeoServer proporciona un servicio REST para exponer una lista de todos los JAR y recursos cargados en la instancia en ejecución.Esto es útil para informes de errores y para realizar un seguimiento de las extensiones implementadas en la aplicación.Hay dos puntos finales para acceder a esta información:

about/manifest—Recupera detalles sobre todos los JAR cargados

about/version—Recupera detalles de los componentes de alto nivel: GeoSever, GeoTools y GeoWebCache

/about/manifest[.<format>]

Este punto final recupera detalles sobre todos los JAR cargados.

Todos los JAR del manifiesto de GeoServer están marcados con la propiedadGeoServerModuley clasificados por tipo, por lo que puede usar capacidades de filtrado para buscar un conjunto de manifiestos usando expresiones regulares (consulte el parámetrode manifiesto) o una categoría de tipo (consulte el parámetrode claveyvalor).

Los tipos disponibles soncore,extension, ocommunity.Para filtrar módulos por un tipo particular, agregue una solicitud conkey=GeoServerModule&value=<type>

Método

Acción

Código de estado

Formatos

Formato predeterminado

Parámetros

CONSEGUIR

Enumere todos los manifiestos en el classpath

200

HTML, XML, JSON

HTML

manifiesto, clave, valor

CORREO


405




PONER


405




BORRAR


405




Uso

El modelo es muy simple y se comparte entre la versión y las solicitudes de recursos para analizar ambas solicitudes.

<acerca de>

<nombre del recurso="{NOMBRE}">

<{KEY}>{VALUE}</{KEY}>

...

</recurso>

...

</acerca de>

Puede personalizar los resultados agregando un archivo de propiedades llamadomanifest.propertiesa la raíz del directorio de datos.A continuación se muestra la implementación predeterminada que se utiliza cuando no hay ningún archivo de propiedades personalizado presente:

nombreRecursoRegex=.+/(.*).(jar|guerra)

ResourceAttributeExclusions=Importar-paquete,Exportar-paquete,Clase-Ruta,Requerir-paquete

versionAttributeInclusions=Versión-proyecto:Versión,Marca de tiempo de compilación,Revisión-Git,

Versión de especificación: Versión, Versión de implementación: Revisión de Git

dónde:

resourceNameRegex—Se utilizará el grupo (1) para hacer coincidir el nombre del atributo del recurso.

resourceAttributeExclusions—Lista de propiedades separadas por comas para excluir (lista negra), que se utiliza para excluir parámetros que son demasiado detallados, de modo que la lista de propiedades del recurso queda abierta.Los usuarios pueden agregar sus JAR (con propiedades personalizadas) teniendo la lista completa de propiedades.

versionAttributeInclusions—Lista de propiedades separadas por comas para incluir (lista blanca).También admite el cambio de nombre de propiedades (usandokey:replace), que se utiliza para alinear la salida de laversionssolicitud con la salida de la página web.El modelo utiliza un mapa para almacenar atributos, por lo que se utilizará el último atributo encontrado en el archivo de manifiesto.

manifest

Elmanifestparámetro se utiliza para filtrar el atributo de nombres de recursos (manifiestos) resultantes mediante expresiones regulares de Java.

key

Elkeyparámetro se utiliza para filtrar el nombre de las propiedades del recurso (manifiesto) resultante.Se puede combinar con elvalueparámetro.

value

Elvalueparámetro se utiliza para filtrar el valor de las propiedades del recurso (manifiesto) resultante.Se puede combinar con elkeyparámetro.

/about/version[.<format>]

Este punto final muestra solo los detalles de los componentes de alto nivel: GeoServer, GeoTools y GeoWebCache.

Método

Acción

Código de estado

Formatos

Formato predeterminado

Parámetros

CONSEGUIR

Listar los manifiestos de GeoServer, GeoWebCache y GeoTools

200

HTML, XML, JSON

HTML

manifiesto, clave, valor

CORREO


405




PONER


405




BORRAR


405





Contraseña maestra

Seutiliza para cifrar el almacén de claves de GeoServer y para un inicio de sesión de emergencia utilizando el usuario.masterpasswordroot

Advertencia

Se recomienda el uso de HTTPS; de lo contrario, todas las contraseñas se envían en texto sin formato.

/security/masterpw[.<format>]

Obtiene la contraseña maestra y permite cambiar la contraseña maestra

Método

Acción

Código de estado

Formatos

Formato predeterminado

CONSEGUIR

Obtener la contraseña maestra

200,403

XML, JSON


PONER

Cambia la contraseña maestra

200.405.422

XML, JSON


Formatos para PUT (cambio de contraseña maestra).

XML

<contraseña maestra

> < contraseña maestra anterior > contraseña anterior < /contraseña maestra anterior>

<contraseña maestra nueva> nueva contraseña </ contraseña maestra nueva> < /contraseña maestra>

JSON

{ "antiguaContraseñaMaestra" : "antiguaContraseña" ,

"nuevaContraseñaMaestra" : "nuevaContraseña" }

Excepciones

Excepción

Código de estado

GET sin privilegios administrativos

403

PUT sin privilegios administrativos

405

PUT con la contraseña maestra actual incorrecta

422

PUT con una nueva contraseña maestra rechazada por la política de contraseñas

422


Control de acceso

/security/acl/catalog.<format>

Obtiene el modo de catálogo y permite cambiar el modo de catálogo.El modo debe ser uno de

ESCONDER

MEZCLADO

DESAFÍO

Método

Acción

Código de estado

Formatos

Formato predeterminado

CONSEGUIR

Obtener el modo catálogo

200,403

XML, JSON


PONER

Establecer el modo de catálogo

200.403.404.422

XML, JSON


Formatos:

XML

<catalogo>

<modo> OCULTAR </modo> </catalog>

JSON

{ "modo" : "OCULTAR" }

Excepciones

Excepción

Código de estado

Sin privilegios administrativos

403

Solicitud mal formada

404

Modo de catálogo no válido

422

/security/acl/layers.<format>

/security/acl/services.<format>

/security/acl/rest.<format>

API para administrar el control de acceso para

Capas

Servicios

La API REST

Método

Acción

Código de estado

Formatos

Formato predeterminado

CONSEGUIR

Obtener todas las reglas

200,403

XML, JSON


CORREO

Agregar un conjunto de reglas

200.403.409

XML, JSON


PONER

Modificar un conjunto de reglas

200.403.409

XML, JSON


BORRAR

Eliminar una regla específica

200.404.409

XML, JSON


Formato para BORRAR:

La regla especificada debe ser la última parte del URI:

/seguridad/acl/layers/*.*.r

Nota

Las barras diagonales (“/”) en el nombre de una regla deben codificarse con%2F.La regla REST/**;GETdebe codificarse en /security/acl/rest/%2F**;GET

Formatos para GET,POST y PUT:

XML

<?xml versión="1.0" codificación="UTF-8"?> <reglas>

< recurso de regla= "*.*.r" > * </regla>

< recurso de regla= "miespacio de trabajo.*.w" > ROLE_1 ,ROLE_2 </rule> </rules>

JSON

{

"*.*.r": "*",

"miespacio de trabajo".*.w": "ROLE_1,ROLE_2"

}

El atributo de recurso especifica una regla.Hay tres formatos diferentes.

Para capas: <espacio de trabajo>.<capa>.<acceso>.El asterisco es un comodín para <workspace> y <layer>.<acceso> es uno der(lectura),w(escritura) oa(administrar).

Para servicios: <servicio>.<método>.El asterisco es un comodín para <servicio> y <método>.Ejemplos:

wfs.GetCaracterística

wfs.GetTransaction

wfs.*

Para REST: <patrón Ant de URL>;<lista de métodos HTTP separados por comas>.Ejemplos:

/**;CONSEGUIR

/**;POST,BORRAR,PONER

El contenido de un elemento de regla es una lista de roles separados por comas o un asterisco.

Excepciones

Excepción

Código de estado

Sin privilegios administrativos

403

POST, agregando una regla ya existente

409

PUT, modificando una regla no existente

409

DELETE, Eliminando una regla no existente

409

Especificación de regla no válida

422

Nota

Cuando se agrega un conjunto de reglas y solo existe una función, se cancela toda la solicitud.Cuando se modifica un conjunto de reglas y solo no existe un rol, también se cancela toda la solicitud.


Ejemplos de configuración REST

Esta sección contiene una serie de ejemplos que ilustran varios usos de laAPI de configuración REST.Los ejemplos están agrupados por el idioma o entorno utilizado.

rizo

PHP

Pitón

Java

Rubí

rizo

Los ejemplos de esta sección utilizancURL, una herramienta de línea de comandos para ejecutar solicitudes HTTP y transferir archivos, para generar solicitudes a la interfaz REST de GeoServer.Aunque los ejemplos se basan en cURL, podrían adaptarse a cualquier herramienta o biblioteca compatible con HTTP.Tenga en cuenta que cURL no actúa del todo igual que un navegador web.A diferencia de Mozilla Firefox o Google Chrome, cURL no escapará automáticamente de los caracteres especiales en su cadena de solicitud.Para asegurarse de que sus solicitudes se puedan procesar correctamente, asegúrese de que los caracteres como paréntesis, comas y similares se escapen antes de enviarlos a través de cURL.Si usa libcurl en PHP 5.5 o posterior, puede preparar la cadena de URL usando la función curl_escape.En versiones anteriores de PHP, hmlspecialchars también debería funcionar.

Agregar un nuevo espacio de trabajo

Lo siguiente crea un nuevo espacio de trabajo llamado "acme" con una solicitud POST:

Nota

Cada bloque de código a continuación contiene un único comando que puede extenderse a varias líneas.

curl -v -u admin:geoserver -XPOST -H "Tipo de contenido: texto/xml" -d "<espacio de trabajo><nombre>acme</nombre></espacio de trabajo>" http://localhost:8080/geoserver/ espacios de descanso/trabajo

Si se ejecuta correctamente, la respuesta debe contener lo siguiente:

< HTTP/1.1 201 Creado

...

<Ubicación: http://localhost:8080/geoserver/rest/workspaces/acme

Tenga en cuenta elLocationencabezado de respuesta, que especifica la ubicación (URI) del espacio de trabajo recién creado.

La información del espacio de trabajo se puede recuperar como XML con una solicitud GET:

curl -v -u admin:geoserver -XGET -H "Aceptar: texto/xml" http://localhost:8080/geoserver/rest/workspaces/acme

La respuesta debería verse así:

<espacio de trabajo

> <nombre> acme </nombre>

<almacenamiento de datos>

<atom:link xmlns:atom= "http://www.w3.org/2005/Atom" rel= "alternativo"

href= "http://localhost :8080/geoserver/rest/workspaces/acme/datastores.xml"

type= "application/xml" />

</dataStores>

<coverageStores>

<atom:link xmlns:atom= "http://www.w3.org/ 2005/Atom" rel= "alternate"

href= "http://localhost:8080/geoserver/rest/workspaces/acme/coveragestores.xml"

type= "application/xml" />

</coverageStores>

<wmsStores>

<atom :link xmlns:atom= "http://www.w3.org/2005/Atom" rel= "alternate"

href= "http://localhost:8080/geoserver/rest/workspaces/acme/wmsstores.xml"

tipo = "aplicación/xml" />

</wmsStores> </workspace>

Esto muestra que el espacio de trabajo puede contener "dataStores" (paradatos vectoriales), "coverageStores" (paradatos ráster) y "wmsStores" (paraservidores WMS en cascada).

Nota

ElAcceptencabezado es opcional.La siguiente solicitud omite elAcceptencabezado, pero devolverá la misma respuesta que la anterior.

curl -v -u admin:geoserver -XGET http://localhost:8080/geoserver/rest/workspaces/acme.xml

Subiendo un archivo de forma

En este ejemplo, se creará una nueva tienda cargando un archivo de forma.

La siguiente solicitud carga un archivo Shapefile comprimido llamadoroads.zipy crea una nueva tienda llamadaroads.

Nota

Cada bloque de código a continuación contiene un único comando que puede extenderse a varias líneas.

curl -v -u admin:geoserver -XPUT -H "Tipo de contenido: aplicación/zip" --data-binary @roads.zip http://localhost:8080/geoserver/rest/workspaces/acme/datastores/roads/ archivo.shp

Elroadsidentificador en el URI hace referencia al nombre de la tienda que se creará.Para crear una tienda llamadasomethingelse, el URI seríahttp://localhost:8080/geoserver/rest/workspaces/acme/datastores/somethingelse/file.shp

Si se ejecuta correctamente, la respuesta debe contener lo siguiente:

< HTTP/1.1 201 Creado

La información de la tienda se puede recuperar como XML con una solicitud GET:

curl -v -u admin:geoserver -XGET http://localhost:8080/geoserver/rest/workspaces/acme/datastores/roads.xml

La respuesta debería verse así:

<dataStore>

<nombre> carreteras </nombre>

<tipo> Shapefile </tipo>

<enabled> verdadero </enabled>

<espacio de trabajo>

<nombre> acme </nombre>

<atom:link xmlns:atom= "http:/ /www.w3.org/2005/Atom" rel= "alternate"

href= "http://localhost:8080/geoserver/rest/workspaces/acme.xml" type= "application/xml" />

</workspace>

<connectionParameters>

<entry key= "url" > archivo:/C:/path/to/data_dir/data/acme/roads/ </entry>

<entry key= "espacio de nombres" > http://acme </entry>

</connectionParameters>

<__default> false </__default>

<featureTypes>

<atom:link xmlns:atom= "http://www.w3.org/2005/Atom" rel= "alternate"

href= "http:// localhost:8080/geoserver/rest/workspaces/acme/datastores/roads/featuretypes.xml"

type= "application/xml" />

</featureTypes> </dataStore>

De forma predeterminada, cuando se carga un archivo de forma, se crea automáticamente un tipo de característica.La información del tipo de característica se puede recuperar como XML con una solicitud GET:

curl -v -u admin:geoserver -XGET http://localhost:8080/geoserver/rest/workspaces/acme/datastores/roads/featuretypes/roads.xml

Si se ejecuta correctamente, la respuesta será:

<featureType>

<nombre> carreteras </nombre>

<nativeName> carreteras </nativeName>

<namespace>

<name> acme </name>

<atom:link xmlns:atom= "http://www.w3.org/2005 /Atom" rel= "alternate"

href= "http://localhost:8080/geoserver/rest/namespaces/acme.xml" type= "application/xml" />

</namespace>

...</tipo de característica>

El resto de la respuesta consta de metadatos de capa e información de configuración.

Agregar un archivo de forma existente

En el ejemplo anterior, se cargó un archivo de forma directamente en GeoServer enviando un archivo zip en el cuerpo de una solicitud PUT.Este ejemplo muestra cómo publicar un archivo de forma que ya existe en el servidor.

Considere un directorio en el servidor/data/shapefiles/riversque contiene el archivo shapefilerivers.shp.Lo siguiente agrega una nueva tienda para el archivo de forma:

Nota

Cada bloque de código a continuación contiene un único comando que puede extenderse a varias líneas.

curl -v -u admin:geoserver -XPUT -H "Tipo de contenido: texto/plain" -d "file:///data/shapefiles/rivers/rivers.shp" http://localhost:8080/geoserver/rest /espacios de trabajo/acme/datastores/rivers/external.shp

Laexternal.shpparte del URI de solicitud indica que el archivo proviene de fuera del catálogo.

Si se ejecuta correctamente, la respuesta debe contener lo siguiente:

< HTTP/1.1 201 Creado

El archivo de forma se agregará a la tienda existente y se publicará como una capa.

Para verificar el contenido de la tienda, ejecute una solicitud GET.Dado que la respuesta XML solo proporciona detalles sobre la tienda sin mostrar su contenido, ejecute una solicitud GET para HTML:

curl -v -u admin:geoserver -XGET http://localhost:8080/geoserver/rest/workspaces/acme/datastores/rivers.html

Agregar un directorio de archivos de forma existentes

Este ejemplo muestra cómo cargar y crear una tienda que contiene varios archivos de forma, todo con una sola operación.Este ejemplo es muy similar al ejemplo anterior de agregar un único archivo de forma.

Considere un directorio en el servidor/data/shapefilesque contiene múltiples archivos de forma.Lo siguiente agrega una nueva tienda para el directorio.

Nota

Cada bloque de código a continuación contiene un único comando que puede extenderse a varias líneas.

curl -v -u admin:geoserver -XPUT -H "Tipo de contenido: texto/plain" -d "file:///data/shapefiles/" "http://localhost:8080/geoserver/rest/workspaces/acme /datastores/shapefiles/external.shp?configure=all"

Tenga en cuenta elconfigure=allparámetro de cadena de consulta, que establece cada archivo de forma en el directorio que se cargará y publicará.

Si se ejecuta correctamente, la respuesta debe contener lo siguiente:

< HTTP/1.1 201 Creado

Para verificar el contenido de la tienda, ejecute una solicitud GET.Dado que la respuesta XML solo proporciona detalles sobre la tienda sin mostrar su contenido, ejecute una solicitud GET para HTML:

curl -v -u admin:geoserver -XGET http://localhost:8080/geoserver/rest/workspaces/acme/datastores/shapefiles.html

Cargar un archivo de mapeo de esquema de aplicación

Este ejemplo muestra cómo crear un nuevo almacén de datos de esquema de aplicación y cómo actualizar las asignaciones de tipos de características de un almacén de datos de esquema de aplicación ya existente cargando un archivo de configuración de asignación.

Nota

Cada bloque de código a continuación contiene un único comando que puede extenderse a varias líneas.

La siguiente solicitud carga un archivo de asignación de esquema de aplicación llamadoLandCoverVector.xmla un almacén de datos llamadoLandCoverVector.

curl -v -X PUT -d @LandCoverVector.xml -H "Tipo de contenido: texto/xml" -u admin:geoserver http://localhost:8080/geoserver/rest/workspaces/lcv/datastores/LandCoverVector/file. esquema de aplicaciones?configure=all

Si noLandCoverVectorexistía ningún almacén de datos en el espacio de trabajolcvantes de la solicitud, se crearía.

La información de la tienda se puede recuperar como XML con la siguiente solicitud GET:

curl -v -u admin:geoserver -X GET http://localhost:8080/geoserver/rest/workspaces/lcv/datastores/LandCoverVector.xml

La respuesta debería verse así:

<dataStore>

<nombre> LandCoverVector </nombre>

<tipo> Acceso a datos del esquema de aplicación </tipo>

<enabled> true </enabled>

<espacio de trabajo>

<nombre> lcv </nombre>

<atom:link xmlns:atom= "http ://www.w3.org/2005/Atom" rel= "alternate" href= "http://localhost:8080/geoserver/rest/workspaces/lcv.xml" type= "application/xml" />

</ espacio de trabajo>

<connectionParameters>

<entry key= "dbtype" > app-schema </entry>

<entry key= "namespace" > http://inspire.ec.europa.eu/schemas/lcv/3.0 </entry>

< clave de entrada = "url" > archivo:/ruta/a/data_dir/data/lcv/LandCoverVector/LandCoverVector.appschema </entry>

</connectionParameters>

<__default> false </__default>

<featureTypes>

<atom:link xmlns: atom= "http://www.w3.org/2005/Atom" rel= "alternate" href= "http://localhost:8080/geoserver/rest/workspaces/lcv/datastores/LandCoverVector/featuretypes.xml" tipo = "aplicación/xml" />

</featureTypes> </dataStore>

Además, debido alconfigure=allparámetro, todos los tipos de entidades mapeadas en elLandCoverVector.xmlarchivo de mapeo se configuran automáticamente.La información sobre los tipos de funciones configuradas se puede recuperar como XML con la siguiente solicitud GET:

curl -v -u admin:geoserver -X GET http://localhost:8080/geoserver/rest/workspaces/lcv/datastores/LandCoverVector/featuretypes.xml

Suponiendo que elLandCoverVector.xmlarchivo define asignaciones para dos tipos de característicasLandCoverDatasetyLandCoverUnit, el resultado debería verse así:

<featureTypes>

<featureType>

<nombre> LandCoverUnit </nombre>

<atom:link xmlns:atom= "http://www.w3.org/2005/Atom" rel= "alternate" href= "http://localhost :8080/geoserver/rest/workspaces/lcv/datastores/LandCoverVector/featuretypes/LandCoverUnit.xml" type= "application/xml" />

</featureType>

<featureType>

<nombre> LandCoverDataset </nombre>

<atom:link xmlns :atom= "http://www.w3.org/2005/Atom" rel= "alternate" href= "http://localhost:8080/geoserver/rest/workspaces/lcv/datastores/LandCoverVector/featuretypes/LandCoverDataset. xml" tipo= "aplicación/xml" />

</featureType> </featureTypes>

LandCoverVector_alternative.xmlSe puede cargaruna nueva configuración de mapeo, almacenada en el archivo de mapeo, en elLandCoverVectoralmacén de datos con la siguiente solicitud PUT:

curl -v -X PUT -d @LandCoverVector_alternative.xml -H "Tipo de contenido: texto/xml" -u admin:geoserver http://localhost:8080/geoserver/rest/workspaces/lcv/datastores/LandCoverVector/file. esquema de aplicaciones?configure=ninguno

Si la solicitud tiene éxito, el archivo de mapeo antiguo se reemplaza por el cargado y la nueva configuración de mapeo se activa inmediatamente.

Nota

Esta vez elconfigureparámetro está configurado ennone, porque no queremos configurar nuevamente los tipos de funciones, simplemente reemplazar su configuración de mapeo.

Si el conjunto de tipos de características mapeados en el nuevo archivo de configuración difiere del conjunto de tipos de características mapeados en el anterior (algunos faltan, algunos son nuevos o ambos), la mejor manera de proceder es eliminar el almacén de datos. y créelo nuevamente emitiendo otra solicitud PUT,como se muestra arriba.

Carga de múltiples archivos de mapeo de esquema de aplicación

Este ejemplo mostrará cómo crear un nuevo almacén de datos de esquema de aplicación basado en una configuración de mapeo compleja dividida en varios archivos;También mostraré cómo cargar esquemas de aplicaciones (es decir, archivos XSD) junto con la configuración de mapeo.

Nota

Cada bloque de código a continuación contiene un único comando que puede extenderse a varias líneas.

En el ejemplo anterior, hemos visto cómo crear un nuevo almacén de datos de esquema de aplicación cargando una configuración de mapeo almacenada en un solo archivo;esta vez, las cosas son más complicadas, ya que las asignaciones se han distribuido en dos archivos de configuración: el archivo de configuración principal se llamageosciml.appschemay contiene las asignaciones para tres tipos de funcionesGeologicUnit:MappedFeatureyGeologicEvent;se llama al segundo archivocgi_termvalue.xmly contiene las asignaciones para un único tipo sin función,CGI_TermValue.

Nota

Como se explica en ladocumentación de referencia de la API REST para almacenes de datos, cuando la configuración de mapeo se distribuye en varios archivos, la extensión del archivo de configuración principal debe ser.appschema.

El archivo de configuración principal incluye el segundo así:

...

<tipos incluidos>

<Include> cgi_termvalue.xml </Include> </includedTypes>

...

También queremos cargar en GeoServer los esquemas necesarios para definir el mapeo, en lugar de que GeoServer los recupere de Internet (lo cual es especialmente útil en caso de que nuestro servidor no tenga acceso a la web).El esquema principal se llamageosciml.xsdy se hace referencia a élgeosciml.appschemacomo tal:

...

<targetTypes>

<FeatureType>

<schemaUri> geosciml.xsd </schemaUri>

</FeatureType> </targetTypes>

...

En este caso, el esquema principal depende de varios otros esquemas:

<include SchemaLocation= "geologicUnit.xsd" /> <include SchemeLocation= "borehole.xsd" /> <include SchemaLocation= "vocabulary.xsd" /> <include SchemeLocation= "geologicRelation.xsd" /> <include SchemaLocation= "fósil .xsd" /> <include SchemaLocation= "value.xsd" /> <include SchemaLocation= " geologicFeature.xsd" /> <include SchemaLocation= "geologicAge.xsd" /> <include SchemeLocation= "earthMaterial.xsd" /> < incluir SchemaLocation= "collection.xsd" /> <incluir SchemaLocation= "geologicStructure.xsd" / >

No es necesario que aparezcan en latargetTypessección de configuración del mapeo, pero deben incluirse en el archivo ZIP que se cargará.

Nota

Los esquemas GeoSciML enumerados anteriormente, como casi cualquier esquema de aplicación que existe, hacen referencia a los esquemas GML básicos (en particular,http://schemas.opengis.net/gml/3.1.1/base/gml.xsd) y algunos otros esquemas alojados de forma remota (por ejemplo,http://www.geosciml.org/cgiutilities/1.0/xsd/cgiUtilities.xsd).Para que el ejemplo funcione en un entorno completamente fuera de línea, habría que reemplazar todas las referencias remotas por referencias locales o completar previamente la caché del esquema de la aplicación con una copia de los esquemas remotos.El manual del usuario de GeoServercontiene más información sobre la caché del esquema de la aplicación.

Para resumir, cargaremos en GeoServer un archivo ZIP con el siguiente contenido:

geosciml.appschema # archivo de mapeo principal cgi_termvalue.xml # archivo de mapeo secundario geosciml.xsd # esquema principal borehole.xsd collection.xsd EarthMaterial.xsd fosil.xsd geologicAge.xsd geologicFeature.xsd geologicRelation.xsd geologicStructure.xsd geologicUnit.xsd value.xsd vocabulario.xsd

La solicitud PUT se ve así:

curl -X PUT --data-binary @geosciml.zip -H "Tipo de contenido: aplicación/zip" -u admin:geoserver http://localhost:8080/geoserver/rest/workspaces/gsml/datastores/geosciml/file .appschema?configure=todos

Si todo va bien,geoscimldebería haberse creado un nuevo almacén de datos, con tres tipos de funciones:

<featureTypes>

<featureType>

<name> MappedFeature </name>

<atom:link xmlns:atom= "http://www.w3.org/2005/Atom" rel= "alternate" href= "http://localhost :8080/geoserver/rest/workspaces/gsml/datastores/geosciml/featuretypes/MappedFeature.xml" type= "application/xml" />

</featureType>

<featureType>

<name> GeologicEvent </name>

<atom:link xmlns :atom= "http://www.w3.org/2005/Atom" rel= "alternate" href= "http://localhost:8080/geoserver/rest/workspaces/gsml/datastores/geosciml/featuretypes/GeologicEvent. xml" type= "application/xml" />

</featureType>

<featureType>

<name> GeologicUnit </name>

<atom:link xmlns:atom= "http://www.w3.org/2005/Atom" rel = "alternativo" href= "http://localhost:8080/geoserver/rest/workspaces/gsml/datastores/geosciml/featuretypes/GeologicUnit.xml" type= "application/xml" />

</featureType> </featureTypes>

Creando un estilo de capa

Este ejemplo creará un nuevo estilo en el servidor y lo completará con el contenido de un archivo SLD local.

Lo siguiente crea un nuevo estilo llamadoroads_style:

Nota

Cada bloque de código a continuación contiene un único comando que puede extenderse a varias líneas.

curl -v -u admin:geoserver -XPOST -H "Tipo de contenido: texto/xml" -d "<style><name>roads_style</name><filename>roads.sld</filename></style>" http://localhost:8080/geoserver/rest/styles

Si se ejecuta correctamente, la respuesta debe contener lo siguiente:

< HTTP/1.1 201 Creado

Esta solicitud carga un archivo llamadoroads.sldarchivo y lo completaroads_stylecon su contenido:

curl -v -u admin:geoserver -XPUT -H "Tipo de contenido: aplicación/vnd.ogc.sld+xml" -d @roads.sld http://localhost:8080/geoserver/rest/styles/roads_style

Si se ejecuta correctamente, la respuesta debe contener lo siguiente:

<HTTP/1.1 200 Aceptar

El propio SLD se puede descargar mediante una solicitud GET:

curl -v -u admin:geoserver -XGET http://localhost:8080/geoserver/rest/styles/roads_style.sld

Cambiar un estilo de capa

Este ejemplo alterará un estilo de capa.Antes de realizar cualquier cambio, resulta útil ver la configuración existente para una capa determinada.

Nota

Cada bloque de código a continuación contiene un único comando que puede extenderse a varias líneas.

A continuación se recupera la información de la capa “acme:roads” como XML:

curl -v -u admin:geoserver -XGET "http://localhost:8080/geoserver/rest/layers/acme:roads.xml"

La respuesta en este caso sería:

<capa>

<nombre> carreteras </nombre>

<tipo> VECTOR </tipo>

<defaultStyle>

<nombre> línea </nombre>

<atom:link xmlns:atom= "http://www.w3.org/2005 /Atom" rel= "alternate"

href= "http://localhost:8080/geoserver/rest/styles/line.xml" type= "application/xml" />

</defaultStyle>

<resource class= "featureType" >

<nombre> carreteras </nombre>

<atom:link xmlns:atom= "http://www.w3.org/2005/Atom" rel= "alternate"

href= "http://localhost:8080/geoserver/rest /workpaces/acme/datastores/roads/featuretypes/roads.xml"

type= "application/xml" />

</resource>

<enabled> true </enabled>

<atribución>

<logoWidth> 0 </logoWidth>

<logoHeight> 0 </logoHeight>

</attribution> </layer>

Cuando se crea la capa, GeoServer asigna un estilo predeterminado a la capa que coincide con la geometría de la capa.lineEn este caso se asignaun estilo denominado a la capa.Este estilo se puede ver con una solicitud WMS:

http://localhost:8080/geoserver/wms/reflect?layers=acme:roads

En el siguiente ejemplo se creará un nuevo estilo llamadoroads_styley asignado a la capa “acme:roads”:

curl -v -u admin:geoserver -XPUT -H "Tipo de contenido: texto/xml" -d "<capa><defaultStyle><name>roads_style</name></defaultStyle></layer>" http:/ /localhost:8080/geoserver/rest/layers/acme:roads

Si se ejecuta correctamente, la respuesta debe contener lo siguiente:

<HTTP/1.1 200 Aceptar

El nuevo estilo se puede ver con la misma solicitud WMS que se muestra arriba:

http://localhost:8080/geoserver/wms/reflect?layers=acme:roads

Tenga en cuenta que si desea cargar el estilo en un espacio de trabajo (es decir, no convertirlo en un estilo global) y luego asignar este estilo a una capa en ese espacio de trabajo, primero debe crear el estilo en el espacio de trabajo determinado:

curl -u admin:geoserver -XPOST -H 'Tipo de contenido: texto/xml' \

-d '<estilo><nombre>estilo_carreteras</nombre><nombre de archivo>carreteras.sld</nombre de archivo></estilo>'

http://localhost:8080/geoserver/rest/workspaces/acme/styles

Cargue el archivo dentro del espacio de trabajo:

curl -u admin:geoserver -XPUT -H 'Tipo de contenido: aplicación/vnd.ogc.sld+xml' \

-d @roads.sld http://localhost:8080/geoserver/rest/workspaces/acme/styles/roads_style

Y finalmente aplica ese estilo a la capa.Tenga en cuenta el uso de la<workspace>etiqueta en el XML:

curl -u admin:geoserver -XPUT -H 'Tipo de contenido: texto/xml' \

-d '<capa><defaultStyle><name>carreteras_estilo</name><workspace>acme</workspace></defaultStyle></layer>' \

http://localhost:8080/geoserver/rest/layers/acme:roads

Crear un estilo de capa (paquete SLD)

Este ejemplo creará un nuevo estilo en el servidor y lo completará con el contenido de un archivo SLD local y las imágenes relacionadas proporcionadas en un paquete SLD.Un paquete SLD es un archivo zip que contiene el estilo SLD y los archivos de imagen relacionados utilizados en el SLD.

Lo siguiente crea un nuevo estilo llamadoroads_style.

Nota

Cada bloque de código a continuación contiene un único comando que puede extenderse a varias líneas.

curl -u admin:geoserver -XPOST -H "Tipo de contenido: aplicación/zip" --data-binary @roads_style.zip http://localhost:8080/geoserver/rest/styles

Si se ejecuta correctamente, la respuesta debe contener lo siguiente:

< HTTP/1.1 201 Creado

El propio SLD se puede descargar mediante una solicitud GET:

curl -v -u admin:geoserver -XGET http://localhost:8080/geoserver/rest/styles/roads_style.sld

Cambiar un estilo de capa (paquete SLD)

Este ejemplo alterará un estilo de capa usando un paquete SLD.Un paquete SLD es un archivo zip que contiene el estilo SLD y los archivos de imagen relacionados utilizados en el SLD.

En el ejemplo anterior, creamos un nuevo estiloroads_style, podemos actualizar el estilo del paquete SLD y aplicar los nuevos cambios al estilo.

Nota

Cada bloque de código a continuación contiene un único comando que puede extenderse a varias líneas.

curl -u admin:geoserver -XPUT -H "Tipo de contenido: aplicación/zip" --data-binary @roads_style.zip http://localhost:8080/geoserver/rest/workspaces/w1/styles/roads_style.zip

Si se ejecuta correctamente, la respuesta debe contener lo siguiente:

<HTTP/1.1 200 Aceptar

El propio SLD se puede descargar mediante una solicitud GET:

curl -v -u admin:geoserver -XGET http://localhost:8080/geoserver/rest/styles/roads_style.sld

Agregar una base de datos PostGIS

En este ejemplo,nycse agregará una base de datos PostGIS denominada como una nueva tienda.Esta sección asume que una base de datos PostGIS denominadanycestá presente en el sistema local y es accesible para el usuariobob.

Cree un nuevo archivo de texto y agréguele el siguiente contenido.Esto representará la nueva tienda.Guarde el archivo comonycDataStore.xml.

<dataStore>

<nombre> nyc </name>

<connectionParameters>

<host> localhost </host>

<port> 5432 </port>

<database> nyc </database>

<usuario> bob </usuario>

<contraseña> postgres </passwd>

<dbtype> postgis </dbtype>

</connectionParameters> </dataStore>

Lo siguiente agregará la nueva tienda PostGIS al catálogo de GeoServer:

Nota

Cada bloque de código a continuación contiene un único comando que puede extenderse a varias líneas.

curl -v -u admin:geoserver -XPOST -T nycDataStore.xml -H "Tipo de contenido: texto/xml" http://localhost:8080/geoserver/rest/workspaces/acme/datastores

Si se ejecuta correctamente, la respuesta debe contener lo siguiente:

<HTTP/1.1 200 Aceptar

La información de la tienda se puede recuperar como XML con una solicitud GET:

curl -v -u admin:geoserver -XGET http://localhost:8080/geoserver/rest/workspaces/acme/datastores/nyc.xml

La respuesta debería verse como la siguiente:

<dataStore>

<nombre> nyc </nombre>

<tipo> PostGIS </tipo>

<enabled> true </enabled>

<workspace>

<nombre> acme </nombre>

<atom:link xmlns:atom= "http:/ /www.w3.org/2005/Atom" rel= "alternate"

href= "http://localhost:8080/geoserver/rest/workspaces/acme.xml" type= "application/xml" />

</workspace>

<connectionParameters>

<entry key= "puerto" > 5432 </entry>

<entry key= "dbtype" > postgis </entry>

<entry key= "host" > localhost </entry>

<entry key= "usuario" > bob </entry>

<entry key= "database" > nyc </entry>

<entry key= "espacio de nombres" > http://acme </entry>

</connectionParameters>

<__default> false </__default>

<featureTypes>

<atom:link xmlns:atom= "http://www.w3.org/2005/Atom" rel= "alternate"

href= "http://localhost:8080/geoserver/rest/workspaces/acme/datastores/nyc /featuretypes.xml"

tipo= "aplicación/xml" />

</featureTypes> </dataStore>

Agregar una tabla PostGIS

En este ejemplo, se agregará una tabla de la base de datos PostGIS creada en el ejemplo anterior como tipos de características.Este ejemplo supone que la tabla ya se ha creado.

A continuación se agrega la tablabuildingscomo un nuevo tipo de característica:

Nota

Cada bloque de código a continuación contiene un único comando que puede extenderse a varias líneas.

curl -v -u admin:geoserver -XPOST -H "Tipo de contenido: texto/xml" -d "<featureType><name>edificios</name></featureType>" http://localhost:8080/geoserver/ descanso/espacios de trabajo/acme/datastores/nyc/featuretypes

La información del tipo de característica se puede recuperar como XML con una solicitud GET:

curl -v -u admin:geoserver -XGET http://localhost:8080/geoserver/rest/workspaces/acme/datastores/nyc/featuretypes/buildings.xml

Esta capa se puede ver con una solicitud WMS GetMap:

http://localhost:8080/geoserver/wms/reflect?layers=acme:edificios

Creando una tabla PostGIS

En el ejemplo anterior, se agregó un nuevo tipo de característica basado en una tabla PostGIS que ya existía en la base de datos.El siguiente ejemplo no solo creará un nuevo tipo de entidad en GeoServer, sino que también creará la propia tabla PostGIS.

Cree un nuevo archivo de texto y agréguele el siguiente contenido.Esto representará la definición del nuevo tipo de característica y tabla.Guarde el archivo comoannotations.xml.

<featureType>

<nombre> anotaciones </nombre>

<nativeName> anotaciones </nativeName>

<título> Anotaciones </ título>

<srs> EPSG:4326 </srs>

<atributos>

<atributo>

<nombre> the_geom </nombre >

<binding> com.vividsolutions.jts.geom.Point </binding>

</attribute>

<atributo>

<nombre> descripción </nombre>

<binding> java.lang.String </binding>

</attribute>

<atributo >

<nombre> marca de tiempo </nombre>

<binding> java.util.Date </binding>

</attribute>

</attributes> </featureType>

Esta solicitud realizará la creación del tipo de característica y agregará la nueva tabla:

Nota

Cada bloque de código a continuación contiene un único comando que puede extenderse a varias líneas.

curl -v -u admin:geoserver -XPOST -T annotations.xml -H "Tipo de contenido: texto/xml" http://localhost:8080/geoserver/rest/workspaces/acme/datastores/nyc/featuretypes

El resultado es una tabla nueva y vacía llamada "anotaciones" en la base de datos "nyc", completamente configurada como un tipo de característica.

La información del tipo de característica se puede recuperar como XML con una solicitud GET:

curl -v -u admin:geoserver -XGET http://localhost:8080/geoserver/rest/workspaces/acme/datastores/nyc/featuretypes/annotations.xml

Creando un grupo de capas

En este ejemplo, se creará un grupo de capas basado en capas que ya existen en el servidor.

Cree un nuevo archivo de texto y agréguele el siguiente contenido.Este archivo representará la definición del nuevo grupo de capas.Guarde el archivo comonycLayerGroup.xml.

<layerGroup>

<name> nyc </name>

<capas>

<capa> carreteras </capa>

<capa> parques </capa>

<capa> edificios </capa>

</capas>

<estilos>

<estilo> carreteras_estilo < /style>

<style> polígono </style>

<style> polígono </style>

</styles> </layerGroup>

La siguiente solicitud crea el nuevo grupo de capas:

Nota

Cada bloque de código a continuación contiene un único comando que puede extenderse a varias líneas.

curl -v -u admin:geoserver -XPOST -d @nycLayerGroup.xml -H "Tipo de contenido: texto/xml" http://localhost:8080/geoserver/rest/layergroups

Nota

El argumento-d@filename.xmlde este ejemplo se utiliza para enviar un archivo como cuerpo de una solicitud HTTP con un método POST.El argumentoutilizado en el ejemplo anterior se utilizó para enviar un archivo como cuerpo de una solicitud HTTP con un método PUT.-Tfilename.xml

Este grupo de capas se puede ver con una solicitud WMS GetMap:

http://localhost:8080/geoserver/wms/reflect?layers=nyc

Recuperar versiones de componentes

Este ejemplo muestra cómo recuperar las versiones de los componentes principales: GeoServer, GeoTools y GeoWebCache:

Nota

El siguiente bloque de código contiene un único comando que se extiende a varias líneas.

curl -v -u admin:geoserver -XGET -H "Aceptar: texto/xml" http://localhost:8080/geoserver/rest/about/version.xml

La respuesta se verá así:

<about>

<resource name= "GeoServer" >

<Build-Timestamp> 11-dic-2012 17:55 </Build-Timestamp>

<Git-Revision> e66f8da85521f73d0fd00b71331069a5f49f7865 </Git-Revision>

<Version> 2.3-SNAPSHOT </ Versión>

</resource>

<resource name= "GeoTools" >

<Build-Timestamp> 04-dic-2012 02:31 </Build-Timestamp>

<Git-Revision> 380a2b8545ee9221f1f2d38a4f10ef77a23bccae </Git-Revision>

<Versión> 9- INSTANTÁNEA </Version>

</resource>

<resource name= "GeoWebCache" >

<Git-Revision> 2a534f91f6b99e5120a9eaa5db62df771dd01688 </Git-Revision>

<Version> 1.3-SNAPSHOT </Version>

</resource> </about>

Recuperando manifiestos

Esta colección de ejemplos muestra cómo recuperar el manifiesto completo y los subconjuntos del manifiesto tal como los conoce el ClassLoader.

Nota

El siguiente bloque de código contiene un único comando que se extiende a varias líneas.

curl -v -u admin:geoserver -XGET -H "Aceptar: texto/xml" http://localhost:8080/geoserver/rest/about/manifest.xml

El resultado será una lista muy larga de información manifiesta.Si bien esto puede resultar útil, a menudo es conveniente filtrar esta lista.

Filtrar por nombre de recurso

Es posible filtrar los nombres de los recursos utilizando expresiones regulares.Este ejemplo recuperará solo recursos donde elnameatributo coincidagwc-.*:

Nota

El siguiente bloque de código contiene un único comando que se extiende a varias líneas.

curl -v -u admin:geoserver -XGET -H "Aceptar: texto/xml" http://localhost:8080/geoserver/rest/about/manifest.xml?manifest=gwc-.*

El resultado se verá así (editado para mayor brevedad):

<acerca de>

< nombre del recurso= "gwc-2.3.0" >

...

</resource>

<resource name= "gwc-core-1.4.0" >

...

</resource>

<resource name= "gwc-diskquota-core-1.4.0" >

...

</resource>

<resource name= "gwc-diskquota-jdbc-1.4.0" >

...

</resource>

<resource name= "gwc-georss-1.4.0" >

...

</resource>

<resource name= "gwc-gmaps-1.4.0" >

...

</resource>

<resource name= "gwc-kml-1.4.0" >

...

</resource>

<resource name= "gwc-rest-1.4.0" >

...

</resource>

<resource name= "gwc-tms-1.4.0" >

...

</resource>

<resource name= "gwc-ve-1.4.0" >

...

</resource>

<resource name= "gwc-wms-1.4.0" >

...

</resource>

<resource name= "gwc-wmts-1.4.0" >

...

</recurso> </acerca de>

Filtrar propiedades de recursos

El filtrado también está disponible sobre las propiedades de los recursos resultantes.Este ejemplo recuperará sólo recursos con una propiedad igual aGeoServerModule.

Nota

Los bloques de código siguientes contienen un único comando que se extiende a varias líneas.

curl -u admin:geoserver -XGET -H "Aceptar: texto/xml" http://localhost:8080/geoserver/rest/about/manifest.xml?key=GeoServerModule

El resultado se verá así (editado para mayor brevedad):

<acerca de>

< nombre del recurso= "control-flow-2.3.0" >

extensión <GeoServerModule> </GeoServerModule>

...

</recurso>

...

< nombre del recurso= "wms-2.3.0" >

<GeoServerModule> núcleo </GeoServerModule>

...

</recurso> </acerca de>

También es posible filtrar tanto por propiedad como por valor.Para recuperar solo recursos donde una propiedad nombradaGeoServerModuletiene un valor igual aextension, agregue a la solicitud anterior&value=extension:

curl -u admin:geoserver -XGET -H "Aceptar: texto/xml" http://localhost:8080/geoserver/rest/about/manifest.xml?key=GeoServerModule&value=extension

Cargar y modificar un mosaico de imágenes

El siguiente comando carga un archivo zip que contiene la definición de un mosaico (junto con al menos un gránulo del mosaico para inicializar las resoluciones, vistas generales y similares) y configurará todas las coberturas en él como nuevas capas.

Nota

Los bloques de código siguientes contienen un único comando que se extiende a varias líneas.

curl -u admin:geoserver -XPUT -H "Tipo de contenido: aplicación/zip" --data-binary @polyphemus.zip http://localhost:8080/geoserver/rest/workspaces/topp/coveragestores/polyphemus/file. mosaico de imágenes

En cambio, lo siguiente le indica al mosaico que recopile (o vuelva a recolectar) un único archivo en el mosaico, recopilando sus propiedades y actualizando el índice del mosaico:

curl -v -u admin:geoserver -XPOST -H "Tipo de contenido: texto/plain" -d "file:///path/to/the/file/polyphemus_20130302.nc" "http://localhost:8080/ geoserver/rest/workspaces/topp/coveragestores/poly-incremental/external.imagemosaic"

La recolección también se puede dirigir a un directorio completo, de la siguiente manera:

curl -v -u admin:geoserver -XPOST -H "Tipo de contenido: texto/plain" -d "archivo:///ruta/al/mosaico/carpeta" "http://localhost:8080/geoserver/ resto/espacios de trabajo/topp/coveragestores/poly-incremental/external.imagemosaic"

La estructura del índice del mosaico de imágenes se puede recuperar usando algo como:

curl -v -u admin:geoserver -XGET "http://localhost:8080/geoserver/rest/workspaces/topp/coveragestores/polyphemus-v1/coverages/NO2/index.xml"

lo que resultará en lo siguiente:

<Esquema>

<atributos>

<Atributo>

<nombre>la_geoma</nombre>

<minOcurre>0</minOcurre>

<maxOccurs>1</maxOccurs>

<nillable>verdadero</nillable>

<binding>com.vividsolutions.jts.geom.Polygon</binding>

</Atributo>

<Atributo>

<nombre>ubicación</nombre>

<minOcurre>0</minOcurre>

<maxOccurs>1</maxOccurs>

<nillable>verdadero</nillable>

<binding>java.lang.String</binding>

</Atributo>

<Atributo>

<nombre>índice de imágenes</nombre>

<minOcurre>0</minOcurre>

<maxOccurs>1</maxOccurs>

<nillable>verdadero</nillable>

<binding>java.lang.Integer</binding>

</Atributo>

<Atributo>

<nombre>hora</nombre>

<minOcurre>0</minOcurre>

<maxOccurs>1</maxOccurs>

<nillable>verdadero</nillable>

<binding>java.sql.Marca de tiempo</binding>

</Atributo>

<Atributo>

<nombre>elevación</nombre>

<minOcurre>0</minOcurre>

<maxOccurs>1</maxOccurs>

<nillable>verdadero</nillable>

<binding>java.lang.Double</binding>

</Atributo>

<Atributo>

<nombre>fechaarchivo</nombre>

<minOcurre>0</minOcurre>

<maxOccurs>1</maxOccurs>

<nillable>verdadero</nillable>

<binding>java.sql.Marca de tiempo</binding>

</Atributo>

<Atributo>

<nombre>actualizado</nombre>

<minOcurre>0</minOcurre>

<maxOccurs>1</maxOccurs>

<nillable>verdadero</nillable>

<binding>java.sql.Marca de tiempo</binding>

</Atributo>

</atributos>

<atom:link xmlns:atom="http://www.w3.org/2005/Atom" rel="alternate" href="http://localhost:8080/geoserver/rest/workspaces/topp/coveragestores/polyphemus -v1/coberturas/NO2/index/granules.xml" tipo="aplicación/xml"/>

</Esquema>

La lista de gránulos existentes se puede realizar de la siguiente manera:

curl -v -u admin:geoserver -XGET "http://localhost:8080/geoserver/rest/workspaces/topp/coveragestores/polyphemus-v1/coverages/NO2/index/granules.xml?limit=2"

Esto dará como resultado una descripción GML de los gránulos, como sigue:

<?xml versión="1.0" codificación="UTF-8"?> <wfs:FeatureCollection xmlns:gf= "http://www.geoserver.org/rest/granules" xmlns:ogc= "http://www .opengis.net/ogc" xmlns:wfs= "http://www.opengis.net/wfs" xmlns:gml= "http://www.opengis.net/gml" >

<gml:boundedBy>

<gml: Caja srsName= "http://www.opengis.net/gml/srs/epsg.xml#4326" >

<gml:coord>

<gml:X> 5.0 </gml:X>

<gml:Y> 45.0 </ gml:Y>

</gml:coord>

<gml:coord>

<gml:X> 14,875 </gml:X>

<gml:Y> 50,9375 </gml:Y>

</gml:coord> <

/gml:Box >

</gml:boundedBy>

<gml:featureMember>

<gf:NO2 fid= "NO2.1" >

<gf:the_geom>

<gml:Polygon>

<gml:outerBoundaryIs> <gml

:LinearRing> <

gml:coordinates> 5.0 ,45.0 5.0,50.9375 14.875,50.9375 14.875,45.0 5.0,45.0 </gml:coordinates>

</gml:LinearRing>

</gml:outerBoundaryIs>

</gml:Polygon>

</gf:the_geom>

<gf:location> polyphemus_20130301 .nc </gf:ubicación>

<gf:imageindex> 336 </gf:imageindex>

<gf:time> 2013-03-01T00:00:00Z </gf:time>

<gf:elevation> 10.0 </gf: elevación>

<gf:fileDate> 2013-03-01T00:00:00Z </gf:fileDate>

<gf:updated> 2013-04-11T10:54:31Z </gf:updated>

</gf:NO2>

</ gml:featureMember>

<gml:featureMember>

<gf:NO2 fid= "NO2.2" >

<gf:the_geom>

<gml:Polygon>

<gml:outerBoundaryIs>

<gml:LinearRing>

<gml:coordenadas> 5.0,45.0 5.0 < _

_

_

_

_

_ _ _ /gf:ubicación>

<gf:imageindex> 337 </gf:imageindex>

<gf:time> 2013-03-01T00:00:00Z </gf:time>

<gf:elevación> 35.0 </gf:elevation>

<gf:fileDate> 2013-03-01T00:00:00Z </gf:fileDate>

<gf:updated> 2013-04-11T10:54:31Z </gf:updated>

< /gf:NO2>

</gml:featureMember> </wfs:FeatureCollection>

La eliminación de todos los gránulos que se originan en un archivo en particular (un archivo NetCDF puede contener muchos) se puede hacer de la siguiente manera:

curl -v -u admin:geoserver -XDELETE "http://localhost:8080/geoserver/rest/workspaces/topp/coveragestores/polyphemus-v1/coverages/NO2/index/granules.xml?filter=location='polyphemus_20130301. Carolina del Norte'"

Creando un mosaico vacío y cosechando gránulos.

El siguiente comando carga unempty.ziparchivo.Este archivo contiene la definición de un mosaico vacío (sin gránulos en este caso) a través de los siguientes archivos:

datastore.properties (los parámetros de conexión del almacén de datos de Postgis)

indexer.xml (El indexador de mosaico, tenga en cuenta el parámetro CanBeEmpty=true)

polyphemus-test.xml (el archivo auxiliar utilizado por el lector NetCDF para analizar esquemas y tablas)

Nota

Asegúrese de actualizar el archivo datastore.propertiescon sus parámetros de conexión y actualice el zip cuando haya terminado, antes de cargarlo.

Nota

Los bloques de código siguientes contienen un único comando que se extiende a varias líneas.

Nota

El parámetro configure=none permite una configuración futura después de la recolección

curl -u admin:geoserver -XPUT -H "Tipo de contenido: aplicación/zip" --data-binary @empty.zip http://localhost:8080/geoserver/rest/workspaces/topp/coveragestores/empty/file. mosaico de imagen?configure=ninguno

En cambio, lo siguiente le indica al mosaico que recopile un únicopolyphemus_20120401.ncarchivo en el mosaico, recopile sus propiedades y actualice el índice del mosaico:

curl -v -u admin:geoserver -XPOST -H "Tipo de contenido: texto/plain" -d "file:///path/to/the/file/polyphemus_20120401.nc" "http://localhost:8080/ geoserver/rest/workspaces/topp/coveragestores/empty/external.imagemosaic"

Una vez hecho esto, podrá obtener la lista de coberturas/gránulos disponibles en esa tienda.

curl -v -u admin:geoserver -XGET "http://localhost:8080/geoserver/rest/workspaces/topp/coveragestores/empty/coverages.xml?list=all"

lo que resultará en lo siguiente:

<lista>

<nombredecobertura>NO2</nombredecobertura>

<nombredecobertura>O3</nombredecobertura>

</lista>

El siguiente paso es configurar ONCE para cobertura (como instancia NO2), una cobertura disponible.

curl -v -u admin:geoserver -XPOST -H "Tipo de contenido: texto/xm" -d @"/path/to/coverageconfig.xml" "http://localhost:8080/geoserver/rest/workspaces/topp /tiendasdecoberturas/vacío/coberturas"

Donde coverconfig.xml puede verse así

<cobertura>

<nombre>NO2</nombre>

</cobertura>

Nota

Al especificar solo el nombre de la cobertura, la cobertura se configurará automáticamente

Cambio de contraseña maestra

La contraseña maestra se puede recuperar con una solicitud GET.

curl -v -u admin:geoserver -XGET http://localhost:8080/geoserver/rest/security/masterpw.xml

Una contraseña maestra generada puede ser-“}3a^Kh.El siguiente paso es crear un archivo XML.

Cambios de archivo.xml

<contraseña maestra

> <contraseña maestra antigua> -"}3a^Kh < /contraseña maestra antigua> <

contraseña maestra nueva> geoserver1 </ contraseña maestra nueva> </contraseña maestra>

Cambiar la contraseña maestra usando el archivo:

curl -v -u admin:geoserver -XPUT -H "Tipo de contenido: texto/xml" -d @change.xml http://localhost:8080/geoserver/rest/security/masterpw.xml

Cambiar el modo de catálogo

Obtenga el modo de catálogo actual con una solicitud GET

curl -v -u admin:geoserver -XGET http://localhost:8080/geoserver/rest/security/acl/catalog.xml

<?xml versión="1.0" codificación="UTF-8"?> <catalogo>

<modo> OCULTAR </modo> </catalog>

Crear un archivo newMode.xml

<?xml versión="1.0" codificación="UTF-8"?> <catalogo>

<modo> MIXTO </modo> </catalog>

Cambie el modo de catálogo usando el archivo (consulte con la solicitud GET después de modificarlo)

curl -v -u admin:geoserver -XPUT -H "Tipo de contenido: texto/xml" -d @newMode.xml http://localhost:8080/geoserver/rest/security/acl/catalog.xml

Trabajar con reglas de control de acceso

Obtener todas las reglas actuales para capas

curl -v -u admin:geoserver -XGET http://localhost:8080/geoserver/rest/security/acl/layers.xml

<?xml versión="1.0" codificación="UTF-8"?> <reglas />

No se especifican reglas.Crear un archivo reglas.xml

<?xml versión="1.0" codificación="UTF-8"?> <reglas>

<rule recurso= "topp.*.r" > * </rule>

<rule recurso= "topp.mylayer.w" > * </rule> </rules>

Agregue las reglas (consulte con la solicitud GET después de agregarlas).

curl -v -u admin:geoserver -XPOST -H "Tipo de contenido: texto/xml" -d @rules.xml http://localhost:8080/geoserver/rest/security/acl/layers.xml

Modifique los archivos reglas.xml:

<?xml versión="1.0" codificación="UTF-8"?> <reglas>

<regla recurso= "topp.*.r" > ROLE_AUTHORIZED </regla>

<regla recurso= "topp.mylayer.w" > ROLE_1 ,ROLE_2 </rule> </rules>

Modifique las reglas (consulte con la solicitud GET después de modificarlas).

curl -v -u admin:geoserver -XPUT -H "Tipo de contenido: texto/xml" -d @rules.xml http://localhost:8080/geoserver/rest/security/acl/layers.xml

Elimine las reglas individualmente (consulte con la solicitud GET después de eliminarlas)

curl -v -u admin:geoserver -XDELETE http://localhost:8080/geoserver/rest/security/acl/layers/topp.*.r curl -v -u admin:geoserver -XDELETE http://localhost:8080 /geoserver/rest/security/acl/layers/topp.mylayer.w


PHP

Los ejemplos de esta sección utilizan el lenguaje de programación del lado del servidorPHP, un lenguaje popular para páginas web dinámicas.PHP tienefunciones cURL, así comofunciones XML, lo que lo convierte en un método conveniente para realizar procesamiento por lotes a través de la interfaz REST de Geoserver.Los siguientes scripts ejecutan solicitudes únicas, pero se pueden modificar fácilmente con estructuras de bucle para realizar procesamiento por lotes.

PUBLICAR con PHP/cURL

El siguiente script intenta agregar un nuevo espacio de trabajo.

<?php

// Abrir el archivo de registro

$logfh = fopen ( "GeoserverPHP.log" , 'w' ) o die ( "no se puede abrir el archivo de registro" );

// Iniciar sesión cURL

$service = "http://localhost:8080/geoserver/" ; // reemplazar con su URL

$request = "rest/workspaces" ; // para agregar un nuevo espacio de trabajo

$url = $servicio . $solicitud ;

$ch = curl_init ( $url );

// Configuraciones opcionales para depurar

curl_setopt ( $ch , CURLOPT_RETURNTRANSFER , true ); //opción para devolver la cadena

curl_setopt ( $ch , CURLOPT_VERBOSE , verdadero );

curl_setopt ( $ch , CURLOPT_STDERR , $logfh ); // registra mensajes curl

//Configuración de solicitud POST requerida

curl_setopt ( $ch , CURLOPT_POST , True );

$contraseñaStr = "admin:geoserver" ; // reemplazar con su nombre de usuario: contraseña

curl_setopt ( $ch , CURLOPT_USERPWD , $passwordStr );

//POST datos

curl_setopt ( $ch , CURLOPT_HTTPHEADER ,

matriz ( "Tipo de contenido: aplicación/xml" ));

$xmlStr = "<espacio de trabajo><nombre>test_ws</nombre></espacio de trabajo>" ;

curl_setopt ( $ch , CURLOPT_POSTFIELDS , $xmlStr );

//POST código de retorno

$successCode = 201 ;

$buffer = curl_exec ( $ch ); // Ejecutar la solicitud curl

// Comprobar errores y procesar resultados

$info = curl_getinfo ( $ch );

if ( $info [ 'http_code' ] != $successCode ) {

$msgStr = "# Solicitud de cURL fallida a " ;

$msgStr .= $url . "[" . $info [ 'código_http' ] . "] \n " ;

escribir ( $logfh , $msgStr );

} else {

$msgStr = "# Solicitud de cURL exitosa para " . $url . " \n " ;

escribir ( $logfh , $msgStr );

}

fwrite ( $logfh , $buffer . " \n " );

curl_close ( $ch ); // recursos libres si el identificador curl no se reutilizará

fclose ( $logfh ); // cerrar el archivo de registro?>

El archivo de registro debería verse así:

* A punto de conectarse() al puerto 80 (#0) de www.example.com

* Probando 123.456.78.90... * conectado

* Conectado a www.example.com (123.456.78.90) puerto 80 (#0)

* Autenticación del servidor usando Basic con el usuario 'admin'

> POST /geoserver/rest/espacios de trabajo HTTP/1.1

Autorización: Básico sDsdfjkLDFOIedlsdkfj

Anfitrión: www.ejemplo.com

Aceptar: */*

Tipo de contenido: aplicación/xml

Longitud del contenido: 43

< HTTP/1.1 201 Creado

< Fecha: viernes, 21 de mayo de 2010 15:44:47 GMT

< Servidor: Apache-Coyote/1.1

<Ubicación: http://www.example.com/geoserver/rest/workspaces/test_ws

< Longitud del contenido: 0

< Tipo de contenido: texto/sin formato

<

* La conexión n.° 0 para alojar www.example.com se dejó intacta

# Solicitud de cURL exitosa a http://www.example.com/geoserver/rest/workspaces

*Cerrando conexión #0

Si la solicitud de cURL falla, se devolverá un código distinto de 201.A continuación se muestran algunos valores posibles:

Código

Significado

0

No se pudo resolver el host;posiblemente un error tipográfico en el nombre del host

201

PUBLICACIÓN exitosa

30x

Redirigir;posiblemente un error tipográfico en la URL

401

usuario o contraseña invalido

405

Método no permitido: verifique la sintaxis de la solicitud

500

Geoserver no puede procesar la solicitud, por ejemplo, el espacio de trabajo ya existe, el xml tiene un formato incorrecto,...

Para otros códigos, consulteCódigos de error de cURLyCódigos HTTP.

OBTENER con PHP/cURL

El script anterior se puede modificar para realizar una solicitud GET para obtener los nombres de todos los espacios de trabajo reemplazando los bloques de código para las configuraciones, los datos y el código de retorno requeridos con lo siguiente:

<?php

// Configuración de solicitud GET requerida

// curl_setopt($ch, CURLOPT_GET, True); // CURLOPT_GET es Verdadero por defecto

// OBTENER datos

curl_setopt ( $ch , CURLOPT_HTTPHEADER , matriz ( "Aceptar: aplicación/xml" ));

//OBTENER el código de retorno

$successCode = 200 ; ?>

El archivo de registro ahora debería incluir líneas como:

> OBTENER /geoserver/rest/espacios de trabajo HTTP/1.1

<HTTP/1.1 200 Aceptar

ELIMINAR con PHP/cURL

Para eliminar el espacio de trabajo (vacío) que acabamos de crear, el script se modifica de la siguiente manera:

<?php

$request = "descanso/espacios de trabajo/test_ws" ; // ¿eliminar este espacio de trabajo ?>

<?php

// Configuración de solicitud ELIMINAR requerida

curl_setopt ( $ch , CURLOPT_CUSTOMREQUEST , "DELETE" );

$contraseñaStr = "admin:geoserver" ; // reemplazar con su nombre de usuario: contraseña

curl_setopt ( $ch , CURLOPT_USERPWD , $passwordStr );

//BORRAR datos

curl_setopt ( $ch , CURLOPT_HTTPHEADER ,

matriz ( "Tipo de contenido: aplicación/atom+xml" ));

//BORRAR código de retorno

$successCode = 200 ; ?>

El archivo de registro incluirá líneas como:

> ELIMINAR /geoserver/rest/workspaces/test_ws HTTP/1.1

<HTTP/1.1 200 Aceptar


Pitón

Estamos buscando voluntarios para completar esta sección con ejemplos.

Mientras tanto, cualquiera que quiera realizar scripts en Python de la API de configuración REST de GeoServer debería usargsconfig.py.Es bastante capaz y se utiliza en producción como parte deGeoNode, por lo que se pueden encontrar ejemplos en ese código base.Actualmente carece de documentación y ejemplos.


Java

Estamos buscando voluntarios para completar esta sección con ejemplos.

Mientras tanto, cualquiera que quiera realizar scripts Java de la API REST de GeoServer debería utilizarGeoServer Manager, una biblioteca cliente REST con dependencias mínimas de bibliotecas externas.

Otra opción esgsrcj.Este proyecto es un cliente REST de GeoServer escrito en Java sin dependencias adicionales de GeoServer/GeoTools, a diferencia del módulo REST estándar de GeoServer.El proyecto tiene documentación mínima, pero incluye uninicio rápido.


Rubí

Los ejemplos de esta sección utilizanrest-client, un cliente REST para Ruby.También hay un cliente REST específico de GeoServer en Ruby:RGeoServer.

Una vez instalado en un sistema,rest-clientse puede incluir en un script Ruby agregando.require'rest-client'

OBTENER y PONER configuraciones

Este ejemplo muestra cómo leer la configuración usando GET, realizar un cambio y luego usar PUT para escribir el cambio en el servidor.

requiere 'json'

requerir 'cliente de descanso'

URL = 'http://admin:geoserver@localhost:8080/geoserver/rest/'

# obtener la configuración y analizar el JSON en un Hash

json_text = RestClient.get(url + 'configuración.json')

configuración = JSON.parse(json_text)

# configuraciones se pueden encontrar con las teclas apropiadas

configuración_global = configuración["global"]

configuración_jai = configuración_global["jai"]

# cambiar un valor

jai_settings["allowInterpolation"] = verdadero

# devolver los cambios al servidor

RestClient.put(url + 'configuración, configuración.to_json, :content_type => :json)


Configuración avanzada de GeoServer

GeoServer ofrece una variedad de opciones para personalizar su servicio para diferentes situaciones.Si bien ninguna de las opciones de configuración analizadas en esta sección es necesaria para una instalación básica de GeoServer, le permiten adaptar su GeoServer a sus propias necesidades, más allá de las opciones expuestas en los servicios estándar de OGC.

Manejo del sistema de referencia de coordenadas

Configuración del sistema de referencia de coordenadas

Definiciones CRS personalizadas

Coordinar operaciones

Editar manualmente la base de datos EPSG

Configuración de registro avanzada

Perfiles de registro personalizados

Anulación de la configuración de la ubicación del registro en la configuración de GeoServer

Obligar a GeoServer a renunciar al control de Log4J

Obligar a GeoServer a utilizar una redirección de registro alternativa

Decoraciones WMS

Configuración

Tipos de decoración

Ejemplo


Manejo del sistema de referencia de coordenadas

Esta sección describe cómo se manejan los sistemas de referencia de coordenadas (CRS) en GeoServer, así como qué se puede hacer para ampliar las capacidades de manejo de CRS de GeoServer.

Configuración del sistema de referencia de coordenadas

Aumento de la tolerancia de comparación

Definiciones CRS personalizadas

Agregar un CRS personalizado

Anular un código EPSG oficial

Coordinar operaciones

Consola de reproyección

Agregar archivos de transformación de desplazamiento de cuadrícula

Definir una operación de coordenadas personalizada

Editar manualmente la base de datos EPSG


Configuración del sistema de referencia de coordenadas

Al agregar datos, GeoServer intenta inspeccionar los encabezados de datos en busca de un código EPSG:

Si los datos tienen un CRS con un código EPSG explícito y la definición completa de CRS detrás del código coincide con la de GeoServer, el CRS ya estará configurado para los datos.

Si los datos tienen un CRS pero no un código EPSG, puede usar la opciónBuscaren la páginaCapaspara hacer que GeoServer realice una operación de búsqueda en la que los datos CRS se comparan con todos los demás CRS conocidos.Si esto tiene éxito, se seleccionará un código EPSG.El caso común de un CRS que no tiene código EPSG son los archivos de forma cuyo archivo .PRJ contiene una cadena WKT válida sin los identificadores EPSG (ya que son opcionales).

Si no se puede encontrar un código EPSG, entonces los datos no tienen CRS o GeoServer los desconoce.En este caso, existen algunas opciones:

Fuerza el CRS declarado, ignorando el nativo.Esta es la mejor solución si se sabe que el CRS nativo está incorrecto.

Reproyectar del nativo al CRS declarado.Esta es la mejor solución si el CRS nativo es correcto, pero no puede coincidir con un número EPSG.(Una alternativa es agregar un código EPSG personalizado que coincida exactamente con el SRS nativo. Consulte la sección sobreDefiniciones de CRS personalizadaspara obtener más información).

Si sus datos no tienen información CRS nativa, la única opción es especificar/forzar un código EPSG.

Aumento de la tolerancia de comparación

Las comparaciones de números decimales se realizan utilizando una tolerancia de comparación.Esto significa, por ejemplo, que el semieje mayor de un elipsoide es igual al semieje mayor de un elipsoide EPSG candidato solo si su diferencia está dentro de esa tolerancia.El valor predeterminado es 10^-9, aunque se puede cambiar estableciendo una propiedad del sistema Java COMPARISON_TOLERANCE en la JVM de su contenedor para especificar un valor diferente.

Advertencia

El valor predeterminado debe cambiarse solo si conoce casos de uso que requieren una tolerancia más amplia.No lo cambie a menos que sea realmente necesario (consulte el siguiente ejemplo).

Ejemplo

Se sabe que su conjunto de datos de muestra es una proyección LambertConformalConic y el código EPSG relacionado define el valor latitude_of_origin = 25,0.

El complemento coverStore expone detalles de proyección ráster a través de una biblioteca de terceros que proporciona definiciones de parámetros de proyección como números flotantes.

Debido a los cálculos matemáticos subyacentes que se producen en esa biblioteca de terceros, los parámetros de proyección expuestos están sujetos a cierta pérdida de precisión, de modo que la latitud_of_origin proporcionada es algo así como 25.0000012 mientras que todos los demás parámetros coinciden con la definición EPSG.

Observa que el CRS nativo no se reconoce correctamente como el EPSG esperado debido a esa pequeña diferencia en latitude_of_origin

En ese caso podrías considerar aumentar un poco la tolerancia.


Definiciones CRS personalizadas

Agregar un CRS personalizado

Este ejemplo muestra cómo agregar una proyección personalizada en GeoServer.


Los parámetros de proyección deben proporcionarse como una definición WKT (texto conocido).El siguiente ejemplo de código es solo un ejemplo:


PROJCS [ "NAD83 / Austin" ,

GEOGCS [ "NAD83" ,

DATUM [ "North_American_Datum_1983" ,

SPHEROID [ "GRS 1980" , 6378137.0 , 298.257222101 ],

TOWGS84 [ 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0,0 , 0,0 ]],

PRIMEM [ "Greenwich" , 0.0 ],

UNIDAD [ "grado" , 0.017453292519943295 ],

EJE [ "Lon" , ESTE ],

EJE [ "Lat" , NORTE ]],

PROYECCIÓN [ "Lambert_Conformal_Conic_2SP" ],

PARÁMETRO [ "central_meridian" , - 100.333333333333 ],

PARÁMETRO [ "latitude_of_origin" , 29.6666666666667 ],

PARÁMETRO [ "standard_parallel_1" , 31.883333333333297 ],

PARÁMETRO [ "false_easting" , 2296583.333333 ],

PARÁMETRO [ "false_northing" , 9842500.0 ],

PARÁMETRO [ "standard_parallel_2" , 30.1166666666667 ],

UNIDAD [ "m" , 1.0 ],

EJE [ "x" , ESTE ],

EJE [ "y" , NORTE ],

AUTORIDAD [ "EPSG" , "100002" ]]


Nota


Este ejemplo de código ha sido formateado para facilitar su lectura.En su lugar, la información deberá proporcionarse en una sola línea o con caracteres de barra invertida al final de cada línea (excepto la última).



Vaya aluser_projectionsdirectorio dentro de su directorio de datos y abra elepsg.propertiesarchivo.Si este archivo no existe, puede crearlo.



Inserte el código WKT para la proyección al final del archivo (en una sola línea o con caracteres de barra invertida):


100002 = PROJCS [ "NAD83 / Austin" , \

GEOGCS [ "NAD83" , \

DATUM [ "North_American_Datum_1983" , \

SPHEROID [ "GRS 1980" , 6378137.0 , 298.257222101 ], \

TOWGS84 [ 0.0 , 0.0 , 0.0 , 0,0 , 0,0 , 0.0 , 0.0 ]], \

PRIMEM [ "Greenwich" , 0.0 ], \

UNIT [ "grado" , 0.017453292519943295 ], \

AXIS [ "Lon" , EAST ], \

AXIS [ "Lat" , NORTE ]], \

PROJECCIÓN [ "Lambert_Conformal_Conic_2SP" ], \

PARAMETER [ "meridiano_central" , - 100.333333333333 ], \

PARAMETER [ "latitud_de_origen" , 29.66666666666667 ], \

PARAMETER [ "estándar_paralelo_1" , 31.883333333333297 ], \

PARAMETER [ "false_easting" , 2296583.333333 ], \

PARAMETER [ " false_northing" , 9842500.0 ], \

PARAMETER [ "standard_parallel_2" , 30.1166666666667 ], \

UNIT [ "m" , 1.0 ], \

AXIS [ "x" , ESTE ], \

AXIS [ "y" , NORTE ], \

AUTHORITY [ " EPSG" , "100002" ]]


Nota

Tenga en cuenta el número que precede al WKT.Esto determinará el código EPSG.Entonces, en este ejemplo, el código EPSG es 100002.

Guarda el archivo.

Reinicie GeoServer.

Verifique que el CRS se haya analizado correctamente navegando a lapáginaSRS en la Interfaz de administración web.

Si la proyección no figura en la lista, examine los registros en busca de errores.

Anular un código EPSG oficial

En algunas situaciones es necesario anular un código EPSG oficial con una definición personalizada.Un caso común es la necesidad de cambiar los parámetros del TOWGS84 para obtener una mayor precisión de reproyección en áreas específicas.

El subsistema de referenciación de GeoServer comprueba la existencia de otro archivo de propiedades,epsg_overrides.propertiescuyo formato es el mismo queepsg.properties.Cualquier definición contenida enepsg_overrides.propertiesanularáelcódigo EPSG, mientras que las definiciones almacenadas enepsg.proeprtiessolo se puedenagregara la base de datos.

Se debe tener especial cuidado al anular los parámetros de Datum, en particular losparámetrosTOWGS84 .Para asegurarse de que los parámetros de anulación se utilicen realmente, se debe eliminar el código del Datum; de lo contrario, el subsistema de referencia seguirá leyendo la base de datos oficial en busca del mejor método de cambio de Datum (cuadrícula, transformación de 7 o 5 parámetros, transformación afín simple). .

Por ejemplo, si necesita anular los parámetros oficialesTOWGS84de EPSG:23031:

PROJCS [ "ED50 / UTM zona 31N" ,

GEOGCS [ "ED50" ,

DATUM [ "European Datum 1950" ,

SPHEROID [ "International 1924" , 6378388.0 , 297.0 , AUTHORITY [ "EPSG" , "7022" ]],

TOWGS84 [ - 157,89 , - 17,16 , - 78,41 , 2,118 , 2,697 , - 1,434 , - 1,1097046576093785 ],

AUTORIDAD [ "EPSG" , "6230" ]],

PRIMEM [ "Greenwich" , 0,0 , AUTORIDAD [ "EPSG" , "8901" ]] ,

UNIDAD [ "grado" , 0.017453292519943295 ],

EJE [ "longitud geodésica" , ESTE ],

EJE [ "latitud geodésica" , NORTE ],

AUTORIDAD [ "EPSG" , "4230" ]],

PROYECCIÓN [ "Transverse_Mercator" ],

PARÁMETRO [ "meridiano_central" , 3.0 ],

PARÁMETRO [ "latitud_de_origen" , 0.0 ],

PARÁMETRO [ "factor_escala" , 0.9996 ],

PARÁMETRO [ " false_easting" , 500000.0 ],

PARÁMETRO [ "norte_falso" , 0.0 ],

UNIDAD [ "m" , 1.0 ],

EJE [ "Este" , ESTE ],

EJE [ "Norte" , NORTE ],

AUTORIDAD [ "EPSG" , "23031" ]]

Debe escribir lo siguiente (en una sola línea, aquí se informa formateado en varias líneas para facilitar la lectura):

23031=

PROJCS["ED50/UTM zona 31N",

GEOGCS["ED50",

DATUM["Datum europeo 1950",

ESFEROIDE["Internacional 1924", 6378388.0, 297.0, AUTORIDAD["EPSG","7022"]],

TOWGS84[-136.65549, -141.4658, -167.29848, 2.093088, 0.001405, 0.107709, 11.54611],

AUTORIDAD["EPSG","6230"]],

PRIMEM["Greenwich", 0.0, AUTORIDAD["EPSG","8901"]],

UNIDAD["grado", 0.017453292519943295],

EJE["longitud geodésica", ESTE],

EJE["latitud geodésica", NORTE]],

PROYECCIÓN["Transverse_Mercator"],

PARÁMETRO["meridiano_central", 3.0],

PARÁMETRO["latitud_de_origen", 0.0],

PARÁMETRO["factor_escala", 0.9996],

PARÁMETRO["false_easting", 500000.0],

PARÁMETRO["false_northing", 0.0],

UNIDAD["m", 1.0],

EJE["Este", ESTE],

EJE["Norte", NORTE],

AUTORIDAD["EPSG","23031"]]

La definición se ha cambiado en dos lugares, los parámetrosTOWGS84yAUTHORITY["EPSG","4230"]se ha eliminado el código Datum.


Coordinar operaciones

Las operaciones de coordenadas se utilizan para convertir coordenadas de unCRS de origena unCRS de destino.

Si los CRS de origen y de destino se refieren a un dato diferente, se debe aplicar una transformación de dato.Las transformaciones de datos no son exactas, se determinan empíricamente.Para el mismo par de CRS, puede haber muchas transformaciones y versiones de datos, cada una con su propio dominio de validez y un error de transformación asociado.Dado un par CRS, GeoServer seleccionará automáticamente la transformación de datos más precisa de la base de datos EPSG, a menos que se declare una operación personalizada.

Las operaciones de coordenadas se pueden consultar y probar utilizando laConsola de reproyección.

Para habilitar transformaciones de desplazamiento de cuadrícula de mayor precisión, consulteAgregar archivos de transformación de desplazamiento de cuadrícula.

ConsulteDefinir una operación de coordenadas personalizadapara declarar nuevas operaciones.Las operaciones personalizadas tendrán prioridad sobre las EPSG.

Consola de reproyección

La consola de reproyección (enDemos=>Consola de reproyección) permite probar rápidamente las operaciones de coordenadas.Úselo para convertir una coordenada única o geometría WKT y para ver los detalles de la operación que utiliza GeoServer.También es útil aprender con ejemplos cuándo debedefinir una operación de coordenadas personalizada.


Consola de reproyección que muestra detalles de la operación y un par de coordenadas transformadas.

Agregar archivos de transformación de desplazamiento de cuadrícula

GeoServer admite transformaciones de desplazamiento de red NTv2 y NADCON.Los archivos de cuadrícula no se envían con GeoServer.Deben descargarse, normalmente desde el sitio web de su Agencia Nacional de Cartografía.

Advertencia

Los archivos Grid Shift sólo son válidos en el dominio geográfico específico para el que fueron creados;intentar transformar coordenadas fuera de este dominio no dará como resultado ninguna transformación.Asegúrese de que los archivos Grid Shift sean válidos en el área que desea transformar.

Busque losnombres de archivo de cuadrículaen las tablas siguientes, que se extrajeron de EPSG versión 7.9.0.Si necesita utilizar una transformación Grid Shift no declarada en EPSG, deberádefinir una operación de coordenadas personalizada.

Obtenga los archivos de cuadrícula de su Agencia Nacional de Cartografía (NTv2) o delServicio Geodésico Nacional de EE. UU.(NADCON).

Copie los archivos de cuadrícula en eluser_projectionsdirectorio dentro de su directorio de datos.

Utilice laConsola de reproyecciónpara probar la nueva transformación.

Lista de transformaciones de desplazamiento de cuadrícula disponibles

La lista de transformaciones Grid Shift declaradas en EPSG versión 7.9.0 es:

NTv2

Fuente CRS

Objetivo CRS

Nombre del archivo de cuadrícula

Información de la fuente

4122

4326

NB7783v2.gsb

OGP

4122

4326

NS778301.gsb

OGP

4122

4326

PE7783V2.gsb

OGP

4122

4617

NB7783v2.gsb

Manual de normas de información sobre tierras y aguas de la Corporación de Información Geográfica de New Brunswick.

4122

4617

NS778301.gsb

Centro de Geomática de Nueva Escocia: comuníquese conaflemmin @ linux1 . nsgc . gobierno . ns . cao teléfono 902-667-6409

4122

4617

PE7783V2.gsb

Departamento de Transporte y Obras Públicas de PEI

4149

4150

CHENYX06.gsb

Bundesamt für Landestopographie;www.swisstopo.ch

4171

4275

rgf93_ntf.gsb

ESRI

4202

4283

A66 Nacional (13.09.01).gsb

Manual técnico de GDA.http://www.icsm.gov.au/gda

4202

4283

SEAust_21_06_00.gsb

Oficina del Agrimensor General Victoria;http://www.land.vic.gov.au/

4202

4283

nt_0599.gsb

Manual técnico de GDA.http://www.icsm.gov.au/gda

4202

4283

tas_1098.gsb

http://www.delm.tas.gov.au/osg/Geodetic_transform.htm

4202

4283

vic_0799.gsb

Oficina del Agrimensor General Victoria;http://www.land.vic.gov.au/

4202

4326

A66 Nacional (13.09.01).gsb

OGP

4203

4283

Nacional 84 (02.07.01).gsb

Manual técnico de GDA.http://www.icsm.gov.au/gda

4203

4283

wa_0400.gsb

http://www.dola.wa.gov.au/lotl/survey_geodesy/gda1994/download.html

4203

4283

wa_0700.gsb

Departamento de Información Territorial, Gobierno de Australia Occidental;http://www.dola.wa.gov.au/

4203

4326

Nacional 84 (02.07.01).gsb

OGP

4225

4326

CA7072_003.gsb

OGP

4225

4674

CA7072_003.gsb

IBGE.

4230

4258

SPED2ETV2.gsb

Instituto Geográfico Nacional, www.cnig.es

4230

4258

sped2et.gsb

Instituto Geográfico Nacional, www.cnig.es

4230

4326

SPED2ETV2.gsb

OGP

4230

4326

sped2et.gsb

OGP

4258

4275

rgf93_ntf.gsb

OGP

4267

4269

NTv2_0.gsb

http://www.geod.nrcan.gc.ca/products/html-public/GSDapps/English/NTv2_Fact_Sheet.html

4267

4269

QUE27-83.gsb

Servicio Geodésico de Quebec.Contactacon alain . bernardo @ mrn . gobierno . control de calidad . California

4267

4326

NTv2_0.gsb

OGP

4267

4326

QUE27-98.gsb

OGP

4267

4326

SK27-98.gsb

OGP

4267

4617

QUE27-98.gsb

Servicio Geodésico de Quebec.Contactacon alain . bernardo @ mrn . gobierno . control de calidad . California

4267

4617

SK27-98.gsb

Dir Levantamientos Geodésicos;División SaskGeomatics;Compañía de administración de propiedades de Saskatchewan.

4269

4326

AB_CSRS.DAC

OGP

4269

4326

NAD83-98.gsb

OGP

4269

4326

SK83-98.gsb

OGP

4269

4617

AB_CSRS.DAC

Sección de Control Geodésico;Servicio de Tierras y Bosques;Medio Ambiente de Alberta;http://www3.gov.ab.ca/env/land/dos/

4269

4617

NAD83-98.gsb

Servicio Geodésico de Quebec.Contactacon alain . bernardo @ mrn . gobierno . control de calidad . California

4269

4617

SK83-98.gsb

Dir Levantamientos Geodésicos;División SaskGeomatics;Compañía de administración de propiedades de Saskatchewan.

4272

4167

nzgd2kgrid0005.gsb

Información terrestre de Nueva Zelanda: Estándar LINZS25000 para el datum geodésico de Nueva Zelanda 2000;16 de noviembre de 2007.

4272

4326

nzgd2kgrid0005.gsb

OGP

4277

4258

OSTN02_NTv2.gsb

Ordnance Survey de Gran Bretaña,http://www.gps.gov.uk

4277

4326

OSTN02_NTv2.gsb

OGP

4314

4258

BETA2007.gsb

BKG a través de EuroGeographicshttp://crs.bkg.bund.de/crs-eu/

4314

4326

BETA2007.gsb

OGP

4326

4275

rgf93_ntf.gsb

OGP

4608

4269

may76v20.gsb

Estudio geodésico de Canadáhttp://www.geod.nrcan.gc.ca/

4608

4326

may76v20.gsb

OGP

4609

4269

CGQ77-83.gsb

Servicio Geodésico de Quebec.Contactacon alain . bernardo @ mrn . gobierno . control de calidad . California

4609

4326

CGQ77-98.gsb

OGP

4609

4617

CGQ77-98.gsb

Servicio Geodésico de Quebec.Contactacon alain . bernardo @ mrn . gobierno . control de calidad . California

4618

4326

SAD69_003.gsb

OGP

4618

4674

SAD69_003.gsb

IBGE.

4745

4326

BETA2007.gsb

OGP

4746

4326

BETA2007.gsb

OGP

4749

4644

RGNC1991_NEA74Noumea.gsb

ESRI

4749

4662

RGNC1991_IGN72GrandeTerre.gsb

ESRI

5524

4326

CA61_003.gsb

OGP

5524

4674

CA61_003.gsb

IBGE.

5527

4326

SAD96_003.gsb

OGP

5527

4674

SAD96_003.gsb

IBGE.

NADCON

Fuente CRS

Objetivo CRS

Versión

Archivo de cambio de latitud

Archivo de desplazamiento de longitud

4135

4269

NGS-Estados Unidos HI

hawaii.las

hawaii.los

4136

4269

NGS-Estados Unidos AK StL

stlrnc.las

stlrnc.los

4137

4269

NGS-Estados Unidos AK StP

stpaul.las

stpaul.los

4138

4269

NGS-Estados Unidos AK StG

stgeorge.las

stgeorge.los

4139

4269

NGS-PRVI

prvi.las

prvi.los

4169

4152

NGS-Asm E

eshpgn.las

eshpgn.los

4169

4152

NGS-Asm W

wshpgn.las

wshpgn.los

4267

4269

NGS-Estados Unidos AK

alaska.las

alaska.los

4267

4269

NGS-Estados Unidos Conus

conus.las

conus.los

4269

4152

NGS-Estados Unidos AL

alhpgn.las

alhpgn.los

4269

4152

NGS-Usa AR

arhpgn.las

arhpgn.los

4269

4152

NGS-Estados Unidos AZ

azhpgn.las

azhpgn.los

4269

4152

NGS-Estados Unidos CA n

cnhpgn.las

cnhpgn.los

4269

4152

NGS-Estados Unidos CO

cohpgn.las

cohpgn.los

4269

4152

NGS-Usa CA s

cshpgn.las

cshpgn.los

4269

4152

NGS-Usa ID MT e

emhpgn.las

emhpgn.los

4269

4152

NGS-Usa TX e

ethpgn.las

ethpgn.los

4269

4152

NGS-Estados Unidos FL

flhpgn.las

flhpgn.los

4269

4152

NGS-Estados Unidos GA

gahpgn.las

gahpgn.los

4269

4152

NGS-Estados Unidos HI

hihpgn.las

hihpgn.los

4269

4152

NGS-Estados Unidos IA

iahpgn.las

iahpgn.los

4269

4152

NGS-Estados Unidos IL

ilhpgn.las

ilhpgn.los

4269

4152

NGS-Estados Unidos IN

inhpgn.las

inhpgn.los

4269

4152

NGS-Estados Unidos KS

kshpgn.las

kshpgn.los

4269

4152

NGS-Estados Unidos KY

kyhpgn.las

kyhpgn.los

4269

4152

NGS-Estados Unidos LA

lahpgn.las

lahpgn.los

4269

4152

NGS-Usa DE MD

mdhpgn.las

mdhpgn.los

4269

4152

NGS-Usa ME

mehpgn.las

mehpgn.los

4269

4152

NGS-Estados Unidos MI

mihpgn.las

mihpgn.los

4269

4152

NGS-Estados Unidos MN

mnhpgn.las

mnhpgn.los

4269

4152

NGS-Estados Unidos MO

mohpgn.las

mohpgn.los

4269

4152

NGS-Estados Unidos MS

mshpgn.las

mshpgn.los

4269

4152

NGS-Estados Unidos NE

nbhpgn.las

nbhpgn.los

4269

4152

NGS-Estados Unidos NC

nchpgn.las

nchpgn.los

4269

4152

NGS-Estados Unidos ND

ndhpgn.las

ndhpgn.los

4269

4152

NGS-Usa NewEng

nehpgn.las

nehpgn.los

4269

4152

NGS-Estados Unidos NJ

njhpgn.las

njhpgn.los

4269

4152

NGS-Estados Unidos NM

nmhpgn.las

nmhpgn.los

4269

4152

NGS-Usa NV

nvhpgn.las

nvhpgn.los

4269

4152

NGS-Estados Unidos NY

nyhpgn.las

nyhpgn.los

4269

4152

NGS-Estados Unidos OH

ohhpgn.las

ohhpgn.los

4269

4152

NGS-Estados Unidos OK

okhpgn.las

okhpgn.los

4269

4152

NGS-Estados Unidos PA

pahpgn.las

pahpgn.los

4269

4152

NGS-PRVI

pvhpgn.las

pvhpgn.los

4269

4152

NGS-Estados Unidos SC

schpgn.las

schpgn.los

4269

4152

NGS-Usa SD

sdhpgn.las

sdhpgn.los

4269

4152

NGS-Estados Unidos TN

tnhpgn.las

tnhpgn.los

4269

4152

NGS-Estados Unidos UT

uthpgn.las

uthpgn.los

4269

4152

NGS-Estados Unidos VA

vahpgn.las

vahpgn.los

4269

4152

NGS-Estados Unidos WI

wihpgn.las

wihpgn.los

4269

4152

NGS-Usa ID MT w

wmhpgn.las

wmhpgn.los

4269

4152

NGS-Estados Unidos O WA

wohpgn.las

wohpgn.los

4269

4152

NGS-Estados Unidos TX w

wthpgn.las

wthpgn.los

4269

4152

NGS-Estados Unidos WV

wvhpgn.las

wvhpgn.los

4269

4152

NGS-Estados Unidos WY

wyhpgn.las

wyhpgn.los

4675

4152

NGS-Chicle

guhpgn.las

guhpgn.los

Definir una operación de coordenadas personalizada

Las operaciones de coordenadas personalizadas se definen enepsg_operations.propertiesel archivo.Este archivo debe colocarse en eluser_projectionsdirectorio, dentro de su directorio de datos (créelo si no existe).

Cada líneaepsg_operations.propertiesdescribirá una operación de coordenadas que consta de unCRS de origen, unCRS de destinoy una transformación matemática con sus valores de parámetros.Utilice la siguiente sintaxis:

<código crs fuente>,<código crs destino>=<transformación matemática WKT>

La transformación matemática se describe en la sintaxisde texto conocido.Los nombres de los parámetros y los rangos de valores se describen en elRegistro de parámetros geodésicos de EPSG.

Nota

Utilice laConsola de reproyecciónpara aprender de ejemplos y probar sus definiciones personalizadas.

Ejemplos

Archivo NTv2 personalizado:

4230 , 4258 = PARAM_MT [ "NTv2" , \

PARAMETER [ "Archivo de diferencia de latitud y longitud" , "100800401.gsb" ]]

Transformación geocéntrica, precedida por una conversión de elipsoide a geocéntrica y de regreso de geocéntrica a elipsoide.El resultado es una concatenación de tres transformaciones matemáticas:

4230 , 4258 = CONCAT_MT [ PARAM_MT [ "Elipsoide_a_geocéntrico" , \

PARAMETER [ "dim" , 2 ], \

PARAMETER [ "semi_mayor" , 6378388.0 ], \

PARAMETER [ "semi_menor" , 6356911.9461279465 ]], \

PARAM_MT [ "Transformación del vector de posición (dominio geog2D)" , \

PARAMETER [ "dx" , - 116.641 ], \

PARAMETER [ "dy" , - 56.931 ], \

PARAMETER [ "dz" , - 110.559 ], \

PARAMETER [ "ex" , 0.8925078166311858 ], \

PARAMETER [ "ey" , 0.9207660950870382 ], \

PARAMETER [ "ez" , - 0.9166407989620964 ], \

PARAMETER [ "ppm" , - 3.5200000000346066 ]], \

PARAM_MT [ "Geocentric_To_Ellipsoid" , \

PARAMETER [ "oscuro" , 2 ], \

PARÁMETRO [ "semi_mayor" , 6378137.0 ], \

PARÁMETRO [ "semi_menor" , 6356752.314140356 ]]]

Transformación 2D afín que opera directamente en coordenadas proyectadas:

23031 , 25831 = PARAM_MT [ "Affine" , \

PARAMETER [ "num_row" , 3 ], \

PARAMETER [ "num_col" , 3 ], \

PARAMETER [ "elt_0_0" , 1.0000015503712145 ], \

PARAMETER [ "elt_0_1" , 0.00000758 753979846734 ], \

PARAMETER [ "elt_0_2" , - 129.549 ], \

PARAMETER [ "elt_1_0" , - 0.00000758753979846734 ], \

PARAMETER [ "elt_1_1" , 1.0000015503712145 ], \

PARAMETER [ "elt_1_2" , - 2 08.185 ]]

Cada operación se puede describir en una sola línea o se puede dividir en varias líneas para facilitar la lectura, agregando una barra invertida “\” al final de cada línea, como en los ejemplos anteriores.


Editar manualmente la base de datos EPSG

Advertencia

Estas instrucciones son muy avanzadas y están aquí principalmente para los curiosos que desean conocer detalles sobre el subsistema de base de datos EPSG.

Para definir una proyección personalizada, edite el archivo EPSG.sql, que se utiliza para crear la base de datos EPSG en caché.


Navegar alWEB-INF/libdirectorio



Descomprime elgt2-epsg-h.jararchivo.En Linux, el comando es:


tarro xvf gt2-epsg-h.jar



Abrirorg/geotools/referencing/factory/epsg/EPSG.sqlcon un editor de texto.Para agregar una proyección personalizada, estas entradas son esenciales:



Una entrada en la tabla EPSG_COORDINATEREFERENCESYSTEM:


( 41111 , 'WGC 84 / WRF Lambert' , 1324 , 'proyectado' , 4400 , NULL , 4326 , 20000 , NULL , NULL , 'Mapeo a escala nacional de EE. UU.' , 'Ingresado por Alex Petkov' , 'Missoula Firelab WRF' , 'FRM' , '2000-10-19' , '' , 1 , 0 ),


dónde:


1324es el código EPSG_AREA que describe el área cubierta por mi proyección

4400es el código EPSG_COORDINATESYSTEM para mi proyección

20000es la clave EPSG_COORDOPERATIONPARAMVALUE para la matriz que contiene mis parámetros de proyección


Una entrada en la tabla EPSG_COORDOPERATIONPARAMVALUE:


(20000,9802,8821,40,'',9102), //latitud de origen

(20000,9802,8822,-97.0,'',9102), //meridiano central

(20000,9802,8823,33,'',9110), //st paralelo 1

(20000,9802,8824,45,'',9110), //st paralelo 2

(20000,9802,8826,0.0,'',9001), //falso este

(20000,9802,8827,0.0,'',9001) //falso norte


dónde:


9802es la clave EPSG_COORDOPERATIONMETHOD para la fórmula Lambert Conic Conformal (2SP)


Una entrada en la tabla EPSG_COORDOPERATION:


(20000,'WRF Lambert','conversion',NULL,NULL,'',NULL,1324,'Usado para pronóstico del tiempo.',0.0,9802,NULL,NULL,'Usado con el modelo WRF-Chem para pronóstico del tiempo ','Firelab en Missoula, MT','EPSG','2005-11-23','2005.01',1,0)


dónde:


1324es el código EPSG_AREA que describe el área cubierta por mi proyección

9802es la clave EPSG_COORDOPERATIONMETHOD para la fórmula Lambert Conic Conformal (2SP)

Nota

Observa las comas.Si ingresa una línea que está al final de una instrucción INSERT, se omite la coma (asegúrese de que la fila anterior tenga una coma al final).De lo contrario, agregue una coma al final de su entrada.


Después de todas las ediciones, guarde el archivo y salga.



Comprime el archivo gt2-epsg-h.jar.En Linux, el comando es:


jar -Mcvf gt2-epsg-h.jar META-INF org



Elimine la copia en caché de la base de datos EPSG para poder recrearla.En Linux, el comando es:


rm - rf / tmp / Geotools / Bases de datos / HSQL



Reinicie GeoServer.


La nueva proyección se analizará con éxito.Verifique que el CRS se haya analizado correctamente navegando a lapáginaSRS en la Interfaz de administración web.


Configuración de registro avanzada

El subsistema de registro de GeoServer se basa en el registro de Java, que a su vez se redirige de forma predeterminada a Log4J y se controla mediante la configuración de registro actual establecida en laConfiguración global.

La configuración estándar se puede anular de varias maneras para crear perfiles de registro personalizados o para forzar a GeoServer a utilizar otra biblioteca de registro.

Perfiles de registro personalizados

Cualquiera puede escribir un nuevo perfil de registro agregando un archivo de configuración Log4J a la lista de archivos que ya están disponibles en la$GEOSERVER_DATA_DIR/logscarpeta.El nombre del archivo se convertirá en el nombre de la configuración que se muestra en la consola de administración y el contenido impulsará el comportamiento específico del registrador.

A continuación se muestra un ejemplo, tomado de laGEOTOOLS_DEVELOPER_LOGGINGconfiguración, que permite que los mensajes de registro de geotools aparezcan en los registros:

log4j.rootLogger=WARN, archivo de registro de geoserver, salida estándar

log4j.appender.stdout=org.apache.log4j.ConsoleAppender

log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

log4j.appender.stdout.layout.ConversionPattern=%d{dd MMM HH:mm:ss} %p [%c] - %m%n

log4j.category.log4j=FATAL

log4j.appender.geoserverlogfile=org.apache.log4j.RollingFileAppender

# Mantenga tres archivos de respaldo.

log4j.appender.geoserverlogfile.MaxBackupIndex=3

# Patrón de salida: prioridad de fecha [categoría] - mensaje

log4j.appender.geoserverlogfile.layout=org.apache.log4j.PatternLayout

log4j.appender.geoserverlogfile.layout.ConversionPattern=%d %p [%c] - %m%n

log4j.category.org.geotools=RASTREO

# Algunos registradores de geotools más que quizás te interese modificar

log4j.category.org.geotools.factory=TRAZO

log4j.category.org.geotools.renderer=DEPURACIÓN

log4j.category.org.geotools.data=TRAZO

log4j.category.org.geotools.feature=TRAZO

log4j.category.org.geotools.filter=RASTREO

log4j.category.org.geotools.factory=TRAZO

log4j.category.org.geoserver=INFORMACIÓN

log4j.category.org.vfny.geoserver=INFORMACIÓN

log4j.category.org.springframework=ADVERTENCIA

Se puede configurar cualquier configuración personalizada para permitir que paquetes específicos emitan registros en el nivel de registro deseado.Sin embargo, hay algunas reglas a seguir:

la configuración siempre debe incluir ungeoserverlogfileanexo que GeoServer configurará para funcionar con la ubicación configurada en laConfiguración global

Se debe llamar a un registrador que escribe en la salida estándarstdouty nuevamente GeoServer lo habilitará/deshabilitará de acuerdo con la configuración establecida en laConfiguración global.

Es aconsejable, pero no obligatorio, configurar el registro continuo para elgeoserverlogfileappender.

Anulación de la configuración de la ubicación del registro en la configuración de GeoServer

Al configurar un clúster de máquinas GeoServer, es común compartir un único directorio de datos entre todos los nodos del clúster.Sin embargo, hay un problema: todos los nodos terminarían escribiendo los registros en el mismo archivo, lo que causaría varios tipos de problemas dependiendo de las reglas de bloqueo de archivos del sistema operativo (un solo servidor podría escribir, o todos juntos de forma no controlada). manera que resulte en un archivo de registro ilegible).

En este caso, es conveniente establecer una ubicación de registro separada para cada nodo GeoServer configurando el siguiente parámetro entre las variables del sistema JVM, las variables de entorno o los parámetros de contexto del servlet:

GEOSERVER_LOG_LOCATION=<la ubicación del archivo>

Una opción común podría ser utilizar el nombre de la máquina como distinción, estableciendo valores comologs/geoserver_node1.log,logs/geoserver_node2.logetc.: en este caso, todos los archivos de registro aún estarían contenidos en el directorio de datos y rotarían correctamente, pero cada servidor tendría su propio archivo de registro independiente. archivo de registro para escribir.

Obligar a GeoServer a renunciar al control de Log4J

GeoServer anula internamente la configuración de Log4J utilizando la configuración de registro actual como plantilla y aplicando la ubicación del registro y la configuración de salida estándar configurada por el administrador.

Si desea que GeoServer no anule el comportamiento normal de Log4J, puede establecer el siguiente parámetro entre las variables del sistema JVM, las variables de entorno o los parámetros de contexto del servlet:

RELINQUISH_LOG4J_CONTROL = verdadero

Obligar a GeoServer a utilizar una redirección de registro alternativa

GeoServer utiliza el marco de registro GeoTools, que a su vez se basa en el registro de Java, pero permite redirigir todos los mensajes a un marco alternativo elegido por los usuarios.

De forma predeterminada, GeoServer configura una redirección Log4J, pero es posible configurar GeoServer para usar Java Logging simple o Commons Logging (también es posible admitir otros registradores mediante el uso de programación adicional).

Si desea forzar a GeoServer a utilizar un mecanismo de registro diferente, establezca los siguientes parámetros entre las variables del sistema JVM, las variables de entorno o los parámetros de contexto del servlet:

GT2_LOGGING_REDIRECTION = [ JavaLogging , CommonsLogging , Log4J ] RELINQUISH_LOG4J_CONTROL = verdadero

Como se indica en el ejemplo, también deberá exigir que GeoServer no ejerza control sobre la configuración de Log4J.


Decoraciones WMS

Las decoraciones WMS proporcionan un marco para anotar visualmente imágenes de WMS con un posicionamiento absoluto, en lugar de espacial.Ejemplos de decoraciones incluyen brújulas, leyendas y marcas de agua.

Configuración

Para utilizar decoraciones en una solicitudGetMap, el administrador primero debe configurar un diseño de decoración.Estos diseños se almacenan en un subdirectorio llamadolayoutsen eldirectorio de datos de GeoServercomo archivos XML, un archivo por diseño.Cada archivo de diseño debe tener la extensión.xml.Una vez que se define un diseñofoo.xml, los usuarios pueden solicitarlo agregando&format_options=layout:fooa los parámetros de solicitud.

Los archivos de diseño siguen una estructura XML muy simple;un nodo raíz llamado diseño que contiene cualquier número de elementos decorativos.Cada elemento de decoración tiene varios atributos:

Atributo

Significado

type

el tipo de decoración a utilizar (verTipos de decoración)

affinity

la región de la imagen del mapa a la que está anclada la decoración

offset

a qué distancia del punto de anclaje se dibuja la decoración

size

el tamaño máximo para renderizar la decoración.Tenga en cuenta que algunas decoraciones pueden cambiar de tamaño dinámicamente.

Cada elemento de decoración también puede contener un número arbitrario de elementos de opción que proporcionan un nombre y valor de parámetro:

<opción nombre="foo" valor="barra"/>

La interpretación de la opción depende del tipo de decoración utilizada.

Tipos de decoración

Si bien GeoServer permite agregar decoraciones a través de una extensión, hay un conjunto básico de decoraciones incluido en la instalación predeterminada.Estas decoraciones incluyen:

La decoraciónde la imagen(type="image") superpone un archivo de imagen estática en el documento.Si se especifican la altura y el ancho, la imagen se escalará para ajustarse; de ​​lo contrario, la imagen se mostrará en tamaño completo.

Nombre de la opción

Significado

url

proporciona la URL o ruta del archivo a la imagen a dibujar (relativa al directorio de datos de GeoServer)

opacity

un número del 0 al 100 que indica qué tan opaca debe ser la imagen.

La decoración derelación de escala(type="scaleratio") superpone una descripción de texto de la relación de escala del mapa en el documento.

Nombre de la opción

Significado

bgcolor

el color de fondo del texto.admite colores RGB o RGBA especificados como valores hexadecimales.

fgcolor

el color del texto y el borde.sigue la especificación de color de bgcolor.

La decoraciónde la línea de escala(type="scaleline") se superpone a un gráfico que muestra la escala del mapa en unidades mundiales.

Nombre de la opción

Significado

bgcolor

el color de fondo, como se usa en la relación de escala

fgcolor

el color de primer plano, como se usa en escala

fontsize

el tamaño de la fuente a utilizar

transparent

si se establece en verdadero, el fondo y el borde no se pintarán (falso por defecto)

measurement-system"

se puede configurar en "métrico" para mostrar solo unidades métricas, "imperial" para mostrar solo unidades imperiales o "ambos" para mostrar ambas (predeterminado)

Ladecoraciónde la leyendatype="legend"( ) se superpone a un gráfico que contiene leyendas para las capas del mapa.

La decoraciónde texto(type="text") se superpone a un mensaje de texto paramétrico de una sola línea en la parte superior del mapa.Los valores de los parámetros se pueden enviar a través delenvparámetro de solicitud, al igual que los parámetros del entorno SLD.

Nombre de la opción

Significado

message

el mensaje que se mostrará, como texto sin formato o plantilla de Freemarker que puede usar elenvcontenido del mapa para expandir variables

font-family

el nombre de la fuente utilizada para mostrar el mensaje, por ejemplo,Arial, el valor predeterminado esSerif

font-size

el tamaño de la fuente a utilizar (puede tener decimales), por defecto es 12

font-italic

Sitruela fuente será cursiva, el valor predeterminado esfalse

font-bold

sitruela fuente estará en negrita, el valor predeterminado seráfalse

font-color

el color del mensaje, en formato#RRGGBBo#RRGGBBAA, por defecto es negro

halo-radius

el radio de un halo alrededor del mensaje, puede tener decimales, el valor predeterminado es 0

halo-color

el color de relleno del halo, en formato#RRGGBBo#RRGGBBAA, por defecto es blanco

Ejemplo

Un archivo de configuración de diseño podría verse así:

<diseño>

< tipo de decoración= "imagen" afinidad= "abajo, derecha" desplazamiento= "6,6" tamaño= "80,31" >

< nombre de opción= "url" valor= "pbGS_80x31glow.png" />

</ decoración>

< tipo de decoración = "escala" afinidad = "abajo, izquierda" desplazamiento = "36,6" />

< tipo de decoración= "leyenda" afinidad= "arriba, izquierda" desplazamiento= "6,6" tamaño= "auto" /> </diseño>

Utilizado contra la capa de estados de los datos predeterminados de GeoServer, este diseño produce una imagen como la siguiente.


La capa de estados predeterminada, dibujada con el diseño de decoración de arriba.


Seguridad

Esta sección detalla el subsistema de seguridad en GeoServer, que se basa enSpring Security.Para la configuración basada en web, consulte la sección sobreSeguridaden laInterfaz de administración web.

A partir de GeoServer 2.2.0, el subsistema de seguridad ha sido completamente rediseñado, proporcionando un marco de autenticación más seguro y flexible.Esta revisión se basa en gran medida en la tesis de maestría de Christian Müeller tituladaAutenticación flexible para servicios web sin estado.Es una buena lectura para ayudar a comprender muchos de los nuevos conceptos introducidos.

Sistema de roles

Usuarios y grupos

Servicios de usuario/grupo

Roles

Servicios de rol

Fuente de roles y cálculo de roles

Interacción entre usuario/grupo y servicios de rol

Autenticación

Cadena de autenticación

Autenticación en la interfaz de administración web

Autenticación a servicios OWS y REST

Proveedores de autenticación

Contraseñas

Cifrado de contraseña

Claves secretas y el almacén de claves

Contraseña maestra

Políticas de contraseña

cuenta raíz

Seguridad del servicio

servicios OWS

Servicios DESCANSO

Seguridad de capa

Normas

Modo catálogo

Modos de acceso

Ejemplos

Seguridad DESCANSO

Sintaxis

Ejemplos

Deshabilitar la seguridad

Tutoriales

Autenticación con LDAP

Autenticación con LDAP contra ActiveDirectory

Configurar la autenticación implícita

Configuración de la autenticación de certificado X.509

Configurar la autenticación J2EE

Configuración de la autenticación del proxy del encabezado HTTP

Configuración de la integración de sesiones HTTPD de Apache

Autenticación con CAS


Sistema de roles

La seguridad en GeoServer se basa en unsistema basado en roles, con roles creados para cumplir funciones particulares.Ejemplos de roles que tienen una función particular son aquellos que acceden al Servicio de funciones web (WFS), administran laInterfaz de administración weby leen una capa específica.Los roles se asignan a usuarios y grupos de usuarios y determinan qué acciones pueden realizar esos usuarios o grupos.Un usuario está autorizado a través deAutenticación.

Usuarios y grupos

Servicios de usuario/grupo

Servicio de usuario/grupo XML

Servicio de usuario/grupo JDBC

Roles

Servicios de rol

Asignación de roles a roles del sistema

Servicio de rol XML

Servicio de rol J2EE

Servicio de rol JDBC

Servicio de rol LDAP

Fuente de roles y cálculo de roles

Utilizar un servicio de usuario/grupo

Usar un servicio de rol directamente

Usando un atributo de encabezado HTTP

Interacción entre usuario/grupo y servicios de rol

Calcular los roles de un usuario

Autenticación de credenciales de usuario

Valores predeterminados de GeoServer


Usuarios y grupos

La definición deusuariode GeoServer es similar a la de la mayoría de los sistemas de seguridad.Aunque el término correcto en Java esprincipio(un principio es un ser humano, una computadora, un sistema de software, etc.), el términousuariose adopta en toda la documentación de GeoServer.Para cada usuario se mantiene la siguiente información:

Nombre de usuario

Contraseña(opcionalmente almacenada cifrada)

Una bandera que indica si el usuario está habilitado (este es el valor predeterminado).Un usuario discapacitado no puede iniciar sesión.Las sesiones de usuarios existentes no se ven afectadas.

Conjunto de pares clave/valor

Los pares clave/valor son específicos de la implementación y pueden ser configurados por elservicio de usuario/grupoal que pertenece el usuario o grupo.Por ejemplo, un servicio de usuario/grupo que mantiene información sobre un usuario como nombre, dirección de correo electrónico, etc., puede querer asociar esos atributos con el objeto de usuario.

UngrupoGeoServer es simplemente un conjunto de usuarios.Para cada grupo se mantiene la siguiente información:

Nombre del grupo

Una bandera que indica si el grupo está habilitado (este es el valor predeterminado).Un grupo deshabilitado no contribuye al cálculo de roles para todos los usuarios contenidos en este grupo.

Lista de usuarios que pertenecen al grupo


Servicios de usuario/grupo

Unservicio de usuario/grupoproporciona la siguiente información para usuarios y grupos:

Listado de usuarios

Listado de grupos, incluidos los usuarios afiliados a cada grupo.

Contraseñas de usuario

Muchos proveedores de autenticación utilizarán un servicio de usuario/grupo para realizar la autenticación.En este caso, el servicio de usuario/grupo sería la base de datos en la que se autentican los usuarios y las contraseñas.Dependiendo de cómo esté configurada lacadena de autenticación, puede haber cero, uno o varios servicios de usuario/grupo activos en un momento dado.

Un servicio de usuario/grupo puede ser de sólo lectura, proporcionando acceso a la información del usuario pero no permitiendo que se agreguen o modifiquen nuevos usuarios y grupos.Esto puede ocurrir si se configuró un servicio de usuario/grupo para delegar a un servicio externo la base de datos de usuarios y grupos.Un ejemplo de esto sería un servidor LDAP externo.

De forma predeterminada, GeoServer admite dos tipos de servicios de usuario/grupo:

XML:(predeterminado)El servicio de usuario/grupo persiste como XML

JDBC: el servicio de usuario/grupo persiste en la base de datos a través de JDBC

Servicio de usuario/grupo XML

El servicio de usuario/grupo XML conserva la base de datos de usuario/grupo en un archivo XML.Este es el comportamiento predeterminado en GeoServer.Este servicio representa la base de datos del usuario como XML y corresponde a este.XML schema

Nota

El archivo XML de usuario/grupo,users.xmlse encuentra en el directorio de datos de GeoServer,security/usergroup/<name>/users.xmldonde<name>está el nombre del servicio de usuario/grupo.

El siguiente es el contenido queusers.xmlse envía con la configuración predeterminada de GeoServer:

<userRegistry versión= "1.0" xmlns= "http://www.geoserver.org/security/users" >

<usuarios>

<usuario habilitado= "true" nombre= "admin" contraseña= "crypt1:5WK8hBrtrte9wtImg5i5fjnd8VeqCjDB" />

< /usuarios>

<grupos/> </usuarioRegistry>

Esta configuración particular define un único usuarioadminy ningún grupo.De forma predeterminada, las contraseñas de usuario almacenadas se cifran mediante el métodoPBE débil.

Para obtener más información, consulteconfiguración de un servicio de usuario/grupoen lainterfaz de administración web.

Servicio de usuario/grupo JDBC

El servicio de usuario/grupo JDBC conserva la base de datos de usuario/grupo a través de JDBC, administrando la información del usuario en múltiples tablas.El esquema de la base de datos de usuario/grupo es el siguiente:

Tabla: usuarios

Campo

Tipo

Nulo

Llave

nombre

varchar(128)

NO

PRI

contraseña

varchar(254)


activado

carácter(1)

NO



Tabla: user_props

Campo

Tipo

Nulo

Llave

nombre de usuario

varchar(128)

NO

PRI

nombre de propiedad

varchar(64)

NO

PRI

valor prop

varchar(2048)



Tabla: grupos

Campo

Tipo

Nulo

Llave

nombre

varchar(128)

NO

PRI

activado

carácter(1)

NO



Tabla: miembros_grupo

Campo

Tipo

Nulo

Llave

Nombre del grupo

varchar(128)

NO

PRI

nombre de usuario

varchar(128)

NO

PRI

Lauserstabla es la tabla principal y contiene la lista de usuarios con contraseñas asociadas.Lauser_propstabla asigna propiedades adicionales a un usuario.(ConsulteUsuarios y grupospara obtener más detalles). Lagroupstabla enumera todos los grupos disponibles ygroup_membersasigna qué usuarios pertenecen a qué grupos.

La configuración de seguridad predeterminada de GeoServer es:

Tabla: usuarios

nombre

contraseña

activado

Vacío

Vacío

Vacío


Tabla: user_props

nombre de usuario

nombre de propiedad

valor prop

Vacío

Vacío

Vacío


Tabla: grupos

nombre

activado

Vacío

Vacío


Tabla: miembros_grupo

Nombre del grupo

nombre de usuario

Vacío

Vacío

Para obtener más información, consulteconfiguración de un servicio de usuario/grupoen lainterfaz de administración web.


Roles

Los rolesde GeoServerson claves asociadas con la realización de determinadas tareas o el acceso a recursos particulares.Se asignan roles a usuarios y grupos, autorizándolos a realizar las acciones asociadas al rol.Una función de GeoServer incluye lo siguiente:

Nombre de rol

Rol de padre

Conjunto de pares clave/valor

Los roles de GeoServer admiten la herencia: un rol secundario hereda todo el acceso otorgado al rol principal.Por ejemplo, supongamos que tiene un rol denominadoROLE_SECRETy otro rol,ROLE_VERY_SECRETque se extiendeROLE_SECRET.ROLE_VERY_SECRETSe puede acceder a todo loROLE_SECRETque se puede acceder, pero no al revés.

Los pares clave/valor son específicos de la implementación y pueden ser configurados por elservicio de rolal que pertenece el usuario o grupo.Por ejemplo, un servicio de funciones que asigna funciones según la organización de los empleados puede querer asociar información adicional con la función, como el nombre del departamento.

Geoserver tiene varias funciones del sistema, cuyos nombres están reservados.No se permite agregar una nueva función de GeoServer con nombre reservado.

ROLE_ADMINISTRATOR—Proporciona acceso a todas las operaciones y recursos.

ROLE_GROUP_ADMIN—Rol especial para administrar grupos de usuarios.

ROLE_AUTHENTICATED—Asignado a cada usuario que se autentica exitosamente

ROLE_ANONYMOUS—Asignado si la autenticación anónima está habilitada y el usuario no inicia sesión


Servicios de rol

Unservicio de rolesproporciona la siguiente información para los roles:

Lista de roles

Cálculo de asignaciones de roles para un usuario determinado.

Asignación de un rol al rol del sistemaROLE_ADMINISTRATOR

Asignación de un rol al rol del sistemaROLE_GROUP_ADMIN

Cuando un servicio de usuario/grupo carga información sobre un usuario o un grupo, delega al servicio de roles la tarea de determinar qué roles deben asignarse al usuario o grupo.A diferencia delos servicios de usuario/grupo, solo hay un servicio de rol activo en un momento dado.

De forma predeterminada, GeoServer admite dos tipos de servicios de roles:

XML: el servicio de rol(predeterminado)persiste como XML

JDBC: el servicio de rol persistió en una base de datos a través de JDBC

Asignación de roles a roles del sistema

Para asignar la función del sistemaROLE_ADMINISTRATORa un usuario o a un grupo, se debe crear y asignar una nueva función con un nombre diferente a laROLE_ADMINISTRATORfunción.Lo mismo se aplica al rol del sistemaROLE_GROUP_ADMIN.El mapeo se almacena en elconfig.xmlarchivo del servicio.

<roleService>

<id> 471ed59f:13915c479bc:-7ffc </id>

<nombre> predeterminado </nombre>

<nombre de clase > org.geoserver.security.xml.XMLRoleService </nombre de clase> <nombre de archivo> roles.xml <

/ nombre de archivo >

<checkInterval> 10000 </checkInterval>

<validating> true </validating>

<adminRoleName> ADMIN </adminRoleName>

<groupAdminRoleName> GROUP_ADMIN </groupAdminRoleName> </roleService>

En este ejemplo, un usuario o grupo asignado al rolADMINtambién está asignado al rol del sistemaROLE_ADMINISTRATOR.Lo mismo es válido paraGROUP_ADMINyROLE_GROUP_ADMIN.

Servicio de rol XML

El servicio de funciones XML conserva la base de datos de funciones en un archivo XML.Este es el servicio de función predeterminado para GeoServer.Este servicio representa la base de datos del usuario como XML y corresponde a este.XML schema

Nota

El archivo de función XML,roles.xmlse encuentra en el directorio de datos de GeoServer,security/role/<name>/roles.xmldonde<name>está el nombre del servicio de función.

El servicio está configurado para asignar la función localADMINa la función del sistemaROLE_ADMINISTRATOR.Además,GROUP_ADMINestá asignado aROLE_GROUP_ADMIN.El mapeo se almacena en elconfig.xmlarchivo de cada servicio de rol.

A continuación se proporciona una ilustración de loroles.xmlque se incluye con la configuración predeterminada de GeoServer:

<roleRegistry version= "1.0" xmlns= "http://www.geoserver.org/security/roles" >

<roleList>

<role id= "ADMIN" />

<role id= "GROUP_ADMIN" />

</roleList>

<userList>

<userRoles nombre de usuario= "admin" >

<roleRef roleID= "ADMIN" />

</userRoles>

</userList>

<groupList/> </roleRegistry>

Esta configuración contiene dos roles llamadosADMINyGROUP_ADMIN.El rolADMINse asigna aladminusuario.Dado que elADMINrol está asignado al rol del sistemaROLE_ADMINISTRATOR, el cálculo del rol asigna ambos roles aladminusuario.

Para obtener más información, consulteconfiguración de un servicio de funciónen lainterfaz de administración web.

Servicio de rol J2EE

El servicio de roles J2EE analiza los roles delWEB-INF/web.xmlarchivo.Como consecuencia, este servicio es un servicio de función de sólo lectura.Los roles se extraen de los siguientes elementos XML:

<security-role>

<rol-seguridad>

<nombre-rol> rol1 </nombre-rol> </rol-seguridad> <rol-seguridad>

<nombre-rol> rol2 </nombre-rol> </rol-seguridad> <rol-seguridad >

<nombre-rol> empleado </nombre-rol> </rol-seguridad>

Roles recuperados:

role1

role2

employee

<security-constraint>

<restricción-de-seguridad>

<colección-de-recursos-web> <nombre-de-recurso-web>

Área protegida </nombre-de-recurso-web>

<patrón-de -url > /jsp/security/protected/* </ patrón- de-url

> <http -método> PUT </http-método

> <http-método> DELETE </http-método>

<http-método> GET </http-método>

<http-método> POST </ http-método>

</web- colección de recursos>

<constraint-auth>

<nombre-rol> rol1 </nombre-rol>

<nombre-rol> empleado </nombre-rol> </

restricción-auth> </restricción-seguridad>

Roles recuperados:

role1

employee

<security-role-ref>

<security-role-ref>

<role-name> MGR </role-name>

<!-- nombre de rol usado en el código -->

<role-link> empleado </role-link>

</security-role-ref >

Roles recuperados:

MGR

Servicio de rol JDBC

El servicio de funciones JDBC conserva la base de datos de funciones a través de JDBC, gestionando la información de funciones en varias tablas.El esquema de la base de datos de funciones es el siguiente:

Tabla: roles

Campo

Tipo

Nulo

Llave

nombre

varchar(64)

NO

PRI

padre

varchar(64)



Tabla: role_props

Campo

Tipo

Nulo

Llave

nombre de rol

varchar(64)

NO

PRI

nombre de propiedad

varchar(64)

NO

PRI

valor prop

varchar(2048)



Tabla: roles_usuario

Campo

Tipo

Nulo

Llave

nombre de usuario

varchar(128)

NO

PRI

nombre de rol

varchar(64)

NO

PRI


Tabla: roles_grupo

Campo

Tipo

Nulo

Llave

Nombre del grupo

varchar(128)

NO

PRI

nombre de rol

varchar(64)

NO

PRI

Larolestabla es la tabla principal y contiene la lista de roles.Los roles en GeoServer admiten la herencia, por lo que un rol puede tener opcionalmente un vínculo a un rol principal.Larole_propstabla asigna propiedades adicionales a un rol.(Consulte la sección sobreRolespara obtener más detalles). Lauser_rolestabla asigna a los usuarios los roles que se les asignan.De manera similar, lagroup_rolestabla asigna qué grupos han sido asignados a qué roles.

La configuración de seguridad predeterminada de GeoServer es:

Tabla: roles

nombre

padre

Vacío

Vacío


Tabla: role_props

nombre de rol

nombre de propiedad

valor prop

Vacío

Vacío

Vacío


Tabla: roles_usuario

nombre de usuario

nombre de rol

Vacío

Vacío


Tabla: roles_grupo

Nombre del grupo

nombre de rol

Vacío

Vacío

Para obtener más información, consulteconfiguración de un servicio de funciónen lainterfaz de administración web.

Servicio de rol LDAP

El servicio de función LDAP es un servicio de función de solo lectura que asigna grupos de un repositorio LDAP a funciones de GeoServer.

Los grupos se extraen de un nodo LDAP específico, configurado como.Se asigna un rol para cada grupo coincidente.El rol tendrá un nombre que se construye tomando el nombre común del grupo (atributo cn), transformado a mayúsculas y con unprefijo aplicado.GroupssearchbaseROLE_

Es posible filtrar grupos extraídos usando un(el valor predeterminadoes básicamente extraer todos los nodos de la base configurada).También es posible configurar el filtro para(por defecto miembro={0}).Allgroupsfiltercn=*userstorolesmembership

Se puede asignar un grupo específico a las funciones administrativasROLE_ADMINISTRATORy/oROLE_GROUP_ADMINadministrativas.

La extracción de grupos se puede realizar de forma anónima o utilizando un nombre de usuario/contraseña determinado si el repositorio LDAP lo requiere.

Un ejemplo de archivo de configuración (config.xml) para este tipo de servicio de rol es el siguiente:

<org.geoserver.security.ldap.LDAPRoleServiceConfig>

<id> -36dfbd50:1424687f3e0:-8000 </id>

<nombre> ldapacme </nombre>

<className> org.geoserver.security.ldap.LDAPRoleService </className>

< serverURL> ldap://127.0.0.1:10389/dc=acme,dc=org </serverURL>

<groupSearchBase> ou=groups </groupSearchBase>

<groupSearchFilter> member=uid={0},ou=people,dc= acme,dc=org </groupSearchFilter>

<useTLS> false </useTLS>

<bindBeforeGroupSearch> true </bindBeforeGroupSearch>

<adminGroup> ROLE_ADMIN </adminGroup>

<groupAdminGroup> ROLE_ADMIN </groupAdminGroup>

<usuario> uid=bill,ou= personas,dc=acme,dc=org </usuario>

<contraseña> hola </contraseña>

<allGroupsSearchFilter> cn=* </allGroupsSearchFilter> </org.geoserver.security.ldap.LDAPRoleServiceConfig>

Para obtener más información, consulteconfiguración de un servicio de funciónen lainterfaz de administración web.


Fuente de roles y cálculo de roles

Los diferentes mecanismos de autenticación brindan diferentes posibilidades sobre dónde buscar los roles de un principal/usuario.La fuente de roles es la base para el cálculo de los roles asignados al principal autenticado.

Utilizar un servicio de usuario/grupo

Durante la configuración de un mecanismo de autenticación, se debe especificar el nombre de un servicio de grupo de usuarios.El servicio de rol utilizado es siempre el servicio de rol configurado como servicio de rol activo.El cálculo del rol en sí se describe aquí.Interacción entre usuario/grupo y servicios de rol.

Usar un servicio de rol directamente

Durante la configuración de un mecanismo de autenticación, se debe especificar el nombre de un servicio de rol.El cálculo de los roles funciona de la siguiente manera:

Recupera todos los roles del usuario.

Para cada rol en el conjunto de resultados, busque todos los roles ancestrales y agréguelos al conjunto de resultados.

Si el conjunto de resultados contiene la función de administrador local, agregue la funciónROLE_ADMINISTRATOR.

Si el conjunto de resultados contiene la función de administrador del grupo local, agregue la funciónROLE_GROUP_ADMIN.

Este algoritmo no ofrece la posibilidad de tener roles personalizados y no considera membresías grupales.

Usando un atributo de encabezado HTTP

El cliente envía las funciones de una entidad principal en un atributo de encabezado HTTP (autenticación de proxy).GeoServer en sí no realiza ningún cálculo de roles y los extrae del atributo del encabezado.Durante la configuración, se debe especificar el nombre del atributo del encabezado.Un ejemplo con un atributo de encabezado llamado "roles":

roles: rol_a;rol_b;rol_c

Un ejemplo de roles con parámetros de rol:

roles: rol_a;rol_b(pnr=123,nick=max);rol_c

La sintaxis predeterminada es

los roles están delimitados por;

una lista de parámetros de rol comienza con(y termina con)

un parámetro de rol es un par clave-valor delimitado por=

Los parámetros de rol están delimitados por,


Interacción entre usuario/grupo y servicios de rol

La siguiente sección describe la interacción entre losservicios de usuario/grupoy losservicios de rol.

Calcular los roles de un usuario

El siguiente diagrama ilustra cómo interactúan un servicio de usuario/grupo y un servicio de rol para calcular los roles de usuario.


Usuario/grupo y servicio de rol interactuando para el cálculo de roles

Al recuperar un usuario habilitado de un servicio de usuario/grupo, se deben identificar los roles asignados a ese usuario.El procedimiento de identificación es:

Recupera todos los grupos habilitados para el usuario.Si un grupo está deshabilitado, se descarta.

Obtenga todos los roles asociados con el usuario y agréguelos al conjunto de resultados.

Para cada grupo habilitado del que el usuario sea miembro, obtenga todos los roles asociados con el grupo y agregue los roles al conjunto de resultados.

Para cada rol en el conjunto de resultados, busque todos los roles ancestrales y agréguelos al conjunto de resultados.

Personalice cada rol en el conjunto de resultados según sea necesario.

Si el conjunto de resultados contiene la función de administrador local, agregue la funciónROLE_ADMINISTRATOR.

Si el conjunto de resultados contiene la función de administrador del grupo local, agregue la funciónROLE_GROUP_ADMIN.

Nota

La personalización de roles busca parámetros de rol (pares clave/valor) para cada rol y verifica si las propiedades del usuario (pares clave/valor) contienen una clave idéntica.Si se encuentra alguna coincidencia, el valor del parámetro de rol se reemplaza por el valor de la propiedad del usuario.

Autenticación de credenciales de usuario

Un servicio de usuario/grupo se utiliza principalmente durante la autenticación.Un proveedor de autenticación en lacadena de autenticaciónpuede utilizar un servicio de usuario/grupo para autenticar las credenciales del usuario.


Uso de un servicio de usuario/grupo para la autenticación

Valores predeterminados de GeoServer

El siguiente diagrama ilustra el servicio de usuario/grupo predeterminado, el servicio de rol y el proveedor de autenticación en GeoServer:


Configuración de seguridad predeterminada de GeoServer

Se configuran dos proveedores de autenticación: el proveedorraízy el proveedorde nombre de usuario/contraseña.El proveedorraízse autentica para lacuenta raízde GeoServer y no utiliza un servicio de usuario/grupo.El proveedorde nombre de usuario/contraseñaes el proveedor predeterminado y transmite las credenciales de nombre de usuario y contraseña a un servicio de usuario/grupo.

Está presente un único servicio de usuario/grupo, que conserva la base de datos del usuario como XML.La base de datos contiene un único usuario nombradoadminy ningún grupo.De manera similar, el servidor de funciones conserva la base de datos de funciones como XML.De forma predeterminada, contiene una única función denominadaADMIN, que está asociada con eladminusuario.LaADMINfunción se asigna a laROLE_ADMINISTRATORfunción y, como resultado, eladminusuario se asocia con la función de administrador del sistema durante el cálculo de la función.



Autenticación

Hay tres conjuntos de recursos de GeoServer involucrados en la autenticación:

Lainterfaz de administración web(también conocida como administrador web)

Servicios OWS(como WFS y WMS)

Servicios DESCANSO

Las siguientes secciones describen cómo cada conjunto de recursos de GeoServer administra la autenticación.Para configurar los ajustes y proveedores de autenticación, consulte la sección sobreAutenticaciónen laInterfaz de administración web.

Cadena de autenticación

Cadena de filtros y cadena de proveedores.

Filtrar cadena por tipo de solicitud

Autenticación en la interfaz de administración web

Ejemplos

Autenticación a servicios OWS y REST

Ejemplos

Proveedores de autenticación

Autenticación de nombre de usuario/contraseña

Autenticación LDAP

autenticación JDBC


Cadena de autenticación

Comprender lacadena de autenticaciónayuda a explicar cómo funciona la autenticación de GeoServer.La cadena de autenticación procesa solicitudes y aplica ciertos mecanismos de autenticación.Ejemplos de mecanismos de autenticación incluyen:

Nombre de usuario/contraseña: realiza la autenticación buscando información del usuario en una base de datos de usuarios externa.

Cookie del navegador: realiza la autenticación reconociendo las cookies del navegador enviadas previamente (también conocidas como "Recordarme")

LDAP: realiza la autenticación en una base de datos LDAP

Anónimo: básicamente no realiza autenticación y permite que una solicitud continúe sin ninguna credencial.

Es posible que haya múltiples mecanismos de autenticación activos dentro de GeoServer en un momento dado.La siguiente figura ilustra el flujo de una solicitud genérica.


Flujo de una solicitud a través del sistema de autenticación

Antes de enviar una solicitud al servicio o controlador apropiado, GeoServer primero filtra la solicitud a través de la cadena de autenticación.La solicitud se pasa a cada mecanismo de la cadena en orden y cada uno tiene la oportunidad de autenticar la solicitud.Si uno de los mecanismos de la cadena puede autenticarse correctamente, la solicitud pasa al procesamiento normal.De lo contrario, la solicitud no se enruta más y se devuelve al usuario un error de autorización (normalmente un HTTP 401).

Cadena de filtros y cadena de proveedores.

En el caso de GeoServer, la cadena de autenticación en realidad se compone de dos cadenas: unacadena de filtro, que determina si se requiere autenticación adicional de una solicitud, y unacadena de proveedor, que realiza la autenticación real.


Detalle de la cadena de autenticación, mostrando la cadena de filtros y la cadena de proveedores.

La cadena de filtros realiza una variedad de tareas, que incluyen:

Recopilar credenciales de usuario a partir de una solicitud, por ejemplo, de los encabezados de autenticación básica y implícita

Manejar eventos como finalizar la sesión (cerrar sesión) o configurar la cookie del navegador "Recordarme"

Realizar la integración de sesiones, detectar sesiones existentes y crear nuevas sesiones si es necesario

Invocar la cadena de proveedores de autenticación para realizar la autenticación real

En realidad, la cadena de filtros se procesa dos veces, antes y después de que se maneje la solicitud.

La cadena de proveedores se ocupa únicamente de realizar la autenticación subyacente de una solicitud.La cadena de filtros lo invoca cuando un filtro determina que se requiere autenticación.

Filtrar cadena por tipo de solicitud

Se puede aplicarunacadena de filtros diferente a cada tipo diferente de solicitud en GeoServer.Esto sucede porque el administrador puede configurar una lista de diferentes cadenas de filtros y una regla coincidente para cada una de ellas.Solo se aplicará la primera cadena coincidente de la lista ordenada configurada a cualquier solicitud determinada.

Las reglas de coincidencia se pueden aplicar a:

Método HTTP (GET, POST, etc.)

uno o más patrones ANT para la sección de ruta de la solicitud (por ejemplo, /wms/**);si se especifica más de un patrón (delimitado por comas), cualquiera de ellos coincidirá

una expresión regular opcional para hacer coincidir los parámetros de la cadena de consulta, para uno o más patrones ANT especificados;si la ruta coincide, también se comprueba que la cadena de consulta coincida;la expresión regular se puede especificar después del patrón ANT, con un separador de barra vertical (|)

Los patrones ANT admiten los siguientes comodines:

?coincide con un personaje

* coincide con cero o más caracteres

** coincide con cero o más 'directorios' en una ruta

Las expresiones regulares de cadena de consulta coincidirán con la cadena de consulta completa (los terminadores ^ y $ se agregan automáticamente), por lo que para que coincida solo con una parte, recuerde anteponer y postfijar la expresión con .* (por ejemplo, .*request=getcapabilities.*)

Ejemplos de reglas (patrones ANT y expresiones regulares de cadenas de consulta)

Patrón

Descripción

/wms, /wms/**

patrón de hormiga simple

/wms|.*request=GetMap.*

Patrón ANT y expresión regular de cadena de consulta para que coincida con un parámetro

/wms|(?=.*request=getmap)(?=.*format=image/png).*

Patrón ANT y expresión regular de cadena de consulta para hacer coincidir dos parámetros en cualquier orden

/wms|(?=.*request=getmap)(?!.*format=image/png).*

Patrón ANT y expresión regular de cadena de consulta para que coincida con un parámetro y asegúrese de que otro no coincida


Autenticación en la interfaz de administración web

El método de autenticación en la aplicación de laInterfaz de administración webes típico de la mayoría de las aplicaciones web que brindan capacidades de inicio de sesión.La aplicación se basa principalmente en la autenticación basada en formularios, en la que un usuario se autentica a través de un formulario en un navegador web.Tras una autenticación exitosa, se crea una sesión en el servidor, lo que elimina la necesidad de que el usuario repita el proceso de inicio de sesión para cada página a la que desee acceder.También se admite una configuración opcional "Recordarme" que almacenará información de autenticación en una cookie del lado del cliente para permitir al usuario omitir la autenticación basada en formularios después de que se agote el tiempo de espera de la sesión inicial.

El proceso típico de autenticación es el siguiente:

El usuario visita la página de inicio del administrador web por primera vez, por lo que no hay ninguna cookie de sesión ni de "Recordarme".En este caso, el usuario se autentica de forma anónima.

El usuario accede a una página segura y se le presenta un formulario de inicio de sesión.

Al iniciar sesión correctamente, se crea una sesión.Dependiendo de los privilegios de la cuenta utilizada para iniciar sesión, el usuario será dirigido a la página solicitada o será redirigido de regreso a la página de inicio.

En solicitudes posteriores a páginas seguras, el usuario se autentica a través de una sesión del navegador hasta que la sesión expire o el usuario cierre la sesión.

Ejemplos

A continuación se muestra la configuración predeterminada de la cadena de autenticación para el administrador web.


Cadena de autenticación GeoServer, con cadenas de filtro y proveedor.

En este ejemplo, la cadena de filtros se compone de los siguientes filtros:

Sesión: maneja la integración de sesiones, reconociendo sesiones existentes y creando nuevas sesiones a pedido.

Cerrar sesión: maneja la finalización de sesiones (cierre de sesión del usuario)

Inicio de sesión mediante formulario: maneja los inicios de sesión mediante formularios.

Recordarme:maneja la autenticación "Recordarme", lee cuando la marca está configurada en un inicio de sesión de formulario, crea la cookie adecuada y reconoce la cookie en solicitudes futuras.

Anónimo: maneja el acceso anónimo

La cadena de proveedores está compuesta por dos proveedores:

Root: lacuenta Roottiene un proveedor especial de "superusuario".Como esta cuenta rara vez se utiliza, rara vez se invoca a este proveedor.

Nombre de usuario/contraseña: realiza la autenticación de nombre de usuario/contraseña en una base de datos de usuarios.

Los siguientes ejemplos de solicitudes ilustran cómo funcionan los elementos de las distintas cadenas.

Visita por primera vez

Este ejemplo describe el proceso cuando un usuario visita la página de inicio del administrador web por primera vez.


Cadena de autenticación para la primera visita de un usuario

El primer filtro a ejecutar es el filtrode sesión.Comprueba si hay una sesión existente, pero no encuentra ninguna, por lo que el procesamiento continúa hasta el siguiente filtro de la cadena.El filtroCerrar sesióncomprueba el caso de que un usuario cierre sesión, lo cual tampoco es el caso, por lo que el procesamiento continúa.El filtrode inicio de sesión de formulariobusca un inicio de sesión de formulario y tampoco encuentra ninguno.El filtroRecordarmedetermina si esta solicitud puede autenticarse desde una cookie de sesión anterior, pero en este caso no es así.El filtro final a ejecutar es el filtroanónimoque verifica si el usuario especificó alguna credencial.En este caso el usuario no ha proporcionado ninguna credencial, por lo que la solicitud se autentica de forma anónima.Dado que no se requiere autenticación para ver la página de inicio, no se invoca la cadena de proveedores.

La última respuesta a la solicitud dirige al usuario a la página de inicio.

El usuario inicia sesión

Este ejemplo describe el proceso invocado cuando un usuario inicia sesión en el administrador web a través del formulario de inicio de sesión.


Cadena de autenticación para un usuario que inicia sesión

El filtrode sesiónno encuentra ninguna sesión existente y el procesamiento continúa.El filtroCerrar sesiónbusca una solicitud de cierre de sesión, no encuentra ninguna y continúa.El filtrode inicio de sesión del formularioreconoce la solicitud como un inicio de sesión del formulario y comienza el proceso de autenticación.Extrae el nombre de usuario y la contraseña de la solicitud e invoca la cadena de proveedores.

En la cadena de proveedores, el proveedorraízbusca el inicio de sesión de la cuenta raíz, pero no lo encuentra, por lo que el procesamiento continúa con el siguiente proveedor.El proveedorde nombre de usuario/contraseñacomprueba si las credenciales proporcionadas son válidas.Si son válidos, la autenticación se realiza correctamente, el usuario es redirigido a la página de inicio y se considera que ha iniciado sesión.Durante el paso de posprocesamiento, el filtrode sesiónreconoce que se ha realizado una autenticación exitosa y crea una nueva sesión.

Si las credenciales no son válidas, el usuario regresará a la página del formulario de inicio de sesión y se le pedirá que vuelva a intentarlo.

El usuario visita otra página.

Este ejemplo describe el proceso invocado cuando un usuario que ya ha iniciado sesión visita otra página en el administrador web.


Cadena de autenticación para un usuario que visita otra página después de iniciar sesión

El filtrode sesiónse ejecuta y encuentra una sesión existente que aún es válida.La sesión contiene los detalles de autenticación y no se requiere ningún procesamiento adicional en cadena.La respuesta es la página solicitada por el usuario.

El usuario regresa después del tiempo de espera de la sesión.

Este ejemplo describe el proceso invocado cuando un usuario regresa al administrador web después de que se agote el tiempo de espera de la sesión creada anteriormente.

Una sesión finalizará después de un cierto período de tiempo.Cuando el usuario regresa al administrador web, esto se convierte esencialmente en la misma cadena de eventos que el usuario que visita la aplicación web por primera vez (como se describió anteriormente).La cadena pasa al filtroAnónimoque se autentica de forma anónima.Dado que es probable que la página solicitada sea una página que requiera autenticación, el usuario es redirigido a la página de inicio y no inicia sesión.

El usuario inicia sesión con el indicador "Recordarme" configurado

Este ejemplo describe el proceso para iniciar sesión con el indicador "Recordarme" configurado.

La cadena de eventos para iniciar sesión con "Recordarme" configurado es idéntica al proceso para cuando el indicador no está configurado, excepto que después de la autenticación exitosa, el filtrode inicio de sesión del formularioreconoce el indicador "Recordarme" y activa la creación del navegador. Cookie utilizada para conservar la información de autenticación.El usuario ahora ha iniciado sesión y se le dirige a la página de inicio.

El usuario regresa después del tiempo de espera de la sesión (con "Recuérdame")

Este ejemplo describe el proceso invocado cuando el usuario regresa al administrador web después de un período de inactividad, mientras el indicador "Recordarme" está configurado.


Cadena de autenticación para un usuario que regresa después del tiempo de espera de la sesión con el indicador "Recordarme"

Aunque el indicador "Recordarme" esté configurado, la sesión del usuario en el servidor expirará normalmente.Como tal, la cadena avanza en consecuencia a través de los filtros, comenzando con el filtroSesión, que no encuentra ninguna sesión válida.Los filtros de cierrede sesiónyde inicio de sesión del formulariono se aplican aquí.El filtroRecordarmereconoce la cookie del navegador y puede autenticar la solicitud.El usuario es dirigido a cualquier página a la que accedió y permanece conectado.


Autenticación a servicios OWS y REST

Los servicios OWS y REST no tienen estado y no tienen conocimiento inherente de "sesión", por lo que el esquema de autenticación para estos servicios requiere que el cliente proporcione credenciales en cada solicitud.Dicho esto, se admite la "integración de sesiones", lo que significa que si ya existe una sesión en el servidor (de unasesión de administrador web autenticadasimultánea ) se utilizará para la autenticación.Este esquema permite a GeoServer evitar la sobrecarga de creación de sesiones para servicios OWS y REST.

La configuración predeterminada de GeoServer incluye soporte paraautenticación HTTP básicapara servicios.

El proceso típico de autenticación es el siguiente:

El usuario realiza una solicitud de servicio sin proporcionar ninguna credencial

Si el usuario accede a un recurso no seguro, la solicitud se maneja normalmente

Si el usuario accede a un recurso seguro:

Se envía un código de estado HTTP 401 al cliente, lo que normalmente obliga al cliente a solicitar credenciales.

Luego, la solicitud de servicio se repite con las credenciales apropiadas incluidas, generalmente en el encabezado HTTP como ocurre con la autenticación básica.

Si el usuario tiene privilegios suficientes para acceder al recurso, la solicitud se maneja normalmente; de ​​lo contrario, se devuelve un código de estado HTTP 404 al cliente.

Las solicitudes posteriores deben incluir las credenciales de usuario originales.

Ejemplos

A continuación se describe la cadena de autenticación para un servicio OWS:


La cadena de autenticación del servicio OWS

En este ejemplo, la cadena de filtros consta de tres filtros:

Sesión: maneja la “integración de sesiones”, reconociendo sesiones existentes (perosincrear sesiones nuevas)

Autenticación básica:extrae las credenciales de autenticación básica del encabezado HTTP de la solicitud.

Anónimo: maneja el acceso anónimo

La cadena de proveedores está compuesta por dos proveedores:

Raíz:la cuenta raíztiene un proveedor especial de "superusuario".Como esta cuenta rara vez se utiliza, rara vez se invoca a este proveedor.

Nombre de usuario/contraseña: realiza la autenticación de nombre de usuario/contraseña en una base de datos de usuarios.

Para ilustrar cómo funcionan los elementos de las distintas cadenas, a continuación se muestran algunos ejemplos de solicitudes OWS.

Solicitud anónima WMS GetCapabilities

Este ejemplo muestra el proceso cuando un cliente WMS realiza una solicitud GetCapabilities anónima.


Cadena de autenticación para un cliente WMS que realiza una solicitud GetCapabilities anónima

El filtroSesiónbusca una sesión existente, pero no encuentra ninguna, por lo que el procesamiento continúa.El filtrode autenticación básicabusca el encabezado de autorización básica en la solicitud, pero como la solicitud es anónima, el filtro no encuentra ninguno.Finalmente, el filtroAnónimoejecuta y autentica la solicitud de forma anónima.Dado que GetCapabilities es una operación de “descubrimiento”, normalmente no está bloqueada, ni siquiera en un servidor seguro.Suponiendo que este sea el caso aquí, la solicitud anónima tiene éxito y devuelve la respuesta de capacidades al cliente.No se invoca la cadena de proveedores.

Solicitud anónima de WMS GetMap para una capa segura

Este ejemplo muestra el proceso invocado cuando un cliente WMS realiza una solicitud GetMap anónima para una capa segura

La cadena se ejecuta exactamente como se describe anteriormente.El filtroSesiónbusca una sesión existente, pero no encuentra ninguna, por lo que el procesamiento continúa.El filtrode autenticación básicabusca el encabezado de autorización básica en la solicitud, pero como la solicitud es anónima, el filtro no encuentra ninguno.Finalmente, el filtroAnónimoejecuta y autentica la solicitud de forma anónima.Sin embargo, en este caso la capa a la que se accede es un recurso seguro, por lo que falla el manejo de la solicitud GetMap.El servidor devuelve una excepción acompañada de un código de estado HTTP 401, que normalmente hace que el cliente presente al usuario un cuadro de diálogo de inicio de sesión.

Solicitud WMS GetMap con credenciales proporcionadas por el usuario

Este ejemplo muestra el proceso invocado cuando un cliente WMS recopila las credenciales del usuario y vuelve a emitir la solicitud anterior para una capa segura.


Cadena de autenticación para un cliente WMS que realiza una solicitud GetMap con credenciales proporcionadas por el usuario

El filtrode sesiónse ejecuta como se describe anteriormente y no hace nada.El filtrode autenticación básicaencuentra el encabezado de autorización en la solicitud, extrae las credenciales e invoca la cadena de proveedores.El procesamiento se traslada al proveedor denombre de usuario/contraseñaque realiza la autenticación real.Si las credenciales tienen los privilegios necesarios para acceder a la capa, el procesamiento de la solicitud continúa normalmente y la solicitud GetMap tiene éxito, devolviendo la respuesta del mapa.Si las credenciales no son suficientes, se proporcionará el código de estado HTTP 401, lo que puede activar nuevamente el cuadro de diálogo de inicio de sesión en el lado del cliente.


Proveedores de autenticación

Los siguientes proveedores de autenticación están disponibles en GeoServer:

Autenticación de un nombre de usuario/contraseña contra unservicio de usuario/grupo

Autenticación contra un servidor LDAP

Autenticación conectándose a una base de datos a través de JDBC

Autenticación de nombre de usuario/contraseña

La autenticación de nombre de usuario y contraseña es el proveedor de autenticación predeterminado.Utiliza unservicio de usuario/grupopara autenticarse.

El proveedor simplemente toma el nombre de usuario/contraseña de una solicitud entrante (como una solicitud de autenticación básica), luego carga la información del usuario desde el servicio de usuario/grupo y verifica las credenciales.

Autenticación LDAP

El proveedor de autenticación LDAP permite la autenticación contra un servidorde Protocolo ligero de acceso a directorios(LDAP).El proveedor toma el nombre de usuario/contraseña de la solicitud entrante e intenta conectarse al servidor LDAP con esas credenciales.

Nota

Actualmente solo se admite la autenticación LDAP Bind.

Asignación de roles

El proveedor LDAP ofrece dos opciones para la asignación de roles para usuarios autenticados:

Convertir los grupos LDAP del usuario en roles

Emplear un servicio de usuario/grupo

La siguiente base de datos LDAP ilustrará la primera opción:

dn: ou=personas,dc=acme,dc=com

clase de objeto: unidad organizacional

usted: gente

dn: uid=bob,ou=personas,dc=acme,dc=com

clase de objeto: persona

fluido: bob

dn: ou=grupos,dc=acme,dc=com

clase de objeto: unidad organizacional

ou: grupos

dn: cn=trabajadores,ou=grupos,dc=acme,dc=com

clase de objeto: grupoDeNombres

CN: usuarios

miembro: uid=bob,ou=personas,dc=acme,dc=com

El escenario anterior define un usuario conuidofboby ungroupnombreworkersdel cualbobes miembro.Después de la autenticación,bobse le asignará el rolROLE_WORKERS.El nombre del rol se genera concatenandoROLE_con el nombre del grupo en mayúsculas.

Nota

Cuando el servidor LDAP no permite realizar búsquedas en un contexto anónimo, se debe habilitar la opción bindBeforeGroupSearch para evitar errores.

En el caso de utilizar unservicio de usuario/grupo, se consulta al servicio de usuario/grupo para el usuario después de la autenticación, y la asignación de roles la realizan tanto el servicio de usuario/grupo como elservicio de rolactivo .Al utilizar esta opción, se ignora cualquier contraseña definida para el usuario en la base de datos del servicio de usuario/grupo.

Conexiones LDAP seguras

Hay dos formas de crear una conexión LDAP segura con el servidor.La primera es especificar directamente una conexión segura utilizando el protocololdapscomo parte de laURL del servidor.Normalmente, esto requiere cambiar el puerto de conexión alpuerto 636en lugar del 389.

El segundo método implica el uso deSTARTTLS(Seguridad de la capa de transporte) para negociar una conexión segura a través de una no segura.La negociación se lleva a cabo a través de la URL no segura utilizando el protocolo "ldap" en el puerto 389. Para usar esta opción, sedebe configurar el indicadorUsar TLS .

Advertencia

El uso de TLS para las conexiones evitará que GeoServer pueda agrupar conexiones LDAP.Esto significa que se creará y destruirá una nueva conexión LDAP para cada autenticación, lo que provocará una pérdida de rendimiento.

autenticación JDBC

El proveedor de autenticación JDBC se autentica conectándose a una base de datos a través deJDBC.

El proveedor toma el nombre de usuario/contraseña de la solicitud entrante e intenta crear una conexión a la base de datos utilizando esas credenciales.Opcionalmente, el proveedor puede utilizar unservicio de usuario/grupopara cargar información del usuario después de una autenticación exitosa.En este contexto, el servicio de usuario/grupo no se utilizará para la verificación de contraseñas, solo para la asignación de roles.

Nota

Para utilizar el servicio de usuario/grupo para la verificación de contraseña, consulte la sección sobreAutenticación de nombre de usuario/contraseña.


Contraseñas

Las contraseñas son un aspecto central de cualquier sistema de seguridad.Esta sección describe cómo GeoServer maneja las contraseñas.

Cifrado de contraseña

Una configuración de GeoServer almacena dos tipos de contraseñas:

Contraseñas decuentas de usuariopara acceder a los recursos de GeoServer

Contraseñas utilizadas internamente paraacceder a servicios externos, como bases de datos y servicios OGC en cascada.

Como estas contraseñas normalmente se almacenan en el disco, se recomienda encarecidamente cifrarlas y no almacenarlas como texto legible por humanos.La seguridad de GeoServer proporciona cuatro esquemas para cifrar contraseñas:vacío,texto sin formato,resumenycifrado basado en contraseña (PBE).

El esquema de cifrado de contraseñas se especifica como una configuración global que afecta el cifrado de contraseñas utilizadas para recursos externos y como un esquema de cifrado para cadaservicio de usuario/grupo.El esquema de cifrado para recursos externos debe serreversible, mientras que los servicios de usuario/grupo pueden utilizar cualquier esquema.

Vacío

El esquema no es reversible.Cualquier contraseña está codificada como una cadena vacía y, como consecuencia, no es posible volver a calcular la contraseña en texto plano.Este esquema se utiliza para servicios de usuario/grupo en combinación con un mecanismo de autenticación que utiliza un sistema back-end.Algunos ejemplos son la autenticación de nombre de usuario/contraseña contra un servidor LDAP o una base de datos JDBC.En estos escenarios, almacenar contraseñas localmente en Geoserver no tiene sentido.

Texto sin formato

Nota

Antes de la versión 2.2.0, el cifrado de texto sin formato era el único método disponible utilizado por GeoServer para almacenar contraseñas.

Las contraseñas de texto sin formato no proporcionan ningún cifrado.En este caso, las contraseñas son legibles por cualquier persona que tenga acceso al sistema de archivos.Por razones obvias, esto no se recomienda para ningún servidor de prueba que no sea el más básico.Una contraseñamypasswordestá codificada comoplain:mypassword, el prefijo que describe de forma única el algoritmo utilizado para codificar/decodificar.

Digerir

El cifrado de resumen no es reversible.Aplica, 100.000 veces a través de un proceso iterativo, unafunción hash criptográficaSHA-256 a las contraseñas.Este esquema es "unidireccional" en el sentido de que es prácticamente imposible revertir y obtener la contraseña original a partir de su representación hash.Consulte la sección sobrecifrado reversiblepara obtener más información sobre la reversibilidad.

Para protegerse de ataques conocidos,se agrega un valor aleatorio llamadosalt a la contraseña al generar la clave. Para cada digestión, se utiliza una sal aleatoria separada.Resumir la misma contraseña dos veces da como resultado diferentes representaciones hash.

Por ejemplo, la contraseñageoserverse resume endigest1:YgaweuS60t+mJNobGlf9hzUC6g7gGTtPEu0TlnUxFlv0fYtBuTsQDzZcBM4AfZHd.digest1indica el uso de digerir.La representación hash y la sal están codificadas en base 64.

Cifrado basado en contraseña

El cifrado basado en contraseña(PBE) normalmente emplea una contraseña proporcionada por el usuario para generar una clave de cifrado.Este esquema es reversible.Se utiliza una sal aleatoria descrita en el apartado anterior.

Nota

El sistema nunca utiliza contraseñas especificadas por los usuarios porque estas contraseñas tienden a ser débiles.Las contraseñas utilizadas para el cifrado se generan mediante un generador aleatorio seguro y se almacenan en el almacén de claves de GeoServer.El número de contraseñas posibles es 2^260.

GeoServer admite dos formas de PBE.El PBE débil(el valor predeterminado de GeoServer) utiliza un método de cifrado básico que es relativamente fácil de descifrar.La clave de cifrado se deriva de la contraseña utilizandoMD51000 veces de forma iterativa.El algoritmo de cifrado en sí esDES(estándar de cifrado de datos).DES tiene una longitud de clave efectiva de 56 bits, lo que no supone ningún desafío para los sistemas informáticos actuales.

Strong PBEutiliza un método de cifrado mucho más potente basado en un algoritmoAESde 256 bits conCBC.La longitud de la clave es de 256 bits y se obtiene utilizandoSHA-256en lugar de MD5.Se recomienda encarecidamente utilizar Strong PBE.

Por ejemplo, la contraseñageoserverestá cifrada encrypt1:KWhO7jrTz/Gi0oTQRKsVeCmWIZY5VZaD.crypt1indica el uso de PBE débil.El prefijo para PBE fuerte escrypt2.El texto cifrado y la sal están codificados en base 64.

Nota

Strong PBE no está disponible de forma nativa en todas las máquinas virtuales Java y puede requerirla instalación de archivos de política de jurisdicción de fuerza ilimitada

Cifrado reversible

Los métodos de cifrado de contraseñas pueden serreversibles, lo que significa que es posible (y deseable) obtener la contraseña en texto plano a partir de su versión cifrada.Las contraseñas reversibles son necesarias para conexiones de bases de datos o servicios OGC externos, comoWMS en cascadayWFS en cascada, ya que GeoServer debe poder decodificar la contraseña cifrada y pasarla al servicio externo.Las contraseñas de texto sin formato y PBE son reversibles.

Las contraseñas irreversibles proporcionan el nivel más alto de seguridad y, por lo tanto, deben usarse para cuentas de usuario y siempre que sea posible.Se recomienda encarecidamente utilizar el resumen de contraseñas; no se requiere la instalación de archivos de políticas sin restricciones.

Claves secretas y el almacén de claves

Para que una contraseña reversible proporcione un nivel significativo de seguridad, el acceso a la contraseña debe estar restringido de alguna manera.En GeoServer, cifrar y descifrar contraseñas implica la generación de claves secretas compartidas, almacenadas en unalmacén de clavestípico de Java .GeoServer utiliza su propio almacén de claves para este propósito, llamadogeoserver.jceksque se encuentra en elsecuritydirectorio del directorio de datos de GeoServer.Este archivo se almacena en elformato JCEKS en lugar del JKS predeterminado.JKS no admite el almacenamiento de claves compartidas.

El almacén de claves de GeoServer está protegido con unacontraseña maestra.Es posible acceder al contenido del almacén de claves con herramientas externas comokeytool.Por ejemplo, el siguiente comando solicitará la contraseña maestra y enumerará el contenido del almacén de claves:

$ keytools -list -keystore geoserver.jceks -storetype "JCEKS"

Contraseña maestra

También es posible establecer unacontraseña maestrapara GeoServer.Esta contraseña tiene dos propósitos:

Proteger el acceso alalmacén de claves

Proteger el acceso a lacuenta raíz de GeoServer

De forma predeterminada, la contraseña maestra se genera y almacena en un archivo denominadosecurity/masterpw.infoen texto sin formato.Al actualizar desde un directorio de datos de GeoServer existente (versiones 2.1.x e inferiores), el algoritmo intenta descubrir la contraseña de un usuario con la funciónROLE_ADMINISTRATOR.Si se encuentra dicha contraseña y la longitud de la contraseña es de 8 caracteres como mínimo, GeoServer utiliza esta contraseña como contraseña maestra.Nuevamente el nombre del usuario elegido se encuentra ensecurity/masterpw.info.

Advertencia

El archivosecurity/masterpw.infoes un riesgo de seguridad.El administrador debe leer este archivo y verificar la contraseña maestra iniciando sesión en GeoServer comorootusuario.Si tiene éxito, este archivo debe eliminarse.

ConsulteProveedor de contraseña maestra activapara obtener información sobre cómo cambiar la contraseña maestra.

Políticas de contraseña

Una política de contraseñas define restricciones sobre las contraseñas, como la longitud de la contraseña, las mayúsculas y minúsculas y la combinación requerida de clases de caracteres.Las políticas de contraseña se especifican al agregarservicios de usuario/grupoy se utilizan para restringir las contraseñas al crear nuevos usuarios y al cambiar las contraseñas de los usuarios existentes.

Cada servicio de usuario/grupo utiliza una política de contraseñas para hacer cumplir estas reglas.La implementación de la política de contraseña predeterminada de GeoServer admite las siguientes restricciones opcionales:

Las contraseñas deben contener al menos un número

Las contraseñas deben contener al menos una letra mayúscula

Las contraseñas deben contener al menos una letra minúscula

Longitud mínima de la contraseña

Longitud máxima de la contraseña


cuenta raíz

La naturaleza altamente configurable de la seguridad de GeoServer puede provocar que un administrador interrumpa sin darse cuenta la autenticación normal, esencialmente deshabilitando a todos los usuarios, incluidas las cuentas administrativas.Por este motivo, el subsistema de seguridad de GeoServer contiene unacuenta raízque siempre está activa, independientemente del estado de la configuración de seguridad.Al igual que su contraparte de estilo UNIX, esta cuenta proporciona el estado de "superusuario" y está destinada a proporcionar un método de acceso alternativo para solucionar problemas de configuración.

El nombre de usuario de la cuenta raíz esroot.Su nombre no se puede cambiar y la contraseña de la cuenta raíz es laContraseña maestra.


Seguridad del servicio

GeoServer admite el control de acceso a nivel de servicio, lo que permite bloquear las operaciones del servicio solo para usuarios autenticados a quienes se les ha otorgado un rol particular.Hay dos categorías principales de servicios en GeoServer.El primero sonlos servicios OWScomo WMS y WFS.Los segundos son los servicios RESTful, como laconfiguración RESTde GeoServer .

Nota

La seguridad de nivel de servicio yla seguridad de capano se pueden combinar.Por ejemplo, no es posible especificar el acceso a un servicio OWS específico solo para una capa específica.

servicios OWS

Los servicios OWS admiten la configuración de restricciones de acceso de seguridad globalmente para un servicio en particular o para una operación específica dentro de ese servicio.Algunos ejemplos incluyen:

Proteger todo el servicio WFS para que solo los usuarios autenticados tengan acceso a todas las operaciones de WFS.

Permitir el acceso anónimo a operaciones WFS de solo lectura, como GetCapabilities, pero proteger operaciones de escritura, como Transaction.

Deshabilitar el servicio WFS en efecto asegurando todas las operaciones y no aplicando los roles apropiados a ningún usuario.

Las reglas de acceso de seguridad del servicio OWS se especifican en un archivo llamadoservices.properties, ubicado en elsecuritydirectorio del directorio de datos de GeoServer.El archivo contiene una lista de reglas que asignan operaciones de servicio a roles definidos.La sintaxis para especificar reglas es la siguiente:

<servicio>.<operación|*>=<rol>[,<rol2>,...]

Los parámetros incluyen:

[]—Denota parámetros opcionales

|—Denota “o”

service—Identificador de un servicio OGC, comowfs,wmsowcs

operation—Cualquier operación admitida por el servicio, los ejemplos incluyenGetFeaturepara WFS,GetMappara WMS,*para todas las operaciones

role[,role2,...]—Lista de nombres de roles predefinidos

Nota

Es importante que los roles especificados estén realmente vinculados a un usuario; de lo contrario, nadie podrá acceder a todo el servicio/operación excepto lacuenta raíz.Sin embargo, en algunos casos este puede ser el efecto deseado.

La configuración de seguridad del servicio predeterminada en GeoServer no contiene reglas y permite que cualquier usuario anónimo acceda a cualquier operación de cualquier servicio.Los siguientes son algunos ejemplos de restricciones de seguridad deseadas y las reglas correspondientes.

Asegurar todo el servicio WFS

Esta regla otorga acceso a cualquier operación WFS solo a usuarios autenticados a los que se les ha otorgado elROLE_WFSrol:

wfs.*=ROLE_WFS

Acceso anónimo a WFS solo para operaciones de solo lectura

Esta regla otorga acceso anónimo a todas las operaciones de WFS (como GetCapabilities y GetFeature) pero restringe las solicitudes de transacciones a usuarios autenticados a los que se les ha otorgado elROLE_WFS_WRITErol:

wfs . Transacción = ROLE_WFS_WRITE

Proteger las operaciones WFS de acceso a datos y las operaciones de escritura

Usadas en conjunto, estas dos reglas otorgan acceso anónimo a GetCapabilities y DescribeFeatureType, lo que obliga al usuario a autenticarse para la operación GetFeature (se le debe otorgar elROLE_WFS_READrol) y a autenticarse para realizar transacciones (se le debe otorgar elROLE_WFS_WRITErol):

wfs . GetFeature = ROLE_WFS_READ wfs . Transacción = ROLE_WFS_WRITE

Tenga en cuenta que este ejemplo no especifica si un usuario que accede a Transacciones también tendría acceso a GetFeature.

Servicios DESCANSO

Además de brindar la capacidad de proteger los servicios OWS, GeoServer también permite proteger los servicios RESTful.

Las reglas de acceso de seguridad del servicio REST se especifican en un archivo llamadorest.properties, ubicado en elsecuritydirectorio del directorio de datos de GeoServer.Este archivo contiene una lista de reglas que asignan URI de solicitud a roles definidos.La sintaxis de la regla es la siguiente:

<uriPattern>;<método>[,<método>,...]=<rol>[,<rol>,...]

Los parámetros incluyen:

[]—Denota parámetros opcionales

uriPattern—Elpatrón antque coincide con un conjunto de URI de solicitud

method—Método de solicitud HTTP, uno deGET,POST,PUT,POST,DELETEoHEAD

role—Nombre de un rol predefinido.El comodín*se utiliza para indicar todos los usuarios, incluidos los usuarios anónimos.

Nota

Los patrones de URI deben representar el primer componente de la ruta de descanso, generalmenterestoapi

methody las listasnoroledebencontener espacios

Patrones de hormigas

Los patrones Ant se utilizan comúnmente para hacer coincidir patrones con directorios y rutas de archivos.Los siguientes ejemplos proporcionan algunas instrucciones básicas.Elmanual de usuariode Apache ant contiene casos de uso más sofisticados.

Estos ejemplos son específicos dela configuración RESTde GeoServer , pero cualquier servicio RESTful GeoServer se puede configurar de la misma manera.

Deshabilitar el acceso anónimo a los servicios

La configuración más segura es aquella que obliga a autenticar cualquier solicitud, REST o no.Lo siguiente bloqueará el acceso a todas las solicitudes de los usuarios a los que se les conceda elROLE_ADMINISTRATORrol:

/**;OBTENER,POST,PONER,BORRAR=ROLE_ADMINISTRADOR

Una configuración menos restrictiva bloquea el acceso a las operaciones en la ruta/restpara los usuarios a los que se les ha otorgado elROLE_ADMINISTRATORrol, pero permitirá el acceso anónimo a las solicitudes que se encuentran en otras rutas (por ejemplo/api):

/rest/**;GET,POST,PUT,DELETE=ROLE_ADMINISTRATOR

Permitir acceso anónimo de solo lectura

La siguiente configuración otorga acceso anónimo cuandoGETse utiliza el método, pero fuerza la autenticación para un métodoPOST,PUToDELETE:

/**;GET=IS_AUTHENTICADO_ANONYMOUSLY

/**;POST,PONER,BORRAR=TRUSTED_ROLE

Asegurar un recurso específico

La siguiente configuración fuerza la autenticación para acceder a un recurso en particular (en este caso, elstatestipo de característica):

/rest/**/estados*;GET=TRUSTED_ROLE

/rest/**;POST,PUT,DELETE=TRUSTED_ROLE

Lo siguiente protege el acceso a un conjunto de recursos (en este caso, todos los almacenes de datos):

/rest/**/datastores/*;GET=TRUSTED_ROLE

/rest/**/datastores/*.*;GET=TRUSTED_ROLE

/rest/**;POST,PUT,DELETE=TRUSTED_ROLE

Tenga en cuenta los comodines finales/*y/*.*.


Seguridad de capa

GeoServer permite que el acceso se determine por capa.

Nota

La seguridad de capa yla seguridad del serviciono se pueden combinar.Por ejemplo, no es posible especificar el acceso a un servicio OWS específico, solo para una capa específica.

Proporcionar acceso a capas está vinculado aroles.Las capas y los roles están vinculados en un archivo llamadolayers.properties, que se encuentra en elsecuritydirectorio de datos de su GeoServer.El archivo contiene las reglas que controlan el acceso a los espacios de trabajo y las capas.

Normas

La sintaxis de una regla de seguridad de capa es la siguiente ([]indica parámetros opcionales):

espacio de trabajo.capa.permiso=rol[,rol2,...]

Los parámetros incluyen:

* ``espacio de trabajo``—Nombre del espacio de trabajo. El comodín ``*`` se utiliza para indicar todos los espacios de trabajo.

* ``capa``: nombre de un recurso (tipo de característica/cobertura/etc...). El comodín ``*`` se utiliza para indicar todas las capas.

* ``permiso``—Tipo de permiso/modo de acceso.

r—Acceso de lectura

w—Acceso de escritura

a—Acceso de administrador

ConsulteModos de accesopara obtener más detalles.

role[,role2,...]son los nombres de los roles predefinidos.El comodín*se utiliza para indicar que el permiso se aplica a todos los usuarios, incluidos los usuarios anónimos.

Nota

Si se supone que un nombre de capa o espacio de trabajo contiene puntos, se pueden escapar de ellos usando barras invertidas dobles (\\).Por ejemplo, si una capa tiene nombre,layer.with.dotsse puede utilizar la siguiente sintaxis para una regla:

topp.layer\\.with\\.dots.r=rol[,rol2,...]

Cada entrada debe tener una combinación única de valores de espacio de trabajo, capa y permiso.Si no se especifica un permiso a nivel global, se supone que los permisos globales permiten el acceso de lectura/escritura.Si no se especifica un permiso para un espacio de trabajo, hereda los permisos de la especificación global.Si no se especifica un permiso para una capa, hereda los permisos de la especificación de su espacio de trabajo.Si un usuario pertenece a varios roles,se aplicará el permisomenos restrictivo que herede.

Modo catálogo

Ellayers.propertiesarchivo puede contener una directiva adicional que especifica cómo GeoServer anunciará las capas seguras y se comportará cuando se acceda a una capa segura sin los privilegios necesarios.El parámetro esmodey comúnmente se conoce como “modo de catálogo”.

La sintaxis es:

modo = opción

optionpuede ser uno de tres valores:

Opción

Descripción

hide

(Predeterminado)Oculta las capas a las que el usuario no tiene acceso de lectura y se comporta como si una capa fuera de lectura solo si el usuario no tiene permisos de escritura.Los documentos de capacidades no contendrán las capas a las que el usuario actual no puede acceder.Este es el modo de mayor seguridad.Como resultado, es posible que no funcione muy bien con clientes como uDig o Google Earth.

challenge

Permite el acceso gratuito a los metadatos, pero cualquier intento de acceder a datos reales se encuentra con un código HTTP 401 (que obliga a la mayoría de los clientes a mostrar un cuadro de diálogo de autenticación).Los documentos de capacidades contienen la lista completa de capas.Las operaciones DescribeFeatureType y DescribeCoverage funcionan correctamente.Este modo funciona bien con clientes como uDig o Google Earth.

mixed

Oculta las capas que el usuario no puede leer de los documentos de capacidades, pero activa la autenticación para cualquier otro intento de acceder a los datos o metadatos.Esta opción es útil si no desea que el mundo vea la existencia de algunos de sus datos, pero aún desea que personas seleccionadas que tengan enlaces de acceso a datos obtengan los datos después de la autenticación.

Modos de acceso

El modo de acceso define qué nivel de acceso se debe otorgar en un espacio/capa de trabajo específico para un rol particular.Hay tres tipos de modo de acceso:

r—Modo de lectura(leer datos de un espacio de trabajo/capa)

w—Modo de escritura(escribir datos en un espacio de trabajo/capa)

a—Modo administrador(acceder y modificar la configuración de un espacio de trabajo/capa)

Algunas notas sobre los modos de acceso anteriores:

Escribir no implica Leer, pero Admin implica tanto EscribircomoLeer.

La lectura y la escritura se aplican a los datos de una capa, mientras que la administración se aplica a la configuración de una capa.

Como el modo Administrador solo se refiere a la configuración de la capa, no es necesario para ninguna solicitud de servicio OGC.

Nota

Actualmente, es posible asignar permiso de administrador solo a un espacio de trabajo completo y no a capas específicas.

Ejemplos

Los siguientes ejemplos ilustran algunas posibles restricciones de capa y las reglas correspondientes.

Proteger un único espacio de trabajo y una única capa

El siguiente ejemplo demuestra cómo configurar GeoServer principalmente como servidor de solo lectura:

*.*.r=*

*.*.w=NADIE

privado.*.r=TRUSTED_ROLE

privado.*.w=TRUSTED_ROLE

topp.congress_district.w=ESTADO_LEGISLADORES

La asignación de roles a permisos es la siguiente:

Role

privado.*

superior.*

topp.congress_district

(todos los demás espacios de trabajo)

NO_ONE

(ninguno)

w

(ninguno)

w

TRUSTED_ROLE

r/w

r

r

r

STATE_LEGISLATURES

(ninguno)

r

r/w

r

(Todos los demás usuarios)

r

r

r

r

Bloquear GeoServer

El siguiente ejemplo demuestra cómo bloquear GeoServer:

*.*.r=TRUSTED_ROLE

*.*.w=TRUSTED_ROLE

topp.*.r=*

ejército.*.r=MILITARY_ROLE,TRUSTED_ROLE

ejército.*.w=MILITARY_ROLE,TRUSTED_ROLE

La asignación de roles a permisos es la siguiente:

Role

superior.*

ejército.*

(Todos los demás espacios de trabajo)

TRUSTED_ROLE

r/w

r/w

r/w

MILITARY_ROLE

r

r/w

(ninguno)

(Todos los demás usuarios)

r

(ninguno)

(ninguno)

Proporcionar acceso administrativo restringido

Lo siguiente proporciona acceso administrativo en un único espacio de trabajo a una función específica, además de la función de administrador completo:

*.*.a=ROLE_ADMINISTRADOR

topp.*.a=ROLE_TOPP_ADMIN,ROLE_ADMINISTRADOR

Administrar permisos multinivel

El siguiente ejemplo demuestra cómo configurar GeoServer con permisos globales, de espacio de trabajo y de nivel de capa:

*.*.r=TRUSTED_ROLE

*.*.w=NADIE

topp.*.r=*

topp.states.r=USA_CITIZEN_ROLE,LAND_MANAGER_ROLE,TRUSTED_ROLE

topp.states.w=NO_ONE

topp.poly_landmarks.w=LAND_MANAGER_ROLE

topp.military_bases.r=ROLE_MILITAR

topp.military_bases.w=MILITARY_ROLE

La asignación de roles a permisos es la siguiente:

Role

estados.topp

topp.poly_landmarks

topp.bases_militares

topp.(todas las demás capas)

(Todos los demás espacios de trabajo)

NO_ONE

w

r

(ninguno)

w

w

TRUSTED_ROLE

r

r

(ninguno)

r

r

MILITARY_ROLE

(ninguno)

r

r/w

r

(ninguno)

USA_CITIZEN_ROLE

r

r

(ninguno)

r

(ninguno)

LAND_MANAGER_ROLE

r

r/w

(ninguno)

r

(ninguno)

(Todos los demás usuarios)

(ninguno)

r

(ninguno)

r

(ninguno)

Nota

La entradatopp.states.w=NO_ONEno es obligatoria porque este permiso se heredaría del nivel global (la entrada*.*.w=NO_ONE).

Configuración no válida

Los siguientes ejemplos no son válidos porque las combinaciones de espacio de trabajo, capa y permiso no son únicas:

arriba . estado . rw = ROL1 arriba . estado . rw = ROL2 , ROL3


Seguridad DESCANSO

Además de brindar la capacidad de proteger servicios estilo OWS, GeoServer también admite la protección de servicios RESTful.

Al igual que con la seguridad de capas y servicios, la configuración de seguridad RESTful se basa ensec_roles.La asignación del URI de solicitud al rol se define en un archivo llamadorest.properties, ubicado en elsecuritydirectorio de datos de GeoServer.

Sintaxis

La siguiente sintaxis define reglas de control de acceso para servicios RESTful (los parámetros entre corchetes [] son ​​opcionales):

uriPattern;método[,método,...]=rol[,rol,...]

Los parámetros son:

uriPattern:patrón antque coincide con un conjunto de URI de solicitud

método:método de solicitud HTTP, uno deGET,POST,PUT,POST,DELETEoHEAD

rol: nombre de un rol predefinido.El comodín '* se utiliza para indicar que el permiso se aplica a todos los usuarios, incluidos los usuarios anónimos.

Nota

Los patrones de URI deben representar el primer componente de la ruta de descanso, generalmenterestoapi

Las listas de métodos y funcionesnodeben contener espacios.

Patrones de hormigas

Los patrones Ant se utilizan comúnmente para hacer coincidir patrones con directorios y rutas de archivos.La secciónde ejemploscontiene algunas instrucciones básicas.Elmanual de usuariode Apache ant contiene casos de uso más sofisticados.

Ejemplos

La mayoría de los ejemplos en esta sección son específicos de laconfiguración RESTde GeoServer , pero cualquier servicio RESTful GeoServer se puede configurar de la misma manera.

Permitir solo acceso autenticado

La configuración más segura es aquella que obliga a autenticar cualquier solicitud.El siguiente ejemplo bloquea el acceso a todas las solicitudes:

/**;OBTENER,POST,PONER,BORRAR=ROLE_ADMINISTRADOR

Una configuración menos restrictiva bloquea el acceso a las operaciones bajo la ruta/rest, pero permitirá el acceso anónimo a las solicitudes que caen bajo otras rutas (por ejemplo/api):

/rest/**;GET,POST,PUT,DELETE=ROLE_ADMINISTRATOR

La siguiente configuración es similar a la anterior excepto que otorga acceso a un rol específico en lugar del administrador:

/**;OBTENER,POST,PONER,BORRAR=ROLE_TRUSTED

ROLE_TRUSTEDes un rol definido enusers.properties.

Proporcionar acceso anónimo de solo lectura

La siguiente configuración permite el acceso anónimo cuandoGETse utiliza el método (lectura), pero fuerza la autenticación paraPOST,PUToDELETE(escritura):

/**;GET=IS_AUTHENTICADO_ANONYMOUSLY

/**;POST,PONER,BORRAR=TRUSTED_ROLE

Asegurar un recurso específico

La siguiente configuración fuerza la autenticación para acceder a un recurso en particular (en este caso, un tipo de característica):

/rest/**/estados*;GET=TRUSTED_ROLE

/rest/**;POST,PUT,DELETE=TRUSTED_ROLE

Lo siguiente protege el acceso a un conjunto de recursos (en este caso, todos los almacenes de datos):

/rest/**/datastores/*;GET=TRUSTED_ROLE

/rest/**/datastores/*.*;GET=TRUSTED_ROLE

/rest/**;POST,PUT,DELETE=TRUSTED_ROLE


Deshabilitar la seguridad

Si está utilizando un subsistema de seguridad externo, es posible que desee desactivar la seguridad integrada para evitar conflictos.Es posible deshabilitar la seguridad para cada cadena de filtros de seguridad individualmente.Las cadenas de filtros de seguridad se enumeran en la página de autenticación de GeoServer.

Advertencia

Deshabilitar la seguridad para una cadena de filtros da como resultado privilegios de administrador para cada solicitud HTTP que coincida con esta cadena.Como ejemplo, deshabilitar la seguridad en la cadenawebbrinda acceso administrativo a cada usuario que accede a lainterfaz de la interfaz de administración web.


Tutoriales

Autenticación con LDAP

Autenticación con LDAP contra ActiveDirectory

Configurar la autenticación implícita

Configuración de la autenticación de certificado X.509

Configurar la autenticación J2EE

Configuración de la autenticación del proxy del encabezado HTTP

Configuración de la integración de sesiones HTTPD de Apache

Autenticación con CAS


Authentication with LDAP

This tutorial introduces GeoServer LDAP support and walks through the process of setting up authentication aganist an LDAP server. It is recommended that theLDAP authenticationsection be read before proceeding.

LDAP server setup

A mock LDAP server will be used for this tutorial. Download and run theacme-ldapjar:

java -jar acme-ldap.jar

The output of which should look like the following:

Directory contents:

ou=people,dc=acme,dc=org

uid=bob,ou=people,dc=acme,dc=org

uid=alice,ou=people,dc=acme,dc=org

uid=bill,ou=people,dc=acme,dc=org

ou=groups,dc=acme,dc=org

cn=users,ou=groups,dc=acme,dc=org

member: uid=bob,ou=people,dc=acme,dc=org

member: uid=alice,ou=people,dc=acme,dc=org

cn=admins,ou=groups,dc=acme,dc=org

member: uid=bill,ou=people,dc=acme,dc=org

Server running on port 10389

The following diagram illustrates the hierachy of the LDAP datatabse:


The LDAP tree consists of:

The root domain component,dc=acme,dc=org

Two organizational units (groups) nameduserandadmin

Two users namedbobandalicewho are members of theusergroup

One user namedbillwho is a member of theadmingroup

Configure the LDAP authentication provider


Start GeoServer and login to the web admin interface as theadminuser.



Click theAuthenticationlink located under theSecuritysection of the navigation sidebar.


Scroll down to theAuthenticationProviderspanel and click theAddnewlink.


Click theLDAPlink.


Fill in the fields of the settings form as follows:


SetNameto “acme-ldap”

SetServerURLto “ldap://localhost:10389/dc=acme,dc=org

SetUserlookuppatternto “uid={0},ou=people”


Test the LDAP connection by entering the username “bob” and password “secret” in the connection test form located on the right and click theTestConnectionbutton.



A successful connection should be reported at the top of the page.



Save.



Back on the authentication page scroll down to theProviderChainpanel and move theacme-ldapprovider fromAvailabletoSelected.



Save.


Test a LDAP login


Navigate to the GeoServer home page and log out of the admin account.



Login as the user “bob” with the with the password “secret”.



Logging in as bob doesn’t yield any administrative functionality because the bobaccount has not been mapped to the administrator role. In the next section GeoServer will be configured to map groups from the LDAP database to roles.

Map LDAP groups to GeoServer roles

When using LDAP for authentication GeoServer maps LDAP groups to GeoServer roles by prefixing the group name withROLE_and converting the result to uppercase. For example bob and alice are members of theusergroup so after authentication they would be assigned a role namedROLE_USER. Similarily bill is a member of theadmingroup so he would be assigned a role namedROLE_ADMIN.


Log out of the web admin and log back in as the admin user.



Navigate to theAuthenticationpage.



Scroll to theAuthenticationProviderspanel and click theacme-ldaplink.


On the settings page fill in the following form fields:


SetGroupsearchbaseto “ou=groups”

SetGroupsearchfilterto “member={0}”

The first field specifies the node of the LDAP directory tree at which groups are located. In this case the organizational unit namedgroups. The second field specifies the LDAP query filter to use in order to locate those groups that a specific user is a member of. The{0}is a placeholder which is replaced with theuidof the user.

SetGrouptouseasADMINto “ADMIN”

SetGrouptouseasGROUP_ADMINto “ADMIN”

These settings let users in the LDAP admin group to be recognized as GeoServer administrators.


Save.


At this point the LDAP provider will populate an authenticated user with roles based on the groups the user is a member of.

At this point members of theadminLDAP group should be given full administrative privileges once authenticated. Log out of the admin account and log in as “bill” with the password “hello”. Once logged in full administrative functionality should be available.

Configure the LDAP role service

An additional step permits to configure a role service to get GeoServer roles from the LDAP repository and allow access rights to be assigned to those roles.


Click theUsers,Group,Roleslink located under theSecuritysection of the navigation sidebar.



Click theAddnewlinkunder theRoleServicessection.



Click theLDAPoption under theNewRoleServicesection.


Enterldaprsin theNametext field.



Enterldap://localhost:10389/dc=acme,dc=orgin theServerURLtext field.



Enterou=groupsin theGroupsearchbasetext field.



Entermember=uid={0},ou=people,dc=acme,dc=orgin theGroupusermembershipsearchfiltertext field.



Entercn=*in theAllgroupssearchfiltertext field.


Then we need to a choose a user to authenticate on the server (many LDAP server don’t allow anonymous data lookup).

Check theAuthenticatetoextractrolescheckbox.

Enteruid=bill,ou=people,dc=acme,dc=orgin theUsernametext field.

Enterhelloin thePasswordtext field.

Save.

Click theldaprsrole service item under theRoleServicessection.

SelectROLE_ADMINfrom theAdministratorrolecombobox.

SelectROLE_ADMINfrom theGroupadministratorrolecombobox.

Save again.

You should now be able to see and assign the newROLE_ADMINandROLE_USERroles wherever anAvailableRoleslist is shown (for example in theDataandServicesrules sections.


Authentication with LDAP against ActiveDirectory

This tutorial explains how to use GeoServer LDAP support to connect to a Windows Domain using ActiveDirectory as an LDAP server. It is recommended that theLDAP authenticationsection be read before proceeding.

Windows Server and ActiveDirectory

Active Directory is just another LDAP server implementation, but has some features that we must know to successfully use it with GeoServer LDAP authentication. In this tutorial we will assume to have a Windows Server Domain Controller with ActiveDirectory nameddomain-controllerfor a domain namedad.local. If your environment uses different names (and it surely will) use your real names where needed.

We will also assume that:

a group namedGISADMINGROUPexists.

a user namedGISADMINexists, has passwordsecret, and belongs to theGISADMINGROUPgroup.

a user namedGISUSERexists, has passwordsecret, and does NOT belong to theGISADMINGROUPgroup.

Note

ADMINISTRATOR cannot be generally used as the admin group name with ActiveDirectory, because Administrator is the master user name in Windows environment.

Configure the LDAP authentication provider


Start GeoServer and login to the web admin interface as theadminuser.



Click theAuthenticationlink located under theSecuritysection of the navigation sidebar.


Scroll down to theAuthenticationProviderspanel and click theAddnewlink.



Click theLDAPlink.



Fill in the fields of the settings form as follows:


SetNameto “ad-ldap”

SetServerURLto “ldap://domain-controller/dc=ad,dc=local

SetFilterusedtolookupuserto(|(userPrincipalName={0})(sAMAccountName={1}))

SetFormatusedforuserloginnameto “{0}@ad.local

CheckUseLDAPgroupsforauthorization

CheckBinduserbeforesearchingforgroups

SetGrouptouseasADMINto “GISADMINGROUP”

SetGroupsearchbaseto “cn=Users”

SetGroupsearchfilterto “member={0}”


Test the LDAP connection by entering the username “GISADMIN” and password “secret” in the connection test form located on the right and click theTestConnectionbutton.


A successful connection should be reported at the top of the page.



Save.



Back on the authentication page scroll down to theProviderChainpanel and move thead-ldapprovider fromAvailabletoSelected.


Save.


Test a LDAP login


Navigate to the GeoServer home page and log out of the admin account.



Login as the user “GISUSER” with the with the password “secret”.


Logging in as GISUSER doesn’t yield any administrative functionality because the GISUSER account has not been mapped to the administrator role. In the next section GeoServer will be configured to map groups from the LDAP database to roles.

Now we will login with a user having administrative rights.

Navigate to the GeoServer home page and log out of the account.

Login as the user “GISADMIN” with the with the password “secret”.

Once logged in full administrative functionality should be available.

Configure the LDAP role service

An additional step permits to configure a role service to get GeoServer roles from the LDAP repository and allow access rights to be assigned to those roles.


Click theUsers,Group,Roleslink located under theSecuritysection of the navigation sidebar.



Click theAddnewlinkunder theRoleServicessection.



Click theLDAPoption under theNewRoleServicesection.


Enterldapadrsin theNametext field.



Enterldap://domain-controller/dc=ad,dc=localin theServerURLtext field.



EnterCN=Usersin theGroupsearchbasetext field.



Entermember={1},dc=ad,dc=localin theGroupusermembershipsearchfiltertext field.



EnterobjectClass=groupin theAllgroupssearchfiltertext field.



EntersAMAccountName={0}in theFilterusedtolookupusertext field.


Then we need to a choose a user to authenticate on the server (many LDAP server don’t allow anonymous data lookup).

Check theAuthenticatetoextractrolescheckbox.

EnterGISADMIN@ad.localin theUsernametext field.

Entersecretin thePasswordtext field.

Save.

Click theldapadrsrole service item under theRoleServicessection.

SelectROLE_DOMAINADMINSfrom theAdministratorrolecombobox.

SelectROLE_DOMAINADMINSfrom theGroupadministratorrolecombobox.

Save again.

You should now be able to see and assign the new ActiveDirectory roles wherever anAvailableRoleslist is shown (for example in theDataandServicesrules sections.


Configuring Digest Authentication

Introduction

Out of the box GeoServer REST and OGC services support authentication viaHTTP Basic authentication. One of the major downsides of basic auth is that it sends user passwords in plain text.HTTP Digest authenticationoffers a more secure alternative that applies a cryptographic hash function to passwords before sending them over the network.

This tutorial walks through the process of setting up digest authentication.

Prerequisites

This tutorial uses thecurlutility to issue HTTP request that test authentication. Install curl before proceeding.

Note

Any utility that supports both basic and digest authentication can be used in place of curl. Most modern web browsers support both types of authentication.

Configure the Digest authentication filter


Start GeoServer and login to the web admin interface as theadminuser.



Click theAuthenticationlink located under theSecuritysection of the navigation sidebar.


Scroll down to theAuthenticationFilterspanel and click theAddnewlink.



Click theDigestlink.


Fill in the fields of the settings form as follows:


SetNameto “digest”

SetUsergroupserviceto “default”


Save.



Back on the authentication page scroll down to theFilterChainspanel.



Select “Default” from theRequesttypedrop down.



Unselect thebasicfilter and select thedigestfilter. Position the thedigestfilter before theanonymousfilter.


Save.


Secure OGC service requests

In order to test the authentication settings configured in the previous section a service or resource must be first secured. TheDefaultfilter chain is the chain applied to all OGC service requests so a service security rule must be configured.


From the GeoServer home page and click theServiceslink located under theSecuritysection of the navigation sidebar.


On the Service security page click theAddnewrulelink and add a catch all rule that secures all OGC service requests requiring theROLE_ADMINISTRATORrole.


Save.


Test a digest authentication login


Ensure that basic authentication is disabled execute the following curl command:


curl -v -u admin:geoserver -G "http://localhost:8080/geoserve/wfs?request=getcapabilities"


The result should be a 401 response signaling that authentication is required. The output should look something like the following:


* About to connect() to localhost port 8080 (#0)

* Trying 127.0.0.1... connected

* Connected to localhost (127.0.0.1) port 8080 (#0)

* Server auth using Basic with user 'admin'

> GET /geoserver/wfs?request=getcapabilities HTTP/1.1

> Authorization: Basic YWRtaW46Z2Vvc2VydmVy

> User-Agent: curl/7.19.7 (universal-apple-darwin10.0) libcurl/7.19.7 OpenSSL/0.9.8r zlib/1.2.3

> Host: localhost:8080

> Accept: */*

>

< HTTP/1.1 401 Full authentication is required to access this resource

< Set-Cookie: JSESSIONID=1dn2bi8qqu5qc;Path=/geoserver

< WWW-Authenticate: Digest realm="GeoServer Realm", qop="auth", nonce="MTMzMzQzMDkxMTU3MjphZGIwMWE4MTc1NmRiMzI3YmFiODhmY2NmZGQ2MzEwZg=="

< Content-Type: text/html; charset=iso-8859-1

< Content-Length: 1491

< Server: Jetty(6.1.8)

<

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>

<title>Error 401 Full authentication is required to access this resource</title>

</head>

...



Execute the same command but specify the--digestoption to tell curl to use digest authentication rather than basic authentication:


curl --digest -v -u admin:geoserver -G "http://localhost:8080/geoserve/wfs?request=getcapabilities"


The result should be a successful authentication and contain the normal WFS capabilities response.



Configuring X.509 Certificate Authentication

Certificate authentication involves the usage of public/private keys to identify oneself. This represents a much more secure alternative to basic user name and password schemes.

X.509is a well defined standard for the format of public key certificates. This tutorial walks through the process of setting up X.509 certificate authentication.

Prerequisites

This tutorial assumes the following:

A web browser that supports the usage of client certificates for authentication, also referred to as “two-way SSL”. This tutorial usesFirefox.

An SSL-capable servlet container. This tutorial usesTomcat.

GeoServer is deployed in Tomcat.

Configure the user/group service

Users authenticated via a X.509 certificate must be configured in GeoServer. For this a new user/group service will be added.


Login to the web admin interface as theadminuser.



Click theUsers,Groups,andRoleslink located under theSecuritysection of the navigation sidebar.


Scroll down to theUserGroupServicespanel and click theAddnewlink.



Create a new user/group service namedcert-ugsand fill out the settings form as follows:


SetPassword encryptiontoEmptysince users will not authenticate via password.

SetPassword policytodefault.

ClickSave.



Back on theUsers,Groups,andRolespage, click thecert-ugslink.


Select theUserstab and click theAdd new userlink.


Add a new user namedrodthe and assign theADMINrole.


ClickSave.



Click theAuthenticationlink located under theSecuritysection of the navigation sidebar.


Scroll down to theAuthentication Filterspanel and click theAdd newlink.



Click theX.509link and fill out form as follows:


SetNameto “cert”

SetRole sourcetoUsergroupserviceand set the associated drop-down tocert-ugs


ClickSave.



Back on the authentication page, scroll down to theFilter Chainspanel.



Clickwebin theNamecolumn.



Select thecertfilter and position it after theremembermefilter.




ClickClose.



You will be returned to the previous page. ClickSave.


Warning


This last change requires bothCloseand thenSaveto be clicked. You may wish to return to thewebdialog to verify that the change was made.


Download sample certificate files

Rather than demonstrate how to create or obtain valid certificates, which is beyond the scope of this tutorial, sample files available as part of the spring securitysample applicationswill be used.

Download and unpack thesample certificate files. This archive contains the following files:

ca.pemis the certificate authority (CA) certificate issued by the “Spring Security Test CA” certificate authority. This file is used to sign the server and client certificates.

server.jksis the Java keystore containing the server certificate and private key used by Tomcat and presented to the user during the setup of the SSL connection.

rod.p12contains the client certificate / key combination used to perform client authentication via the web browser.

Configure Tomcat for SSL


Copy theserver.jksfile into theconfdirectory under the root of the Tomcat installation.



Edit the Tomcatconf/server.xmland add an SSL connector:


<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true" scheme="https" secure="true"

clientAuth="true" sslProtocol="TLS"

keystoreFile="${catalina.home}/conf/server.jks"

keystoreType="JKS" keystorePass="password"

truststoreFile="${catalina.home}/conf/server.jks"

truststoreType="JKS" truststorePass="password" />


This enables SSL on port 8443.



By default, Tomcat has APR enabled. To disable it so the above configuration can work, remove or comment out the following line in the server.xml configration file


<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />



Restart Tomcat.


Install the client certificate


In Firefox, selectPreferences(orTools ‣ Options) and navigate to theAdvancedpanel.



Select theEncryptiontab (or theCertificatestab, depending on your version) and click theView Certificatesbutton.


On theYour Certificatespanel click theImportbutton and select therod.p12file.



When prompted enter in the passwordpassword.




ClickOKand close the Firefox Preferences.


Test certificate login


Navigate to the GeoServer admin on port “8443” using HTTPS:https://localhost:8443/geoserver/web



You will be prompted for a certificate. Select therodcertificate for identification.


When warned about the self-signed server certificate, clickAdd Excceptionto add a security exception.



The result is that the userrodis now logged into the GeoServer admin interface.

Note

Starting with version 31, Firefox implements a new mechanism for using certificates, which will cause aIssuer certificate is invalid error (sec_error_ca_cert_invalid)error when trying to use a self-signed repository such as the one proposed. To avoid that, you can disable this mechanism by browsing toabout:configand setting thesecurity.use_mozillapkix_verificationparameter tofalse.


Configuring J2EE Authentication

Servlet containers such as Tomcat and Jetty offer their own options for authentication. Often it is desirable for an application such as GeoServer to use that existing authentication mechanisms rather than require its own authentication configuration.

J2EE authentication allows GeoServer to delegate to the servlet container for authentication. This tutorial walks through the process of setting up J2EE authentication.

Prerequisites

This tutorial requires a servlet container capable of doing its own authentication. This tutorial uses Tomcat.

Deploy GeoServer in tomcat before proceeding.

Configure the J2EE authentication filter

In order to delegate to the container for authentication a filter must first be configured to recognize the container authentication.


Login to the GeoServer web admin interface as theadminuser.



Click theAuthenticationlink located under theSecuritysection of the navigation sidebar.





Scroll down to theAuthenticationFilterpanel and click theAddnewlink.



Create a new filter named “j2ee” and fill out the settings form as follows:


Set theRoleserviceto “default”



Save



Back on the authentication page scroll down to theFilterChainspanel.



Select “Web UI” from theRequesttypedrop down.



Select thej2eefilter and position it after theanonymousfilter.


Save.


Configure the role service

Since it is not possible to ask a J2EE container for the roles of a principal it is necessary to have all J2EE roles enlisted in a role service. The only J2EE API GeoServer can use is:

class: javax.servlet.http.HttpServletRequest

method: boolean isUserInRole(String role)

The idea is to query all roles from the role service and test each role with the “isUserInRole” method.

This tutorial assumes a user named “admin” with password “password” and a J2EE role named “tomcat”.


Click theUsers,Groups,andRoleslink located under theSecuritysection of the navigation sidebar.




Click ondefaultto work with the role service named “default”.


Click on theRolestab.


Click on theAddnewrolelink.


Set theNameto “tomcat”


Save


Configure Tomcat for authentication

By default Tomcat does not require authentication for web applications. In this section Tomcat will be configured to secure GeoServer requiring a basic authentication login.


Shut down Tomcat.



Edit theconf/tomcat-users.xmlunder the Tomcat root directory and add a user named “admin”:


<user username="admin" password="password" roles="tomcat"/>



Edit the GeoServerweb.xmlfile located atwebapps/geoserver/WEB-INF/web.xmlunder the Tomcat root directory and add the following at the end of the file directly before the closing</web-app>element:


<security-constraint>

<web-resource-collection>

<url-pattern>/*</url-pattern>

<http-method>GET</http-method>

<http-method>POST</http-method>

</web-resource-collection>

<auth-constraint>

<role-name>tomcat</role-name>

</auth-constraint>

</security-constraint>

<login-config>

<auth-method>BASIC</auth-method>

</login-config>


Saveweb.xmland restart Tomcat.


Note

It is necessary to add all the role names specified in theweb.xmlto the configured role service. This is duplicate work but there is currently no other solution.

Test J2EE login


Navigate to the GeoServer web admin interface. The result should be a prompt to authenticate.



Enter in the username “admin” and password “password”



The result should be the admin user logged into the GeoServer web admin.


Configuring HTTP Header Proxy Authentication

Introduction

Proxy authentication is used in multi-tier system. The user/principal authenticates at the proxy and the proxy provides the authentication information to other services.

This tutorial shows how to configure GeoServer to accept authentication information passed by HTTP header attribute(s). In this scenario GeoServer will do no actual authentication itself.

Prerequisites

This tutorial uses thecurlutility to issue HTTP request that test authentication. Install curl before proceeding.

Note

Any utility that supports setting HTTP header attributes can be used in place of curl.

Configure the HTTP header filter


Start GeoServer and login to the web admin interface as theadminuser.



Click theAuthenticationlink located under theSecuritysection of the navigation sidebar.


Scroll down to theAuthenticationFilterspanel and click theAddnewlink.


Click theHTTPHeaderlink.



Fill in the fields of the settings form as follows:


SetNameto “proxy”

SetRequestheaderattributetoto “sdf09rt2s”

SetRolesourceto “User group service”

Set the name of the user group service to “default”

Additional information about role services is hereRole source and role calculation


Warning

The tutorial uses the obscure “sdf09rt2s” name for the header attribute. Why not use “user” or “username” ?. In a proxy scenario a relationship of trust is needed between the proxy and GeoServer. An attacker could easily send an HTTP request with an HTTP header attribute “user” and value “admin” and operate as an administrator.

One possibility is to configure the network infrastructure preventing such requests from all IP addresses except the IP of the proxy.

This tutorial uses a obscure header attribute name which should be a shared secret between the proxy and GeoServer. Additionally, the use of SSL is recommended, otherwise the shared secret is transported in plain text.


Save.



Back on the authentication page scroll down to theFilterChainspanel.



Select “Default” from theRequesttypedrop down.



Unselect thebasicfilter and select theproxyfilter. Position the theproxyfilter before theanonymousfilter.



Save.


Secure OGC service requests

In order to test the authentication settings configured in the previous section a service or resource must be first secured. TheDefaultfilter chain is the chain applied to all OGC service requests so a service security rule must be configured.


From the GeoServer home page and click theServiceslink located under theSecuritysection of the navigation sidebar.


On the Service security page click theAddnewrulelink and add a catch all rule that secures all OGC service requests requiring theADMINrole.



Save.


Test a proxy login


Execute the following curl command:


curl -v -G "http://localhost:8080/geoserver/wfs?request=getcapabilities"


The result should be a 403 response signaling that access is denied. The output should look something like the following:


* About to connect() to localhost port 8080 (#0)

* Trying ::1... connected

> GET /geoserver/wfs?request=getcapabilities HTTP/1.1

> User-Agent: curl/7.22.0 (x86_64-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1 zlib/1.2.3.4 libidn/1.23 librtmp/2.3

> Host: localhost:8080

> Accept: */*

>

< HTTP/1.1 403 Access Denied

< Content-Type: text/html; charset=iso-8859-1

< Content-Length: 1407

< Server: Jetty(6.1.8)

<

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>

<title>Error 403 Access Denied</title>

</head>

...



Execute the same command but specify the--headeroption.:


curl -v --header "sdf09rt2s: admin" -G "http://localhost:8080/geoserver/wfs?request=getcapabilities"


The result should be a successful authentication and contain the normal WFS capabilities response.



Configuring Apache HTTPD Session Integration

Introduction

When using Apache HTTPD as a proxy frontend for GeoServer, it is possible to share authentication with a proper configuration of both.

This requires enabling Session for the Geoserver location in Apache HTTPD and adding a custom Request Header with the session content, so that the Geoserver security system can receive user credentials and use them to authenticate the user with its internal filters.

To properly parse the received credentials we need to use theCredentials From Request HeadersAuthentication Filter.

Please note that the header containing the password is not sent back and forth to the user browser, but only from Apache HTTPD to GeoServer, so the password is not sent in clear through the public network.

This tutorial shows how to configure GeoServer to read user credentials from the Apache HTTPD Session and use them for authentication purposes.

Prerequisites

This tutorial uses thecurlutility to issue HTTP request that test authentication. Install curl before proceeding.

Configure the Credentials From Request Headers filter


Start GeoServer and login to the web admin interface as theadminuser.



Click theAuthenticationlink located under theSecuritysection of the navigation sidebar.



Scroll down to theAuthenticationFilterspanel and click theAddnewlink.



Click theCredentialsFromHeaderslink.


Fill in the fields of the settings form as follows:


SetNameto “apachessesion”

SetUsernameHeaderto “X-Credentials”

SetRegularExpressionforUsernameto “private-user=([^&]*)”

SetPasswordHeaderto “X-Credentials”

SetRegularExpressionforPasswordto “private-pw=([^&]*)”


Save.


Back on the authentication page scroll down to theFilterChainspanel.


Click on “default” in the chain grid.


Scroll down and remove all filters from theSelectedlist and add theapachessesionfilter.


Close.


Save.


Test a login


Execute the following curl command (with a wrong password):


curl -v -H "X-Credentials: private-user=admin&private-pw=wrong" "http://localhost:8080/geoserver/wms?service=WMS&version=1.1.1&request=GetCapabilities"


The result should be a 403 response signaling that access is denied. The output should look something like the following:


* About to connect() to localhost port 8080 (#0)

* Trying ::1... connected

> GET /geoserver/wfs?request=getcapabilities HTTP/1.1

> User-Agent: curl/7.22.0 (x86_64-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1 zlib/1.2.3.4 libidn/1.23 librtmp/2.3

> Host: localhost:8080

> Accept: */*

>

< HTTP/1.1 403 Access Denied

< Content-Type: text/html; charset=iso-8859-1

< Content-Length: 1407

< Server: Jetty(6.1.8)

<

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>

<title>Error 403 Access Denied</title>

</head>

...



Execute the same command but specify the right password.:


curl -v -H "X-Credentials: private-user=admin&private-pw=geoserver" "http://localhost:8080/geoserver/wms?service=WMS&version=1.1.1&request=GetCapabilities"


The result should be a successful authentication and contain the normal WMS capabilities response.


Configure Apache HTTPD to forward an Header with authentication credentials

This can be done with an HTTPD configuration that looks like the following:

<Location /geoserver>

Session On

SessionEnv On

SessionHeader X-Replace-Session

SessionCookieName session path=/

SessionCryptoPassphrase secret

RequestHeader set X-Credentials "%{HTTP_SESSION}e"

</Location>

This configuration adds a newX-CredentialsRequest Header to each Geoserver request. The request header will contain the HTTPD Session information in a special format.

An example of the Session content is the following:

X-Credentials: private-user=admin&private-pw=geoserver

As you can see it contains both the username and password of the user, so the data can be used to authenticate the user in GeoServer.


Authentication with CAS

This tutorial introduces GeoServer CAS support and walks through the process of setting up authentication aganist an CAS server. It is recommended that theAuthentication chainsection be read before proceeding.

CAS server certificates

A runningCAS serveris needed.

The first step is to import the server certificates into the the GeoServer JVM.

If you need to export theCRTfrom the CAS server, you must execute the following command on the server JVM:

keytool -export -alias <server_name> -keystore <cas_jvm_keystore_path> -file server.crt

Once you have theserver.crtfile, the procedure to import the certificate into the JVM is the following one:

keytool -import -trustcacerts -alias <server_name> -file server.crt -keystore <path_to_JRE_cacerts>

Enter the keystore password and confirm the certificate to be trustable.

Configure the CAS authentication provider


Start GeoServer and login to the web admin interface as theadminuser.


Click theAuthenticationlink located under theSecuritysection of the navigation sidebar.


Scroll down to theAuthenticationFilterspanel and click theAddnewlink.



Click theCASlink.

Fill in the fields of the settings form as follows:

Update the filter chains by adding the new CAS filter.

Select the CAS Filter for each filter chain you want to protect with CAS.

Be sure to select and order correctly the CAS Filter.

Save.

Test a CAS login

Navigate to the GeoServer home page and log out of the admin account.


Try to login again, you should be able now to see the external CAS login form.



Running in a Production Environment

GeoServer is geared towards many different uses, from a simple test server to the enterprise-level data server. While many optimizations for GeoServer are set by default, here are some extra considerations to keep in mind when running GeoServer in a production environment.

Java Considerations

Use Supported JRE

Install native JAI and JAI Image I/O extensions

Installing Unlimited Strength Jurisdiction Policy Files

Container Considerations

Optimize your JVM

Configuration Considerations

Use production logging

Set a service strategy

Personalize your server

Configure service limits

Set security

Cache your data

Disable the GeoServer web administration interface

Data Considerations

Use an external data directory

Use a spatial database

Pick the best performing coverage formats

Linux init scripts

Debian/Ubuntu

Suse

Starting GeoServer in Tomcat

Other Considerations

Host your application separately

Proxy your server

Publish your server’s capabilities documents

Set up clustering

Troubleshooting

Checking WFS requests

Leveraging GeoServer own log

Logging service requests

Using JDK tools to get stack and memory dumps

XStream

Make cluster nodes identifiable from the GUI


Consideraciones sobre Java

Utilice JRE compatible

La velocidad de GeoServer depende en gran medida del Java Runtime Environment (JRE) elegido.Para obtener el mejor rendimiento, utiliceOracle JRE 7(también conocido como JRE 1.7).Los JRE distintos de los probados pueden funcionar correctamente, pero generalmente no se recomiendan.Como ejemplo, los usuarios de OpenJDK 1.6 informan que GeoServer 2.5 funciona con un rendimiento de renderizado 2D reducido.

Probado:

Java 7: GeoServer 2.6.x y superior (OpenJDK y Oracle JRE probados)

Java 6: GeoServer 2.3.x a GeoServer 2.5.x (probado por Oracle JRE)

Java 5: GeoServer 2.2.x y versiones anteriores (probado por Sun JRE)

No compatible:

Java 8: no compatible con problemas conocidos (actualmente no se compila)

A partir de GeoServer 2.0, un Java Runtime Environment (JRE) es suficiente para ejecutar GeoServer.GeoServer ya no requiere un kit de desarrollo de Java (JDK).

Instale extensiones nativas JAI y JAI Image I/O

JavaAdvanced Imaging API(JAI) es una biblioteca de manipulación de imágenes avanzada creada por Oracle.GeoServer requiere que JAI trabaje con coberturas y lo aprovecha para la generación de resultados WMS.De forma predeterminada, GeoServer se envía con la versión Java pura de JAI, peropara obtener el mejor rendimiento, instale la versión nativa de JAI en su JDK/JRE.

En particular, instalar el JAI nativo es importante para todo el procesamiento de rásteres, que se utiliza mucho tanto en WMS como en WCS para reescalar, cortar y reproyectar rásteres.La instalación del JAI nativo también es importante para toda la lectura y escritura de ráster, lo que afecta tanto a WMS como a WCS.Finalmente, JAI nativo es muy útil incluso si no hay datos ráster involucrados, ya que la codificación de salida WMS requiere escribir imágenes PNG/GIF/JPEG, que en sí mismas son rásteres.

Hay extensiones nativas disponibles para Windows, Linux y Solaris (sistemas de 32 y 64 bits).Sin embargo, no están disponibles para OS X.

Nota

Estos instaladores están limitados para permitir agregar extensiones nativas a una sola versión de JDK/JRE en su sistema.Si se necesitan extensiones nativas en varias versiones, será necesario descomprimir las extensiones manualmente.Consulte la sección sobreInstalación manual de JAI nativo.

Nota

Estos instaladores también solo pueden aplicar las extensiones al JDK/JRE utilizado actualmente.Si se necesitan extensiones nativas en un JDK/JRE diferente al que se utiliza actualmente, será necesario desinstalar primero el actual y luego ejecutar el programa de instalación en el JDK/JRE restante.

Instalación de JAI nativo en Windows

Vaya a lapágina de descarga de JAIy descargue el instalador de Windows para la versión 1.1.3.Al momento de escribir este artículo, solo está disponible la versión de 32 bits del instalador, por lo que si está usando un JDK, querrá descargarjai-1_1_3-lib-windows-i586-jdk.exe, y si está usando un JRE , querrás descargarjai-1_1_3-lib-windows-i586-jre.exe.

Ejecute el instalador y apúntelo a la instalación JDK/JRE que GeoServer utilizará para ejecutar.

Vaya a lapágina de descarga de JAI Image I/Oy descargue el instalador de Windows para la versión 1.1.Al momento de escribir este artículo, solo está disponible la versión de 32 bits del instalador, por lo que si está usando un JDK, querrá descargarjai_imageio-1_1-lib-windows-i586-jdk.exe, y si está usando un JRE , querrás descargarjai_imageio-1_1-lib-windows-i586-jre.exe

Ejecute el instalador y apúntelo a la instalación JDK/JRE que GeoServer utilizará para ejecutar.

Instalación de JAI nativo en Linux


Vaya a lapágina de descarga de JAIy descargue el instalador de Linux para la versión 1.1.3, eligiendo la arquitectura adecuada:


i586para los sistemas de 32 bits

AMD64para los de 64 bits (incluso si usan procesadores Intel)


Copie el archivo en el directorio que contiene JDK/JRE y luego ejecútelo.Por ejemplo, en un sistema Ubuntu de 32 bits:


$ sudo cp jai-1_1_3-lib-linux-i586-jdk.bin /usr/lib/jvm/java-6-sun

$ cd /usr/lib/jvm/java-6-sun

$ sudo sh jai-1_1_3-lib-linux-i586-jdk.bin

# aceptar licencia

$ sudo rm jai-1_1_3-lib-linux-i586-jdk.bin



Vaya a lapágina de descarga de JAI Image I/Oy descargue el instalador de Linux para la versión 1.1, eligiendo la arquitectura adecuada:


i586para los sistemas de 32 bits

AMD64para los de 64 bits (incluso si usan procesadores Intel)


Copie el archivo en el directorio que contiene JDK/JRE y luego ejecútelo.Si tiene dificultades, es posible que deba exportar la variable de entorno_POSIX2_VERSION=199209.Por ejemplo, en un sistema Linux Ubuntu de 32 bits:


$ sudo cp jai_imageio-1_1-lib-linux-i586-jdk.bin /usr/lib/jvm/java-6-sun

$ cd /usr/lib/jvm/java-6-sun

$ sudo su

$ exportar _POSIX2_VERSION=199209

$ sh jai_imageio-1_1-lib-linux-i586-jdk.bin

# aceptar licencia

$ rm ./jai_imageio-1_1-lib-linux-i586-jdk.bin

$ salir


Instalación manual de JAI nativo

Puede instalar el JAI nativo manualmente si tiene problemas al utilizar los instaladores anteriores o si desea instalar el JAI nativo para más de un JDK/JRE.

Consulte lapágina de GeoTools sobre la instalación de JAIpara obtener más detalles.

Limpieza de GeoServer

Una vez completada la instalación, opcionalmente puede eliminar los archivos JAI originales de la instancia de GeoServer:

jai_core - x . y . z . jar jai_imageio - x . y . jar jai_codec - x . y . z . frasco

dondex,yyzse refieren a números de versión específicos.

Instalación de archivos de política de jurisdicción de fuerza ilimitada

Estos archivos de políticas son necesarios para una criptografía ilimitada.Por ejemplo, Java no admite AES con una longitud de clave de 256 bits.La instalación de los archivos de políticas elimina estas restricciones.

Abrir JDK

Dado que Open JDK es de código abierto, los archivos de políticas ya están instalados.

Oráculo Java

Los archivos de políticas están disponibles en

Frascos de políticas JCE de Java 6

Frascos de políticas JCE de Java 7

Frascos de políticas JCE de Java 8

La descarga contiene dos archivos,local_policy.jaryUS_export_policy.jar.Las versiones predeterminadas de estos dos archivos se almacenan en JRE_HOME/lib/security.Reemplace estos dos archivos con las versiones de la descarga.

Pruebe si hay disponible una longitud de clave ilimitada

Inicie o reinicie GeoServer e inicie sesión como administrador.La advertencia anotada debería haber desaparecido.


Además, el archivo de registro de GeoServer debe contener la siguiente línea:

"Hay disponible una criptografía potente"

Nota

El reemplazo debe realizarse para cada actualización del tiempo de ejecución de Java.

IBMJava

Los archivos de políticas están disponibles en

Frascos de políticas de IBM JCE

Se necesita un ID de IBM para iniciar sesión. La instalación es idéntica a la de Oracle.


Consideraciones sobre el contenedor

Los contenedores web Java, comoTomcatoJetty,se entregan con configuraciones que permiten un inicio rápido, pero no siempre ofrecen el mejor rendimiento.

Optimice su JVM

Establezca las siguientes configuraciones de rendimiento en la máquina virtual Java (JVM) para su contenedor.Estas configuraciones no son específicas de ningún contenedor.

Opción

Descripción

-server

Habilita el servidor Java Virtual Machine (JVM), que compila el código de bytes mucho antes y con optimizaciones más sólidas.El inicio y las llamadas iniciales serán más lentos debido a que la compilación "justo a tiempo" (JIT) lleva más tiempo, pero las llamadas posteriores serán más rápidas.

-Xmx256M-Xms48m

Asigna memoria adicional a su servidor.De forma predeterminada, JVM utilizará sólo 64 MB de montón.Si solo proporciona datos vectoriales, estará transmitiendo, por lo que tener más memoria no aumentará el rendimiento.Sin embargo, si ofrece coberturas, JAI utilizará un caché de disco.-Xmx256MAsigna 256 MB de memoria a GeoServer (use más si tiene exceso de memoria).También es una buena idea configurar el tamaño de la caché de mosaicos JAI (consulte la página Configuración del servidor en la secciónInterfaz de administración web) para que utilice el 75% del montón (0,75).-Xms48mle indicará a la máquina virtual que tome un montón de 48 MB al inicio, lo que hará que la administración del montón sea más estable durante el servicio de carga pesada.

-XX:SoftRefLRUPolicyMSPerMB=36000

Aumenta la vida útil de las “referencias suaves” en GeoServer.GeoServer utiliza referencias suaves para almacenar en caché las referencias del almacén de datos y otras solicitudes similares.Hacer que vivan más tiempo aumentará la eficacia del caché.

-XX:MaxPermSize=128m

Aumenta el tamaño máximo de generación permanente (o “permgen”) asignado a GeoServer a 128 MB.Permgen es la parte del montón donde se almacena el código de bytes de la clase.GeoServer utiliza muchas clases y puede agotar ese espacio rápidamente, provocando errores de falta de memoria.Esto es especialmente importante si está implementando GeoServer junto con otras aplicaciones en el mismo contenedor, o si necesita implementar múltiples instancias de GeoServer dentro del mismo contenedor.

-XX:+UseParallelGC

Habilita el recolector de basura de rendimiento.

Para obtener más información sobre la configuración de JVM, consulte el artículoRecolección de basura para ajuste del rendimiento en Java.


Consideraciones de configuración

Utilice el registro de producción

El registro puede afectar visiblemente el rendimiento de su servidor.A menudo se necesitan niveles de registro altos para localizar problemas, pero de forma predeterminada debes ejecutar con niveles bajos.(Puede cambiar los niveles de registro mientras GeoServer se está ejecutando).

Puede cambiar el nivel de registro en lainterfaz de administración web.Querrá elegir la configuración de registrode PRODUCCIÓN.

Establecer una estrategia de servicio

Una estrategia de servicio es el método mediante el cual se entrega el resultado al cliente.Este es un equilibrio entre la forma adecuada (estar absolutamente seguro de informar errores con los códigos OGC adecuados, etc.) y la velocidad (entregar resultados lo más rápido posible).Esta es una decisión que se debe tomar en función de la función que proporciona GeoServer.Puede configurar la estrategia de servicio modificando elweb.xmlarchivo de su instancia de GeoServer.

Las posibles estrategias son:

Estrategia

Descripción

SPEED

Sirve salida de inmediato.Esta es la estrategia más rápida, pero normalmente se omiten los errores OGC adecuados.

BUFFER

Almacena el resultado completo en la memoria y luego lo entrega una vez completada la salida.Esto garantiza un informe de errores OGC adecuado, pero retrasa bastante la respuesta y puede agotar la memoria si la respuesta es grande.

FILE

Similar aBUFFER, pero almacena el resultado completo en un archivo en lugar de en la memoria.Más lento queBUFFER, pero garantiza que no habrá problemas de memoria.

PARTIAL-BUFFER

Un equilibrio entreBUFFERySPEED, esta estrategia intenta almacenar en la memoria unos pocos KB de respuesta y luego entrega el resultado completo.

Personaliza tu servidor

Esto no es una consideración de rendimiento, pero es igualmente importante.Para que GeoServer sea lo más útil posible, debe personalizar los metadatos del servidor para su organización.Puede resultar tentador omitir algunos de los pasos de configuración y dejar las mismas palabras clave y resumen que en el ejemplo, pero esto sólo confundirá a los usuarios potenciales.

Sugerencias:

Complete las secciones de Contenidos de WFS, WMS y WCS (esta información se transmitirá como parte de los documentos de capacidades)

Entregue sus datos con su propio espacio de nombres (y proporcione un URI correcto)

Eliminar capas predeterminadas (comotopp:states)

Configurar límites de servicio

Asegúrese de que los clientes no puedan solicitar una cantidad excesiva de recursos de su servidor.

En particular:

Establezca la cantidad máxima de funciones devueltas por cada solicitud WFS GetFeature (esto también se puede configurar por tipo de característica modificando losinfo.xmlarchivos directamente)

Configure el WMSpara que ninguna solicitud consuma demasiada memoria o demasiado tiempo.requestlimits

Establecer seguridad

GeoServer incluye soporte para WFS-T (transacciones) de forma predeterminada, lo que permite a los usuarios modificar sus datos.Si no desea que se modifique su base de datos, puede desactivar las transacciones en laInterfaz de administración web.Establezca elnivel de servicioenBasic.

Si desea que algunos usuarios puedan modificar algunos pero no todos sus datos, deberá configurar un servicio de seguridad externo.Una manera fácil de lograr esto es ejecutar dos instancias de GeoServer y configurarlas de manera diferente, y usar la autenticación para permitir que solo ciertos usuarios tengan acceso.

Para mayor seguridad, asegúrese de que la conexión al almacén de datos que esté abierta a todos sea a través de un usuario que tenga permisos de solo lectura.Esto eliminará la posibilidad de una inyección SQL (aunque GeoServer generalmente no es vulnerable a ese tipo de ataque).

Caché de tus datos

El almacenamiento en caché del lado del servidor de mosaicos WMS es la mejor manera de aumentar el rendimiento.En el almacenamiento en caché, los mosaicos renderizados previamente se guardarán, eliminando la necesidad de llamadas WMS redundantes.Hay varias formas de configurar el almacenamiento en caché WMS para GeoServer.GeoWebCache es el método más simple, ya que viene incluido con GeoServer.(Consulte la sección sobreAlmacenamiento en caché con GeoWebCachepara obtener más detalles). Otra opción esTileCache.También puede utilizar un sistema de almacenamiento en caché más genérico, comoOSCache(un servicio de caché integrado) oSquid(un proxy de caché web).

Deshabilitar la interfaz de administración web de GeoServer

En algunas circunstancias, es posible que desee desactivar completamente la interfaz de administración web.Hay dos formas de hacer esto:

Establezca la propiedad del sistema Java GEOSERVER_CONSOLE_DISABLED en verdadero agregando -DGEOSERVER_CONSOLE_DISABLED=true a las opciones de JVM de su contenedor

Elimine todos los archivos gs-web*-.jar de WEB-INF/lib


Consideraciones de datos

Utilice un directorio de datos externo

GeoServer viene con un directorio de datos incorporado.Sin embargo, es una buena idea separar los datos de la aplicación.El uso de un directorio de datos externo permite realizar actualizaciones mucho más fácilmente, ya que no hay riesgo de que se sobrescriba la información de configuración.Un directorio de datos externo también facilita la transferencia de su configuración a otro lugar si lo desea.Para apuntar a un directorio de datos externo, solo necesita editar elweb.xmlarchivo.Si es nuevo en GeoServer, puede copiar (o simplemente mover) el directorio de datos que viene con GeoServer a otra ubicación.

Utilice una base de datos espacial

Los archivos Shapefiles son un formato muy común para datos geoespaciales.Pero si ejecuta GeoServer en un entorno de producción, es mejor utilizar una base de datos espacial comoPostGIS.Esto es esencial si se realizan transacciones (WFS-T).La mayoría de las bases de datos espaciales proporcionan herramientas de conversión de archivos de forma.Aunque hay muchas opciones para bases de datos espaciales (consulte la sección sobreTrabajar con bases de datos), se recomienda PostGIS.También se admiten Oracle, DB2 y ArcSDE.

Elija los formatos de cobertura con mejor rendimiento

Existen diferencias muy significativas entre el rendimiento de los distintos formatos de cobertura.

Servir conjuntos de datos de gran cobertura con buen rendimiento requiere cierto conocimiento y ajuste, ya que normalmente los datos están configurados para su distribución y archivo.Los siguientes consejos intentan proporcionarle un conocimiento básico sobre cómo la reestructuración de datos afecta el rendimiento y cómo utilizar las herramientas disponibles para obtener un rendimiento óptimo en el servicio de datos.

Elige el formato correcto

El primer elemento clave es elegir el formato correcto.Algunos formatos están diseñados para el intercambio de datos, otros para la presentación y entrega de datos.Un buen formato de entrega de datos es el binario, permite la extracción de múltiples resoluciones y brinda soporte para la extracción rápida de subconjuntos en resoluciones nativas.

Ejemplos de estos formatos son GeoTiff, ECW, JPEG 2000 y MrSid.ArcGrid, por otro lado, es un ejemplo de formato que es particularmente inadecuado para servir conjuntos de datos grandes (está basado en texto, no tiene resolución múltiple y, en el caso general, tenemos que leerlo en su totalidad incluso para extraer un subconjunto de datos).

GeoServer admite MrSID, ECW y JPEG 2000 a través del complemento GDAL Image Format.MrSID es el más fácil de usar, ya que su lector ahora está disponible en un formato de código abierto compatible con GeoServer.Si tiene archivos ECW, tiene varias opciones no ideales.Si sólo utiliza GeoServer con fines educativos o sin fines de lucro, puede utilizar el complemento de forma gratuita.De lo contrario, necesitará comprar una licencia, ya que es un software de servidor.También puedes usar GDAL para convertirlo a MrSID o GeoTiffs en mosaico.Si tus archivos son JPEG 2000 puedes utilizar las utilidades del software ECW y MrSID.Pero el más rápido es Kakadu, que requiere licencia.

Configurar datos Geotiff para una renderización rápida

Tan pronto como sus Geotiffs superen algunas decenas de megabytes, querrá agregar las siguientes capacidades:

mosaico interior

resúmenes

El mosaico interior configura el diseño de la imagen para que esté organizada en mosaicos en lugar de simples franjas (filas).Esto permite un acceso mucho más rápido a un área determinada del geotiff, y los lectores de Geoserver aprovecharán esto accediendo solo a los mosaicos necesarios para representar el área de visualización actual.El siguiente comando de ejemplo indica agdal_translateque cree ungeotiffen mosaico .

gdal_translate -of GTiff -projwin -180 90 -50 -10 -co "TILED=YES" bigDataSet.ecw myTiff.tiff

Las vistas generales son una versión reducida de la misma imagen, es decir, una versión alejada, que suele ser mucho más pequeña.Cuando Geoserver necesita renderizar el Geotiff, buscará la descripción general más adecuada como punto de partida, leyendo y convirtiendo así muchos menos datos.Las descripciones generales se pueden agregar usandogdaladdoo el comando OverviewsEmbedded incluido en Geotools.Aquí hay un ejemplo del uso de gdaladdo para agregar resúmenes que se reducen 2, 4, 8 y 16 veces en comparación con el original:

gdaladdo -r promedio mytiff.tif 2 4 8 16

Como nota final, Geotiff admite varios tipos de compresión, pero sugerimos no utilizarla.Si bien permite archivos mucho más pequeños, el proceso de descompresión es costoso y se realizará en cada acceso a datos, lo que ralentiza significativamente el procesamiento.Según nuestra experiencia, el tiempo de descompresión es mayor que la lectura pura de datos del disco.

Manejo de enormes conjuntos de datos

Si tiene conjuntos de datos realmente grandes (varios gigabytes), lo más probable es que simplemente agregar vistas generales y mosaicos no sea suficiente, lo que hace que la resolución intermedia sea lenta.Esto se debe a que el mosaico se produce solo en los niveles de resolución nativos y las vistas generales intermedias son demasiado grandes para una extracción rápida.

Entonces, lo que necesitas es una forma de tener mosaicos también en niveles intermedios.Esto es compatible con el complemento ImagePyramid.

Este complemento supone que ha creado varios mosaicos de imágenes sin interrupciones, cada uno para un nivel de resolución diferente de la imagen original.En el mosaico, los mosaicos son archivos reales (para obtener más información sobre los mosaicos, consulteUso del complemento ImageMosaic).Toda la estructura piramidal se parece a la siguiente:

directorio raíz

+- pirámide.properties

+- 0

+- archivos de metadatos de mosaico

+- archivo_mosaico_0.tiff

+-...

+-mosiac_file_n.tiff

+-...

+- 32

+- archivos de metadatos de mosaico

+- archivo_mosaico_0.tiff

+-...

+-mosiac_file_n.tiff

En teoría, crear una pirámide a mano se puede hacer con gdal, pero en la práctica es una tarea desalentadora que requeriría algunas secuencias de comandos, ya que gdal no proporciona ningún comando "tiler" para extraer mosaicos regulares de una imagen, ni uno para crear un conjunto de muestras reducidas. losas.Como alternativa, puede utilizar la herramienta PyramidBuilder de geotools (la documentación sobre cómo usarla está pendiente; comuníquese con los desarrolladores si necesita usarla).


Guiones de inicio de Linux

Tendrá que ajustar los scripts a su entorno.Descargue un script, cámbiele el nombregeoservery muévalo a/etc/init.d.Utilicechmodpara hacer que el script sea ejecutable y pruébelo con/etc/init.d/geoserver.

Para establecer diferentes valores para las variables de entorno, cree un archivo/etc/default/geoservery especifique su entorno.

Configuraciones de ejemplo/etc/default/geoserverpara su entorno:

USUARIO=geoservidor

GEOSERVER_DATA_DIR=/home/$USER/dir_datos

GEOSERVER_HOME=/inicio/$USER/geoserver

JAVA_HOME=/usr/lib/jvm/java-6-sun

JAVA_OPTS="-Xms128m -Xmx512m"

Debian/Ubuntu

Download the init script

Susa

Download the init script

Iniciando GeoServer en Tomcat

Download the init script


Otras Consideraciones

Aloje su aplicación por separado

GeoServer incluye algunas aplicaciones de muestra en la sección de demostración de laInterfaz de administración web.Para instancias de producción, recomendamos no agrupar su aplicación.Para facilitar las actualizaciones y la resolución de problemas, utilice un contenedor independiente para su aplicación.Sin embargo, está perfectamente bien utilizar un administrador de contenedores (como Tomcat o Jetty) para alojar tanto GeoServer como su aplicación.

Proxy su servidor

GeoServer puede tener los documentos de capacidades para informar correctamente a un proxy.Puede configurar esto en la sección Configuración del servidor de laInterfaz de administración webe ingresando la URL del proxy externo en el campo etiquetado.ProxybaseURL

Publique los documentos de capacidades de su servidor.

Para que sea más fácil encontrar sus datos, coloque un enlace a su documento de capacidades en algún lugar de la web.Esto garantizará que un motor de búsqueda lo rastree e indexe.

Configurar agrupación

Configurar unclústeres una de las mejores formas de mejorar la confiabilidad y el rendimiento de su instalación de GeoServer.Todas las instancias de GeoServer más estables y de alto rendimiento están configuradas en algún tipo de clúster.Existe una gran variedad de técnicas para configurar un clúster, incluso a nivel de contenedor, a nivel de máquina virtual y a nivel de servidor físico.

Andrea Aime está trabajando actualmente en una descripción general de lo que han hecho algunos de los usuarios más importantes de GeoServer, para su charla 'GeoServer en producción' en FOSS4G 2009. Con el tiempo, esa información se migrará a tutoriales y documentos técnicos.


Solución de problemas

Comprobación de solicitudes WFS

A menudo sucede que los usuarios informan problemas con solicitudes WFS hechas a mano que no funcionan como se esperaba.En la mayoría de los casos, la solicitud tiene un formato incorrecto, pero GeoServer no se queja y simplemente ignora la parte con formato incorrecto (este comportamiento es el predeterminado para hacer que los clientes WFS más antiguos funcionen bien con GeoServer).

Si desea que GeoServer valide la mayoría de las solicitudes XML de WFS, puede publicarlas en la siguiente URL:

http://host:puerto/geoserver/ows?strict=true

Cualquier desviación de la estructura requerida se anotará en un mensaje de error.El único tipo de petición que no se valida en ningún caso es la INSERT (ésta es una limitación propia de GeoServer).

Aprovechando el registro propio de GeoServer

GeoServer puede generar un registro bastante extenso de sus operaciones en el$GEOSERVER_DATA_DIR/logs/geoserver.logarchivo.Examinar dicho archivo es una de las primeras cosas que se deben hacer al solucionar un problema; en particular, es interesante ver el contenido del registro en correspondencia con una solicitud que se comporta mal.La cantidad de información registrada puede variar según el perfil de registro elegido en la página de configuraciónde Configuración del servidor.

Solicitudes de servicio de registro

GeoServer proporciona un filtro de registro de solicitudes que normalmente está inactivo.El filtro puede registrar tanto el contenido de la URL solicitada como el de las solicitudes POST.Normalmente está deshabilitado debido a su sobrecarga.Si necesita tener un historial de las solicitudes entrantes, puede habilitarlo cambiando elgeoserver/WEB-INF/web.xmlcontenido para que se vea así:

<filtro>

<filter-name> Solicitar filtro de registro </filter-name>

<filter-class> org.geoserver.filters.LoggingFilter </filter-class>

<init-param>

<param-name> habilitado </param- nombre>

<valor-param> verdadero </valor-param>

</init-param>

<param-init>

<nombre-param> cuerpos de solicitud de registro </nombre-param>

<valor-param> verdadero </param -valor>

</init-param> </filtro>

Esto registrará tanto las solicitudes como los cuerpos, lo que dará como resultado algo como lo siguiente:

08 gen 11:30:13 INFORMACIÓN [geoserver.filters] - 127.0.0.1 "GET /geoserver/wms?HEIGHT=330&WIDTH=660&LAYERS=nurc%3AArc_Sample&STYLES=&SRS=EPSG%3A4326&FORMAT=image%2Fjpeg&SERVICE=WMS&VERSION=1.1.1&REQUEST= GetMap&EXCEPTIONS=application%2Fvnd.ogc.se_inimage&BBOX=-93.515625,-40.078125,138.515625,75.9375" "Mozilla/5.0 (X11; U; Linux i686; it; rv:1.9.0.15) Gecko/2009102815 Ubuntu/9.0 4 (alegre) Firefox /3.0.15" "http://localhost:8080/geoserver/wms?service=WMS&version=1.1.0&request=GetMap&layers=nurc:Arc_Sample&styles=&bbox=-180.0,-90.0,180.0,90.0&width=660&height=330&srs=EPSG :4326&formato=aplicación/capas abiertas"

08 gen 11:30:13 INFORMACIÓN [geoserver.filters] - 127.0.0.1 "GET /geoserver/wms?HEIGHT=330&WIDTH=660&LAYERS=nurc%3AArc_Sample&STYLES=&SRS=EPSG%3A4326&FORMAT=image%2Fjpeg&SERVICE=WMS&VERSION=1.1.1&REQUEST= GetMap&EXCEPTIONS=application%2Fvnd.ogc.se_inimage&BBOX=-93.515625,-40.078125,138.515625,75.9375" tomó 467 ms

08 gen 11:30:14 INFORMACIÓN [geoserver.filters] - 127.0.0.1 "GET /geoserver/wms?REQUEST=GetFeatureInfo&EXCEPTIONS=application%2Fvnd.ogc.se_xml&BBOX=-93.515625%2C-40.078125%2C138.515625%2C75.937 5&X =481&Y=222&INFO_FORMAT=text%2Fhtml&QUERY_LAYERS=nurc%3AArc_Sample&FEATURE_COUNT=50&Layers=nurc%3AArc_Sample&Styles=&Srs=EPSG%3A4326&WIDTH=660&HEIGHT=330&format=image%2Fjpeg" "Mozilla/5.0 (X11; U; Linux i6) 86; it; rv:1.9 .0.15) Gecko/2009102815 Ubuntu/9.04 (alegre) Firefox/3.0.15" "http://localhost:8080/geoserver/wms?service=WMS&version=1.1.0&request=GetMap&layers=nurc:Arc_Sample&styles=&bbox=-180.0, -90.0,180.0,90.0&width=660&height=330&srs=EPSG:4326&format=application/openlayers"

08 gen 11:30:14 INFORMACIÓN [geoserver.filters] - 127.0.0.1 "GET /geoserver/wms?REQUEST=GetFeatureInfo&EXCEPTIONS=application%2Fvnd.ogc.se_xml&BBOX=-93.515625%2C-40.078125%2C138.515625%2C75.937 5&X =481&Y=222&INFO_FORMAT=text%2Fhtml&QUERY_LAYERS=nurc%3AArc_Sample&FEATURE_COUNT=50&Layers=nurc%3AArc_Sample&Styles=&Srs=EPSG%3A4326&WIDTH=660&HEIGHT=330&format=image%2Fjpeg" tomó 314ms

Uso de herramientas JDK para obtener volcados de pila y memoria

El JDK contiene tres útiles herramientas de línea de comandos que se pueden utilizar para recopilar información sobre instancias de GeoServer que pierden memoria o no funcionan según lo solicitadojps:jstackyjmap.

Todas las herramientas funcionan con una máquina virtual Java activa, en particular la que ejecuta GeoServer.En otro caso, para que funcionen correctamente, tendrás que ejecutarlos con un usuario que tenga suficientes privilegios para conectarse al proceso JVM, en particular el superusuario o el mismo usuario que ejecuta la JVM generalmente tiene los derechos requeridos.

jps

jpses una herramienta que enumera todos los procesos de Java en ejecución.Se puede utilizar para reintentar elpid(ID de proceso) de la máquina virtual que ejecuta GeoServer.Por ejemplo:

> jps-mlv

16235 org.apache.catalina.startup.Bootstrap start -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.util.logging.config.file=/home/aaime/devel/webcontainers/apache-tomcat -6.0.18/conf/logging.properties -Djava.endorsed.dirs=/home/aaime/devel/webcontainers/apache-tomcat-6.0.18/endorsed -Dcatalina.base=/home/aaime/devel/webcontainers/apache -tomcat-6.0.18 -Dcatalina.home=/home/aaime/devel/webcontainers/apache-tomcat-6.0.18 -Djava.io.tmpdir=/home/aaime/devel/webcontainers/apache-tomcat-6.0.18 /temperatura

11521 -XX:MinHeapFreeRatio=10 -XX:MaxHeapFreeRatio=20 -Djava.library.path=/usr/lib/jni -Dosgi.requiredJavaVersion=1.5 -XX:MaxPermSize=256m -Xms64m -Xmx1024m -XX:CMSClassUnloadingEnabled -XX:CMSPermGenSweepingEnabled -XX:+UsarParNuevoGC

16287 sun.tools.jps.Jps -mlv -Dapplication.home=/usr/lib/jvm/java-6-sun-1.6.0.16 -Xms8m

El resultado muestra elpidnombre de la clase principal, si está disponible, y los parámetros pasados ​​a la JVM al inicio.En este ejemplo16235, Tomcat aloja GeoServer,11521es una instancia de Eclipse y16287esjpsél mismo.En el caso común, tendrá solo unas pocas JVM y la que ejecuta GeoServer se puede identificar por los parámetros que se le pasan.

jstack

jstackes una herramienta que extrae el seguimiento de la pila actual para cada hilo que se ejecuta en la máquina virtual.Se puede utilizar para identificar problemas de escalabilidad y recopilar lo que realmente está haciendo el programa.

Por lo general, es necesario que personas que conozcan el funcionamiento interno de GeoServer puedan interpretar correctamente la salida de jstack.

Un ejemplo de uso:

> jstack -F -l 16235 > /tmp/tomcat-stack.txt

Adjuntando al proceso ID 16235, espere...

El depurador se conectó correctamente.

Se detectó el compilador del servidor.

La versión de JVM es 14.2-b01

Y el contenido del archivo podría verse así:

Detección de punto muerto:

No se encontraron puntos muertos.

Hilo 16269: (estado = BLOQUEADO)

- java.lang.Object.wait(long) @bci=0 (marco interpretado)

- org.apache.tomcat.util.threads.ThreadPool$MonitorRunnable.run() @bci=10, línea=565 (Marco interpretado)

- java.lang.Thread.run() @bci=11, línea=619 (marco interpretado)

Sincronizadores de propiedad bloqueados:

- Ninguno

Hilo 16268: (estado = IN_NATIVE)

- java.net.PlainSocketImpl.socketAccept(java.net.SocketImpl) @bci=0 (marco interpretado)

- java.net.PlainSocketImpl.accept(java.net.SocketImpl) @bci=7, línea=390 (marco interpretado)

- java.net.ServerSocket.implAccept(java.net.Socket) @bci=60, línea=453 (marco interpretado)

- java.net.ServerSocket.accept() @bci=48, línea=421 (Marco interpretado)

- org.apache.jk.common.ChannelSocket.accept(org.apache.jk.core.MsgContext) @bci=46, línea=306 (marco interpretado)

- org.apache.jk.common.ChannelSocket.acceptConnections() @bci=72, línea=660 (marco interpretado)

- org.apache.jk.common.ChannelSocket$SocketAcceptor.runIt(java.lang.Object[]) @bci=4, line=870 (Marco interpretado)

- org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run() @bci=167, línea=690 (Marco interpretado)

- java.lang.Thread.run() @bci=11, línea=619 (marco interpretado)

Sincronizadores de propiedad bloqueados:

- Ninguno

Hilo 16267: (estado = BLOQUEADO)

- java.lang.Object.wait(long) @bci=0 (marco interpretado)

- java.lang.Object.wait() @bci=2, línea=485 (marco interpretado)

- org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run() @bci=26, línea=662 (Marco interpretado)

- java.lang.Thread.run() @bci=11, línea=619 (marco interpretado)

Sincronizadores de propiedad bloqueados:

- Ninguno

...

jmap

jmapes una herramienta para recopilar información sobre una máquina virtual Java.Se puede utilizar de varias maneras interesantes.

Al ejecutarlo sin argumentos (más allá del pid de la JVM), imprimirá unvolcado de las bibliotecas nativas utilizadas por la JVM.Esto puede resultar útil cuando se quiere comprobar que GeoServer realmente utiliza una determinada versión de una biblioteca nativa (por ejemplo, GDAL):

> jmap 17251

Adjuntando al proceso ID 17251, espere...

El depurador se conectó correctamente.

Se detectó el compilador del servidor.

La versión de JVM es 14.2-b01

0x08048000 46K /usr/lib/jvm/java-6-sun-1.6.0.16/jre/bin/java

0x7f87f000 6406K /usr/lib/jvm/java-6-sun-1.6.0.16/jre/lib/i386/libNCSEcw.so.0

0x7f9b2000 928K /usr/lib/libstdc++.so.6.0.10

0x7faa1000 7275K /usr/lib/jvm/java-6-sun-1.6.0.16/jre/lib/i386/libgdal.so.1

0x800e9000 1208K /usr/lib/jvm/java-6-sun-1.6.0.16/jre/lib/i386/libclib_jiio.so

0x80320000 712K /usr/lib/jvm/java-6-sun-1.6.0.16/jre/lib/i386/libNCSUtil.so.0

0x80343000 500K /usr/lib/jvm/java-6-sun-1.6.0.16/jre/lib/i386/libNCSCnet.so.0

0x8035a000 53K /lib/libgcc_s.so.1

0x8036c000 36K /usr/lib/jvm/java-6-sun-1.6.0.16/jre/lib/i386/libnio.so

0x803e2000 608K /usr/lib/jvm/java-6-sun-1.6.0.16/jre/lib/i386/libawt.so

0x80801000 101K /usr/lib/jvm/java-6-sun-1.6.0.16/jre/lib/i386/libgdaljni.so

0x80830000 26K /usr/lib/jvm/java-6-sun-1.6.0.16/jre/lib/i386/headless/libmawt.so

0x81229000 93K /usr/lib/jvm/java-6-sun-1.6.0.16/jre/lib/i386/libnet.so

0xb7179000 74K /usr/lib/jvm/java-6-sun-1.6.0.16/jre/lib/i386/libzip.so

0xb718a000 41K /lib/tls/i686/cmov/libnss_files-2.9.so

0xb7196000 37K /lib/tls/i686/cmov/libnss_nis-2.9.so

0xb71b3000 85K /lib/tls/i686/cmov/libnsl-2.9.so

0xb71ce000 29K /lib/tls/i686/cmov/libnss_compat-2.9.so

0xb71d7000 37K /usr/lib/jvm/java-6-sun-1.6.0.16/jre/lib/i386/native_threads/libhpi.so

0xb71de000 184K /usr/lib/jvm/java-6-sun-1.6.0.16/jre/lib/i386/libjava.so

0xb7203000 29K /lib/tls/i686/cmov/librt-2.9.so

0xb725d000 145K /lib/tls/i686/cmov/libm-2.9.so

0xb7283000 8965K /usr/lib/jvm/java-6-sun-1.6.0.16/jre/lib/i386/server/libjvm.so

0xb7dc1000 1408K /lib/tls/i686/cmov/libc-2.9.so

0xb7f24000 9K /lib/tls/i686/cmov/libdl-2.9.so

0xb7f28000 37K /usr/lib/jvm/java-6-sun-1.6.0.16/jre/lib/i386/jli/libjli.so

0xb7f32000 113K /lib/tls/i686/cmov/libpthread-2.9.so

0xb7f51000 55K /usr/lib/jvm/java-6-sun-1.6.0.16/jre/lib/i386/libverify.so

0xb7f60000 114K /lib/ld-2.9.so

También es posible obtener unresumen rápido del estado del montón de JVM:

> jmap-montón 17251

Adjuntando al proceso ID 17251, espere...

El depurador se conectó correctamente.

Se detectó el compilador del servidor.

La versión de JVM es 14.2-b01

utilizando la asignación de objetos locales de subprocesos.

GC paralelo con 2 hilos

Configuración del montón:

MinHeapFreeRatio = 40

MaxHeapFreeRatio = 70

Tamaño máximo del montón = 778043392 (742,0 MB)

Nuevo tamaño = 1048576 (1,0 MB)

MaxNewSize = 4294901760 (4095.9375MB)

Tamaño antiguo = 4194304 (4,0 MB)

Nueva relación = 8

Ratio de supervivencia = 8

Tamaño permanente = 16777216 (16,0 MB)

Tamaño máximo de permiso = 67108864 (64,0 MB)

Uso del montón:

PS Generación joven

Espacio Edén:

capacidad = 42401792 (40,4375 MB)

usado = 14401328 (13.734176635742188MB)

libre = 28000464 (26.703323364257812MB)

33.96396076845054% usado

Del espacio:

capacidad = 4718592 (4,5 MB)

usado = 2340640 (2.232208251953125MB)

libre = 2377952 (2,267791748046875MB)

49.60462782118056% usado

Al espacio:

capacidad = 4587520 (4,375 MB)

utilizado = 0 (0,0 MB)

gratis = 4587520 (4.375MB)

0,0% usado

PS de vieja generación

capacidad = 43188224 (41,1875 MB)

usado = 27294848 (26.0303955078125MB)

libre = 15893376 (15.1571044921875MB)

63.19974630121396% usado

Generación permanente de PS

capacidad = 38404096 (36,625 MB)

usado = 38378640 (36.60072326660156MB)

libre = 25456 (0,0242767333984375MB)

99.93371540369027% usado

En el resultado se puede ver que la JVM puede usar hasta 742 MB de memoria, y que en este momento la JVM está usando 130 MB (suma aproximada de las capacidades de cada sección del montón).En caso de una pérdida de memoria persistente, la JVM terminará usando todo lo que esté permitido y cada sección del montón se usará casi al 100%.

Para vercómo se usa realmente la memoria de manera sucinta,se puede usar el siguiente comando (en Windows, reemplácelocon):head-25more

> jmap -histo:live 17251 | cabeza -25

núm #instancias #bytes nombre de clase

----------------------------------------------

1: 81668 10083280 <clasedemétodoconst>

2: 81668 6539632 <clasedemétodo>

3: 79795 5904728 [C

4: 123511 5272448 <clase de símbolo>

5: 7974 4538688 <clase de grupo constante>

6: 98726 3949040 org.hsqldb.DiskNode

7: 7974 3612808 <instanciaKlassKlass>

8: 9676 2517160 [B

9: 6235 2465488 <constantPoolCacheKlass>

10: 10054 2303368 [yo

11: 83121 1994904 java.lang.String

12: 27794 1754360 [Ljava.lang.Objeto;

13: 9227 868000 [Ljava.util.HashMap$Entrada;

14: 8492 815232 java.lang.Clase

15: 10645 710208 [S

16: 14420 576800 org.hsqldb.CachedRow

17: 1927 574480 <métodoDataKlass>

18: 8937 571968 org.apache.xerces.dom.ElementNSImpl

19: 12898 561776 [[Yo

20: 23122 554928 java.util.HashMap$Entrada

21: 16910 541120 org.apache.xerces.dom.TextImpl

22: 9898 395920 org.apache.xerces.dom.AttrNSImpl

En el volcado podemos ver que la mayor parte de la memoria es utilizada por el propio código GeoServer (primeros 5 elementos), seguido por el caché HSQL que contiene algunas filas de la base de datos EPSG.En caso de una pérdida de memoria, unos pocos tipos de objetos contendrán la gran mayoría del montón activo.Tenga en cuenta que para buscar una fuga, el volcado debe recopilarse con el servidor casi inactivo.Si, por ejemplo, el servidor está bajo una carga de solicitudes GetMap, el uso de la memoria principal será el byte[] que contiene las imágenes mientras se procesan, pero eso no es una fuga, es un uso legítimo y temporal.

En caso de pérdidas de memoria, un desarrollador probablemente solicitará unvolcado completo del montónpara analizarlo con una herramienta de creación de perfiles de alta gama.Dicho volcado se puede generar con el siguiente comando:

> jmap -dump:live,file=/tmp/dump.hprof 17251

Volviendo el montón a /tmp/dump.hprof ...

Archivo de volcado de montón creado

Los archivos de volcado generalmente son tan grandes como la memoria utilizada, por lo que es recomendable comprimir el archivo resultante antes de enviarlo a un desarrollador.

XStream

GeoServer y GeoWebCache utilizan XStream para leer y escribir XML para la configuración y para sus API REST.Para poder hacer esto de forma segura, necesita una lista de clases Java que sean seguras para convertir entre objetos y XML.Si se proporciona a XStream una clase que no está en esa lista, generará el errorcom.thoughtworks.xstream.security.ForbiddenClassException.También se debe incluir la clase específica que fue un problema.Esto puede ser el resultado de que a las listas de clases permitidas les falta una clase, lo que debería reportarse como un error, o puede ser causado por una extensión/complemento que no agrega sus clases a la lista (finalmente, podría ser alguien que intenta realizar un ataque de “ejecución remota”, que es para lo que está diseñada la lista blanca).

Esto se puede solucionar configurando las propiedades del sistemaGEOSERVER_XSTREAM_WHITELISTpara GeoServer oGEOWEBCACHE_XSTREAM_WHITELISTGeoWebCache en una lista separada por punto y coma de nombres de clases calificados.Los nombres de las clases pueden incluir comodines?para un solo carácter,*para cualquier número de caracteres sin incluir el separador.y**para cualquier número de caracteres incluidos los separadores.Por ejemplo,permitirá la clase específica, cualquier clase inmediatamente dentro del paquetey cualquier clase dentro del paqueteo cualquiera de sus paquetes descendientes.org.example.blah.SomeClass;com.demonstration.*;ca.test.**org.example.blah.SomeClasscom.demonstrationca.test

GEOSERVER_XSTREAM_WHITELISTyGEOWEBCACHE_XSTREAM_WHITELISTsolo debe usarse como solución alternativa hasta que GeoServer, GWC o la extensión que causa el problema se hayan actualizado, así que informe a la lista de usuarios de las clases que faltan lo antes posible.


Hacer que los nodos del clúster sean identificables desde la GUI

Al ejecutar uno o más clústeres de instalaciones de GeoServer, es útil identificar contra qué clúster (y eventualmente nodo del clúster) se está trabajando con solo echar un vistazo a la interfaz de usuario de administración web.

Esto es posible configurando una variable,GEOSERVER_NODE_OPTScon uno de los mecanismos admitidos:

como variable del sistema

como variable de entorno

como parámetro de contexto de servlet

GEOSERVER_NODE_OPTSes una lista separada de semicolumna de pares clave/valor y puede contener las siguientes claves:

id: la cadena que identifica el nodo, que a su vez puede ser una cadena estática, o usar y$host_ippara$host_nameinformar la dirección IP del host o el nombre del host respectivamente.

color: el color de la etiqueta, como color CSS

fondo: el color de fondo, como color CSS

Aquí hay unos ejemplos:


GEOSERVER_NODE_OPTS=”id:prueba1;fondo:negro;color:blanco”


GEOSERVER_NODE_OPTS=”id:$host_ip”


GEOSERVER_NODE_OPTS=”id:$nombre_host”


Almacenamiento en caché con GeoWebCache


GeoWebCache es un servidor de mosaico.Se ejecuta como un proxy entre un cliente de mapas y un servidor de mapas, almacenando en caché los mosaicos a medida que se solicitan, eliminando el procesamiento de solicitudes redundantes y ahorrando así grandes cantidades de tiempo de procesamiento.GeoWebCache está integrado con GeoServer, aunque también está disponible como producto independiente para usar con otros servidores de mapas.

Esta sección discutirá la versión de GeoWebCache integrada con GeoServer.Para obtener información sobre el producto independiente, consulte lapágina de inicio de GeoWebCache.

Usando GeoWebCache

Integración directa con GeoServer WMS

URL del punto final de GeoWebCache

Cuota de disco

Integración con sitios de mapeo externos

Soporte para proyecciones personalizadas

Configuración

Interfaz de usuario integrada

Determinar capas de mosaicos

Archivos de configuración

Cambiar el directorio de caché

GeoWebCache con múltiples instancias de GeoServer

Seguridad de datos del geoservidor

Configuración del almacenamiento en caché en memoria

Siembra y refresca

Generando mosaicos

Encabezados de respuesta HTTP

Encabezados de respuesta personalizados

Última modificación y si se modificó desde

API REST GeoWebCache

Administrar capas

Siembra y truncamiento

Cuota de disco

Solución de problemas

Desalineación de la cuadrícula

Integración directa con WMS


Usando GeoWebCache

Nota

Para obtener una discusión más detallada sobre el uso de GeoWebCache, consulte ladocumentación de GeoWebCache.

Integración directa con GeoServer WMS

GeoWebCache se puede integrar de forma transparente con GeoServer WMS y, por lo tanto, no requiere ningún punto final especial ni URL personalizada.De esta manera, se puede tener la simplicidad de un punto final WMS estándar con el rendimiento de un cliente en mosaico.

Aunque esta integración directa está deshabilitada de forma predeterminada, se puede habilitar yendo a lapáginaValores predeterminados de almacenamiento en caché en la Interfaz de administración web.

Cuando esta función está habilitada, GeoServer WMS almacenará en caché y recuperará mosaicos de GeoWebCache (a través de una solicitud GetMap) solo sise siguen todos los criterios siguientes:

La integración WMS Direct está habilitada (puede configurar esto en la páginaValores predeterminados de almacenamiento en caché)

tiled=trueestá incluido en la solicitud

La solicitud solo hace referencia a una sola capa.

El almacenamiento en caché está habilitado para esa capa

La imagen solicitada tiene el mismo alto y ancho que el tamaño guardado en la configuración de capas.

El CRS solicitado coincide con uno de los conjuntos de cuadrículas de capas de mosaicos disponibles

La imagen solicitada se alinea con los límites de la cuadrícula existente.

Se incluye un parámetro para el cual existe un filtro de parámetros correspondiente.

Además, cuando la integración directa está habilitada, el documento de capacidades WMS (a través de una solicitud GetCapabilities) solo devolverá los elementos de capacidades específicas del proveedor de WMS-C (como un<TileSet>elemento para cada combinación de capa/CRS/formato almacenado en caché) sitiled=truese adjunta a la solicitud GetCapabilities.

Nota

Para obtener más información sobre WMS-C, consulte laRecomendación del cliente de mosaico WMSde OSGeo.

Nota

La integración de GeoWebCache no es compatible con la vista previa de capasbasada en OpenLayers, ya que la vista previa generalmente no se alinea con el conjunto de cuadrículas de capas de GeoWebCache.Esto se debe a que la aplicación OpenLayers calcula entileoriginfunción del cuadro delimitador de la capa, que es diferente del conjunto de cuadrículas.Es posible crear una aplicación OpenLayers que almacene mosaicos en caché;solo asegúrese de que setileoriginalinee con el conjunto de cuadrículas.

Servicios virtuales

Cuando la integración directa de WMS está habilitada, GeoWebCache manejará adecuadamente las solicitudes alos servicios virtuales OWS(/geoserver/<workspace>/wms?tiled=true&...).

Los documentos de capacidades de servicios virtuales contendrán<TileSet>entradas solo para las capas que pertenecen a ese espacio de trabajo (y grupos de capas globales) y se hará referencia a ellos mediante nombres de capas no calificados (sin espacio de nombres).topp:statesPor ejemplo, se hará referencia ala capa en<Layers>states</Layers>lugar de<Layers>topp:states</Layers>y las solicitudes de GetMap al punto final de servicios virtualesLAYERS=statesse manejarán correctamente.

Filtros de parámetros admitidos

Con la integración directa de WMS, se admiten los siguientes filtros de parámetros para las solicitudes de GetMap:

ANGLE

BGCOLOR

BUFFER

CQL_FILTER

ELEVATION

ENV

FEATUREID

FEATUREVERSION

FILTER

FORMAT_OPTIONS

MAXFEATURES

PALETTE

STARTINDEX

TIME

VIEWPARAMS

Si se realiza una solicitud utilizando cualquiera de los parámetros anteriores, la solicitud se pasará a GeoServer, a menos que se haya configurado un filtro de parámetros, en cuyo caso GeoWebCache procesará la solicitud.

URL del punto final de GeoWebCache

Cuando no utilice la integración directa, puede dirigir a su cliente directamente a GeoWebCache.

Advertencia

GeoWebCache no es un verdadero WMS, por lo que lo siguiente es una simplificación excesiva.Si encuentra errores, consulte la páginaSolución de problemaspara obtener ayuda.

Para dirigir a su cliente a GeoWebCache (y así recibir mosaicos en caché), debe cambiar la URL de WMS.

Si su aplicación solicita mosaicos WMS de GeoServer en esta URL:

http://ejemplo.com/geoserver/wms

En su lugar, puede invocar GeoWebCache WMS en esta URL:

http://ejemplo.com/geoserver/gwc/service/wms

En otras palabras, agregue/gwc/service/wmsentre la ruta a su instancia de GeoServer y la llamada WMS.

Este punto final funciona usando:


WMS-C: se incluye una descripción del conjunto de mosaicos en el documento WMS GetCapabilities que indica a los clientes cómo recuperar contenido como una serie de mosaicos (cada uno recuperado mediante una solicitud GetMap).Esta técnica admite el almacenamiento en caché HTTP aprovechando el caché del navegador y cualquier proxy de almacenamiento en caché implementado.Esta técnica requiere la creación de un cliente con soporte de servidor de mosaicos.



modo wms completo: GeoWebCache se comporta como WMS GetMapRequests ad-hoc compatibles con WMS.Cada solicitud WMS se maneja obteniendo los mosaicos necesarios y uniendo el resultado en una sola imagen.Esta técnica se basa únicamente en la caché de mosaicos interna, pero admite solicitudes GetMap ad hoc y no requiere que se construya un cliente con soporte de servidor de mosaicos.


Para habilitar este modo agregue lo siguiente engeowebcache.xmlel archivo de configuración:


<fullWMS> verdadero </fullWMS>


La configuración completa de WMS solo afecta al/gwc/service/wmspunto final y no se utiliza en la integración directa de WMS.


Tan pronto como se solicitan mosaicos a través delgwc/service/wmspunto final, GeoWebCache comienza a guardarlos automáticamente.Las solicitudes iniciales para cada mosaico no se acelerarán ya que GeoServer necesitará generar el mosaico y almacenarlo para su uso posterior.Para automatizar este proceso de solicitud de mosaicos, puedeinicializarel caché.Consulte la sección sobresiembra y actualizaciónpara obtener más detalles.

Cuota de disco

GeoWebCache tiene una función de cuota de disco incorporada para evitar que el espacio en disco crezca ilimitadamente.Puede establecer el tamaño máximo del directorio de caché, el intervalo de sondeo y qué política de eliminación de mosaicos usar cuando se excede la cuota.Los mosaicos se pueden eliminar según el uso (“Usado menos frecuentemente” o LFU) o la marca de tiempo (“Usado menos recientemente” o LRU).

Las cuotas de disco están desactivadas de forma predeterminada, pero se pueden configurar en la páginaCuotas de discoen laInterfaz de administración web.

Integración con sitios de mapeo externos

La documentación en lapágina de inicio de GeoWebCachecontiene ejemplos para crear aplicaciones que se integran con Google Maps, Google Earth, Bing Maps y más.

Soporte para proyecciones personalizadas

La versión de GeoWebCache que viene integrada en GeoServer configura automáticamente cada capa servida en GeoServer con las dos proyecciones más comunes:

EPSG: 4326(latitud/longitud)

EPSG:900913(Mercator esférico, la proyección utilizada en Google Maps)

También puede configurar un CRS personalizado desde cualquiera que GeoServer reconozca.Consulte la páginaGridsetspara obtener más detalles.


Configuración

GeoWebCache se configura automáticamente para su uso con GeoServer utilizando las opciones más comunes, sin necesidad de configuración.Toda la comunicación entre GeoServer y GeoWebCache se produce pasando mensajes dentro de la JVM.

De forma predeterminada, GeoWebCache conocerá todas las capas servidas por GeoServer.Consulte la páginaCapas de mosaicospara probar la configuración.

Nota

La versión 2.2.0 de GeoServer introdujo cambios en la configuración del GeoWebCache integrado.

Interfaz de usuario integrada

GeoWebCache tiene una configuración basada en web totalmente integrada.Consulte la secciónAlmacenamiento en caché de mosaicosen lainterfaz de administración web.

Determinar capas de mosaicos

En las versiones de GeoServer anteriores a la 2.2.0, la integración de GeoWebCache se realizaba de tal manera que cada capa y grupo de capas de GeoServer se veía obligado a tener una capa de mosaico de GeoWebCache asociada.Además, cada una de estas capas de mosaicos se publicó de forma obligatoria en los conjuntos de cuadrículas EPSG:900913 y EPSG:4326 con formatos de salida PNG y JPEG.

Es posible activar o desactivar selectivamente el almacenamiento en caché para cualquier capa servida a través de GeoServer.Esta configuración se puede configurar en la secciónCapas de mosaicosde laInterfaz de administración web.

Archivos de configuración

Es posible configurar la mayoría de los aspectos de las capas almacenadas en caché a través de la secciónTile Cachingen lainterfaz de administración webo laAPI REST de GeoWebCache.

GeoWebCache mantiene la configuración de cada capa en mosaico de GeoServer por separado, dentro del<data_dir>/gwc-layers/directorio.Hay un archivo XML para cada capa de mosaico.Estos archivos contienen una sintaxis diferente a la<wmsLayer>de la versión independiente ynodeben editarse a mano.En su lugar, puede configurar capas de mosaicos en la páginaCapas de mosaicoso mediante laAPI REST de GeoWebCache.

La configuración de los conjuntos de cuadrículas definidos se guarda<data_dir>/gwc/geowebcache.xml`para que GeoWebCache integrado pueda continuar sirviendo capas de mosaicos definidas externamente desde servicios WMS fuera de GeoServer.

Si actualiza desde una versión anterior a la 2.2.0, se ejecuta un proceso de migración que crea una configuración de capa de mosaicos para todas las capas y grupos de capas disponibles en GeoServer con los valores predeterminados anteriores.A partir de ese momento, debe configurar las capas de mosaicos en la páginaCapas de mosaicos.

Cambiar el directorio de caché

GeoWebCache almacenará automáticamente los mosaicos almacenados en caché en ungwcdirectorio dentro de su directorio de datos de GeoServer.Para configurar un directorio diferente, detenga GeoServer (si se está ejecutando) y agregue el siguiente código a suweb.xmlarchivo GeoServer (ubicado en elWEB-INFdirectorio):

<context-param>

<param-name> GEOWEBCACHE_CACHE_DIR </param-name>

<param-value> C:\temp </param-value> </context-param>

Cambie la ruta interna<param-value>a la ruta de caché deseada (comoC:\tempo/tmp).Reinicie GeoServer cuando haya terminado.

Nota

Asegúrese de que GeoServer tenga acceso de escritura en este directorio.

GeoWebCache con múltiples instancias de GeoServer

Por razones de estabilidad, no se recomienda utilizar GeoWebCache integrado con varias instancias de GeoServer.Si desea configurar GeoWebCache como interfaz para múltiples instancias de GeoServer, le recomendamos utilizarGeoWebCache independiente.

Seguridad de datos del geoservidor

GWC Data Security es una opción que se puede activar y desactivar a través de la páginade valores predeterminados de almacenamiento en caché.Por defecto está desactivado.

Cuando está activado, el GWC incorporado realizará una verificación de seguridad de los datos antes de llamar a GeoWebCache, es decir, verificará si el usuario realmente tiene acceso a la capa y rechazará la solicitud si este no es el caso.En el caso de las solicitudes WMS-C, también hay soporte limitado para filtros de límite de acceso a datos, solo con respecto a límites geográficos (se ignorarán todos los demás tipos de límites de acceso a datos).El GWC integrado rechazará las solicitudes para las cuales el cuadro delimitador solicitado sea (parcialmente) inaccesible.Sólo es posible solicitar un mosaico dentro de un cuadro delimitador que sea totalmente accesible.Este comportamiento es diferente del WMS normal, que filtrará los datos antes de entregarlos.Sin embargo, si se utiliza el WMS/WMS-C integrado, la solicitud se reenviará al WMS y dará el resultado deseado.

Cuando se utiliza el sistema de seguridad predeterminado de GeoServer, las reglas no pueden combinar la seguridad de los datos con la seguridad del servicio.Sin embargo, cuando se utiliza un subsistema de seguridad, es posible realizar dichas combinaciones particulares.En este caso, el servicio WMS-C hereda todas las reglas de seguridad del servicio WMS normal;mientras que todos los demás servicios de GWC obtendrán su seguridad de las reglas asociadas con el propio servicio 'GWC'.

Configuración del almacenamiento en caché en memoria

GWC In Memory Caching es una nueva característica que permite almacenar en caché los mosaicos de GWC en la memoria, reduciendo su tiempo de acceso.El usuario también puede optar por evitar almacenar los archivos en el disco si es necesario.Para habilitar/deshabilitar estas funciones, el usuario puede ver la sección relacionada en la páginade valores predeterminados de almacenamientoen caché de TileCaching .

En realidad, sólo existen dos métodos de almacenamiento en caché:

Almacenamiento en caché de guayaba

Almacenamiento en caché de Hazelcast

Caché de guayaba

GuavaCache proporciona un caché en memoria local para usar en una única instancia de GeoServer.Para configurar Guava Caching, el usuario solo debe editar los parámetros de configuración en la páginaValores predeterminados de almacenamiento en caché.

Caché de Hazelcast

Hazelcastes una API de código abierto para estructuras distribuidas como clústeres.GWC admite esta API para crear una memoria caché distribuida.Al momento de escribir este artículo, Hazelcast requiere la instalación del complementodistribuido gs-gwcen el directorioWEB_INF/libde su aplicación geoserver.Este complemento se puede encontrar en el siguienteenlace.

Hay dos formas de configurar el almacenamiento en caché distribuido en GWC:

Usando un archivo XML llamadohazelcast.xml.Este archivo debe estar ubicado en un directorio indicado por el parámetro JVMhazelcast.config.dir

Directamente, configurando un bean dentro del contexto de la aplicación GeoServer

Ambas configuraciones deben definir los siguientes parámetros:

La configuración de Hazelcast requiere un objeto Map con el nombreCacheProviderMap

La política de desalojo de mapas debe serLRUoLFU

La configuración del mapa debe tener un tamaño fijo definido en Mb

La configuración del mapa debe tenerUSED_HEAP_SIZEcomoMaxSizePolicy

Advertencia

Tenga cuidado de que todas las instancias del clúster tengan la misma configuración, porque configuraciones diferentes pueden dar como resultado un comportamiento incorrecto de Hazelcast.

Advertencia

Para evitar que falten mosaicos, las instancias del clúster deben acceder a los mismos datos.

Configuración conhazelcast.xml

Aquí se puede encontrar un archivo de ejemplo:

<hazelcast xsi:schemaLocation= "http://www.hazelcast.com/schema/config hazelcast-config-2.3.xsd"

xmlns= "http://www.hazelcast.com/schema/config"

xmlns:xsi= " http://www.w3.org/2001/XMLSchema-instance" >

<grupo>

<nombre> cacheCluster </nombre>

<contraseña> geoserverCache </contraseña>

</grupo>

<red>

<!-- Uso típico: multidifusión habilitada con incremento automático de puerto habilitado o tcp-ip habilitado con incremento automático de puerto deshabilitado. Tenga en cuenta que debe elegir entre multidifusión y tcp-ip. Otra opción podría ser aws, pero no se describirá aquí. -->

<puerto auto-increment= "false" > 5701 </port>

<join>

<multicast enable= "false" >

<multicast-group> 224.2.2.3 </multicast-group>

<multicast-port> 54327 < /multicast-port>

</multicast>

<tcp-ip enable= "true" >

<interface> 192.168.1.32 </interface>

<interface> 192.168.1.110 </interface>

</tcp-ip>

</join>

< /red>

< nombre del mapa= "CacheProviderMap" >

<política-de-desalojo> LRU < /política-de-desalojo>

<política-tamaño máximo = "USED_HEAP_SIZE" > 16 < /tamaño-máximo > </mapa>

</hazelcast>

Configuración con ApplicationContext

Para configurar el almacenamiento en caché directamente desde el contexto de la aplicación GeoServer, el usuario debe editar el archivogeowebcache-distributed.xmldentro delarchivo jargs-gwc .Puede encontrar más información sobre el uso de Spring con Hazelcast en ladocumentación relacionada con Hazelcast.El contexto de aplicación modificado se presenta a continuación:

<hz:hazelcast id= "instancia1" >

<hz:config> <hz:

nombre de grupo = "dev" contraseña= "contraseña" /> <hz:network port= "5701" port-auto-increment= "true" > <hz:join> <hz:multicast enable= "true" multicast-group= "224.2.2.3" multicast-port= "54327" /> <hz:tcp-ip enable= "false" > <hz:members> 10.10 .1.2, 10.10.1.3 </hz:members> </hz:tcp-ip> </hz:join> </hz:network> <hz:map name= "CacheProviderMap" max-size= "16" desalojo- política = "LRU" tamaño máximo-policy = "USED_HEAP_SIZE" /> </hz:config> </hz:hazelcast>

<bean id= "HazelCastLoader1"

class= "org.geowebcache.storage.blobstore.memory.distributed.HazelcastLoader" >

<property name= "instancia" ref= "instancia1" /> </bean><bean id= "HazelCastCacheProvider1"

class= "org.geowebcache.storage.blobstore.memory.distributed.HazelcastCacheProvider" >

<constructor-arg ref= "HazelCastLoader1" /> </bean>

Parámetros de configuración opcionales

En esta sección se describen otros parámetros de configuración disponibles para configurar:


Tiempo de caducidad de la caché:


< nombre del mapa= "CacheProviderMap" >

...

<tiempo de vida-segundos> 0 </tiempo-de-vida-segundos>

<max-segundos-de-inactividad> 0 </max-segundos-de-inactividad></mapa>


Dondetime-to-live-segundosindica cuántos segundos puede permanecer una entrada en la caché ymax-idle-segundosindica cuántos segundos no se puede acceder a una entrada antes de ser desalojada.



Cerca de caché.


< nombre del mapa= "CacheProviderMap" >

...<near-cache>

<!-- Mismos parámetros de configuración del mapa Hazelcast. Tenga en cuenta que el tamaño indica el número máximo de entradas en el caché cercano. Un valor de Integer.MAX_VALUE indica que no hay límite en el tamaño máximo. -->

<max-size> 5000 </max-size>

<time-to-live-segundos> 0 </time-to-live-segundos>

<max-idle-segundos> 60 </max-idle-segundos >

<política-de-desalojo> LRU </política-de-desalojo>

<!-- Indica si una entrada almacenada en caché se puede desalojar si se modifica el mismo valor en el mapa Hazelcast. El valor predeterminado es verdadero. -->

<invalidar-al-cambiar> verdadero </invalidar-al-cambiar>

<!-- Indica si las entradas locales deben almacenarse en caché. El valor predeterminado es falso. -->

<cache-local-entries> falso </cache-local-entries> </near-cache></mapa>


Near Cache es un caché local para cada instancia del clúster que se utiliza para almacenar en caché las entradas en las otras instancias del clúster.Este comportamiento evita solicitar esas entradas cada vez al ejecutar una llamada remota.Esta función podría resultar útil para mejorar el rendimiento de Hazelcast Cache.


Nota


No se puede utilizar un valor detamaño máximomayor o igual a Integer.MAX_VALUE para evitar un crecimiento incontrolable del tamaño de la caché.



Siembra y refresca

El principal beneficio de GeoWebCache es que permite acelerar el procesamiento normal de solicitudes de mosaicos WMS al eliminar la necesidad de regenerar los mosaicos para cada solicitud.Esta página trata sobre la generación de mosaicos.

Puede configurar procesos de inicialización a través de lainterfaz de administración web.Consulte la páginaCapas de mosaicospara obtener más información.

Generando mosaicos

GeoWebCache puede generar mosaicos de dos formas.La primera forma de generar mosaicos es durantela visualización normal del mapa.En este caso, los mosaicos se almacenan en caché solo cuando se solicitan desde un cliente, ya sea mediante la exploración de mapas (como en OpenLayers) o mediante solicitudes manuales de mosaicos WMS.La primera vez que se solicita una vista de mapa, será aproximadamente a la misma velocidad que una solicitud estándar de GeoServer WMS.La segunda visualización del mapa y las posteriores se acelerarán enormemente ya que esos mosaicos ya se habrán generado.La principal ventaja de este método es que no requiere preprocesamiento y que solo se almacenarán en caché los datos solicitados, lo que también puede ahorrar espacio en el disco.La desventaja de este método es que la visualización del mapa sólo se acelerará de forma intermitente, lo que reducirá la calidad de la experiencia del usuario.

La otra forma de generar mosaicos es mediantesiembra.La siembra es el proceso mediante el cual se generan mosaicos de mapas y se almacenan en caché internamente desde GeoWebCache.Cuando se procesa con anticipación, la experiencia del usuario mejora enormemente, ya que el usuario nunca tiene que esperar a que se generen mosaicos.La desventaja de este proceso es que la siembra puede ser un proceso que consume mucho tiempo y disco.

En la práctica, generalmente se utiliza una combinación de ambos métodos, con ciertos niveles de zoom (o ciertas áreas de niveles de zoom) sembrados, y los mosaicos menos vistos se dejan sin almacenar en caché.


Encabezados de respuesta HTTP

El GeoWebCache integrado con GeoServer emplea información especial almacenada en el encabezado de las respuestas.Estos encabezados están disponibles con llamadas directas alpunto final de GeoWebCacheo conintegración directa de WMS.

Encabezados de respuesta personalizados

GeoWebCache devuelve encabezados de respuesta HTTP estándar y personalizados cuando atiende una solicitud de mosaico.Esto ayuda en el proceso de depuración, además de adherirse a un mecanismo de control de transferencia HTTP 1.1.

Los encabezados de respuesta se pueden determinar mediante una utilidad comocURL.

Ejemplo

Nota

Para todos los comandos de cURL a continuación, asegúrese de reemplazarlos>/dev/nullcon>nulsi está ejecutando Windows.

Este es un ejemplo de solicitud y respuesta usando cURL:

curl -v "http://localhost:8080/geoserver/gwc/service/wms?LAYERS=sde%3Abmworld&FORMAT=image%2Fpng&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&STYLES=&SRS=EPSG%3A4326&BBOX=-180,-38, -52,90&WIDTH=256&HEIGHT=256&tiled=true" > /dev/null

<HTTP/1.1 200 Aceptar

< índice-mosaico-geowebcache: [0, 1, 2]

< geowebcache-cache-resultado: HIT

< índice-mosaico-geowebcache: [0, 1, 2]

<límites-tile-geowebcache: -180.0,-38.0,-52.0,90.0

< geowebcache-gridset: GlobalCRS84Pixel

<geowebcache-crs: EPSG:4326

< Tipo de contenido: imagen/png

< Longitud del contenido: 102860

< Servidor: Embarcadero (6.1.8)

A partir de esto, se puede saber que el mosaico se encontró en el caché (HIT), el mosaico solicitado provenía del conjunto de cuadrículas llamadoGlobalCRS84Pixely tenía un CRS deEPSG:4326.

Lista de encabezados de respuesta personalizados

La siguiente es la lista completa de encabezados de respuesta personalizados.Siempre que GeoWebCache atiende una solicitud de mosaico, escribirá algunos o todos los siguientes encabezados personalizados en la respuesta HTTP.

Encabezado de respuesta

Descripción

geowebcache-cache-result

Muestra si se utilizó GeoWebCache WMS.Las opciones son:

HIT: El mosaico solicitado se encontró en el caché

MISS: El mosaico no se encontró en la caché, pero se adquirió de la fuente de datos de la capa.

WMS: La solicitud se envió directamente al WMS de origen (por ejemplo, para solicitudes GetFeatureInfo)

OTHER: La respuesta fue el mosaico blanco/transparente predeterminado o se produjo un error

geowebcache-tile-index

Contiene el índice de mosaico tridimensional en orden x,y,z de la imagen de mosaico devuelta en el espacio de cuadrícula correspondiente (p. ej.)[1,0,0]

geowebcache-tile-bounds

Límites del mosaico devuelto en el sistema de referencia de coordenadas correspondiente (p. ej.-180,-90,0,90)

geowebcache-gridset

Nombre del gridset al que pertenece el mosaico (consulteGridsetspara obtener más información)

geowebcache-crs

Código del sistema de referencia de coordenadas del conjunto de cuadrículas coincidente (por ejemploEPSG:900913,EPSG:4326, etc.).

Última modificación y si se modificó desde

Los clientes HTTP 1.1 y las aplicaciones de servidor con buen comportamiento pueden hacer uso deLast-ModifiedmecanismosIf-Modified-Sincede control HTTP para saber cuándo el contenido almacenado en caché local está actualizado, eliminando la necesidad de descargar el mismo contenido nuevamente.Esto puede resultar en ahorros considerables de ancho de banda.(Consulte HTTP 1.1RFC 2616, secciones 14.29 y 14.25, para obtener más información sobre estos mecanismos).

GeoWebCache escribirá unLast-Modifiedencabezado de respuesta HTTP cuando proporcione una imagen de mosaico.La fecha está escrita como RFC-1123HTTP-Date:

Última modificación: miércoles, 15 de noviembre de 1995 04:58:08 GMT

Los clientes que se conectan a GeoWebCache pueden crear una solicitud "GET condicional" con elIf-Modified-Sinceencabezado de la solicitud.Si el mosaico no se modificó después de la fecha especificada en elLast-Modifiedencabezado de respuesta, GeoWebCache devolverá un304código de estado que indica que el recurso estaba disponible y no se modificó.

Ejemplo

Una consulta para un mosaico específico devuelve elLast-Modifiedencabezado de respuesta:

curl -v "http://localhost:8080/geoserver/gwc/service/wms?LAYERS=img%20states&FORMAT=image%2Fpng&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&STYLES=&EXCEPTIONS=application%2Fvnd.ogc.se_inimage&SRS=EPSG% 3A4326&BBOX=-135,45,-90,90&WIDTH=256&HEIGHT=256" >/dev/null

> Anfitrión: localhost:8080

> Aceptar: */*

>

<HTTP/1.1 200 Aceptar

...

< Última modificación: miércoles, 25 de julio de 2012 00:42:00 GMT

< Tipo de contenido: imagen/png

< Longitud del contenido: 31192

Esta solicitud tiene elIf-Modified-Sinceencabezado establecido en un segundo después de lo devuelto porLast-Modified:

curl --header "If-Modified-Since: miércoles, 25 de julio de 2012 00:42:01 GMT" -v "http://localhost:8080/geoserver/gwc/service/wms?LAYERS=img%20states&FORMAT=image% 2Fpng&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&STYLES=&EXCEPTIONS=application%2Fvnd.ogc.se_inimage&SRS=EPSG%3A4326&BBOX=-135,45,-90,90&WIDTH=256&HEIGHT=256" >/dev/null

> Anfitrión: localhost:8080

> Aceptar: */*

> Si-Modificado-Desde: miércoles, 25 de julio de 2012 00:42:01 GMT

>

< HTTP/1.1 304 No modificado

< Última modificación: miércoles, 25 de julio de 2012 00:42:00 GMT

< Tipo de contenido: imagen/png

< Longitud del contenido: 31192

El código de respuesta es304.Como el archivo no se ha modificado desde el momento especificado en la solicitud, en realidad no se transfiere ningún contenido.Se informa al cliente que su copia del mosaico se encuentra actualizada.

Sin embargo, si configura elIf-Modified-Sinceencabezadoantesde la hora almacenada enLast-Modified, recibirá un200código de estado y se descargará el mosaico.

Este ejemplo establece elIf-Modified-Sinceencabezado un segundo antes de lo que devolvióLast-Modified:

curl --header "If-Modified-Since: miércoles, 25 de julio de 2012 00:41:59 GMT" -v "http://localhost:8080/geoserver/gwc/service/wms?LAYERS=img%20states&FORMAT=image% 2Fpng&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&STYLES=&EXCEPTIONS=application%2Fvnd.ogc.se_inimage&SRS=EPSG%3A4326&BBOX=-135,45,-90,90&WIDTH=256&HEIGHT=256" >/dev/null

> Anfitrión: localhost:8080

> Aceptar: */*

> Si-Modificado-Desde: miércoles, 25 de julio de 2012 00:41:59 GMT

>

<HTTP/1.1 200 Aceptar

...

< Última modificación: miércoles, 25 de julio de 2012 00:42:00 GMT

< Tipo de contenido: imagen/png

< Longitud del contenido: 31192


API REST GeoWebCache

Esta sección analiza la API REST de GeoWebCache, una interfaz para trabajar mediante programación con GeoWebCache integrado sin la necesidad de una GUI.

El punto final REST de GeoWebCache cuando se integra con GeoServer está disponible en:

<GEOSERVER_HOME>/gwc/rest/

Por ejemplo:

http://ejemplo.com:8080/geoserver/gwc/rest/

Administrar capas

Lista de capas

Operaciones de capa

Siembra y truncamiento

Operaciones

Consultar tareas en ejecución

Terminar tareas en ejecución

Cuota de disco

Operaciones


Administrar capas

La API REST de GeoWebCache proporciona una interfaz RESTful a través de la cual los usuarios pueden agregar, modificar o eliminar capas almacenadas en caché.

Nota

No se recomienda JSON para administrar capas ya que la biblioteca JSON tiene una serie de problemas con propiedades de valores múltiples como "parameterFilters".

Lista de capas

URL:/gwc/rest/seed/layers.xml

Método

Acción

Código de retorno

Formatos

CONSEGUIR

Devolver la lista de capas disponibles

200

XML

CORREO


400


PONER


400


BORRAR


400


El siguiente ejemplo solicitará una lista completa de capas:

curl -u admin:geoserver "http://localhost:8080/geoserver/gwc/rest/layers"

<capas>

<capa>

<nombre> estados img </nombre>

<atom:link xmlns:atom= "http://www.w3.org/2005/Atom" rel= "alternate" href= "http:// localhost:8080/geoserver/gwc/rest/layers/img+states.xml" type= "text/xml" />

</layer>

<layer>

<name> capa de prueba ráster </name>

<atom:link xmlns: atom= "http://www.w3.org/2005/Atom" rel= "alternate" href= "http://localhost:8080/geoserver/gwc/rest/layers/raster+test+layer.xml" tipo = "text/xml" />

</layer>

<layer>

<name> topp:states </name>

<atom:link xmlns:atom= "http://www.w3.org/2005/Atom" rel= "alternate" href= "http://localhost:8080/geoserver/gwc/rest/layers/topp%3Astates.xml" type= "text/xml" />

</layer>

</layers>

Operaciones de capa

URL:/gwc/rest/seed/layers/<layer>.xml

Nota

No se recomienda JSON para administrar capas ya que la biblioteca JSON tiene una serie de problemas con propiedades de valores múltiples como "parameterFilters".

Método

Acción

Código de retorno

Formatos

CONSEGUIR

Devuelve la representación XML de la capa.

200

XML

CORREO

Modificar la definición/configuración de la capa.

200

XML

PONER

Agregar una nueva capa

200

XML

BORRAR

eliminar la capa

200


Nota

Hay dos representaciones diferentes para las capas almacenadas en caché, dependiendo de si la capa de mosaico se crea a partir de la capa o grupo de capas WMS de GeoServer (GeoServerLayer), o si está configuradageowebcache.xmlcomo una capa GWC normal (wmsLayer).Una capa de GeoServer se denominaGeoServerLayery no contiene información de origen de datos de imagen, como la URL WMS de origen.

Representaciones:

GeoWebCaché (wmsLayer)XML minimal

GeoWebCaché (wmsLayer)XML

GeoServidor (GeoServerLayer)XML minimal

GeoServidor (GeoServerLayer)XML

Los ejemplos siguientes utilizan la herramientacURL, aunque los ejemplos se aplican a cualquier herramienta o biblioteca compatible con HTTP.

Agregar una capa GeoWebCache

El siguiente ejemplo agregará una nueva capa a GeoWebCache:

curl -v -u admin:geoserver -XPUT -H "Tipo de contenido: texto/xml" -d @layer.xml "http://localhost:8080/geoserver/gwc/rest/layers/newlayer.xml"

Ellayer.xmlarchivo se define de la siguiente manera:

<wmsLayer>

<nombre> nueva capa </nombre>

<mimeFormats>

<string> imagen/png </string>

</mimeFormats>

<gridSubsets>

<gridSubset>

<gridSetName> EPSG:900913 </gridSetName>

</gridSubset>

</ gridSubsets>

<wmsUrl>

<cadena> http://localhost:8080/geoserver/wms </string>

</wmsUrl>

<wmsLayers> topp:states </wmsLayers> </wmsLayer>

Nota

El recurso direccionado (newlayeren este ejemplo) debe coincidir con el nombre de la capa en la representación XML.

Agregar una capa de GeoServer

El siguiente ejemplo agregará una nueva capa tanto a GeoServer como a GeoWebCache:

curl -v -u admin:geoserver -XPUT -H "Tipo de contenido: texto/xml" -d @poi.xml "http://localhost:8080/geoserver/gwc/rest/layers/tiger:poi.xml"

Elpoi.xmlarchivo se define de la siguiente manera:

<GeoServerLayer>

<id> LayerInfoImpl--570ae188:124761b8d78:-7fd0 </id>

<enabled> true </enabled>

<nombre> tigre:poi </nombre>

<mimeFormats>

<cadena> imagen/png8 </cadena>

</mimeFormats>

<gridSubsets>

<gridSubset>

<gridSetName> GoogleCRS84Quad </gridSetName>

<zoomStart> 0 </zoomStart>

<zoomStop> 14 </zoomStop>

<minCachedLevel> 1 </minCachedLevel>

<maxCachedLevel> 9 </maxCachedLevel>

</gridSubset>

</gridSubsets>

<metaWidthHeight>

<int> 4 </int>

<int> 4 </int>

</metaWidthHeight>

<gutter> 50 </gutter>

<autoCacheStyles> verdadero </autoCacheStyles> </GeoServerLayer >

Nota

El recurso direccionado (tiger:poien este ejemplo) debe coincidir con el nombre de la capa en la representación XML, así como con el nombre de unacapa o grupo de capas de GeoServerexistente .

Modificando una capa

Este ejemplo modifica la definición de capa a través dellayer.xmlarchivo.La solicitud agrega un filtro de parámetros y un subconjunto de cuadrícula a latiger:poicapa de mosaicos existente:

<GeoServerLayer>

<enabled> true </enabled>

<nombre> tigre:poi </nombre>

<mimeFormats>

<string> image/png8 </string>

</mimeFormats>

<gridSubsets>

<gridSubset>

<gridSetName> GoogleCRS84Quad </ gridSetName>

<zoomStart> 0 </zoomStart>

<zoomStop> 14 </zoomStop>

<minCachedLevel> 1 </minCachedLevel>

<maxCachedLevel> 9 </maxCachedLevel>

</gridSubset>

<gridSubset>

<gridSetName> EPSG:900913 </gridSetName >

<extensión>

<coords>

<doble> -8238959.403861314 </doble>

<doble> 4969300.121476209 </doble>

<doble> -8237812.689219721 </doble>

<doble> 4971112.167757057 </doble>

</coords> </

extensión>

< /gridSubset>

</gridSubsets>

<metaWidthHeight>

<int> 4 </int>

<int> 4 </int>

</metaWidthHeight>

<parameterFilters>

<floatParameterFilter>

<key> ELEVATION </key>

<defaultValue> 0.0 </ defaultValue>

<valores>

<float> 0.0 </float>

<float> 1.0 </float>

<float> 2.0 </float>

<float> 3.0 </float>

<float> 4.0 </float>

</values>

< umbral> 1.0E-3 </threshold>

</floatParameterFilter>

</parameterFilters>

<gutter> 50 </gutter>

<autoCacheStyles> verdadero </autoCacheStyles> </GeoServerLayer>

En lugar de PUT, utilice el método HTTP POST:

curl -v -u admin:geoserver -XPOST -H "Tipo de contenido: texto/xml" -d @poi.xml "http://localhost:8080/geoserver/gwc/rest/layers/tiger:poi.xml"

Eliminar una capa

Al eliminar una capa de mosaicos de GeoWebCache, se elimina la configuración de la capa, así como la caché del disco de la capa.No quedará ninguna imagen de mosaico en el directorio de caché después de eliminar una capa de mosaico.

Para eliminar una capa, utilice el método HTTP DELETE contra el recurso de capa:

curl -v -u admin:geoserver -XDELETE "http://localhost:8080/geoserver/gwc/rest/layers/newlayer.xml"

Nota

Si intenta eliminar una capa de mosaicos que está integradaGeoServerLayer, solo se eliminará la definición de la capa GeoWebCache;la definición de GeoServer no se modifica.Para eliminar una capa en GeoServer, utilice laconfiguración RESTde GeoServer para manipular los recursos de GeoServer.

Por otro lado, eliminar una capa de GeoServer a través de la API REST de GeoServereliminaráautomáticamente la capa de mosaico asociada.


Siembra y truncamiento

La API REST de GeoWebCache proporciona una interfaz RESTful a través de la cual los usuarios pueden agregar o eliminar mosaicos del caché por capa.

Operaciones

URL:/gwc/rest/seed/<layer>.<format>

Método

Acción

Código de retorno

Formatos

CONSEGUIR

Devolver el estado de los hilos de siembra.

200

JSON

CORREO

Emitir una solicitud de tarea inicial o truncada

200

XML, JSON

PONER


405


BORRAR


405


Representaciones:

XML

JSON

Los ejemplos siguientes utilizan la herramientacURL, aunque los ejemplos se aplican a cualquier herramienta o biblioteca compatible con HTTP.

siembra

La siguiente solicitud XML inicia una tarea de inicialización:

curl -v -u admin:geoserver -XPOST -H "Tipo de contenido: texto/xml" -d '<seedRequest><name>nurc:Arc_Sample</name><srs><number>4326</number></ srs><zoomStart>1</zoomStart><zoomStop>12</zoomStop><format>image/png</format><type>truncar</type><threadCount>2</threadCount></seedRequest>' " http://localhost:8080/geoserver/gwc/rest/seed/nurc:Arc_Sample.xml"

* A punto de conectarse() al puerto localhost 8080 (#0)

* Probando 127.0.0.1... conectado

* Conectado al puerto localhost (127.0.0.1) 8080 (#0)

* Autenticación del servidor usando Basic con el usuario 'admin'

> ENVIAR /geoserver/gwc/rest/seed/nurc:Arc_Sample.xml HTTP/1.1

> Autorización: Básica YWRtaW46Z2Vvc2VydmVy

> Agente de usuario: curl/7.21.3 (x86_64-pc-linux-gnu) libcurl/7.21.3 OpenSSL/0.9.8o zlib/1.2.3.4 libidn/1.18

> Anfitrión: localhost:8080

> Aceptar: */*

> Tipo de contenido: texto/xml

> Longitud del contenido: 209

>

<HTTP/1.1 200 Aceptar

El siguiente es un fragmento XML más completo para una solicitud inicial, que incluye filtros de parámetros:

<?xml versión="1.0" codificación="UTF-8"?> <seedRequest>

<nombre> topp:states </nombre>

<límites>

<coords>

<doble> -2495667.977678598 </doble>

<doble> -2223677.196231552 </double>

<double> 3291070.6104286816 </double>

<double> 959189.3312465074 </double>

</coords>

</bounds>

<!-- Estos se enumeran en http://localhost:8080/geoserver/gwc/demo -->

<gridSetId> EPSG:2163 </gridSetId>

<zoomStart> 0 </zoomStart>

<zoomStop> 2 </zoomStop>

<formato> imagen/png </formato>

<!-- el tipo puede ser inicializar, reinicializar o truncar -->

<tipo> truncar </tipo>

<!-- Número de hilos de siembra que se ejecutarán en paralelo. Si tipo == truncar solo se usará un hilo independientemente de este parámetro -->

<threadCount> 1 </threadCount>

<!-- Filtros de parámetros -->

<parámetros

> <entrada>

<cadena> ESTILOS </cadena>

< cadena> pophatch </string>

</entry>

<entry>

<string> CQL_FILTER </string>

<string> TOTPOP > 10000 </string>

</entry>

</parameters> </seedRequest>

Truncando

La siguiente solicitud XML inicia una tarea de truncamiento:

curl -v -u admin:geoserver -XPOST -H "Tipo de contenido: aplicación/json" -d "{'seedRequest':{'nombre':'topp:estados','límites':{'coords':{ 'doble':['-124.0','22.0','66.0','72.0']}},'srs':{'número':4326},'zoomStart':1,'zoomStop':12,' format':'image\/png','type':'truncate','threadCount':4}}}" "http://localhost:8080/geoserver/gwc/rest/seed/nurc:Arc_Sample.json"

* A punto de conectarse() al puerto localhost 8080 (#0)

* Probando 127.0.0.1... conectado

* Conectado al puerto localhost (127.0.0.1) 8080 (#0)

* Autenticación del servidor usando Basic con el usuario 'admin'

> ENVIAR /geoserver/gwc/rest/seed/nurc:Arc_Sample.json HTTP/1.1

> Autorización: Básica YWRtaW46Z2Vvc2VydmVy

> Agente de usuario: curl/7.21.3 (x86_64-pc-linux-gnu) libcurl/7.21.3 OpenSSL/0.9.8o zlib/1.2.3.4 libidn/1.18

> Anfitrión: localhost:8080

> Aceptar: */*

> Tipo de contenido: aplicación/json

> Longitud del contenido: 205

>

<HTTP/1.1 200 Aceptar

< Fecha: viernes, 14 de octubre de 2011 22:09:21 GMT

< Servidor: Noelios-Restlet-Engine/1.0..8

<Codificación de transferencia: fragmentado

<

* La conexión #0 al host localhost quedó intacta

*Cerrando conexión #0

Consultar tareas en ejecución

URL:/gwc/rest/seed[/<layer>].json

Método

Acción

Código de retorno

Formatos

CONSEGUIR

Obtenga el estado global o por capa de las tareas en ejecución y pendientes

200

JSON

CORREO


405


PONER


405


BORRAR


405


Obtener el estado actual de los hilos de siembra

Enviar una solicitud GET al/gwc/rest/seed.jsonrecurso devuelve una lista de tareas pendientes (programadas) y en ejecución para todas las capas.

Enviar una solicitud GET alrecurso devuelve una lista de tareas pendientes (programadas) y en ejecución para esa capa específica./gwc/rest/seed/<layername>.json

El contenido devuelto es una matriz JSON con el formato:

{"array-largo-array":[[<largo>,<largo>,<largo>,<largo>,<largo>],...]}

Si no hay tareas pendientes o en ejecución, la matriz devuelta está vacía:

{ "matriz-larga-matriz" :[]}

La matriz de matrices devuelta contiene una matriz por tarea de inicialización/truncamiento.El significado de cada valor largo en cada matriz de subprocesos es:

[mosaicos procesados, número total de mosaicos para procesar, número de mosaicos restantes, ID de tarea, estado de la tarea]

El valor devueltoserá uno de los siguientes:TaskStatus

-1 = ABORTADO

0 = PENDIENTE

1 = CORRIENDO

2 = HECHO

El siguiente ejemplo devuelve el estado actual de las tareas de latopp:statescapa:

curl -u <usuario>:<contraseña> -v -XGET http://localhost:8080/geoserver/gwc/rest/seed/topp:states.json

{ "matriz larga" :[[ 17888 , 44739250 , 18319 , 1 , 1 ],[ 17744 , 44739250 , 18468 , 2 , 1 ],[ 16608 , 44739250 , 19733 , 3 , 0 ],[ 0 , 1000 , 1000 , 4 , 0 ]]}

En la respuesta anterior, las tareas1y2para latopp:statescapa se están ejecutando y las tareas3y4están en estado pendiente esperando un subproceso disponible.

El siguiente ejemplo devuelve una lista de tareas para todas las capas.

curl -u <usuario>:<contraseña> -XGET http://localhost:8080/geoserver/gwc/rest/seed.json

{ "matriz larga" : [[ 2240 , 327426 , 1564 , 2 , 1 ], [ 2368 , 327426 , 1477 , 3 , 1 ], [ 2272 , 327426 , 1541 , 4 , 1 ], [ 2176 , 3274 26 , 1611 , 5 , 1 ], [ 1056 , 15954794690 , 79320691 , 6 , 1 ], [ 1088 , 15954794690 , 76987729 , 7 , 1 ], [ 1040 , 15954794690 , 80541010 , 8 , 1 ], [ 1104 , 15954794690 , 75871965 , 9 , 1 ]]}

Terminar tareas en ejecución

URL:/gwc/rest/seed[/<layer>]

Método

Acción

Código de retorno

Formatos

CONSEGUIR


405


CORREO

Emitir una solicitud de finalización de tareas en ejecución y/o pendientes

200


PONER


405


BORRAR


405


Una solicitud POST al/gwc/rest/seedrecurso finaliza las tareas pendientes y/o en ejecución paratodas las capas.Una solicitud POST al/gwc/rest/seed/<layername>recurso finaliza las tareas pendientes y/o en ejecución para una capa específica.

Es posible finalizar tareas individuales o todas las tareas pendientes y/o en ejecución.Utilice el parámetrokill_allcon uno de los siguientes valores:running,pendingoall.

Nota

Para compatibilidad con versiones anteriores, elkill_allvalor del parámetro1también se acepta y es equivalente arunning.

La siguiente solicitud finaliza todas las tareas de inicialización y truncamiento en ejecución.

curl -v -u admin:geoserver -d "kill_all=all" "http://localhost:8080/geoserver/gwc/rest/seed"

* A punto de conectarse() al puerto localhost 8080 (#0)

* Probando 127.0.0.1... conectado

<HTTP/1.1 200 Aceptar

< Fecha: viernes, 14 de octubre de 2011 22:23:04 GMT

< Servidor: Noelios-Restlet-Engine/1.0..8

< Tipo de contenido: texto/html; juego de caracteres=ISO-8859-1

< Longitud del contenido: 426

<

<html>

...

* La conexión #0 al host localhost quedó intacta

*Cerrando conexión #0


Cuota de disco

La API REST de GeoWebCache proporciona una interfaz RESTful a través de la cual los usuarios pueden configurar los límites de uso del disco y las políticas de vencimiento para una instancia de GeoWebCache.

Operaciones

URL:/gwc/rest/diskquota.<format>

Método

Acción

Código de retorno

Formatos

CONSEGUIR

Devolver la configuración de cuota de disco global

200

XML, JSON

CORREO


405


PONER

Modificar la configuración de cuota de disco global

200

XML, JSON

BORRAR


405


Representaciones:

XML

JSON

Los ejemplos siguientes utilizan la herramientacURL, aunque los ejemplos se aplican a cualquier herramienta o biblioteca compatible con HTTP.

Recuperando la configuración actual

Lo siguiente devuelve la configuración de cuota de disco actual en formatoXML:

curl -u administrador:geoserver -v -XGET http://localhost:8080/geoserver/gwc/rest/diskquota.xml

<HTTP/1.1 200 Aceptar

< Fecha: lunes, 21 de marzo de 2011 13:50:49 GMT

< Servidor: Noelios-Restlet-Engine/1.0..8

< Tipo de contenido: texto/xml; juego de caracteres=ISO-8859-1

< Longitud del contenido: 422

<

<Configuración de cuota de gwc>

<habilitado>verdadero</habilitado>

<diskBlockSize>2048</diskBlockSize>

<cacheCleanUpFrequency>5</cacheCleanUpFrequency>

<cacheCleanUpUnits>SEGUNDOS</cacheCleanUpUnits>

<maxConcurrentCleanUps>5</maxConcurrentCleanUps>

<globalExpirationPolicyName>LRU</globalExpirationPolicyName>

<cuotaglobal>

<valor>100</valor>

<unidades>MiB</unidades>

</globalQuota>

<cuotasdecapa/>

</gwcQuotaConfiguración>

Lo siguiente devuelve la configuración de cuota de disco actual en formatoJSON:

curl -u admin:geoserver -v -XGET http://localhost:8080/geoserver/gwc/rest/diskquota.json

<HTTP/1.1 200 Aceptar

< Fecha: lunes, 21 de marzo de 2011 13:53:42 GMT

< Servidor: Noelios-Restlet-Engine/1.0..8

< Tipo de contenido: aplicación/json; juego de caracteres=ISO-8859-1

< Longitud del contenido: 241

<

* La conexión #0 al host localhost quedó intacta

*Cerrando conexión #0

{"gwcQuotaConfiguration":{"diskBlockSize":2048,"enabled":true,"maxConcurrentCleanUps":5,"cacheCleanUpFrequency":5,"globalExpirationPolicyName":"LRU","globalQuota":{"value":"100" ,"units":"MiB"},"cacheCleanUpUnits":"SECONDS"}}

Cambiando la configuración

Nota

El cuerpo de la solicitud de PUT debe contener solo las propiedades que se desean modificar.Por ejemplo, lo siguiente solo cambiará la propiedad maxConcurrentCleanups en formato XML:

<gwcQuotaConfiguration><maxConcurrentCleanUps> 2 </maxConcurrentCleanUps></gwcQuotaConfiguration>

Lo siguiente solo cambiará las propiedades diskBlockSize, enable y globalQuota en formato JSON:

{ "gwcQuotaConfiguration" :{ "diskBlockSize" : 2048 , "habilitado" : verdadero , "globalQuota" :{ "valor" : "100" , "unidades" : "MiB" }}

El siguiente ejemplo XML habilita correctamente la cuota y establece el tamaño de globalQuota:

curl -v -u admin:geoserver "http://localhost:8090/geoserver/gwc/rest/diskquota.xml" -X PUT -d "<gwcQuotaConfiguration><enabled>true</enabled><globalQuota><value> 100</value><units>GiB</units></globalQuota></gwcQuotaConfiguration>"

<HTTP/1.1 200 Aceptar

< Fecha: viernes, 18 de marzo de 2011 20:59:31 GMT

< Servidor: Noelios-Restlet-Engine/1.0..8

< Tipo de contenido: texto/xml; juego de caracteres=ISO-8859-1

< Longitud del contenido: 422

<

<Configuración de cuota de gwc>

<habilitado>verdadero</habilitado>

<diskBlockSize>2048</diskBlockSize>

<cacheCleanUpFrequency>5</cacheCleanUpFrequency>

<cacheCleanUpUnits>SEGUNDOS</cacheCleanUpUnits>

<maxConcurrentCleanUps>5</maxConcurrentCleanUps>

<globalExpirationPolicyName>LFU</globalExpirationPolicyName>

<cuotaglobal>

<valor>100</valor>

<unidades>GiB</unidades>

</globalQuota>

<cuotasdecapa/>

</gwcQuotaConfiguración>

El siguiente ejemplo JSON cambia los parámetros globalQuote y expirationPolicyName:

curl -v -u admin:geoserver "http://localhost:8090/geoserver/gwc/rest/diskquota.json" -X PUT -d "{"gwcQuotaConfiguration":{"globalQuota":{"value":"100 ","units":"MiB"},"globalExpirationPolicyName":"LRU"}}"

<HTTP/1.1 200 Aceptar

< Fecha: viernes, 18 de marzo de 2011 21:02:20 GMT

< Servidor: Noelios-Restlet-Engine/1.0..8

< Tipo de contenido: aplicación/json; juego de caracteres=ISO-8859-1

< Longitud del contenido: 241

<

* La conexión #0 al host localhost quedó intacta

*Cerrando conexión #0

{"gwcQuotaConfiguration":{"diskBlockSize":2048,"enabled":true,"maxConcurrentCleanUps":5,"cacheCleanUpFrequency":5,"globalExpirationPolicyName":"LRU","globalQuota":{"value":"100" ,"units":"MiB"},"cacheCleanUpUnits":"SECONDS","layerQuotas":[]}}

El siguiente ejemplo XMLno válidotiene un parámetro no válido (maxConcurrentCleanUps debe ser > 0).Devuelve un código de respuesta 400 y contiene un mensaje de error como texto sin formato:

curl -v -u admin:geoserver "http://localhost:8090/geoserver/gwc/rest/diskquota.xml" -X PUT -d "<gwcQuotaConfiguration><maxConcurrentCleanUps>-1</maxConcurrentCleanUps></gwcQuotaConfiguration>"

< HTTP/1.1 400 Solicitud incorrecta

< Fecha: viernes, 18 de marzo de 2011 20:53:26 GMT

< Servidor: Noelios-Restlet-Engine/1.0..8

< Tipo de contenido: texto/sin formato; juego de caracteres=ISO-8859-1

< Longitud del contenido: 53

<

* La conexión #0 al host localhost quedó intacta

*Cerrando conexión #0

maxConcurrentCleanUps será un número entero positivo: -1

El siguiente ejemplo de JSONno válidoutiliza una unidad de medida desconocida (ZZiB).Devuelve un código de respuesta 400 y contiene un mensaje de error como texto sin formato:

curl -v -u admin:geoserver "http://localhost:8090/geoserver/gwc/rest/diskquota.json" -X PUT -d "{"gwcQuotaConfiguration":{"globalQuota":{"value":"100 ","unidades":"ZZiB"}}}"

< HTTP/1.1 400 Solicitud incorrecta

< Fecha: viernes, 18 de marzo de 2011 20:56:23 GMT

< Servidor: Noelios-Restlet-Engine/1.0..8

< Tipo de contenido: texto/sin formato; juego de caracteres=ISO-8859-1

< Longitud del contenido: 601

<

Sin enumeración const class org.geowebcache.diskquota.storage.StorageUnit.ZZiB: Sin enumeración const class org.geowebcache.diskquota.storage.StorageUnit.ZZiB

---- Información de depuración ----

mensaje: No hay enumeración clase constante org.geowebcache.diskquota.storage.StorageUnit.ZZiB

causa-excepción: java.lang.IllegalArgumentException

mensaje de causa: No hay enumeración clase constante org.geowebcache.diskquota.storage.StorageUnit.ZZiB

clase: org.geowebcache.diskquota.DiskQuotaConfig

tipo requerido: org.geowebcache.diskquota.storage.Quota

número de línea: -1

* La conexión #0 al host localhost quedó intacta

*Cerrando conexión #0


Solución de problemas

Esta sección analizará algunos problemas comunes con GeoWebCache integrado y sus soluciones.

Desalineación de la cuadrícula

A veces se producirán errores al solicitar datos de los puntos finales de GeoWebCache.El error mostrado podría decir que "la resolución no es compatible" o "los límites no se alinean".Esto se debe a que el cliente realiza solicitudes WMS que no se alinean con la cuadrícula de mosaicos que GeoWebCache ha creado, como límites de mapa o límites de capa diferentes, o una resolución no compatible.Si está utilizando OpenLayers como cliente, consultar el código fuente de las demostraciones incluidas puede proporcionar más pistas para hacer coincidir la cuadrícula.

Una solución alternativa es permitir la integración directa de WMS con GeoServer WMS.Puede configurar esto en la páginaValores predeterminados de almacenamiento en caché.

Integración directa con WMS

La integración directa permite que las solicitudes WMS atendidas a través de GeoServer se almacenen en caché como si fueran recibidas y procesadas por GeoWebCache.Con la integración directa de WMS, una solicitud puede ser manejada por GeoServer WMS o GeoWebCache WMS.

A veces, las solicitudes que deberían ir a GeoWebCache se pasarán a GeoServer, lo que provocará que no se guarden mosaicos.Dicho esto, es posible determinar por qué GeoWebCache no manejó una solicitud cuando estaba previsto.Esto se hace utilizando la utilidad de línea de comandoscURLe inspeccionando los encabezados de respuesta.

Primero, obtenga una solicitud de muestra.Esto se puede hacer fácilmente yendo a la Vista previa de capa para una capa determinada, configurando elparámetroTiled enTiled, luego haciendo clic derecho en un área del mapa y copiando la ruta completa a la ubicación de la imagen.Si se hace correctamente, el resultado será una solicitud GET similar a esta:

http://localhost:8090/geoserver/nurc/wms?LAYERS=nurc%3AArc_Sample&STYLES=&FORMAT=image%2Fjpeg&TILED=true&TILESORIGIN=-180%2C-90&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&SRS=EPSG%3A4326&BBOX=-45, -45,0,0&ANCHO=256&ALTO=256

Luego puedes pegar esta URL en una solicitud curl:

rizo -v "URL"

Por ejemplo:

curl -v "http://localhost:8090/geoserver/nurc/wms?LAYERS=nurc%3AArc_Sample&STYLES=&FORMAT=image%2Fjpeg&TILED=true&TILESORIGIN=-180%2C-90&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&SRS=EPSG%3A4326&BBOX =-45,-45,0,0&ANCHO=256&ALTO=256"

Nota

Para omitir la salida de la imagen sin formato al terminal, canalice la salida al valor nulo de su sistema.En Linux/OS X, agreguea estas solicitudes y en Windows, agregue.>/dev/null>nul

Si la solicitud no pasa por el WMS de GeoWebCache, se proporcionará un motivo en un encabezado de respuesta personalizado.Busque los siguientes encabezados de respuesta:

geowebcache-cache-result: DiráHITsi GeoWebCache WMS procesó la solicitud y enMISScaso contrario.

geowebcache-miss-reason: Si lo anterior se muestra comoMISS, se generará una breve descripción de por qué GeoWebCache WMS no manejó la solicitud.

Los siguientes son algunos ejemplos de solicitudes realizadas junto con las respuestas.Estas respuestas se han truncado para mostrar solo la información relevante para la resolución de problemas.

Solicitud exitosa

Esta solicitud fue manejada exitosamente por GeoWebCache WMS.

Pedido:

curl -v "http://localhost:8080/geoserver/topp/wms?TILED=true&LAYERS=states&FORMAT=image/png&REQUEST=GetMap&STYLES=&SRS=EPSG:4326&BBOX=-135,45,-112.5,67.5&WIDTH=256&HEIGHT=256 "

Respuesta:

<HTTP/1.1 200 Aceptar

< Tipo de contenido: imagen/png

<geowebcache-crs: EPSG:4326

...

< capa-geowebcache: topp:estados

< geowebcache-gridset: EPSG: 4326

< índice-mosaico-geowebcache: [2, 6, 3]

...

< geowebcache-cache-resultado: HIT

< límites de mosaicos de geowebcache: -135.0,45.0,-112.5,67.5

...

Parámetro de altura incorrecto

GeoWebCache WMS no maneja la siguiente solicitud porque la imagen solicitada (256x257) no se ajusta al tamaño de mosaico esperado de 256x256.

Pedido:

curl -v "http://localhost:8080/geoserver/topp/wms?TILED=true&LAYERS=states&FORMAT=image/png&REQUEST=GetMap&STYLES=&SRS=EPSG:4326&BBOX=-135,45,-112.5,67.5&WIDTH=256&HEIGHT=257 "

Respuesta:

<HTTP/1.1 200 Aceptar

< Tipo de contenido: imagen/png

< geowebcache-miss-reason: la solicitud no se alinea con las cuadrículas 'EPSG:4326'

...

Ninguna capa de mosaico asociada

GeoWebCache WMS no maneja la siguiente solicitud porque la capa solicitada no tiene ninguna capa de mosaico configurada.

Pedido:

curl -v "http://localhost:8080/geoserver/topp/wms?TILED=true&LAYERS=tasmania_roads&FORMAT=image/png&REQUEST=GetMap&STYLES=&SRS=EPSG:4326&BBOX=-135,45,-112.5,67.5&WIDTH=256&HEIGHT=256 "

Respuesta:

<HTTP/1.1 200 Aceptar

< Tipo de contenido: imagen/png

< geowebcache-miss-reason: no es una capa de mosaico

...

Filtro de parámetros faltantes

GeoWebCache WMS no maneja la siguiente solicitud porque contiene un filtro de parámetros (BGCOLOR) que no está configurado para esta capa.

Pedido:

curl -v "http://localhost:8080/geoserver/topp/wms?BGCOLOR=0xAAAAAA&TILED=true&LAYERS=states&FORMAT=image/png&REQUEST=GetMap&STYLES=&SRS=EPSG:4326&BBOX=-135,45,-112.5,67.5&WIDTH=256&HEIGHT =256"

Respuesta:

<HTTP/1.1 200 Aceptar

< Tipo de contenido: imagen/png

< geowebcache-miss-reason: no existe ningún filtro de parámetros para BGCOLOR

...

CRS no definido

GeoWebCache WMS no maneja la siguiente solicitud porque hace referencia a un CRS (EPSG:26986) que no coincide con ninguno de los gridsets de capas de mosaicos:

Pedido:

curl -v "http://localhost:8080/geoserver/topp/wms?TILED=true&LAYERS=states&FORMAT=image/png&REQUEST=GetMap&STYLES=&SRS=EPSG:26986&BBOX=-135,45,-112.5,67.5&WIDTH=256&HEIGHT=256 "

Respuesta:

<HTTP/1.1 200 Aceptar

< Tipo de contenido: imagen/png

< geowebcache-miss-reason: no existe caché para el CRS solicitado

...

Estilos de espacio de trabajo

Si una capa almacenada en caché utiliza un estilo vinculado a un espacio de trabajo, la capa debe verse en el contexto de ese espacio de trabajo para que el estilo sea visible.Intentar almacenar en caché dicha capa generará un error.

De forma predeterminada, el GeoWebCache incorporado utiliza el espacio de trabajo global.Esto se puede anular mediante unWORKSPACEparámetro.Para habilitar esto, cree un filtro de parámetros de lista de cadenas para la capa denominadaWORKSPACE.Establezca el valor predeterminado en el nombre del espacio de trabajo que contiene el estilo.Configurar los demás valores no será útil en la mayoría de los casos.

Para mover el estilo a un nuevo espacio de trabajo será necesario actualizar el filtro.

Este parámetro solo se aplica a las capas de mosaicos integradas.Si está agregando una capa de GeoServer en un GeoServer remoto directamente a GWC, especifique el espacio de trabajo como parte de la ruta como lo haría normalmente.


Google Earth

Esta sección contiene información sobre el soporte de Google Earth en GeoServer.

Google Earth es un programa de globo virtual en 3D.Unadescarga gratuitade Google, permite al usuario ver, desplazarse y volar virtualmente alrededor de imágenes de la Tierra.Las imágenes de Google Earth se obtienen de diversas fuentes, principalmente de proveedores comerciales de fotografía aérea y por satélite.

Google Earth reconoce un lenguaje de marcado llamadoKML(Keyhole Markup Language) para el intercambio de datos.GeoServer se integra con Google Earth al admitir KML como formato de salida nativo.Cualquier dato configurado para ser servido por GeoServer puede así aprovechar todas las capacidades de visualización de Google Earth.

Descripción general

¿Por qué utilizar GeoServer con Google Earth?

Implementación basada en estándares

Inicio rápido

Ver una capa

Acceso directo a KML

Agregar un enlace de red

Estilo KML

Introducción

Generación SLD a partir de CSS

Creando SLD a mano

Estructura SLD

Puntos

Líneas

Polígonos

Etiquetas de texto

Descripciones

Tutoriales

Plantillas de marcas de posición KML

Plantillas de alturas

Tiempo

Supersuperposiciones y GeoWebCache

Características

Reflector KML

Alternar marcas de posición

Personalizar marcas de posición

Altura y hora del KML

Leyendas KML

Filtros

Superposiciones KML

Región KML

Puntuación KML


Descripción general

¿Por qué utilizar GeoServer con Google Earth?

GeoServer es útil cuando se quiere colocar una gran cantidad de datos en Google Earth.GeoServer genera automáticamente KML que se puede servir y visualizar fácil y rápidamente en Google Earth.GeoServer opera completamente a través de unenlace de red, lo que le permite devolver información selectivamente para el área que se está viendo.Con GeoServer como un servidor robusto y potente y Google Earth que proporciona visualizaciones enriquecidas, son la combinación perfecta para compartir sus datos.

Implementación basada en estándares

GeoServer es compatible con Google Earth al proporcionar KML como formato de salida delServicio de mapas web(WMS).Esto significa que agregar datos publicados por GeoServer es tan simple como construir una solicitud WMS estándar y especificar "application/vnd.google-earth.kml+xml" como archivooutputFormat.Dado que generar KML es solo una solicitud WMS, es totalmente compatible conel estiloa través de SLD.

Consulte la siguiente sección (Inicio rápido) para ver GeoServer y Google Earth en acción.


Inicio rápido

Nota

Si está utilizando GeoServer localmente, GEOSERVER_URL suele serhttp://localhost:8080/geoserver

Ver una capa

Una vez que GeoServer esté instalado y en ejecución, abra un navegador web y vaya a la consola de administración web (Conceptos básicos de la interfaz).Navegue hastaVista previa de capahaciendo clic en el enlace Vista previa de capa en la parte inferior de la barra lateral izquierda.Se le presentará una lista de las capas configuradas actualmente en su instancia de GeoServer.Encuentra la fila que dicetopp:states.A la derecha de la capa haz clic en el enlace que diceKML.


La página de vista previa del mapa

Si Google Earth está instalado correctamente en su computadora, verá un cuadro de diálogo que le preguntará cómo abrir el archivo.SeleccioneAbrir con Google Earth.


Abrir con Google Earth

Cuando Google Earth termine de cargarse, el resultado será similar al siguiente.


La capa topp:states renderizada en Google Earth

Acceso directo a KML

Todos los FeatureTypes configurados están disponibles para generarse como KML (y, por lo tanto, cargarse en Google Earth).La estructura de URL para archivos KML es:

http://GEOSERVER_URL/wms/kml?layers=<nombre de capa>

Por ejemplo, la URL de la capa topp:states es:

http://GEOSERVER_URL/wms/kml?layers=topp:estados

Agregar un enlace de red

Una alternativa a servir KML directamente en Google Earth es utilizar un vínculo de red.Un enlace de red permite una mejor integración en Google Earth.Por ejemplo, el uso de un enlace de red permite al usuario actualizar los datos dentro de Google Earth, sin tener que volver a escribir una URL o hacer clic en los enlaces en la vista previa del mapa de GeoServer nuevamente.

Para agregar un enlace de red, despliegue el menúAgregary vaya aEnlace de red.Apareceráel cuadro de diálogoNuevo enlace de red .Nombra tu capa en el campoNombre.(Esto aparecerá enMis lugaresen la pantalla principal de Google Earth). Establezcael vínculoen:

http://GEOSERVER_URL/wms/kml?layers=topp:estados

(No olvide reemplazar GEOSERVER_URL). Haga clic enAceptar.Ahora puedes guardar esta capa enMis lugares.


Agregar un enlace de red

Consulte las secciones sobreTutorialesyEstilo KMLpara obtener más información.


Estilo KML

Introducción

Keyhole Markup Langauge (KML), cuando GeoServer lo crea y lo genera, se le aplica estilo utilizandodescriptores de capas con estilo(SLD).Este es el mismo enfoque utilizado para diseñar formatos de salida WMS estándar, pero es un poco diferente del estilo habitual de Google Earth, comportándose más como hojas de estilo en cascada (CSS).El estilo del mapa se especifica en el archivo SLD como una serie de reglas y luego los datos que coinciden con esas reglas reciben el estilo adecuado en la salida KML.Para aquellos que no están familiarizados con SLD, un buen lugar para comenzar esIntroducción a SLD.El resto de esta guía contiene información sobre cómo construir documentos SLD para impactar la apariencia del KML producido por GeoServer.

Contenido

Generación SLD a partir de CSS

Creando SLD a mano

Estructura SLD

Puntos

Líneas

Polígonos

Etiquetas de texto

Descripciones

Generación SLD a partir de CSS

La extensión CSS proporciona la posibilidad de generar archivos SLD utilizando una sintaxis ligera de "hoja de estilo en cascada".La GUI de CSS proporciona una vista previa del mapa en vivo mientras edita su estilo, además de una referencia de atributo para la capa actual.

Los estilos generados funcionarán perfectamente con la salida KML de GeoServer.

Creando SLD a mano

Se pueden editar los archivos SLD directamente en lugar de usar la extensión CSS.Para una exploración más completa de la edición de SLD, consulte la secciónEstilo.Los siguientes ejemplos muestran cómo aparecen algunos de los estilos básicos en Google Earth.

Estructura SLD

El siguiente es un esqueleto de un documento SLD.Puede usarse como base sobre la cual expandirse para crear estilos más interesantes y complicados.

<StyledLayerDescriptor versión= "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 " >

<NamedLayer>

<Name> Línea predeterminada </Name>

<UserStyle>

<Title> Mi estilo </Title>

<Abstract> Un estilo </Abstract>

<FeatureTypeStyle>

<Rule>

<!-- los simbolizadores van aquí -->

</Rule>

</FeatureTypeStyle>

</UserStyle>

</NamedLayer> </StyledLayerDescriptor>

Figura 3: Estructura SLD básica

Para probar los fragmentos de código en este documento, cree un SLD con el contenido que se muestra en la Figura 3 y luego agregue el código específico que desea probar en el espacio que dice.Para ver, editar o agregar archivos SLD a GeoServer, navegue hastaConfiguración->Datos->Estilos.<!--symbolizersgohere-->

Puntos

En SLD, los estilos para puntos se especifican mediante un PointSymbolizer.Un elemento PointSymbolizer vacío dará como resultado un estilo KML predeterminado:

<PointSymbolizer> </PointSymbolizer>


Figura 4: Punto predeterminado

Tres aspectos de los puntos que se pueden especificar sonel color,la opacidady elicono.

Color de punto

El color de un punto se especifica con unCssParameterelemento y unfillatributo.El color se especifica como un código hexadecimal de seis dígitos.

<PointSymbolizer>

<Graphic>

<Mark>

<Fill>

<CssParameter name= "fill" > #ff0000 </CssParameter>

</Fill>

</Mark>

</Graphic> </PointSymbolizer>


Figura 5: Configuración del color del punto (#ff0000 = 100% rojo)

Opacidad puntual

La opacidad de un punto se especifica con un elemento CssParameter y unfill-opacityatributo.La opacidad se especifica como un número de coma flotante entre0y1, siendo 0 completamente transparente y 1 completamente opaco.

<PointSymbolizer>

<Graphic>

<Mark>

<Fill>

<CssParameter name= "fill-opacity" > 0.5 </CssParameter>

</Fill>

</Mark>

</Graphic> </PointSymbolizer>


Figura 6: Configuración del punto de opacidad (0,5 = 50 % opaco)

Icono de punto

Se puede especificar un icono diferente al predeterminado con elExternalGraphicelemento:

<PointSymbolizer>

<Gráfico>

<ExternalGraphic>

<OnlineResource xlink:type= "simple"

xlink:href= "http://maps.google.com/mapfiles/kml/pal3/icon55.png" />

<Formato> imagen/ png </Format>

</ExternalGraphic>

</Graphic> </PointSymbolizer>


Figura 7: Un ícono personalizado para puntos

En la Figura 7, el icono personalizado se especifica como una URL remota.También es posible colocar el gráfico en elstylesdirectorio GeoServer y luego especificar solo el nombre del archivo:

<PointSymbolizer>

<Graphic>

<ExternalGraphic>

<OnlineResource xlink:type= "simple" xlink:href= "icon55.png" />

<Format> image/png </Format>

</ExternalGraphic>

</Graphic> </PointSymbolizer >

Figura 8: Especificación de un archivo local para un punto gráfico

Líneas

Los estilos de las líneas se especifican mediante un archivoLineSymbolizer.Un elemento vacíoLineSymbolizerdará como resultado un estilo KML predeterminado:

<LineSymbolizer> </LineSymbolizer>


Figura 9: Línea predeterminada

Los aspectos de la línea resultante que se pueden especificar mediante aLineSymbolizersoncolor,anchoyopacidad.

Color de linea

El color de una línea se especifica con unCssParameterelemento y unstrokeatributo.El color se especifica como un código hexadecimal de seis dígitos.

<LineSymbolizer>

<Stroke>

<CssParameter nombre= "stroke" > #ff0000 </CssParameter>

</Stroke> </LineSymbolizer>


Figura 10: Línea representada con el color #ff0000 (100% rojo)

Ancho de línea

El ancho de una línea se especifica con unCssParameterelemento y unstroke-widthatributo.El ancho se especifica como un número entero (en píxeles):

<LineSymbolizer>

<Stroke>

<CssParameter nombre= "ancho de trazo" > 5 </CssParameter>

</Stroke> </LineSymbolizer>


Figura 11: Línea renderizada con un ancho de cinco (5) píxeles

Opacidad de línea

La opacidad de una línea se especifica con unCssParameterelemento y unfill-opacityatributo.La opacidad se especifica como un número de coma flotante entre0y1, siendo 0 completamente transparente y 1 completamente opaco.

<LineSymbolizer>

<Stroke>

<CssParameter name= "stroke-opacity" > 0.5 </CssParameter>

</Stroke> </LineSymbolizer>


Figura 12: Una línea renderizada con un 50% de opacidad

Polígonos

Los estilos de polígonos se especifican mediante un archivoPolygonSymbolizer.Un elemento vacíoPolygonSymbolizerdará como resultado un estilo KML predeterminado:

<PolygonSymbolizer> </PolygonSymbolizer>

Los polígonos tienen más opciones de estilo que los puntos y las líneas, ya que los polígonos tienen tanto un interior (“relleno”) como un contorno (“trazo”).Los aspectos de los polígonos que se pueden especificar mediante aPolygonSymbolizersonel color del trazo,el ancho del trazo,la opacidad del trazo,el color de rellenoyla opacidad del relleno.

Color del trazo del polígono

El color del contorno de un polígono se especifica con unCssParameterelemento ystrokeun atributo dentro de unStrokeelemento.El color se especifica como un código hexadecimal de 6 dígitos:

<PolygonSymbolizer>

<Stroke>

<CssParameter nombre= "stroke" > #0000FF </CssParameter>

</Stroke> </PolygonSymbolizer>


Figura 13: Contorno de un polígono (#0000FF o 100% azul)

Ancho del trazo del polígono

El ancho del contorno de un polígono se especifica con unCssParameterelemento ystroke-widthun atributo dentro de unStrokeelemento.El ancho se especifica como un número entero.

<PolygonSymbolizer>

<Stroke>

<CssParameter nombre= "ancho de trazo" > 5 </CssParameter>

</Stroke> </PolygonSymbolizer>


Figura 14: Polígono con un ancho de trazo de cinco (5) píxeles

Opacidad del trazo de polígono

La opacidad del trazo de un polígono se especifica con unCssParameterelemento ystrokeun atributo dentro de unStrokeelemento.La opacidad se especifica como un número de coma flotante entre0y1, siendo 0 completamente transparente y 1 completamente opaco.

<PolygonSymbolizer>

<Stroke>

<CssParameter name= "stroke-opacity" > 0.5 </CssParameter>

</Stroke> </PolygonSymbolizer>


Figura 15: Opacidad del trazo del polígono de 0,5 (50 % opaco)

Color de relleno del polígono

El color de relleno de un polígono se especifica con unCssParameterelemento yfillun atributo dentro de unFillelemento.El color se especifica como un código hexadecimal de seis dígitos:

<PolygonSymbolizer>

<Fill>

<CssParameter nombre= "relleno" > #0000FF </CssParameter>

</Fill> </PolygonSymbolizer>


Figura 16: Color de relleno del polígono de #0000FF (100% azul)

Opacidad de relleno de polígono

La opacidad de relleno de un polígono se especifica con unCssParameterelemento yfill-opacityun atributo dentro de unFillelemento.La opacidad se especifica como un número de coma flotante entre0y1, siendo 0 completamente transparente y 1 completamente opaco.

<PolygonSymbolizer>

<Fill>

<CssParameter name= "fill-opacity" > 0.5 </CssParameter>

</Fill> </PolygonSymbolizer>


Figura 17: Opacidad de relleno del polígono de 0,5 (50% opaco)

Etiquetas de texto

Hay dos formas de especificar una etiqueta para una función en Google Earth.El primero es con plantillas de Freemarker (¿ENLACE?) y el segundo es con un archivoTextSymbolizer.Las plantillas tienen prioridad sobre los simbolizadores.

Plantillas de marcadores gratuitos

Especificar etiquetas a través de una plantilla de Freemarker implica crear un archivo de texto especial llamadotitle.ftly colocarlo en eldirectorio (dentro del directorio de datos de GeoServer) para etiquetar el conjunto de datos.Por ejemplo, para crear una plantilla para etiquetar elconjunto de datos por nombre de estado, se crearía el archivo aquí:.El contenido del archivo sería:workspaces/<wsname>/<datastorename>/<featuretypename>states<data_dir>/workspaces/topp/states_shapefile/states/title.ftl

${STATE_NAME.valor}


Figura 18: Uso de una plantilla de Freemarker para mostrar el valor de STATE_NAME

Para obtener más información sobre las plantillas de marcas de posición, consulte nuestro tutorial completo (ENLACE PRÓXIMAMENTE).

Simbolizador de texto

En SLD, las etiquetas se especifican con el elemento Etiqueta de un archivoTextSymbolizer.(Tenga en cuenta elogc:prefijo delPropertyNameelemento).

<TextSymbolizer>

<Label>

<ogc:PropertyName> STATE_NAME </ogc:PropertyName>

</Label> </TextSymbolizer>


Figura 19: Uso de TextSymbolizer para mostrar el valor de STATE_NAME

Los aspectos de la etiqueta resultante que se pueden especificar mediante aTextSymbolizersonel coloryla opacidad.

Color del simbolizador de texto

El color de una etiqueta se especifica con unCssParameterelemento yfillatributo dentro de unFillelemento.El color se especifica como un código hexadecimal de seis dígitos:

<TextSymbolizer>

<Label>

<ogc:PropertyName> STATE_NAME </ogc:PropertyName>

</Label>

<Fill>

<CssParameter name= "fill" > #000000 </CssParameter>

</Fill> </TextSymbolizer>


Figura 20: TextSymbolizer con color de texto negro (#000000)

Opacidad del símbolo de texto

La opacidad de una etiqueta se especifica con unCssParameterelemento yfill-opacityun atributo dentro de unFillelemento.La opacidad se especifica como un número de coma flotante entre0y1, siendo 0 completamente transparente y 1 completamente opaco.

<TextSymbolizer>

<Label>

<ogc:PropertyName> STATE_NAME </ogc:PropertyName>

</Label>

<Fill>

<CssParameter name= "fill-opacity" > 0.5 </CssParameter>

</Fill> </TextSymbolizer>


Figura 21: TextSymbolizer con opacidad 0,5 (50 % opaco)

Descripciones

Cuando se trabaja con KML, cada función está vinculada a una descripción, a la que se puede acceder cuando se hace clic en la función.De forma predeterminada, GeoServer crea una lista de todos los atributos y valores de una característica particular.


Figura 22: Descripción predeterminada de una característica

Es posible modificar este comportamiento predeterminado.Al igual que con los títulos de featureType, que se editan creando unatitle.ftlplantilla, se puede usar una descripción personalizada creando una plantilla llamadadescription.ftly colocándola en el directorio de tipo de característica (dentro del directorio de datos de GeoServer) para el conjunto de datos.Por ejemplo, para crear una plantilla que proporcione una descripción del conjunto de datos de estados, se crearía el archivo:<data_dir>/workspaces/topp/states_shapefile/states/description.ftl.Por ejemplo, si el contenido de la plantilla de descripción es:

Este es el estado de ${STATE_NAME.value}.

La descripción resultante se verá así:


Figura 23: Una descripción personalizada

También es posible crear una plantilla de descripción para todos los tipos de características en un espacio de nombres determinado.Para hacer esto, cree undescription.ftlarchivo como el anterior y guárdelo como<data_dir>/templates/<workspace>/description.ftl.Tenga en cuenta que si se crea una plantilla de descripción para un tipo de característica específico que también tiene una plantilla de descripción de espacio de nombres asociada, la plantilla de tipo de característica (es decir, la plantilla más específica) tendrá prioridad.

También se pueden crear descripciones más complejas utilizando una combinación de HTML y los atributos de los datos.Un tutorial completo sobre cómo usar plantillas para crear descripciones está disponible en nuestra página sobre Plantillas de marcas de posición KML.(¿ENLACE?)

Generación de SLD a partir de CSS Estructura SLD Puntos Líneas Polígonos Etiquetas de texto Descripciones


Tutoriales

Plantillas de marcas de posición KML

Introducción

Empezando

Hola Mundo

Contenido de datos

Variables de atributos

Ejemplo de demostración de WMS

Plantillas de alturas

Introducción

Empezando

Paso uno

Segundo paso

Paso tres

Paso cuatro

Tiempo

Empezando

Comprobando la configuración

Creando la plantilla

Probándolo

Referencias

Supersuperposiciones y GeoWebCache

Descripción general


KML Placemark Templates

Introduction

In KML a “Placemark” is used to mark a position on a map, often visualized with a yellow push pin. A placemark can have a “description” which allows one to attach information to it. Placemark descriptions are nothing more then an HTML snippet and can contain anything we want it to.

By default GeoServer produces placemark descriptions which are HTML tables describing all the attributes available for a particular feature in a dataset. In the following image we see the placemark description for the feature representing Idaho state:


The default placemark

This is great, but what about if one wanted some other sort of information to be conveyed in the description. Or perhaps one does not want to show all the attributes of the dataset. The answer is Templates!!

A template is more or less a way to create some output.

Getting Started

First let us get set up. To complete the tutorial you will need the following:

A GeoServer install

A text editor

And thats it. For this tutorial we will assume that GeoServer is running the same configuration ( data directory ) that it does out of the box.

Hello World

Ok, time to get to creating our first template. We will start off an extremely simple template which, you guessed it, creates the placemark description “Hello World!”. So lets go.


Using the text editor of your choice start a new file calleddescription.ftl



Add the following content to the file:


Hello World!



Save the file in theworkspaces/topp/states_shapefile/statesdirectory of your “data directory”. The data directory is the location of all the GeoServer configuration files. It is normally pointed to by the environment variableGEOSERVER_DATA_DIR.



Start GeoServer is it is not already running.


And thats it. We can now test out our template by adding the following network link in google earth:

http://localhost:8080/geoserver/wms/kml?layers=states

And voila. Your first template


Hello World template.

Refreshing Templates: One nice aspect of templates is that they are read upon every request. So one can simply edit the template in place and have it picked up by Geoserver as soon as the file is saved. So when after editing and saving a template simply “Refresh” the network link in Google Earth to have the new content picked up.


Refresh Template

As stated before template descriptions are nothing more than html. Play around withdescription.ftland add some of your own html. Some examples you may want to try:


A simple link to the homepage of your organization:


Provided by the <a href="http://topp.openplans.org">The Open Planning Project</a>.


Homepage of Topp


Homepage of Topp


The logo of your organization:


<img src="http://topp.openplans.org/images/logo.jpg"/>


Logo of Topp


Logo of Topp

The possibilities are endless. Now this is all great and everything but these examples are some what lacking in that the content is static. In the next section we will create more realistic template which actually access some the attributes of our data set.

Data Content

The real power of templates is the ability to easily access content, in the case of features this content is the attributes of features.In a KML placemark description template, there are a number of “template variables” available.

The variable “fid”, which corresponds to the id of the feature

The variable “typeName”, which corresponds to the name of the type of the feature

A sequence of variables corresponding to feature attributes, each named the same name as the attribute

So with this knowledge in hand let us come up with some more examples:

Simple fid/typename access:

This is feature ${fid} of type ${typeName}.

This is a feature of 3.1 of type states.


FID

Access to the values of two attributes namedSTATE_NAME, andPERSONS:

This is ${STATE_NAME.value} state which has a population of ${PERSONS.value}.

ID This is Idaho state which has a population of 1.006.749.


Attributes

Attribute Variables

A feature attribute a “complex object” which is made up of three parts:

A value, given as a default string representation of the actual attribute value feasible to be used directly

A rawValue, being the actual value of the attribute, to allow for more specialized customization (for example,${attribute.value?string("Enabled","Disabled")}for custom representations of boolean attributes, etc).

A type, each of which is accessible via${<attribute_name>.name},${<attribute_name>.value},${<attribute_name>.rawValue},${<attribute_name>.type}respectively. The other variables: fid, and typeName and are “simple objects” which are available directly.

WMS Demo Example

We will base our final example off the “WMS Example” demo which ships with GeoServer. To check out the demo visithttp://localhost:8080/geoserver/popup_map/index.htmlin your web browser.

You will notice that hovering the mouse over one of the points on the map displays an image specific to that point. Let us replicate this with a KML placemark description.


In thefeatureTypes/DS_poi_poidirectory of the geoserver data directory create the following template:


<img src="http://localhost:8080/geoserver/popup_map/${THUMBNAIL.value}"/>



Add the following network link in Google Earth:


http://localhost:8080/geoserver/wms/kml?layers=tiger:poi


Poi.4


WMS Example


Heights Templates

Introduction

Height Templates in KML allow you to use an attribute of your data as the ‘height’ of features in Google Earth.

Note

This tutorial assumes that GeoServer is running onhttp://localhost:8080.

Getting Started

For the purposes of this tutorial, you just need to have GeoServer with the release configuration, and Google Earth installed. Google Earth is available for free from <http://earth.google.com/<http://earth.google.com/>`_.

Step One

By default GeoServer renders all features with 0 height, so they appear to lay flat on the world’s surface in Google Earth.

To view thetopp:stateslayer (packaged with all releases of GeoServer) in Google Earth, the easiest way is to use a network link. In Google Earth, underPlaces, right-click onTemporary Places, and go toAdd ‣ Network Link. In the dialog box, fill intopp:statesas theName, and the following URL as theLink:

http://localhost:8080/geoserver/wms/reflect?layers=topp:states&format=application/vnd.google-earth.kml+xml


topp:states in Google Earth

Step Two

An interesting value to use for the height would be the population of each state (so that more populated states appear taller on the map). We can do this by creating a file calledheight.ftlin the GeoServer data directory underworkspaces/topp/states_shapefile/states. To set the population value, we enter the following text inside this new file:

${PERSONS.value}

This uses the value of thePERSONSattribute as the height for each feature. To admire our handiwork, we can refresh our view by right-clicking on our temporary place (calledtopp:states) and selectingRefresh:


Height by Population

Step Three

Looking at our population map, we see that California dwarfs the rest of the nation, and in general all of the states are too tall for us to see the heights from a convenient angle. In order to scale things down to a more manageable size, we can divide all height values by 100. Just change the template we wrote earlier to read:

${PERSONS.value / 100}

Refreshing our view once again, we see that our height field has disappeared. Looking at the GeoServer log (in the data directory under logs/geoserver.log) we see something like:

Caused by: freemarker.core.NonNumericalException: Error on line 1, column 3 in height.ftl

Expression PERSONS.value is not numerical

However, we know that thePERSONSfield is numeric, even if it is declared in the shapefile as a string value. To force a conversion, we can append?number, like so:

${PERSONS.value?number / 100}

One finalRefreshbrings us to a nicely sized map of the US:


Scaled Height

Step Four

There are still a couple of tweaks we can make. The default is to create a ‘solid’ look for features with height, but Google Earth can also create floating polygons that are disconnected from the ground. To turn off the ‘connect to ground’ functionality, add a format option called ‘extrude’ whose value is ‘false’. That is, change theLinkin the Network Link to be:

http://localhost:8080/geoserver/wms/reflect?layers=topp:states&format=application/vnd.google-earth.kml%2Bxml&format_options=extrude:false

We also have a few options for how Google Earth interprets the height field. By default, the height is interpreted as relative to the ground, but we can also set the heights relative to sea level, or to be ignored (useful for reverting to the ‘flat’ look without erasing your template). This is controlled with a format option named altitudeMode, whose values are summarized below.

altitudeMode

Purpose

altitudeMode

Interpret height as relative to ground level

absolute

Interpret height as relative to sea level

clampToGround

Ignore height entirely


Time

Warning

The screenshots on this tutorial have not yet been updated for the 2.0.x user interface. But most all the rest of the information should be valid, and the user interface is roughly the same, but a bit more easy to use.

Getting Started

For this tutorial we will using a Shapefile which contains information about the number of Internet users in the countries of Western Europe for a rang of years.

Download and unzipinet_weu.zip

Configure GeoServer to serve the Shapefileinet_weu.zip. (A tutorial is availablePublishing a Shapefile.)

Add the SLD “inet_weu.sldto GeoServer. ( A tutorial is available forstyling_quickstart)

Set the style of the feature type added in step 2 to the style added in step 3


Style

Checking the Setup

If all is configured properly you should be able to navigate tohttp://localhost:8080/geoserver/wms/kml?layers=topp:inet_weu&format=openlayers&bbox=-33.780,26.266,21.005,56.427and see the following map:


Setup

Creating the Template

Next we will create a template which allows us to specify the temporal aspects of the dataset. The schema of our dataset looks like:

INET_P100n

Number of internet users per 100 people

NAME

Name of country

RPT_YEAR

Year

Geometry

Polygon representing the country

The temporal attribute isRPT_YEARand is the one that matters to us. Ok, time to create the template.

In your text editor of choice, create a new text file calledtime.ftl.

Add the following text:

${RPT_YEAR.value?date('yyyy')}

Save the file to the<GEOSERVER_DATA_DIR>/workspaces/topp/inet_weu_shapefile/inet_weudirectory. Where<GEOSERVER_DATA_DIR>is the location of the “data directory” of your GeoServer installation. Usually pointed to via theGEOSERVER_DATA_DIRenvironment variable.

See the ref:referencessection for more information about specifying a date format.

Trying it Out

Ok time to try it out.

Navigate tohttp://localhost:8080/geoserver/wms/kml?layers=inet_weu&legend=true. This should cause Google Earth to open.


Google Earth

In Google Earth, adjust the time bar so that it captures a time interval that is approximately 1 year wide


Google Earth Time Bar

Slide the time bar forward in time and notice how the polygon colors change


Sliding the Time Bar

References

Specifying a Date Format

When setting up a time template for your own dataset the most important issue is the format of your temporal data. It may or may not be in a format in which GeoServer can read directly. You can check if the date/time format can be used directly by GeoServer by using the following time template. This is an example time template file (time.ftl) file without explicit formatting.

${DATETIME_ATTRIBUTE_NAME.value}

While GeoServer will try its best to parse the data there are cases in which your data is in a format which it cannot parse. When this occurs it is necessary to explicitly specify the format. Luckily Freemarker provides us with functionality to do just this.

Consider the date time12:30onJanuary01,2007specified in the following format:01?01%2007&12$30!00. When creating the template we need to explicitly tell Freemarker the format the date time is in with the datetime function. This is an example time template file (time.ftl) file with explicit formatting:

${DATETIME_ATTRIBUTE_NAME.value?datetime("M?d%y&H:m:s")}

The process is similar for dates (no time). The date01?01%2007would be specified in a template with explicit formatting:

${DATETIME_ATTRIBUTE_NAME.value?date("M?d%y")}

So when must you specify the date format in this manner? The following table illustrates thedateformats that GeoServer can understand. Note that the ‘-‘ character can be one of any of the following characters: ‘/’ (forward slash), ‘ ‘ (space), ‘.’ (period), ‘,’ (comma)

Date Format

Example

yyyy-MM-dd

2007-06-20

yyyy-MMM-dd

2007-Jun-20

MM-dd-yyyy

06-20-2007

MMM-dd-yyyy

Jun-20-2007

dd-MM-yyyy

20-06-2007

dd-MMM-yyyy

20-Jun-2007

The set ofdate timeformats which GeoServer can be understand is formed by appending the timestamp formatshh:mmandhh:mm:ssto the entries in the above table:

DateTime Format

Example

yyyy-MM-dd hh:mm

2007-06-20 12:30

yyyy-MMM-dd hh:mm

2007-Jun-20 12:30

yyyy-MM-dd hh:mm:ss

2007-06-20 12:30:00

yyyy-MMM-dd hh:mm:ss

2007-Jun-20 12:30:00

Warning

Setting the Timezone

Be aware that the KML output fordate timeformats will reflect the timezone of the java virtual machine, which can be set using the user.timezone parameter in the startup script. For example, the following command starts GeoServer using the Coordinated Universal Time (UTC) timezone.

exec"$_RUNJAVA"-DGEOSERVER_DATA_DIR="$GEOSERVER_DATA_DIR"

-Djava.awt.headless=true-DSTOP.PORT=8079-Duser.timezone=UTC-DSTOP.KEY=geoserver-jarstart.jar

If the timezone is not set, it will default to the timezone of the operating system.

Specifying a Date Range

In the above example a single time stamp is output for the dataset. GeoServer also supports specifying date ranges via a template. The syntax for ranges is:

Where begin is the first date in the range, end is the last date in the range, and || is the delimiter between the two. As an example:

Would the date range starting atJanuary1,2007and endingJune1,2007. Date ranges can also be open ended:

The first date specifies a date range where the beginning is open-ended. The second specifies a date range where the end is open-ended.


Features

This section delves into greater detail about the various functionality and options possible with KML output and Google Earth.

KML Reflector

Using the KML reflector

Reflector modes

More about the “superoverlay” mode

Toggling Placemarks

Vector Placemarks

Raster Placemarks

Customizing Placemarks

Titles

Descriptions

KML Height and Time

Height

Time

KML Legends

Filters

Filter

CQL Filter

KML Super-Overlays

Raster Super-Overlays

Raster Super-Overlays and GeoWebCache

Vector Super-Overlays

Vector Super-Overlays and GeoWebCache

KML Regionation

Regionation Attributes

Regionation Strategies

Setting Regionation Parameters

KML Scoring

The kmscore attribute


KML Reflector

Standard WMS requests can be quite long and cumbersome. The following is an example of a request for KML output from GeoServer:

http://localhost:8080/geoserver/ows?service=WMS&request=GetMap&version=1.1.1&format=application/vnd.google-earth.kml+XML&width=1024&height=1024&srs=EPSG:4326&layers=topp:states&styles=population&bbox=-180,-90,180,90

GeoServer includes an alternate way of requesting KML, and that is to use theKML reflector. The KML reflector is a simpler URL-encoded request that uses sensible defaults for many of the parameters in a standard WMS request. Using the KML reflector one can shorten the above request to:

http://localhost:8080/geoserver/wms/kml?layers=topp:states

Using the KML reflector

The only mandatory parameter is thelayersparameter. The syntax is as follows:

http://GEOSERVER_URL/wms/kml?layers=<layer>

whereGEOSERVER_URLis the URL of your GeoServer instance, and<layer>is the name of the featuretype to be served.

The following table lists the default assumptions:

Key

Value

request

GetMap

service

wms

version

1.1.1

srs

EPSG:4326

format

applcation/vnd.google-earth.kmz+xml

width

2048

height

2048

bbox

<layerbounds>

kmattr

true

kmplacemark

false

kmscore

40

styles

[default style for the featuretype]

Any of these defaults can be changed when specifying the request. For instance, to specify a particular style, one can appendstyles=populationto the request:

http://localhost:8080/geoserver/wms/kml?layers=topp:states&styles=population

To specify a different bounding box, append the parameter to the request:

http://localhost:8080/geoserver/wms/kml?layers=topp:states&bbox=-124.73,24.96,-66.97,49.37

Reflector modes

The KML reflector can operate in one of three modes:refresh,superoverlay, anddownload.

The mode is set by appending the following parameter to the URL:

mode=<mode>

where<mode>is one of the three reflector modes. The details for each mode are as follows:

Mode

Description

refresh

(default for all versions except 1.7.1 through 1.7.5) Returns dynamic KML that can be refreshed/updated by the Google Earth client. Data is refreshed and new data/imagery is downloaded when zooming/panning stops. This mode can return either vector or raster (placemark or overlay) The decision to return either vector or raster data is determined by the value ofkmscore. Please see the section onKML Scoringfor more information.

superoverlay

(default for versions 1.7.1 through 1.7.5) Returns KML as a super-overlay. A super-overlay is a form of KML in which data is broken up into regions. Please see the section onKML Super-Overlaysfor more information.

download

Returns KML which contains the entire data set. In the case of a vector layer, this will include a series of KML placemarks. With raster layers, this will include a single KML ground overlay. This is the only mode that doesn’t dynamically request new data from the server, and thus is self-contained KML.

More about the “superoverlay” mode

When requesting KML using thesuperoverlaymode, there are four additional submodes available regarding how and when data is requested. These options are set by appending the following parameter to the KML reflector request:

superoverlay_mode=<submode>

where<submode>is one of the following options:

Submode

Description

auto

(default) Always returns vector features if the original data is in vector form, and returns raster imagery if the original data is in raster form. This can sometimes be less than optimal if the geometry of the features are very complicated, which can slow down Google Earth.

raster

Always returns raster imagery, regardless of the original data. This is almost always faster, but all vector information is lost in this view.

overview

Displays either vector or raster data depending on the view. At higher zoom levels, raster imagery will be displayed, and at lower zoom levels, vector features will be displayed. The determination for when to switch between vector and raster is made by the regionation parameters set on the server. See the section onKML Regionationfor more information.

hybrid

Displays both raster and vector data at all times.


Alternar marcas de posición

Marcas de posición vectoriales

Cuando GeoServer genera KML para un conjunto de datos vectoriales, adjunta información de los datos a cada característica que se crea.Al hacer clic en una característica vectorial, se muestra una ventana emergente.Esto se llamamarca de posición.Por defecto, esta es una lista simple que muestra datos de atributos, aunque esta información se puede personalizar usando las plantillas de Freemarker.

Si desea que esta información no se muestre cuando se hace clic en una función (ya sea por razones de seguridad o simplemente para tener una interfaz de usuario más limpia), es posible desactivar esta funcionalidad.Para hacerlo, use elkmattrparámetro en una solicitud KML para desactivar la atribución.

La sintaxis parakmattres la siguiente:

format_options=kmattr:[verdadero|falso]

Tenga en cuenta quekmattres una "opción de formato", por lo que la sintaxis es ligeramente diferente del par clave-valor habitual.Por ejemplo:

http://localhost:8080/geoserver/wms/kml?layers=topp:states&format_options=kmattr:false

Marcas de posición ráster

A diferencia de las entidades vectoriales, donde la marca de posición está habilitada de forma predeterminada, las marcas de posición están deshabilitadas de forma predeterminada con imágenes rasterizadas de entidades.Para habilitar esta función, puede utilizar lakmplacemarkopción de formato en su solicitud KML.La sintaxis es similar a lakmattropción de formato especificada anteriormente:

format_options=kmplacemark:[verdadero|falso]

Por ejemplo, usando el reflector KML, la sintaxis sería:

http://localhost:8080/geoserver/wms/kml?layers=topp:states&format_options=kmplacemark:true


Personalizar marcas de posición

La salida KML puede aprovechar algunas poderosas capacidades de visualización en Google Earth.Los títulosse pueden mostrar encima de las funciones.Se pueden agregardescripciones (HTML personalizado que se muestra al hacer clic en una característica) para personalizar las vistas de los datos de los atributos.Además, utilizando el control deslizante de tiempo de Google Earth,se pueden crear animaciones basadas enel tiempo .Finalmente,se puede establecerla altura de las entidades, a diferencia de la superposición del terreno predeterminada.Todo esto se puede lograr creando plantillas de Freemarker.Las plantillas de Freemarker son archivos de texto (con código HTML limitado), guardados en elDirectorio de datos de GeoServer, que utilizan variables que se vinculan a atributos específicos en los datos.

Títulos

Especificar etiquetas a través de una plantilla implica crear un archivo de texto especial llamadotitle.ftly colocarlo en el directorio de tipos de características dentro delDirectorio de datos de GeoServerpara que se etiquete el conjunto de datos.Por ejemplo, para crear una plantilla para etiquetar lastatescapa por nombre de estado, se crearía el archivo:<data_dir>/workspaces/topp/states_shapefile/states/title.ftl.El contenido del archivo sería:

${STATE_NAME.valor}

Descripciones

Cuando se trabaja con KML, cada función está vinculada a una descripción, a la que se puede acceder cuando se hace clic en la función.De forma predeterminada, GeoServer crea una lista de todos los atributos y valores de una característica particular.

Es posible modificar este comportamiento predeterminado.Al igual que con los títulos de tipos de características, que se editan mediante la creación de unatitle.ftlplantilla, especificar descripciones a través de una plantilla implica crear un archivo de texto especial llamadodescription.ftly colocarlo en el directorio de tipos de características dentro deldirectorio de datos de GeoServerpara etiquetar el conjunto de datos.Por ejemplo, una plantilla de descripción de muestra se guardaría aquí:<data_dir>/workspaces/topp/states_shapefile/states/description.ftl.El contenido del archivo podría ser:

Este es el estado de ${STATE_NAME.value}.

La descripción resultante se verá así:

Advertencia

Agregar SS: una descripción personalizada

También es posible crear una plantilla de descripción para todas las capas en un espacio de nombres determinado.Para hacer esto, cree undescription.ftlarchivo como el anterior y guárdelo aquí:

<dir_datos>/templates/<espacio de nombres>/description.ftl.

Tenga en cuenta que si se crea una plantilla de descripción para una capa específica que también tiene una plantilla de descripción de espacio de nombres asociada, la plantilla de capa (es decir, la plantilla más específica) tendrá prioridad.


Altura y hora del KML

Altura

GeoServer crea de forma predeterminada superposiciones bidimensionales en Google Earth.Sin embargo, GeoServer puede generar entidades con información de altura (también llamadas “extrusiones KML”) si lo desea.Esto puede tener el efecto de hacer que las entidades "floten" sobre el suelo o crear estructuras de estilo de gráfico de barras con la forma de las entidades.La altura de las características se puede vincular a un atributo de los datos.

La configuración de la altura de las funciones se determina mediante una plantilla KML Freemarker.Cree un archivo llamadoheight.ftly guárdelo en el mismo directorio que el tipo de característica en suDirectorio de datos de GeoServer.Por ejemplo, para crear una plantilla de altura para lastatescapa, el archivo debe guardarse en formato<data_dir>/workspaces/topp/states_shapefile/states/height.ftl.

Para establecer la altura según un atributo, la sintaxis es:

${ATRIBUTO.valor}

Reemplace la palabraATTRIBUTEcon el nombre del atributo de altura en su conjunto de datos.Para obtener un tutorial completo sobre cómo trabajar con las plantillas de altura, consultePlantillas de alturas.

Tiempo

Google Earth también contiene un "control deslizante de tiempo", que puede permitir animaciones de datos y mostrar cambios a lo largo del tiempo.Al igual que con la altura, la hora se puede vincular a un atributo de los datos, siempre que el conjunto de datos tenga un atributo de fecha/hora.Vincular este atributo de fecha/hora al control deslizante de tiempo en Google Earth se logra creando una plantilla de Freemarker.Cree un archivo llamadotime.ftly guárdelo en el mismo directorio que contiene sus datosinfo.xml.

Para establecer la hora en función de un atributo, la sintaxis es:

${DATETIME_ATTRIBUTE.valor}

Reemplace la palabraDATETIME_ATTRIBUTEcon el nombre del atributo de fecha/hora.Al crear KML, GeoServer vinculará automáticamente los datos al elemento de tiempo en Google Earth.Si se configura correctamente, el control deslizante de tiempo aparecerá automáticamente.

Para obtener un tutorial completo sobre el uso de GeoServer con el control deslizante de tiempo de Google Earth, consulteHora


Leyendas KML

WMS incluye unaGetLegendGraphicoperación que permite a un cliente WMS obtener un gráfico de leyenda del servidor para una capa en particular.La combinación de la leyenda con superposiciones KML permite ver la leyenda dentro de Google Earth.

Para que GeoServer incluya una leyenda con la salida KML, agréguelalegend=truea la solicitud del reflector KML.Por ejemplo:

http://localhost:8080/geoserver/wms/kml?layers=topp:states&legend=true

El resultado resultante de Google Earth se ve así:



Filtros

Aunque no es específico de Google Earth, GeoServer tiene la capacidad de filtrar los datos devueltos por elServicio de mapas web.El reflector KML pasará a través de cualquier WMSfilterocql_filterparámetro a GeoServer para restringir la respuesta.

Nota

Los filtros son básicamente una traducción de una declaración SQL "WHERE" a un formulario web.Aunque se limita a una sola tabla, esto permite a los usuarios realizar filtros lógicos como "Y" y "O" para realizar consultas muy complejas, aprovechando comparaciones numéricas y de cadenas, operaciones geométricas ("bbox", "touches", "intersects", " disjunto”), declaraciones “ME GUSTA”, valores nulos y más.

Filtrar

El filtro más simple es muy fácil de incluir.Se llamafeatureidfiltro y le permite filtrar una sola característica por su ID.La sintaxis es:

featureid=<característica>

donde <característica> es la característica y su ID.Un ejemplo sería:

http://localhost:8080/geoserver/wms/kml?layers=topp:states&featureid=states.5

Esta solicitud generará únicamente el estado de Maryland.Los ID de características de sus datos se encuentran más fácilmente realizando solicitudes WFS o KML y examinando el resultado resultante.

Filtro CQL

Usar filtros en una URL puede ser muy difícil de manejar, ya que es necesario incluir XML codificado en URL:

http:/localhost:8080/geoserver/wms/kml?layers=topp:states&FILTER=%3CFilter%3E%3CPropertyIsBetween%3E%3CPropertyName%3Etopp:LAND_KM%3C/PropertyName%3E%3CLowerBoundary%3E%3CLiteral%3E100000%3C/ Literal%3E%3C/LowerBoundary%3E%3CUpperBoundary%3E%3CLiteral%3E150000%3C/Literal%3E%3C/UpperBoundary%3E%3C/PropertyIsBetween%3E%3C/Filter%3E

En su lugar, se puede utilizar el lenguaje de consulta común (CQL), que permite especificar la misma declaración de forma más sucinta:

http://localhost:8080/geoserver/wms/kml?layers=topp:states&CQL_FILTER=LAND_KM+BETWEEN+100000+AND+150000

Esta consulta devolverá todos los estados de EE. UU. con áreas entre 100.000 y 150.000 km^2.


Superposiciones KML

Las supersuperposiciones son una forma de KML en la que los datos se dividen en regiones.Esto permite que Google Earth actualice/solicite solo regiones particulares del mapa cuando cambia el área de visualización.Las superposiciones se utilizan para publicar de manera eficiente grandes conjuntos de datos.(Consultela página de Google sobre superposicionespara obtener más información).

GeoServer admite dos tipos de superposiciones:rásteryvectorial.Con supersuperposiciones de trama, GeoServer produce de forma inteligente imágenes apropiadas para el nivel de zoom actual y genera dinámicamente nuevas imágenes cuando cambia el nivel de zoom.Con las superposiciones vectoriales, se solicitan datos de características solo para las características visibles y las nuevas características se cargan dinámicamente según sea necesario.Las super superposiciones ráster requieren menos recursos del cliente, pero las super superposiciones vectoriales tienen una mayor calidad de salida.

Cuando se utilizaKML Reflector, las supersuperposiciones están habilitadas de forma predeterminada, ya sea que los datos en cuestión sean rasterizados o vectoriales.Para obtener más información sobre las distintas opciones para la salida de superposición KML, consulte la página enKML Reflector.

Supersuperposiciones ráster

Considere esta imagen, que se genera desde GeoServer.Cuando se aleja, los datos tienen un tamaño pequeño.


Al hacer zoom, la imagen se hace más grande, pero como la imagen tiene baja resolución (originalmente diseñada para verse pequeña), la calidad se degrada.


Sin embargo, en una superposición, el documento KML solicita una nueva imagen de GeoServer con una resolución más alta para ese nivel de zoom.A medida que se descarga la nueva imagen, la imagen antigua se reemplaza por la nueva.


Supersuperposiciones ráster y GeoWebCache

GeoServer implementa supersuperposiciones de una manera que es compatible con la recomendación del cliente WMS Tiling.Las súper superposiciones se generan de manera que los mosaicos de la súper superposición sean los mismos mosaicos que solicitaría un cliente de mosaico WMS.Por lo tanto, se pueden utilizar los mecanismos de almacenamiento en caché de mosaicos existentes y obtener un beneficio de rendimiento potencialmente grande.

La forma más sencilla de almacenar en caché en mosaico una súper superposición ráster es utilizar GeoWebCache, que está integrado en GeoServer:

http://GEOSERVER_URL/gwc/service/kml/<nombre de capa>.<formato de imagen>.kmz

¿DóndeGEOSERVER_URLestá la URL de su instancia de GeoServer?

Supersuperposiciones vectoriales

GeoServer puede incluir la información de la característica directamente en el documento KML.Esto tiene muchos beneficios.Permite al usuario seleccionar (hacer clic en) funciones para ver descripciones, alternar la visualización de funciones individuales y obtener una mejor representación, independientemente del nivel de zoom.Sin embargo, para conjuntos de datos grandes, la información de características puede tardar mucho en descargarse y utilizar muchos recursos del lado del cliente.Las supersuperposiciones vectoriales permiten al cliente descargar solo una parte de un conjunto de datos y solicitar más funciones según sea necesario.

Las supersuperposiciones vectoriales pueden utilizar el proceso deregionalización KMLpara organizar entidades en una jerarquía.El proceso de regionalización puede operar en una variedad de modos.La mayoría de los modos requieren un "atributo de región" que se utiliza para determinar qué características deben ser visibles en un nivel de zoom particular.Consulte la páginaRegión KMLpara obtener más detalles.

Supersuperposiciones vectoriales y GeoWebCache

Al igual que con las super superposiciones ráster, es posible almacenar en caché las super superposiciones vectoriales utilizando GeoWebCache.A continuación se muestra la sintaxis para generar un documento KML superpuesto vectorial mediante GeoWebCache:

http://GEOSERVER_URL/gwc/service/kml/<nombre de capa>.kml.kmz

¿DóndeGEOSERVER_URLestá la URL de su instancia de GeoServer?

A diferencia de generar una supersuperposición con elKML Reflectorestándar , no es posible especificar las propiedades de la región como parte de la URL.Estos parámetros deben establecerse en la configuraciónde Capasa la que se puede acceder haciendo clic en 'Capas' en la barra lateral izquierda y luego seleccionando su capa vectorial.


Región KML

Mostrar características vectoriales en Google Earth es una forma muy poderosa de crear mapas con un estilo agradable.Sin embargo, no siempre es óptimo mostrar todas las funciones en todo momento.Mostrar demasiadas funciones puede crear un mapa desagradable y afectar negativamente el rendimiento de Google Earth.Para combatir esto, la salida KML de GeoServer incluye la capacidad de limitar funciones según ciertos criterios.Este proceso se conoce comoregionalización.La regionalización está activa de forma predeterminada cuando se utiliza el modo reflector KML supersuperpuesto.

Atributos de región

El aspecto más importante de la regionalización es decidir cómo determinar qué características se destacan más que otras.Esto se puede hacer ya seapor geometríaopor atributo.Se debe elegir la opción que mejor ejemplifique la “importancia” relativa de la característica.Al elegir la región por geometría, solo las líneas y polígonos más grandes se mostrarán en niveles de zoom más altos, mientras que los más pequeños se mostrarán al hacer zoom. Al realizar la región por un atributo, el valor más alto de este atributo hará que esas entidades se muestren en niveles más altos. niveles de zoom.(Se ignorará la elección de un atributo con un valor no numérico y, en su lugar, se utilizará de forma predeterminada la región por geometría).

Estrategias de regionalización

Las estrategias de región establecen cómo determinar qué funciones deben mostrarse en un momento o nivel de zoom determinado.Hay cinco tipos de estrategias de regionalización:

Estrategia

Descripción

best_guess

(predeterminado) La estrategia real está determinada por el tipo de datos con los que se opera.Si los datos constan de puntos,randomse utiliza la estrategia.Si los datos constan de líneas o polígonos,geometryse utiliza la estrategia.

external-sorting

Crea una base de datos auxiliar temporal dentro de GeoServer.Se necesita un poco más de tiempo para crear el índice tras la primera solicitud.

native-sorting

Utiliza el algoritmo de clasificación predeterminado del backend donde se alojan los datos.Es más rápido que la clasificación externa, pero sólo funcionará con almacenes de datos PostGIS.

geometry

Ordena externamente por longitud (si son líneas) o área (si son polígonos).

random

Utiliza el orden existente de los datos y no los ordena.

En la mayoría de los casos, la estrategiabest_guesses suficiente.

Configuración de parámetros de región

Las estrategias y atributos de región son específicos del tipo de característica y, por lo tanto, se configuran en la página de edición deCapasde laInterfaz de administración web.Se puede navegar seleccionando "Capas" en la barra lateral izquierda.


Puntuación KML

Nota

La puntuación KML solo se aplica cuando se utiliza el modo de superposiciónrefresh.ConsulteSuperposiciones KMLpara obtener más información.

GeoServer puede devolver KML en una de dos formas.El primero es como una serie de elementos de marca de posición (vectores).Cada marca de posición corresponde a una característica del conjunto de datos subyacente.Este formulario solo se aplica a conjuntos de datos vectoriales.

La segunda forma es como una superposición (imagen).De esta forma, el GeoServer WMS realiza la representación y solo el gráfico resultante se envía a Google Earth.Este es el único formulario disponible para conjuntos de datos ráster, pero también se puede aplicar a conjuntos de datos vectoriales.

Existen ventajas y desventajas para cada modo de salida al representar datos vectoriales.Las marcas de posición se ven mejor, pero puede haber problemas de rendimiento con Google Earth si el conjunto de datos es grande.Las superposiciones ejercen menos presión sobre Google Earth, pero no son tan bonitas.

A continuación se muestra el mismo conjunto de datos representado en forma de Marca de posición en la parte superior y en forma de Superposición en la parte inferior.


La puntuación KML es el proceso de determinar si se deben representar entidades como rásteres o como vectores.

El atributo kmscore

GeoServer determina si se debe representar una capa como ráster o vectorial en función de cuántas entidades hay en el conjunto de datos y un atributo llamadokmscore.Elkmscoreatributo determina la cantidad máxima de entidades vectoriales representadas.Se calcula mediante esta fórmula:

número máximo de funciones = 10^(kmscore/15)

La siguiente tabla muestra los valores de este umbral para varios valores delkmscoreparámetro:

puntuación km

Número máximo de funciones

0

Forzar superposición/salida ráster

10

4

20

21

30

100

40

Aprox.450

50

(predeterminado) Aprox.2150

60

Aprox.10.000

70

Aprox.45.000

80

Aprox.200.000

90

Aprox.1.000.000

100

Forzar salida de marca de posición/vector

La sintaxis para especificarkmscorees:

puntuación km=<valor>

donde<value>es un número entero entre 0 y 100. Por ejemplo:

http://localhost:8080/geoserver/wms/kml?layers=topp:states&mode=refresh&kmscore=20

Elkmscoreatributo se ignorará si se utiliza un modo de reflector distinto derefresh.


















URL:

http://201.144.242.70:8080/opengeo-docs/geoserver/webadmin/index.html