El lanzamiento de QGIS 3.4 Madeira es una LTR (Long Term Release) y estaba previsto para este 26 de Octubre del 2018. YA puedes descargártelo desde los paquetes de repositorios. Como partners del proyecto QGIS no deja de ilusionarnos cada vez que hay un lanzamiento así.
Después de los avances de QGIS 3.2, va a ser el primer lanzamiento a largo plazo de la plataforma de QGIS 3.x, existiendo una gran lista de cambios en esta nueva versión LTR de los que pasamos a hablar.
Artículo traducido de la web http://changelog.qgis.org
CARACTERÍSTICAS GENERALES DE QGIS 3.4
Los archivos SVG se pueden incrustar en proyectos y símbolos
Permite que las imágenes SVG para simbología, etiquetas, etc. se incrusten directamente dentro de un archivo de proyecto (o estilo QML o plantilla de impresión QPT) codificando el svg como una cadena base64 estándar. Además, los archivos incrustados pueden extraerse de proyectos y símbolos y guardarse en archivos SVG basados en disco.
Disponible como aplicación Flatpak para Linux
Permite a los usuarios instalar diferentes versiones de QGIS en Linux sin tener que volver a compilar o usar Docker. Es un paquete completo con todas las bibliotecas incluidas y utiliza sus propias ubicaciones de perfil de usuario.
Aceleración basada en OpenCL
INTERFACE DE USUARIO EN QGIS 3.4 MADEIRA
Selección automática de archivos exportados en el administrador de archivos
Cada vez que un elemento de la barra de mensajes se vincula con un archivo creado (por ejemplo, después de exportar un diseño o una capa de mapa), el enlace ahora abrirá directamente la carpeta que contiene este archivo dentro del buscador de archivos del sistema operativo y preseleccionará el archivo creado.
Añadir la opción Open Directory a los proyectos de página de bienvenida deshabilitados
Esto permite a los usuarios abrir la ruta más cercana a la ubicación del proyecto original en su administrador de archivos, para ayudarles a reubicar proyectos perdidos / movidos / renombrados.
Mejoras de UX para las capas temporales de Scratch
Agregue una entrada de menú a las capas temporales de «scratch» en «Hacer permanente», que solicita una ubicación para guardar la capa, luego la reemplaza en su lugar (manteniendo la misma ID, estilo, etc.).
Además, las capas temporales temporales ahora muestran un ícono indicador junto a la capa en el árbol de capas, lo que deja en claro de inmediato qué capas son temporales y se perderán cuando se cierre el proyecto.
Muestra el tiempo estimado restante y el tiempo de finalización en el widget del administrador de tareas de la barra de estado
Calculado utilizando una interpolación lineal simple basada en el tiempo transcurrido y el progreso actual, permite a los usuarios obtener un ETA estimado para completar la tarea de ejecución prolongada.
Hipervínculos a datasets locales de vectores y ráster en el panel de información
Para los conjuntos de datos locales de vectores y ráster, el panel de información del cuadro de diálogo de propiedades de capa ahora presenta un hipervínculo de ruta. Al hacer clic en el hipervínculo, el navegador de archivos del sistema se abrirá y resaltará automáticamente el conjunto de datos.
El gestor de estilos se abre de forma no modal
Permite utilizar el cuadro de diálogo del administrador de estilos junto con la ventana principal de QGIS, al igual que el administrador de diseño.
Añade un botón para alternar entre la vista de iconos y una vista de lista para los símbolos en el selector de símbolos
Interfaz y experiencia del panel del navegador pulido
Se realizaron toneladas de trabajo para esta versión para mejorar la interfaz de usuario y la experiencia del panel del navegador, incluidas las correcciones de HiDPI, las mejoras de dataset vector / raster comprimido y un conjunto de iconos actualizado.

QML gráfico y widget de dibujos
Nuevo tipo de widget para mostrar elementos atractivos e interactivos gráficamente, como gráficos o dibujos técnicos en forma de atributo. La configuración se reduce a lo básico. Incluyendo plantillas de ejemplo y añadiendo expresiones.

