QGIS y exportación de mosaicos


Durante varios años me he dedicado a dibujar y mantener esquemas actualizados de crestas de dos regiones montañosas. Dzungarian Alatau y Central Tien Shan.

Inicialmente, dibujé todo en el programa Ocad. Este es un programa especial para dibujar tarjetas de orientación. El proyecto se dividió en docenas de hojas. Luego, estas hojas se exportaron a imágenes, se cosieron y se cortaron en mosaicos. Azulejos subidos a ftp.

Aquí hay un ejemplo de lo que sucede en QGis

Y así es como fue en Ocad

Y luego un día conocí a QGIS.

El programa me impresionó. Buen renderizador. No es tan expresivo como en OCAD, pero la calidad me convenía. La capacidad de trabajar directamente con geodatos. La capacidad de trabajar con todo el proyecto sin romperlo en pedazos.
Todo esto provocó la transferencia de todo el proyecto a QGIS.

Pero ahora me arrepiento un poco.
El renderizador QGIS no es adecuado para generar mosaicos.
Por supuesto, hay dos complementos QTiles y QMetaTiles para QGIS 2. Los adapté para QGIS 3.

Te contaré más sobre las jambas incorregibles que interfieren con la generación de cartas en mosaico en QGIS.
Exportación realizada con el complemento QTiles

Jamba número 1. Cuando el renderizador calcula qué objetos están dentro de su alcance (en QGIS Esto se llama lienzo), no tiene en cuenta el tamaño de los símbolos de los objetos.

Ejemplo 1a Característica de punto

imagen

Como puede ver, el icono de vértice fue recortado. El renderizador lo renderizó en el mosaico inferior, pero no en el mosaico superior. Porque el centro del pico no se encontraba dentro de los límites de la baldosa.

Ejemplo 1b Característica de línea



La línea gruesa corre cerca del borde de la baldosa. Ella cayó parcialmente al azulejo inferior. No llegué al mosaico superior.

La línea no tiene que ir a lo largo del borde de los mosaicos. Todavía puede haber tal artefacto



Jamba número 2. Arreglo de inscripciones.

Ejemplo 2a Inscripción corta en un objeto lineal


El procesador dedujo el nombre en cada mosaico.

Ejemplo 2b Inscripción larga en un objeto lineal

Z15

Z16

Hay una inscripción en Z15, porque encaja completamente en los bordes del mosaico.
No hay más inscripciones en Z16, porque una inscripción larga no cabe en los bordes del mosaico.

Imagine que quiere dibujar un mapa del mundo, y en él en todo el continente escriba "EURASIA" en mayúsculas. Nada saldrá de eso. La inscripción aparecerá solo en esos zooms donde se coloca en todo el mosaico.

Ejemplo 2c. Título en función de punto

Encendí la opción "Mostrar etiquetas parciales"

Z16

Z15

En Z16, el renderizador muestra solo la parte de la inscripción que se rompe en el mosaico. Al renderizar un mosaico vecino, él, por supuesto, lo olvida.

Si la opción "Mostrar etiquetas parciales" está desactivada, en Z16 no habrá ninguna inscripción.

Se requieren dos métodos para combatir estos problemas.

1. Metatalizado
2. Zonas de amortiguamiento

Metatailing.
No cada mosaico se representa individualmente, sino un grupo de varios mosaicos. Diga 4x4, y luego corte en trozos más pequeños.

Zonas de amortiguamiento
Se procesa un área más grande que una loseta o metatile, y luego se corta la pieza deseada.

Ambos métodos no corrigen las jambas anteriores, pero las desplazan varios niveles de zoom a continuación. Las mismas jambas aparecen ya en los bordes de los azulejos, y en los bordes de los metatiles o zonas de amortiguamiento.

Ejemplo 2d. Característica de punto
Hago el complemento de exportación QMetaTiles. El tamaño del meta archivo es 2x2. Esto significa que el área se representa en mosaicos de 2x2 y luego se corta en pedazos.

Z16 imagen

De verdad. La inscripción no se recorta ahora, porque cabe completamente en el área de mosaico de 2x2. Pero en el borde del metatail, el objeto mismo fue cortado. Lo mismo será con un objeto lineal.
El problema ha movido un nivel de zoom a continuación.

Jamba número 3. Descargar inscripciones
Ejemplo 3a
Cada vez, el alineador selecciona la posición más ventajosa para la siguiente inscripción. Además, la ubicación de las etiquetas depende de la posición del lienzo. Muévalo un par de milímetros, y todas las inscripciones estarán ubicadas completamente diferentes.

Esto significa que cuando se procesa un metaarchivo y la zona de búfer a su alrededor, la inscripción puede estar en un lugar, y cuando se procesa un metaarchivo vecino, en un lugar completamente diferente.

Estoy exportando un pedazo de mapa a mosaicos. Las inscripciones tienen un solo pedido.

Luego cambio un poco el lienzo y vuelvo a exportar. Las inscripciones ya están en un orden completamente diferente. En este caso, aparecen tales artefactos.



¿Qué hacer con todo esto?

Las áreas de metacolección y búfer no resuelven los problemas anteriores, pero los mueven a niveles de zoom más bajos.

1. Cuando el renderizador calcula qué objetos debe dibujar, debe tener en cuenta no solo los geodatos de los objetos, sino también su simbolismo.

Por ejemplo, para todos los objetos, el renderizador debe almacenar el BBOX, que el objeto toma después del renderizado individual. Al renderizar una escena, debe considerar la intersección del lienzo con BBOX individuales de objetos renderizados.

Al mismo tiempo, es deseable que el BBOX también contenga inscripciones adjuntas al objeto.

2. La ubicación de las etiquetas no debe depender de la ubicación del lienzo. Luego, con una exportación parcial, los fragmentos de etiquetas se coserán bien. No habrá necesidad de metatilizar y zonas de amortiguamiento.

Desafortunadamente, en este momento, exportar mosaicos de QGI es simplemente horrible, y cuándo se solucionará no está claro.

¿Quizás haya alguien involucrado en el desarrollo de QGis aquí?

Source: https://habr.com/ru/post/es429426/


All Articles