QGIS e exportação de ladrilhos


Durante vários anos, estive envolvido em desenhar e manter esquemas atualizados de cordilheiras de duas regiões montanhosas. Dzungarian Alatau e Central Tien Shan.

Inicialmente, desenhei tudo no programa Ocad. Este é um programa especial para desenhar cartas de orientação. O projeto foi dividido em dezenas de folhas. Em seguida, essas folhas eram exportadas para fotos, costuradas e cortadas em ladrilhos. Telhas carregadas no ftp.

Aqui está um exemplo do que acontece no QGis

E aqui está como foi em Ocad

E então um dia eu conheci o QGIS.

O programa me impressionou. Nice renderer. Não é tão expressivo quanto no OCAD, mas a qualidade me convinha. A capacidade de trabalhar diretamente com dados geográficos. A capacidade de trabalhar com o projeto inteiro sem quebrá-lo em pedaços.
Tudo isso levou à transferência de todo o projeto para o QGIS.

Mas agora me arrependo um pouco.
O renderizador QGIS não é adequado para gerar blocos.
Obviamente, existem dois plugins QTiles e QMetaTiles para QGIS 2. Eu os adaptei para o QGIS 3.

Vou falar mais sobre batentes incorrigíveis que interferem na geração de cartões de mosaico no QGIS.
Exportação concluída usando o plugin QTiles

Batente número 1. Quando o renderizador calcula quais objetos se enquadram no seu escopo (no QGIS Isso é chamado de tela), ele não leva em consideração o tamanho dos símbolos dos objetos.

Exemplo 1a Recurso de ponto

imagem

Como você pode ver, o ícone do vértice foi cortado. O renderizador o processou no bloco inferior, mas não no bloco superior. Porque o centro do pico não caiu dentro dos limites do ladrilho.

Exemplo 1b Recurso de linha



A linha grossa passa perto da borda do ladrilho. Ela caiu parcialmente no ladrilho inferior. Não cheguei ao bloco superior.

A linha não precisa passar pela borda dos ladrilhos. Ainda pode haver esse artefato



Batente número 2. Arranjo de inscrições.

Exemplo 2a Inscrição curta em um objeto linear


O renderizador deduziu o nome em cada bloco.

Exemplo 2b Inscrição longa em um objeto linear

Z15

Z16

Há uma inscrição no Z15, porque ele se encaixa completamente nas bordas do ladrilho.
Não há mais inscrições no Z16, porque uma inscrição longa não se encaixa nas bordas do bloco.

Imagine que você deseja desenhar um mapa do mundo e, em todo o continente, escreva “EURASIA” em letras maiúsculas. Nada vai sair disso. A inscrição aparecerá apenas nos zooms em que é colocada no bloco inteiro.

Exemplo 2c. Legenda no recurso de ponto

Ativei a opção "Mostrar marcadores parciais"

Z16

Z15

No Z16, o renderizador mostra apenas a parte da inscrição que quebra no bloco. Ao renderizar um bloco vizinho, ele obviamente se esquece.

Se a opção "Mostrar etiquetas parciais" estiver desativada, no Z16 não haverá inscrição.

Dois métodos são chamados para combater esses problemas.

1. Metatalização
2. Zonas tampão

Metatailing.
Nem cada bloco é renderizado individualmente, mas um grupo de vários blocos. Diga 4x4 e depois corte em pedaços menores.

Zonas de buffer
Uma área maior que um ladrilho ou metátil é renderizada e, em seguida, a peça desejada é cortada.

Ambos os métodos não corrigem os batentes acima, mas os deslocam vários níveis de zoom abaixo. Os mesmos batentes já aparecem nas bordas dos ladrilhos e nas bordas dos metatiles ou zonas de amortecimento.

Exemplo 2d. Recurso de ponto
Eu faço o plug-in de exportação QMetaTiles. O tamanho do arquivo meta é 2x2. Isso significa que a área é renderizada em blocos 2x2 e depois cortada em pedaços.

Z16 imagem

Sério. A inscrição não é recortada agora, porque se encaixa completamente na área de ladrilhos 2x2. Mas na borda do metatail, o próprio objeto foi cortado. O mesmo será com um objeto linear.
O problema mudou um nível de zoom abaixo.

Batente número 3. Download de inscrições
Exemplo 3a
Cada vez, o alinhador seleciona a posição mais vantajosa para a próxima inscrição. Além disso, a localização dos rótulos depende da posição da tela. Mova alguns milímetros e todas as inscrições serão localizadas completamente diferentes.

Isso significa que, ao renderizar um meta arquivo e a zona de buffer ao seu redor, a inscrição pode estar em um local e ao renderizar um meta arquivo vizinho, em um local completamente diferente.

Estou exportando um pedaço de mapa para blocos. As inscrições recebem um pedido.

Então mudo um pouco a tela e faço a exportação novamente. As inscrições já estão em uma ordem completamente diferente. Nesse caso, esses artefatos aparecem.



O que fazer com tudo isso?

As áreas de metatailing e de buffer não resolvem os problemas acima, mas os movem para níveis mais baixos de zoom.

1. Quando o renderizador calcula quais objetos ele deve desenhar, deve levar em consideração não apenas os dados geográficos dos objetos, mas também seu simbolismo.

Por exemplo, para todos os objetos, o renderizador deve armazenar o BBOX, que o objeto leva após a renderização individual. Ao renderizar uma cena, é necessário considerar a interseção da tela com BBOXs individuais de objetos renderizados.

Ao mesmo tempo, é desejável que o BBOX também contenha inscrições anexadas ao objeto.

2. A localização das etiquetas não deve depender da localização da tela. Com exportação parcial, fragmentos de etiquetas serão bem costurados. Não haverá necessidade de zonas de metatiling e buffer.

Infelizmente, no momento, a exportação de blocos de QGIs é péssima, e quando será corrigido não está claro.

Talvez haja alguém envolvido no desenvolvimento de QGis aqui?

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


All Articles