SIMBOLOGÍA
Estilo de capa de malla
Añade las siguientes características:
- Agregar conjuntos de datos a la capa de malla desde el panel de propiedades
- Panel de información y fuente en el panel de propiedades.
- Selección de conjunto de datos activo (propiedades o panel de estilo)
- Estilo de contornos / escalares (propiedades o panel de estilo)
- Estilo de marco de malla (propiedades o panel de estilo)
- Estilo de flechas vectoriales (propiedades o panel de estilo)
Clasificar simétrico en renderizador graduado.
MAP COMPOSER
Elementos del mapa 3d
Esta función permite a los usuarios agregar su vista de mapa 3D al diseño de impresión.

NUEVAS CARACTERÍSTICAS 3D
Navegación mejorada en QGIS 3.4 Madeira
Esto actualizará el centro de visión de la cámara a medida que la cámara se mueve. Antes, el centro de la vista estaría siempre en la elevación cero, lo que significa que con el terreno más alejado de la inclinación cero y la rotación de la cámara se sentiría extraño debido a que el punto central está muy lejos.
- Permite mover la cámara hacia arriba / abajo usando las teclas de subir / bajar página.
- Mueva la cámara manteniendo la posición con Ctrl + teclas de flecha / mouse

Animación
Puede crear una animación basada en un conjunto de fotogramas clave: posiciones de la cámara en momentos específicos. QGIS 3D luego interpola las posiciones / rotaciones de la cámara entre los fotogramas clave.
Para crear los fotogramas clave, primero configure la escena para su mapa, girando, acercando o moviendo la cámara. A continuación, asigne un tiempo al marco. Hay varios métodos para interpolaciones entre fotogramas clave.

Representación simple de cadenas lineales 3D
Este modo de representación de líneas 3D utilizará la representación de líneas OpenGL en lugar de dividir las líneas en polígonos y presentarlas como mallas. La ventaja es que las líneas 3D no pierden su coordenada Z, que es el caso actualmente con la representación 3D «normal» después del búfer. La desventaja es que las líneas no pueden ser anchas (solo se admite en Qt3D desde 5.10, pero incluso en ese caso no tendrán uniones / tapas agradables) y solo se utiliza el color ambiental del material.

Herramienta de mapa de identificación para vistas 3D
Se introdujo una nueva herramienta de identificación en el mapa 3D. Con esta herramienta, podrás inspeccionar las características de la escena 3D.

DIGITALIZACIÓN
Intervalo de adquisición de GPS y opciones de umbral de distancia
Agrega un parámetro de intervalo de adquisición y un parámetro de umbral de distancia al complemento de gps para mantener el cursor quieto cuando el receptor está en condiciones estáticas.
Más opciones de ángulo en la ventana de digitalización avanzada

Nuevas opción de la herramienta Vertex para funcionar únicamente en la capa actual
El nuevo Vertex es mucho más productivo ahora. Puede mover los vértices de todas las capas editables a la vez, lo que es excelente para preservar la topología de capas cruzadas. Sin embargo, en muchos casos, muchos de nosotros no queríamos modificar todas las capas a la vez. Añadimos una variación de la herramienta de mapa de vértice solo para eso.

Invertir la dirección de una línea
Ahora ya puedes invertir la dirección de una línea sin necesidad de plugins externos o algoritmos, con lo que la edición de redes geométricas es mucho más sencilla.

Precisión de la geometría
Ahora, las capas vectoriales tienen una opción de configuración de precisión, para definir cómo se debe guardar la ubicación de los nodos. Cada nodo de geometrías nuevas o editadas se ajusta a una cuadrícula de esta resolución. Mientras se digitaliza, se muestra la cuadrícula para guiar al usuario.

Eliminar automáticamente los nodos duplicado
Al agregar o editar geometrías en una capa vectorial, QGIS podrá eliminar automáticamente los nodos duplicados de las geometrías. Esta opción ahora es configurable en la pestaña de digitalización de capas vectoriales.
Comprobar la validez de la geometría
Se puede verificar la validez de cada geometría nueva o editada si esta opción está activada. Esto permite en QGIS 3.4 Madeira, comunicarse de forma transparente a un usuario cuando hay geometrías erróneas producidas por la sesión de edición actual.

