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. |
|
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:
Directorio de archivos espaciales.
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.
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:
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.
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.
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:
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.
Microsoft SQL Server y SQL Azure
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
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 |
Sí |
El espacio de nombres asociado con el almacén de datos. |
Description |
No |
Una descripción del almacén de datos. |
server |
Sí |
La URL de la instancia de ArcSDE. |
port |
Sí |
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 |
Sí |
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 |
Sí |
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 |
Sí |
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:
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:
CompositionPart_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 |
|
ge.26930473 |
gu.25678 |
holoceno |
pleistoceno |
|
ge.26930960 |
gu.25678 |
Plioceno |
mioceno |
|
ge.26932959 |
gu.25678 |
Ordovícico inferior |
Ordovícico inferior |
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 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.
Referencia de codificación 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 |
Sí |
El primer valor a comparar.A menudo un<PropertyName>. |
|
Sí |
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> |
Sí |
Contiene una cadena que especifica el nombre de la propiedad a probar. |
<Literal> |
Sí |
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> |
Sí |
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 |
Sí |
El valor a probar |
|
<LowerBoundary> |
Sí |
Contiene unaexpresiónque proporciona el límite inferior del rango. |
<UpperBoundary> |
Sí |
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> |
Sí |
Contiene una cadena que especifica el nombre de la propiedad con valores de geometría que se va a probar. |
Geometría GML |
Sí |
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> |
Sí |
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 |
Sí |
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> |
Sí |
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> |
Sí |
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 |
Expresión de predicado único |
|
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 |
Operaciones de comparació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. |
Prueba si un valor de expresión está (no) en un conjunto de valores |
|
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 |
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 |
Prueba si dos geometrías se cruzan.Lo contrario deDISJOINT |
|
Prueba si dos geometrías están separadas.Lo contrario deINTERSECTS |
|
Comprueba si la primera geometría contiene topológicamente a la segunda.Lo contrario deWITHIN |
|
Comprueba si la primera geometría está topológicamente dentro de la segunda.Lo contrario deCONTAINS |
|
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. |
|
Prueba si dos geometrías se cruzan.Las geometrías se cruzan si tienen algunos pero no todos los puntos interiores en comú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. |
|
Prueba si dos geometrías son topológicamente iguales. |
|
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**' |
|
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 |
|
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). |
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 |
Nombre de un atributo de característica |
|
valor literal |
|
Operaciones aritmeticas |
|
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 |
Período especificado por una hora de inicio y finalización. |
|
Período especificado por una duración antes de un momento determinado |
|
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.
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
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
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 |
|
Línea |
|
Polígono |
|
Ráster |
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 |
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 |
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 |
Sí |
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
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
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.
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.
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.
Usar expresiones en valores de parámetros
Componer etiquetas a partir de múltiples atributos
Opciones mejoradas de Geoserver
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> |
Sí |
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> |
Sí |
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> |
Sí |
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> |
Sí |
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> |
Sí |
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
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> |
Sí |
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
Añadiendo nuevas transformaciones
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
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
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
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> |
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> |
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> |
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>
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
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):
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 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 |
Sí |
Nombre del servicio: el valor esWFS |
version |
Sí |
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 |
Sí |
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 |
Sí |
Nombre del servicio: el valor esWFS |
version |
Sí |
Versión del servicio: el valor es el número de versión actual. |
request |
Sí |
Nombre de la operación: el valor esDescribeFeatureType |
typeNames |
Sí |
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:
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 |
Sí |
Nombre del Servicio.El valor esWMS. |
version |
Sí |
Versión de servicio.El valor es uno de1.0.0,1.1.0,1.1.1,1.3. |
request |
Sí |
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 |
Sí |
Nombre del Servicio.El valor esWMS. |
version |
Sí |
Versión de servicio.El valor es uno de1.0.0,1.1.0,1.1.1,1.3. |
request |
Sí |
Nombre de la operación.El valor esGetMap. |
layers |
Sí |
Capas para mostrar en el mapa.El valor es una lista de nombres de capas separados por comas. |
styles |
Sí |
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 |
Sí |
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 |
Sí |
Cuadro delimitador para la extensión del mapa.El valor estáminx,miny,maxx,maxyen unidades del SRS. |
width |
Sí |
Ancho de la salida del mapa, en píxeles. |
height |
Sí |
Altura de la salida del mapa, en píxeles. |
format |
Sí |
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 |
Sí |
Nombre del Servicio.El valor esWMS. |
version |
Sí |
Versión de servicio.El valor es uno de1.0.0,1.1.0,1.1.1,1.3. |
request |
Sí |
Nombre de la operación.El valor esGetFeatureInfo. |
layers |
Sí |
VerObtenerMapa |
styles |
Sí |
VerObtenerMapa |
srsocrs |
Sí |
VerObtenerMapa |
bbox |
Sí |
VerObtenerMapa |
width |
Sí |
VerObtenerMapa |
height |
Sí |
VerObtenerMapa |
query_layers |
Sí |
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 |
Sí |
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 |
Sí |
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 |
Sí |
Nombre del Servicio.El valor esWMS. |
version |
Sí |
Versión de servicio.El valor es1.1.1. |
request |
Sí |
Nombre de la operación.El valor esDescribeLayer. |
layers |
Sí |
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 |
|
|
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
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
Plantillas de marcadores gratuitos
Ejemplos de configuración REST
Referencia de API de configuración REST
Esta sección describe la API de configuración REST de GeoServer.
Plantillas de marcadores gratuitos
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 |
|
CORREO |
|
405 |
|
|
|
PONER |
200 |
Modificar espacio de trabajows |
XML, JSON |
|
|
BORRAR |
200 |
Eliminar espacio de trabajows |
XML, JSON |
|
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 |
|
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 |
|
CORREO |
|
405 |
|
|
|
PONER |
Modificar el almacén de datosds |
|
|
|
|
BORRAR |
Eliminar almacén de datosds |
|
|
|
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 |
|
||
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 |
|
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 |
|
CORREO |
|
405 |
|
|
|
PONER |
Modificar tipo de característicaft |
200 |
XML, JSON |
|
|
BORRAR |
Eliminar tipo de característicaft |
200 |
|
|
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 |
|
CORREO |
|
405 |
|
|
|
PONER |
Modificar tienda de coberturacs |
|
|
|
|
BORRAR |
Eliminar tienda de coberturacs |
|
|
|
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 |
|
|
|
PONER |
Crea o sobrescribe los archivos para la tienda de cobertura.cs |
200 |
:establecer hechizo hechizolang=en_us |
||
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 |
|
CORREO |
|
405 |
|
|
|
PONER |
Modificar coberturac |
200 |
XML, JSON |
|
|
BORRAR |
Eliminar coberturac |
200 |
|
|
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 |
|
CORREO |
|
405 |
|
|
|
PONER |
|
405 |
|
|
|
BORRAR |
Elimina los gránulos (todos o solo los seleccionados mediante el parámetro de filtro) |
200 |
|
|
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 |
|
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 |
|
|
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 |
|
CORREO |
|
405 |
|
|
|
PONER |
Modificar estilos |
200 |
SLD, XML, JSON, ZIPVer nota anterior |
|
|
BORRAR |
Eliminar estilos |
200 |
|
|
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 |
|
|
PONER |
|
405 |
|
|
|
BORRAR |
|
405 |
|
|
/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 |
|
CORREO |
|
405 |
|
|
|
PONER |
Modificar estilosdentro del espacio de trabajows |
200 |
SLD, XML, JSON, ZIPVer nota anterior |
|
|
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 |
|
CORREO |
|
405 |
|
|
|
PONER |
Modificar capal |
200 |
XML, JSON |
|
|
BORRAR |
Eliminar capal |
200 |
|
|
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 |
|
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 |
|
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 |
|
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 |
|
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
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 |
|
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.
Fuente de roles y cálculo de roles
Interacción entre usuario/grupo y servicios de rol
Autenticación en la interfaz de administración web
Autenticación a servicios OWS y REST
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) |
SÍ |
|
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) |
SÍ |
|
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) |
SÍ |
|
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) |
SÍ |
|
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 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
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
Susa
Iniciando GeoServer en Tomcat
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:
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:
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.
¿Por qué utilizar GeoServer con Google Earth?
Implementación basada en estándares
Generación SLD a partir de CSS
Plantillas de marcas de posición KML
Supersuperposiciones y GeoWebCache
Personalizar marcas de posición
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
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
Ejemplo de demostración de WMS
Supersuperposiciones y GeoWebCache
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