6 Configuración de capas en proyectos
CartoDruid permite al usuario parametrizar un conjunto limitado de opciones sobre las capas y la TOC. Para poder utilizar toda la potencia de la herramienta hay que recurrir a la configuración manual. En este apartado se describe el contenido y estructura de los ficheros de configuración y se incluyen ejemplos prácticos de manejo.
6.1 Estructura general del fichero
Por cada proyecto que tengamos configurado en CartoDruid, existirá un fichero crtdrdLayer.<id_proyecto>.xml en la carpeta cartodroid/config/. Este fichero almacena la referencia a las capas que se visualizarán en el proyecto y el comportamiento de las mismas (visualización, permisos, operaciones, etc).
| Etiqueta | Descripción |
|---|---|
| WKSLayerConfiguration | Elemento raíz del fichero de configuración. Tendrá anidado un elemento layers, dentro del cual se configuran las capas con etiquetas entry. |
| layers | Elemento que agrupa el listado de capas del proyecto. |
| entry | Representa una entrada en la TOC. Debe tener anidados dos elementos, string, que será el identificador de la capa, y otro elemento con la referencia al modelo de capa concreto a utilizar: • es.jcyl.ita.crtcyl.core.model.VectorialLayer: para añadir una capa vectorial. • es.jcyl.ita.crtcyl.core.model.RasterLayer: para añadir una capa raster. |
Un ejemplo de este fichero:
<es.jcyl.ita.crtcyl.core.config.WKSLayerConfiguration>
<layers class="java.util.LinkedHashMap">
<!-- task layer configuration -->
<entry>
<string>tasks</string>
<es.jcyl.ita.crtcyl.core.model.VectorialLayer>
...
</es.jcyl.ita.crtcyl.core.model.VectorialLayer>
</entry>
<!-- orthophoto layer configuration -->
<entry>
<string>ortofotos_pnoa</string>
<es.jcyl.ita.crtcyl.core.model.RasterLayer>
...
</es.jcyl.ita.crtcyl.core.model.RasterLayer>
</entry>
...
</layers>
</es.jcyl.ita.crtcyl.core.config.WKSLayerConfiguration>
6.2 Configuración de capa Vectorial
En la siguiente tabla se enumeran las etiquetas que se pueden utilizar dentro del elemento es.jcyl.ita.crtcyl.core.model.VectorialLayer.
| Etiqueta | Descripción |
|---|---|
| id | Identificador único de la capa. Debe ser una cadena de texto sin espacios en blanco, que contenga únicamente letras y dígitos. |
| nombre | Nombre visible de la capa en la TOC. |
| descripcion | Descripción de la capa a mostrar en la TOC. |
| vectorialType | Tipos de features que almacena la capa: debe tener uno de estos valores: • 10 para geometrías MULTIPOINT • 20 para geometrías POLYLINE • 30 para geometrías MULTIPOLYGON |
| showOnTOC | Determina si la capa se muestra en la lista de capas de la TOC. |
| Visualización y simbologías | |
| orden | Posición en la capa en el listado de capas de la TOC. |
| zOrder | Determina el orden de solapamiento de las capas a la hora del pintado. La capa con mayor zOrden aparece en el plano más cercano al usuario. |
| range | Indica los niveles de zoom en los que la capa estará visible. Para indicarlo se deben anidar dos etiquetas max y min para indicar el rango. Ej: |
| labels | Indica si las etiquetas deben renderizarse por defecto: true|false. |
| labelRange | Indica los rangos de visualización de las etiquetas. Se configura con elementos anidados min/max de forma similar a la etiqueta range. |
| geometrySizeRestriction | Indica los rangos en metros cuadrados que se permite para una geometría en esta capa. Controla el tamaño de las nuevas geometrías, de las modificaciones de tamaño y de las divisiones. Se configura con elementos anidados min/max de forma similar a la etiqueta range. |
| labelExpression | Expresión SQL a ejecutar para calcular la etiqueta ej:<labelExpression>field1 || field2</labelExpression> |
| showArrowHeads | Mostrar flechas de orientación de los puntos de las entidades. Solo aplicable para entidades lineales. true|false. |
| symbId | Identificador de simbología a aplicar por defecto a las geometrías de una capa. La simbología debe existir en el fichero del proyecto o en el crtdrdSymbologies.xml. |
| labelSymbId | Identificador de simbología a aplicar por defecto a las etiquetas de una capa. La simbología debe existir en el fichero del proyecto o en el crtdrdSymbologies.xml. |
| symbologyExpression | Expresión que se utilizará para calcular la simbología de las entidades de la capa. |
| labelSymbologyExpression | Expresión que se utilizará para calcular la simbología de las etiquetas de las entidades. |
| Permisos y operaciones a nivel de capa | |
| allowOverlaps | Si se pueden crear geometrías con solapes dentro de la misma capa. true|false. |
| canChangeSymbology | Si se permite modificar la simbología de la capa. true|false. |
| canCopy | Si se pueden copiar los elementos de una capa en otras. true|false. |
| canCreate | Si se permite crear nuevos elementos en la capa. true|false. |
| canDeleteAll | Si se debe mostrar el botón "Eliminar todos los elementos de la capa" en la TOC. true|false. |
| canDieCut | Determina si se pueden troquelar las entidades de la capa. true|false. |
| canEditVertices | Si se debe mostrar la operación "Editar vértices" durante la edición de una geometría de la capa. true|false. |
| canExplode | Si se permite utilizar la operación de "Explotar geometrías" en la capa. true|false. |
| canPaste | Si se permiten pegar geometrías en la capa. true|false. |
| exportable | Si se permite exportar o compartir la capa. Si no se incluye esta etiqueta, por defecto es true. |
| canSanitize | Si debe aparecer el botón "Limpiar los datos de la capa" en la TOC. true|false. |
| canZoomVisibles | Si se debe mostrar el botón "Hacer zoom a elementos visibles" en la TOC. true|false. |
| deletable | Si se permite eliminar una entidad de la capa. true|false. |
| editable | Si se pueden editar las entidades de una capa (tanto la geometrías como los atributos). true|false. |
| identificable | Si se operación de identificación debe estar activa para la capa. true|false. |
| inspeccionable | Si el botón de "Filtrado de inspecciones" debe estar activo cuando la capa está seleccionado. true|false. |
| layerEditable | Determina si se puede configurar la capa (nombre, descripción, restricciones de escala). true|false. |
| layerRemovable | Si se puede eliminar la tabla de la TOC. true|false. |
| searchable | Si al mostrar el listado de entidades de la capa, se muestran los filtros de búsqueda. true|false. |
| selectable | Si las entidades de la capa pueden seleccionarse. true|false. |
| visible | Si la capa es visible o no en la TOC. true|false. |
| Origen de información de la capa | |
| sources | Define el origen de datos para localizar la base de datos o fichero en el que se encuentra la capa. Una capa puede incluir varios orígenes de datos. Dentro de esta etiqueta se incluirá uno de los siguientes elementos. Ver más adelante su configuración específica:
|
| Configuración de formularios | |
| alphaEditFinisher | Identificador del formulario que a utilizar para editar los atributos de la capa. |
| attributesClassName | Clase que se utilizará para recuperar la información de la capa. Ver apartado de orígenes de datos para más información. |
| editAfterCreation | Si después de una edición o creación se debe lanzar el formulario de edición de atributos. true|false. |
| valuesFromList (No recomendado) | Relaciona los campos del formulario que mostrarán un desplegable de selección con el fichero en el que están los valores. Si hay más de uno, se separan con el carácter ";". Ej:C_USO_SIGPAC=alegaciones15usoSIGPAC;b_B_SUP_COMPROBADA=siNO;Para el campo C_USO_SIGPAC de la capa se mostrarán los valores contenidos en el fichero /cartodroid/values/alegaciones15usoSIGPAC.properties. Que tendrá el formato:TA=TIERRAS ARABLES (TA)PR=PASTO ARBUSTIVO (PR)PA=PASTO CON ARBOLADO (PA)Nota: Desde la versión 0.56 de CartoDroid, se recomienda configurar los desplegables directamente desde la configuración del formulario. Esta configuración se sigue manteniendo para que los proyectos anteriores funcionen, pero la forma recomendada de configurar los desplegables es la indicada en el apartado 7.2.4 - Uso de Desplegables en Formularios. |
| sqlIdentify | Consulta que se va a ejecutar para la identificación.
Ej: |
| sqlAsListView | Consulta que se ejecutará para mostrar la lista de entidades. Ej: |
| definitionQuery | Consulta sql que se ejecutará para filtrar las entidades. El texto introducido dentro de la etiqueta se aplica como una cláusula where dentro de la consulta de recuperación de datos (filtro). |
En el siguiente ejemplo se muestra el mínimo XML que se debe definir para configurar una capa vectorial. En este caso es una capa poligonal (vectorialType=30), el fichero de BD se llama plantaciones.sql y se encontrará en la carpeta cartodroid/data. La tabla que almacena la capa se llama también plantaciones y tienen un índice geográfico idx_plantaciones_Geometry.
<layers class="java.util.LinkedHashMap">
<entry>
<string>capa1</string>
<es.jcyl.ita.crtcyl.core.model.VectorialLayer>
<id>plantaciones</id>
<name>Plantaciones</name>
<vectorialType>30</vectorialType> <!-- capa poligonal -->
<srs>25830</srs>
<attributesClassName>es.jcyl.ita.crtdrd.data.DefaultSqlite</attributesClassName>
<sources>
<es.jcyl.ita.crtcyl.client.dao.source.SpatiaLiteServiceDescriptor>
<dbURL>plantaciones.sqlite</dbURL>
<dataTable>plantaciones</dataTable>
<indexTable>idx_plantaciones_Geometry</indexTable>
</es.jcyl.ita.crtcyl.client.dao.source.SpatiaLiteServiceDescriptor>
</sources>
<symbId>REBECA</symbId>
<range>
<max>21</max>
<min>0</min>
</range>
</es.jcyl.ita.crtcyl.core.model.VectorialLayer>
</entry>
</layers>
6.3 Configuración de capa Raster
| Etiqueta | Descripción |
|---|---|
| id | Identificador único de la capa. Debe ser una cadena de texto sin espacios en blanco, que contenga únicamente letras y dígitos. |
| nombre | Nombre visible de la capa en la TOC. |
| descripcion | Descripción de la capa a mostrar en la TOC. |
| showOnTOC | Determina si la capa se muestra en la lista de capas de la TOC. |
| Visualización y Simbologías | |
| orden | Posición en la capa en el listado de capas de la TOC. |
| zOrder | Determina el orden de solapamiento de las capas a la hora del pintado. La capa con mayor zOrden aparece en el plano más cercano al usuario. |
| range | Indica los niveles de zoom en los que la capa estará visible. Para indicarlo se deben anidar dos etiquetas max y min para indicar el rango. Ej: |
| Permisos y Operaciones a Nivel de Capa | |
| layerRemovable | Si se puede eliminar la tabla de la TOC. true|false. |
| visible | Si la imagen raster es visible o no. |
| Origen de Información de la Capa | |
| sources | Define el origen de datos para localizar la base de datos o fichero en el que se encuentra la capa. Una capa puede incluir varios orígenes de datos. Dentro de esta etiqueta se incluirá uno de los siguientes elementos. Ver más adelante su configuración específica:
|
6.4 Configuración de orígenes de datos
Para definir la fuente de datos que debe utilizar CartoDruid para leer la información de una capa se debe anidar una etiqueta <sources> dentro de la etiqueta de definición de la capa, ya sea VectorialLayer o RasterLayer.
Dentro de la etiqueta sources, vamos a poder definir los parámetros necesarios para localizar la fuente de datos que contiene la cartografía, un descriptor. En el siguiente apartado veremos los diferentes tipos de descriptores.
Por otro lado, en la configuración de la capa, en el atributo attributesClassName, se le indica a CartoDruid cómo debe procesar este descriptor y cómo debe tratar las geometrías de la capa cuando las lea.
6.4.1 Orígenes de datos para capas vectoriales
Para establecer un origen de datos contra una capa vectorial, debemos definir dos cosas:
- La implementación que se utilizará (etiqueta attributesClassName): determina cómo se van a leer las geometrías.
- Descriptor del origen de datos: determina cómo se localizan los ficheros de BD de referencia.
Seleccionar la implementación de consulta de geometrías
A la hora de definir el objeto que consultará las geometrías hay que decidir dos parámetros:
a) Tratamiento de las geometrías:
- Geometrías regulares: CartoDruid va a recuperar todas las geometrías que intersecten con la pantalla actual (extend o bbox). Cada geometría se recupera completa.
- Geometrías grandes: si el fichero spatialite tiene geometrías extremadamente grandes (> 10.000 vértices, estamos hablando de geometrías con una amplitud muy superior al nivel municipal, etc), con la aproximación anterior, la navegación se puede ver penalizada. En estos casos se puede utilizar una implementación que recupere solo la parte de las geometrías que se muestra en pantalla y no la geometría completa.
b) Definición de la ruta al fichero de BD:
- Único: en este caso solo queremos utilizar una única base de datos
-
Múltiple: si queremos que las entidades que se muestran en una capa provengan de varios ficheros de base de datos, CartoDruid puede consultar todas las BBDD cuyo nombre de fichero empiece por una determinada cadena.
Utilizando esto, por ejemplo, podemos tener una capa de recintos sigpac, que utilice los ficheros de Valladolid y Zamora poniendo en el descriptor:
xml <dbURL>recintos.sqlite</dbURL>Y dejando en la misma carpeta los ficheros recintos_va.sqlite y recintos_za.sqlite.
De esta forma CartoDruid busca en esa misma carpeta todos los ficheros que empiecen por "recintos" y tengan extensión "sqlite" y los utiliza como fuentes de datos para la capa
Nota: es importante resaltar, que los implementadores multi solo se pueden utilizar para operaciones de consulta sobre entidades. Si se utiliza este tipo de implementador y se intenta modificar una geometría o sus atributos, se mostrará un mensaje de error.
-
Consulta: si queremos que las entidades sean el resultado de una consulta sobre una o varias tablas de la BD.
Combinando estos dos parámetros, tenemos los cuatro posibles valores que podemos aplicar en la etiqueta <attributesClassName>.
| Geometrías sencillas | Geometrías complejas | |
|---|---|---|
| Fichero único | DefaultSqlite | LargeSqlite |
| Múltiples ficheros | MultiSqlite | MultiLargeSqlite |
| Consulta | QuerySqlite | |
Descriptor de origen de datos
A la hora de definir la localización de una capa vectorial, CartoDruid admite tres tipos de descriptor:
- Descriptor de fichero: en este caso identificamos la localización exacta del fichero, con una ruta absoluta en el dispositivo o relativa a la carpeta
/cartodroid/data.
| Etiqueta | Descripción |
|---|---|
| SpatiaLiteServiceDescriptor | |
| dbURL | Localización del fichero, con una ruta absoluta en el dispositivo o relativa a la carpeta /cartodruid/data. |
| dataTable | Nombre visible de la capa en la TOC. |
| indexTable | Identifica el índice geográfico asociada a la capa. |
Ejemplo:
<SpatiaLiteServiceDescriptor>
<dbURL>/storage/emulated/0/cartodroid/data/plantaciones.sqlite</dbURL>
<dataTable>plantaciones</dataTable>
<indexTable>idx_plantaciones_Geometry</indexTable>
</SpatiaLiteServiceDescriptor>
- Descriptor por referencia a repositorio: el sistema anterior obliga a identificar el nombre del fichero y complica la reutilización de cartografía entre diferentes proyectos y extensiones. Existe una alternativa en la que se le indica a CartoDruid las características de la capa, y éste se encarga de buscar en todo el sistema de ficheros del dispositivo una capa con un nombre que cumpla esos requisitos.
| Etiqueta | Descripción |
|---|---|
| RepoSpatiaLiteServiceDescriptor | |
| resourceid | Localización del fichero, con una ruta absoluta en el dispositivo o relativa a la carpeta /cartodroid/data. |
| srid | Sistema de referencia a utilizar en la capa. |
| version | Identificador de la versión del producto cartográfico. |
| dataTable | Nombre visible de la capa en la TOC. |
| indexTable | Identifica el índice geográfico asociada a la capa. |
Con estos atributos, CartoDruid buscará en todo el dispositivo un fichero con el nombre:
<resourceid>_<srid>_<version>.sqlite
Por ejemplo para esta definición de capa:
<RepoSpatiaLiteServiceDescriptor>
<resourceid>recintos</resourceid>
<srid>25830</srid>
<version>2016</version>
<dataTable>RECINTOS</dataTable>
<indexTable>idx_RECINTOS_Geometry</indexTable>
</RepoSpatiaLiteServiceDescriptor>
CartoDruid intentará localizar un fichero de bd con el siguiente nombre:
recintos_25830_2016.sqlite
Si estamos utilizando un implementador multi (atributo attributesClassName), además CartoDruid encontrará todas las BDs que empiecen por "recintos_25830_2016" y tengan extensión .sqlite.
- Descriptor por consulta: Si queremos que los datos sean el resultado de una consulta SQL sobre una o varias tablas.
| Etiqueta | Descripción |
|---|---|
| SpatiaLiteQueryServiceDescriptor | |
| fields | Campos que va a devolver la consulta. |
| from | - Tabla o tablas que intervienen. - La tabla que contenga las geometrías tendrá asociado el alias "g". - También se pueden añadir subconsultas SQL anidadas. |
| where (opcional) | Condición de filtrado de la consulta. |
| groupBy (opcional) | Condición de agrupamiento para la consulta. |
| orderBy (opcional) | Condición de ordenación para la consulta. |
| primaryKey | Campo que va a actuar como identificador en el resultado de la consulta. Debe estar dentro de la lista de campos de fields. |
| indexTable | Índice espacial de la tabla que contiene las geometrías. |
| dbURL | Nombre del fichero sqlite que contiene los datos. |
Con estos atributos, para obtener las entidades CartoDruid generará una consulta como esta:
SELECT <fields> FROM <from> WHERE <where> GROUB by <groupBy> ORDER BY <orderBy>
Que se ejecutará sobre la base de datos especificada en <dbURL>
Por ejemplo para esta definición de capa:
<SpatiaLiteQueryServiceDescriptor>
<fields>c_parvit, group_concat("c_subparvit"), st_union(geometry) as geometry</fields>
<from>subparcelas g</from>
<groupBy>c_parvit</groupBy>
<dbURL>ribera2023.sqlite</dbURL>
<primaryKey>c_parvit</primaryKey>
<indexTable>idx_subparcelas_Geometry</indexTable>
</SpatiaLiteQueryServiceDescriptor>
CartoDruid generara la siguiente consulta:
SELECT c_parvit, group_concat("c_subparvit"), st_union(geometry) as geometry
FROM subparcelas g
GROUP BY c_parvit;
6.4.2 Orígenes de datos para capas raster
En el caso de las capas raster solo es necesario indicar un descriptor de origen de datos. Cada formato o servicio raster soportado por CartoDruid tendrá su propio descriptor.
6.4.2.1 Configuración de capas rasterlite y MBTiles
De forma similar a las capas vectoriales, tendremos descriptores distintos en función de si queremos referenciar la BD directamente por el nombre del fichero o por la referencia a sus características cartográficas:
| Descriptor de fichero | Descriptor de referencia a repositorio | |
|---|---|---|
| Rasterlite | es.jcyl.ita.crtcyl.client.dao.source. RasterLiteServiceDescriptor | es.jcyl.ita.crtcyl.client.dao.source. RepoRasterLiteServiceDescriptor |
| MBTiles | es.jcyl.ita.crtcyl.client.dao.source. MBTilesServiceDescriptor | es.jcyl.ita.crtcyl.client.dao.source. RepoMBTilesServiceDescriptor |
Configuración de capa rasterlite con descriptor por referencia
<entry>
<string>ORTOFOTO</string>
<es.jcyl.ita.crtcyl.core.model.RasterLayer>
<descripcion>Ortofotos PNOA 2020</descripcion>
<id>ORTOFOTO</id>
<name>Ortofotos 2020</name>
<sources>
<es.jcyl.ita.crtcyl.client.dao.source.RepoRasterLiteServiceDescriptor>
<resourceid>ortos</resourceid>
<rastersTable>ortofotos</rastersTable>
<srid>4326</srid>
<version>2020</version>
</es.jcyl.ita.crtcyl.client.dao.source.RepoRasterLiteServiceDescriptor>
</sources>
<zOrder>15</zOrder>
<range>
<max>21</max>
<min>16</min>
</range>
</es.jcyl.ita.crtcyl.core.model.RasterLayer>
</entry>
Configuración de capa MBTiles con descriptor por referencia
<entry>
<string>MAPASIGN</string>
<es.jcyl.ita.crtcyl.core.model.RasterLayer>
<descripcion>Mapas Topográficos del IGN 1/1.250.000, 1/500.000,1/200.000 y 1/25.000</descripcion>
<id>MAPASIGN</id>
<name>Mapas IGN</name>
<sources>
<es.jcyl.ita.crtcyl.client.dao.source.RepoMBTilesServiceDescriptor>
<resourceid>ignmapas</resourceid>
<srid>4326</srid>
<version>2016</version>
</es.jcyl.ita.crtcyl.client.dao.source.RepoMBTilesServiceDescriptor>
</sources>
<zOrder>10</zOrder>
<range>
<max>15</max>
<min>6</min>
</range>
</es.jcyl.ita.crtcyl.core.model.RasterLayer>
</entry>
6.4.2.2 Configuración de servicio TMS (Tile Map Service)
CartoDruid puede consumir servicios TMS online, pero también puede servir teselas desde el sistema de ficheros del dispositivo, siempre que estén almacenadas con una estructura similar a la que mantienen los servidores TMS (base_cache/nivel_zoom/x/y).
En ambos casos el descriptor a utilizar es el mismo, es.jcyl.ita.crtcyl.client.dao.source.TMSServiceDescriptor, pero en el caso de hacer referencia a un servicio online, la etiqueta baseURI será una URL que empiece por http, y en el caso de hacer referencia a una caché en el dispositivo, indicaremos la ruta a la base de la caché.
La etiqueta intertY, determina el orden en el que debe crecer el eje de coordenadas y a la hora de construir la url de la tesela. En la definición del estándar TMS, la ruta a una tesela se construye como:
${baseURI}/nivel_zoom/x/y.${imageExtension}
La coordenada y empieza a numerarse en la parte inferior del mapa. En cambio, en el caso de servicios de Google Maps, el eje y se empieza a numerar en la parte superior.
CartoDruid cubre los dos casos simplemente modificando el valor de la etiqueta invertY:
invertY = true: acceso a mapa de tiles tipo Google.invertY = false: acceso a mapa TMS estándar.
Para más información sobre estas diferencias: http://www.maptiler.org/google-maps-coordinates-tile-bounds-projection/
Configuración acceso TMS online
<es.jcyl.ita.crtcyl.client.dao.source.TMSServiceDescriptor>
<baseURI>http://a.tile.openstreetmap.org</baseURI>
<imageExtension>png</imageExtension>
<invertY>false</invertY>
</es.jcyl.ita.crtcyl.client.dao.source.TMSServiceDescriptor>
Configuración acceso caché TMS
<es.jcyl.ita.crtcyl.client.dao.source.TMSServiceDescriptor>
<baseURI>/sdcard/cartorepo/osm_cache/</baseURI>
<imageExtension>png</imageExtension>
<invertY>false</invertY>
</es.jcyl.ita.crtcyl.client.dao.source.TMSServiceDescriptor>
6.4.2.3 Configuración de servicio WMS (Web Map Service)
CartoDruid soporta una implementación mínima del acceso a servicios WMS. La versión actual no soporta consultas de tipo GetCapabilities para comprobar capacidades del servidor, pero se pueden configurar prácticamente todos los parámetros de una petición WMS.
| Etiqueta | Descripción |
|---|---|
| es.jcyl.ita.crtcyl.client.dao.source.WMSServiceDescriptor | |
| layerName | Parámetro LAYERS de la petición WMS indicando la capa o capas a consultar. Si se consulta más de una capa simultáneamente, separar con comas los nombres. |
| format | Parámetro FORMAT, por ejemplo image/png. |
| request | Tipo de petición WMS que se enviará al servicio, generalmente será GetMap. |
| EPSG | Sistema de referencia a utilizar. |
| transparent | Transparencia de la tesela devuelta. True | false |
| quality | Parámetro QUALITY para la petición WMS. |
| invertAxisOrientation | Indica si es necesario invertir el orden de los ejes en función del sistema de referencia.
|
| wmsVersion | Versión de wms a utilizar. |
| endpointList | Configuración de la ruta al servicio online. |
Un ejemplo de configuración de una capa que consulta un servicio WMS:
<entry>
<string>pnoa_wms</string>
<es.jcyl.ita.crtcyl.core.model.RasterLayer>
<descripcion>PNOA WMS ITACyL</descripcion>
<id>pnoa_wms</id>
<name>pnoa_wms</name>
<sources>
<wms>
<layerName>Ortofoto_CyL</layerName>
<format>image/png</format>
<request>GetMap</request>
<EPSG>4326</EPSG>
<quality>50</quality>
<invertAxisOrientation>Y</invertAxisOrientation>
<transparent>true</transparent>
<wmsVersion>1.3.0</wmsVersion>
<endPointList>
<es.jcyl.ita.crtcyl.core.model.source.EndPoint>
<URL>https://orto.wms.itacyl.es/WMS</URL>
</es.jcyl.ita.crtcyl.core.model.source.EndPoint>
</endPointList>
</wms>
</sources>
<zOrder>14</zOrder>
<range>
<max>21</max>
<min>0</min>
</range>
</es.jcyl.ita.crtcyl.core.model.RasterLayer>
</entry>