Verificaciones de topología durante la edición
Las comprobaciones de topología se pueden activar en una capa. En las geometrías recién agregadas y editadas, se pueden ejecutar verificaciones de topología. Las comprobaciones se ejecutarán cuando la capa se guarde o al hacer clic en el botón de verificación de topología en el panel de validación de geometría. Los siguientes controles están disponibles:
- Brechas
- Superposiciones
- Faltan vértices en polígonos vecinos.

PROCESAMIENTO
Nuevas opciones de edición de entidades
Con esta nueva herrramienta de QGIS 3.4 Madeira, se aborda lo que vemos como la principal deficiencia dentro de las herramientas de edición de capas vectoriales de QGIS, y cerramos la brecha entre el gran poder de los algoritmos de procesamiento de QGIS y las operaciones fáciles de usar que modifican las características de la capa «en su lugar». Aquí hay una vista previa rápida de lo que hemos planeado:

Almacenar modelos dentro del proyecto en QGIS 3.4 Madeira
Permite que los modelos de procesamiento se almacenen dentro de los archivos de proyecto de QGIS, de modo que la apertura del proyecto haga que ese modelo esté disponible.
Algunos modelos están tan intrínsecamente vinculados a la lógica dentro de un proyecto en particular que no tienen ningún significado (o están totalmente rotos) fuera de ese proyecto (por ejemplo, modelos que se basan en la presencia de capas de mapa, relaciones, etc.)
Este cambio en QGIS 3.4 Madeira, permite que estos modelos se almacenen dentro de ese proyecto, evitando saturar al proveedor de modelos «global» con modelos que no tienen sentido y facilitando la distribución de un solo proyecto con estos modelos incluidos.
Los modelos se almacenan dentro de los proyectos haciendo clic en el nuevo botón «incrustar en el proyecto» en la barra de herramientas del diálogo del modelador. Los modelos se pueden eliminar de un proyecto del menú de clic derecho del modelo en la
caja de herramientas.
Sampleo de Valores de ráster
Nuevo algoritmo para muestrear valores ráster en ubicaciones de puntos.

Nuevo algoritmo ‘Raster pixeles a polígonos’
Convierte una capa ráster en una capa vectorial, con una función de polígono correspondiente a cada píxel del ráster y un solo campo que contiene el valor de la banda del ráster.
Nuevo algoritmo de agrupamiento «K Means» (spatial clustering)
Agrega un algoritmo nativo de clustering de k-means. Este nuevo algoritmo agrega un nuevo campo de ID para identificar el clúster . Si se utilizan geometrías no puntuales como entrada, la agrupación se basará en el centroide de las estas geometrías.
Nuevo algoritmo de agrupamiento espacial «dbscan» (spatial clustering)
En QGIS 3.4 Madeira, se implementa un nuevo análisis optimizado para hallar clusters basado en densidades, DBSCAN, optimizado para agrupar entidades 2d de puntos.
Parámetros más dinámicos
- Líneas de extensión: distancia de inicio / final
- dinámica Líneas de compensación: distancia de compensación dinámica
Algoritmos mejorados
El algoritmo de dirección de línea inversa ahora puede funcionar con «Multi LineStrings»
Algoritmo para filtrar vértices por valores M y valores Z
Agrega dos nuevos algoritmos, para filtrar los vértices de línea / polígono por sus valores M o Z. Se puede ingresar un valor M / Z mínimo y máximo, y si los vértices caen fuera de estos rangos, se descartarán de la geometría de salida. Los valores de filtro mínimo y máximo también pueden definirse por datos, por lo que pueden variar según la función.
Nuevo algoritmo «Array of Offset Features»
Este algoritmo crea copias de entidades en una capa, al crear varias versiones de compensación de la entidad. Cada copia es desplazada por una cantidad preestablecida en el eje x/y/z/m.
Nuevo algoritmo para «Crear líneas paralelas»
Este algoritmo crea copias de entidades de línea en una capa, creando múltiples versiones paralelas de cada entidad. Cada copia se compensa con una distancia preestablecida.
Elección de unidades para distancias no graduadas / desconocidas
Esta nueva característica te permite mostrar un cuadro combinado que permita elegir el tipo de unidad, cuando el algoritmo de trabajo tiene un parámetro de distancia en metros / pies / etc (es decir, distancias no geográficas). Recuerden que NO se debería de trabajar con las distancias en grados: los usuarios en esta situación deben elegir una proyección local adecuada y reproyectar sus datos para que coincidan.
Características nativas para establecer valores z / m desde un ráster
Establece los valores de z/m de vértice a valores muestreados desde una banda de ráster. Los valores se pueden escalar opcionalmente usando un valor de escala.
Nuevo algoritmo «píxeles a puntos»
En QGIS 3.4 Madeira, se añade un nuevo algoritmo de «píxeles a puntos», que crea una entiad de puntos en el centro de cada píxel. Se omiten los píxeles nodata.
Un nuevo algoritmo de subcadena de línea
Este algoritmo devuelve la parte de una línea (o curva) que se encuentra entre las distancias de inicio y final especificadas (medidas desde el principio de la línea). Los valores Z y M se interpolan linealmente a partir de valores existentes.
Nuevo algoritmo de interpolación de punto sobre línea
Este algoritmo crea una geometría de punto interpolada a una distancia establecida a lo largo de las geometrías de línea (o límite de polígono).
Mejoras en los algoritmos de Unión por valor de campo y de ubicación
Los algoritmos «unir por valor de campo» y «unir por ubicación» ahora pueden opcionalmente exportar registros no coincidentes. «Join by Field Value» también informa de recuentos de características coincidentes / no coincidentes.
Los scripts de Python que implementan algoritmos ahora ejecutan el algoritmo al arrastrar y soltar y hacer doble clic en el navegador
Cuando sea apropiado, los scripts ahora iniciarán un cuadro de diálogo de algoritmo de procesamiento cuando:
- Arrastre y suelte un script de python en la ventana principal
- Usando la acción del script de ejecución del botón derecho del panel del navegador

Nuevo algoritmo de banda de GDAL
En QGIS 3.4 Madeira, se ha agregado también un nuevo algoritmo GDAL «Reorganizar banda» del proveedor a la caja de herramientas de procesamiento. El algoritmo permite generar rásteres que continúan un subconjunto de las bandas de un ráster de entrada dado y ofrece la posibilidad de reordenar las bandas.

Valores «precalculados» para los parámetros del algoritmo modelo
Una nueva opción está presente para todos los parámetros de usar una «expresión precalculada». Esta expresión se evalúa una vez antes de que el algoritmo hijo se ejecute y se use durante la ejecución de ese algoritmo.
Categorizar una capa usando un archivo XML de estilo
Establece el renderizador de una capa vectorial en un renderizador categorizado usando símbolos coincidentes de una base de datos de estilo. La expresión especificada (o nombre de campo) se utiliza para crear categorías para el renderizador. Se creará una categoría para cada valor único dentro de la capa.
Cada categoría se hace coincidir individualmente con los símbolos que existen dentro de la base de datos de estilo QGIS XML especificada. Siempre que se encuentre un nombre de símbolo coincidente, el símbolo de la categoría se establecerá en este símbolo coincidente.
La coincidencia no distingue entre mayúsculas y minúsculas de forma predeterminada, pero se puede hacer que distinga entre mayúsculas y minúsculas si es necesario. Opcionalmente, los caracteres no alfanuméricos tanto en el valor de categoría como en el nombre del símbolo pueden ignorarse mientras se realiza la coincidencia. Esto permite una mayor tolerancia al combinar categorías con símbolos.
Si lo desea, también se pueden generar tablas que contengan listas de las categorías que no pueden coincidir con los símbolos, y los símbolos que no se corresponden con las categorías.

COMPLEMENTOS
Soporte para Zips cifrados desde el Administrador de complementos
El gestor de complementos ahora puede instalar complementos desde archivos zip locales incluso si están cifrados.

Edición GeoPackage fuera de línea
Con la funcionalidad de edición sin conexión, es posible seleccionar si la exportación debe crear un archivo SpatiaLite o GeoPackage para el uso sin conexión.
PROGRAMABILIDAD
Indice espacial «QgsSpatialIndexKDBush»
Un índice espacial estático muy rápido para puntos 2D basado en un árbol KD plano, utilizando https://github.com/mourner/kdbush.hpp. En comparación con el índice «QgsSpatialIndex»:
- Solo admite funciones de un solo punto (sin multipuntos)
- Es estático (las funciones no se pueden agregar o eliminar del índice después de la construcción)
- ¡Es mucho más rápido!
- Admite búsquedas verdaderas «basadas en la distancia», es decir, devuelve todos los puntos dentro de un radio desde un punto de búsqueda
«QgsRasterDataProvider»
Un método de muestreo que permite muestreos más eficientes de rásteres sobre un punto dado.
Nueva llamada a la API de PyQGIS que devuelve una subcadena de curva: «QgsCurve»
Devuelve una nueva curva representando una subcadena de una curva, contando con una distancia origen y una distancia final. Si los valores de z o m están presentes, la salida z y m se interpolarán utilizando los valores z o m de los vértices existentes. El método también maneja geometrías curvas sin pérdida o segmentación.
Cambios en la API
Debido a los recientes cambios incorporados a la librería PyQt/sip, la forma recomendada de importar este módulo ha cambiado en QGIS 3.4. Para obtener la máxima portabilidad, en lugar de llamar directamente: «import sip» debería de usarse «from qgis.PyQt import sip». Usando este nuevo estilo de importación garantizará que el código funcione correctamente en todas las plataformas y se mantenga funcional en las futuras versiones de QGIS.
PROVEEDORES DE DATOS
Nuevo complemento de método de autenticación OAuth2
- Admite flujos de concesión de código de autenticación, implícito y propietario de recursos.
- Permite conexiones preconfiguradas, lectura desde ubicaciones predeterminadas
- Ofrece almacenamiento en caché del token de acceso más allá de los reinicios de QGIS
- Guardar / cargar configuraciones
Capa de malla: Nuevo soporte de formato de capa de malla
Las capas de malla representan datos en una cuadrícula de tamaño variable con componentes adicionales (por ejemplo, tiempo y vector). Con la introducción de MDAL, los usuarios pueden cargar los siguientes formatos directamente en QGIS y explorar todos los demás componentes: GRIB, XMDF y Netcdf

Capa de malla: agrega una función para identificar el valor en las capas de malla
Con esta API, los desarrolladores pueden inspeccionar elementos de malla y obtener valores espacial y temporalmente. Como ejemplo, puede crear gráficos de series de tiempo desde su capa de malla.

Capa de malla: permite elegir diferentes conjuntos de datos vectoriales y escalares
Una capa de malla a menudo contiene varias cantidades. Por ejemplo, un netcdf / grib puede contener varias cantidades meteorológicas. Cada cantidad, también puede tener múltiples componentes. Por ejemplo, los datos de viento, pueden contener velocidad (escalar) y valores (cuadrícula). Con esta opción, puede superponer escalar y grillas de diferentes cantidades. En la imagen de abajo, puedes ver la temperatura (rejilla) y el viento (escalar).

Capa de malla: permite vectores/flechas de render en la cuadrícula definida por el usuario
Los datos escalares se generan generalmente en el centro / esquina de cada elemento de la malla. Cuando se muestran los datos escalares, las flechas pueden parecer dispersas y, a menudo, no es posible ver la tendencia general. Con esta opción, las flechas se pueden mostrar en una cuadrícula definida por el usuario. Los valores escalares adicionales se interpolarán sobre la marcha y se colocarán en la cuadrícula definida por el uso.

Soporte de tipo JSON/JSONB
Se admite la lectura de tipos JSON de PostgreSQL. Los datos JSON se pueden mostrar en los widgets como «Clave / Valor» (mapas), como «Lista» (matrices) o como texto.

GESTIÓN DE DATOS
Traducción de proyectos QGIS
Al igual que QGIS y sus complementos, los proyectos se traducen con el proceso de traducción de Qt. Significa, hace la traducción de acuerdo con un archivo de fuente de traducción compilado de Qt (archivo .qm). Cuando el usuario abre un proyecto, QGIS busca un archivo .qm en la misma carpeta que el archivo .qgs, que tiene el mismo nombre que el archivo .qgs y tiene el código de idioma como postfix del idioma de los usuarios (el idioma configurado en la configuración de QGIS). Para crear la traducción, en la configuración del proyecto hay una opción para generar el archivo .ts, que puede ser editado por programas como Qt Linguist o Transifex.
Posibilidad de agregar un botón en la barra de herramientas de la tabla de atributos para cambiar entre el modo de ventana acoplado y el modo de ventana
Anteriormente, tenía que cambiar una opción en el cuadro de diálogo de configuración y abrir una nueva tabla para cambiar entre acoplado/desacoplado, pero es molesto si decide que después de que una tabla ya está abierta, le gustaría acoplarlo/desacoplarlo
Nuevo filtro de localización para buscar en todas las capas
Se ha agregado un nuevo filtro de localización que le permite buscar en todas las capas en su expresión de visualización. El filtro se puede activar usando el prefijo ‘af’ o configurándolo como predeterminado en las opciones de QGIS -> Locator -> Features In All Layer. Las expresiones de visualización se definen en las propiedades de la capa vectorial en la pestaña de visualización. Las capas se pueden marcar como no buscables en las propiedades del proyecto, en la pestaña Orígenes de datos.
Indicador de vista de árbol de capas para capas no removibles (requeridas)
Agrega un ícono de candado al lado de cada capa marcada según sea necesario.

Agregar capa ráster a un Geopackage existente
Al guardar una capa ráster en la base de datos de GeoPackage, ahora es posible agregar la capa a un archivo existente.

SERVIDOR QGIS
Administración de la memoria caché del servidor mediante complementos
De forma predeterminada, QGIS Server solo almacena en caché el documento GetCapabilities de WMS en la memoria. Con la implementación de WMTS, es necesario tener una forma de almacenar en caché los mosaicos. Pero el administrador de caché no se ha desarrollado solo para almacenar en caché los mosaicos. El complemento administrador de caché, se puede utilizar para almacenar en caché:
- Documentos WMS, WFS, WCS, WMTS GetCapabilities
- WFS DescribeFeatureType documentos
- WCS Describe documentos de cobertura
- Imágenes de GetTile de WMTS
- Imágenes WMS GetLegendGraphic
Aquí hay una clase de administrador de caché de python, que no verifica si el proyecto QGIS ha cambiado:
clase PyServerCache (QgsServerCacheFilter):
""" Used to have cache control """
def __init__(self, server_iface):
super(QgsServerCacheFilter, self).__init__(server_iface)
self._cache_dir = os.path.join(tempfile.gettempdir(), "qgs_server_cache")
if not os.path.exists(self._cache_dir):
os.mkdir(self._cache_dir)
self._tile_cache_dir = os.path.join(self._cache_dir, 'tiles')
if not os.path.exists(self._tile_cache_dir):
os.mkdir(self._tile_cache_dir)
def getCachedDocument(self, project, request, key):
m = hashlib.md5()
paramMap = request.parameters()
urlParam = "&".join(["%s=%s" % (k, paramMap[k]) for k in paramMap.keys()])
m.update(urlParam.encode('utf8'))
if not os.path.exists(os.path.join(self._cache_dir, m.hexdigest() + ".xml")):
return QByteArray()
doc = QDomDocument(m.hexdigest() + ".xml")
with open(os.path.join(self._cache_dir, m.hexdigest() + ".xml"), "r") as f:
statusOK, errorStr, errorLine, errorColumn = doc.setContent(f.read(), True)
if not statusOK:
print("Could not read or find the contents document. Error at line %d, column %d:\n%s" % (errorLine, errorColumn, errorStr))
return QByteArray()
return doc.toByteArray()
def setCachedDocument(self, doc, project, request, key):
if not doc:
print("Could not cache None document")
return False
m = hashlib.md5()
paramMap = request.parameters()
urlParam = "&".join(["%s=%s" % (k, paramMap[k]) for k in paramMap.keys()])
m.update(urlParam.encode('utf8'))
with open(os.path.join(self._cache_dir, m.hexdigest() + ".xml"), "w") as f:
f.write(doc.toString())
return os.path.exists(os.path.join(self._cache_dir, m.hexdigest() + ".xml"))
def deleteCachedDocument(self, project, request, key):
m = hashlib.md5()
paramMap = request.parameters()
urlParam = "&".join(["%s=%s" % (k, paramMap[k]) for k in paramMap.keys()])
m.update(urlParam.encode('utf8'))
if os.path.exists(os.path.join(self._cache_dir, m.hexdigest() + ".xml")):
os.remove(os.path.join(self._cache_dir, m.hexdigest() + ".xml"))
return not os.path.exists(os.path.join(self._cache_dir, m.hexdigest() + ".xml"))
def deleteCachedDocuments(self, project):
filelist = [f for f in os.listdir(self._cache_dir) if f.endswith(".xml")]
for f in filelist:
os.remove(os.path.join(self._cache_dir, f))
filelist = [f for f in os.listdir(self._cache_dir) if f.endswith(".xml")]
return len(filelist) == 0
def getCachedImage(self, project, request, key):
m = hashlib.md5()
paramMap = request.parameters()
urlParam = "&".join(["%s=%s" % (k, paramMap[k]) for k in paramMap.keys()])
m.update(urlParam.encode('utf8'))
if not os.path.exists(os.path.join(self._tile_cache_dir, m.hexdigest() + ".png")):
return QByteArray()
img = QImage(m.hexdigest() + ".png")
with open(os.path.join(self._tile_cache_dir, m.hexdigest() + ".png"), "rb") as f:
statusOK = img.loadFromData(f.read())
if not statusOK:
print("Could not read or find the contents document. Error at line %d, column %d:\n%s" % (errorLine, errorColumn, errorStr))
return QByteArray()
ba = QByteArray()
buff = QBuffer(ba)
buff.open(QIODevice.WriteOnly)
img.save(buff, 'PNG')
return ba
def setCachedImage(self, img, project, request, key):
m = hashlib.md5()
paramMap = request.parameters()
urlParam = "&".join(["%s=%s" % (k, paramMap[k]) for k in paramMap.keys()])
m.update(urlParam.encode('utf8'))
with open(os.path.join(self._tile_cache_dir, m.hexdigest() + ".png"), "wb") as f:
f.write(img)
return os.path.exists(os.path.join(self._tile_cache_dir, m.hexdigest() + ".png"))
def deleteCachedImage(self, project, request, key):
m = hashlib.md5()
paramMap = request.parameters()
urlParam = "&".join(["%s=%s" % (k, paramMap[k]) for k in paramMap.keys()])
m.update(urlParam.encode('utf8'))
if os.path.exists(os.path.join(self._tile_cache_dir, m.hexdigest() + ".png")):
os.remove(os.path.join(self._tile_cache_dir, m.hexdigest() + ".png"))
return not os.path.exists(os.path.join(self._tile_cache_dir, m.hexdigest() + ".png"))
def deleteCachedImages(self, project):
filelist = [f for f in os.listdir(self._tile_cache_dir) if f.endswith(".png")]
for f in filelist:
os.remove(os.path.join(self._tile_cache_dir, f))
filelist = [f for f in os.listdir(self._tile_cache_dir) if f.endswith(".png")]
return len(filelist) == 0
Y la forma de agregarlo al administrador de caché de QGIS Server.
servercache = PyServerCache(server_iface)
server_iface.registerServerCache(servercache, 100)
Nuevo soporte para WMTS 1.0.0
¡Por fin! QGIS Server 3.4 ya es compatible con el estándar WMTS 1.0.0 OGC. En las propiedades del proyecto QGIS, el usuario puede definir:
- Qué parte del proyecto (todo el proyecto, grupos de capas o capas) debe publicarse a través del estándar WMTS
- La escala mínima de las teselas
QGIS Server reutilizó el CRS definido en el WMS para WMTS. Para administrar la caché de mosaicos, QGIS Server debe instalar y cargar un complemento de QGIS Server con una clase QgsServerCacheFilter.

Además también se ha añadido la capacidad para definir una escala mínima para los WMTS.
Soporte de registros de QGIS Server a «stderr»
Ahora es posible configurar QGIS Server para que escriba sus registros en stderr. Esto se hace configurando la env de QGIS_SERVER_LOG_FILE al valor especial «stderr»
______________
Hasta aquí todas las novedades de QGIS 3.4 Madeira. Y como ya sabréis, en Geoinnova Formación somos expertos en GIS y contamos con cursos de QGIS a vuestra disposición pinchando en el siguiente enlace:
¿Quieres comentarnos algo? Adelante!