Entre muitas melhorias, a versão 3.32 introduz a funcionalidade há muito esperada de processamento nativo de nuvens de pontos no QGIS, permitindo que o QGIS Desktop se torne um poderoso utilitário de processamento de dados LiDAR.

Antes de publicar um tutorial sobre as novas funcionalidades, reuni um pouco de informação dispersa sobre a arquitetura e as escolhas que foram feitas pelos programadores. É sempre mais interessante esperar em frente a uma barra de progresso quando se sabe o que está para vir…

Pontos vectoriais clássicos e nuvens de pontos

Os recentes avanços na tecnologia LiDAR e na fotogrametria tornaram cada vez mais necessário obter e armazenar dados de nuvens de pontos. Embora os dados de nuvens de pontos sejam baseados em vectores, o seu tamanho é normalmente muito maior do que o das camadas vectoriais padrão. Enquanto os conjuntos de dados vectoriais típicos consistem em milhares ou milhões de características, as nuvens de pontos podem conter milhões, milhares de milhões ou mesmo triliões de pontos. Consequentemente, é necessária uma abordagem separada numa plataforma SIG para visualizar, analisar e armazenar eficazmente os dados das nuvens de pontos, dado o enorme volume de pontos envolvidos.

No mundo dos SIG de código aberto, existem algumas ferramentas fantásticas para trabalhar com nuvens de pontos. A PDAL (“Point Data Abstraction Library”) tornou-se uma ferramenta importante que suporta muitos formatos de dados de entrada e também oferece muitos algoritmos para o processamento de nuvens de pontos. Para a visualização na Web, a biblioteca JavaScript Potree é a escolha mais comum. Para visualizar nuvens de pontos numa aplicação de ambiente de trabalho, os utilizadores abrem normalmente o CloudCompare, que inclui uma variedade de ferramentas incorporadas.

A integração de um visualizador de nuvens de pontos num SIG traz um valor acrescentado considerável aos utilizadores, em comparação com um visualizador de nuvens de pontos específico e especializado:

  • Os dados de nuvens de pontos podem ser visualizados, comparados e analisados com outros tipos de dados espaciais (incluindo camadas vectoriais, raster e de grelha).
  • Interface de utilizador e fluxo de trabalho familiares
  • Integração com ferramentas analíticas para criar rapidamente conjuntos de dados derivados

A principal dificuldade na utilização de dados de nuvens de pontos advém do elevado número de pontos contidos nos conjuntos de dados: temos de lidar com milhões ou mesmo milhares de milhões de pontos para áreas geográficas relativamente pequenas, enquanto os estudos à escala nacional podem envolver triliões de pontos. Com esta quantidade de dados, não é possível converter simplesmente o conjunto de dados em camadas vectoriais “normais” – as ferramentas típicas de SIG e os formatos de dados, como o GeoPackage ou o Shapefile, não estão optimizados para tais quantidades de dados e qualquer operação seria muito morosa.

As novas camadas de nuvens de pontos

Desde a versão 3.26, foi introduzido um novo tipo de camada de mapa no QGIS: a camada de nuvem de pontos, que é utilizada para todos os dados de nuvem de pontos. Como já foi referido, não foi possível reutilizar o tipo de camada vetorial existente (com geometrias de pontos), uma vez que não foi concebido para suportar quantidades tão grandes de pontos.

Para o acesso aos dados baseados em ficheiros, foi decidido utilizar a PDAL (biblioteca de abstração de dados de pontos). Esta biblioteca segue a abordagem adoptada pela biblioteca GDAL: fornece uma interface comum para ler, escrever ou processar dados de nuvens de pontos, e vários controladores (“leitores” e “escritores” na terminologia PDAL) suportam as características específicas dos diferentes formatos. Além disso, a PDAL oferece um conceito de pipeline que permite a combinação de vários algoritmos de processamento.

A segunda coisa a considerar era a forma de apresentar os dados de forma eficaz. Percorrer todos os pontos de um conjunto de dados e desenhá-los simplesmente não funcionaria bem e demoraria demasiado tempo. Além disso, seria um desperdício – quando o zoom é reduzido, apenas uma pequena quantidade de pontos precisa de ser apresentada. Um segundo caso a considerar era que, quando um utilizador faz muito zoom, deveríamos ser capazes de apresentar apenas pontos dentro da área de interesse, em vez de ler pontos fora da vista atual. Por conseguinte, precisávamos de uma forma de interrogar rapidamente os pontos nestas diferentes situações. Esta necessidade é normalmente resolvida através da utilização de estruturas de dados de particionamento do espaço (como as octrees) que dividem hierarquicamente o espaço em volumes mais pequenos. Uma caraterística importante é que não só as folhas, mas também os nós internos contêm dados: graças a isto, é possível não só interrogar rapidamente pontos numa pequena área de interesse, mas também obter porções mais pequenas de pontos em diferentes níveis de zoom.

Indexação de nuvens de pontos

Os dados de nuvens de pontos em formatos comummente utilizados, como o LAS, são conjuntos de pontos bastante simples que não estão associados a qualquer estrutura de dados de indexação e a ordem dos pontos pode ser arbitrária. Como resultado, essa estrutura de dados de indexação tem de ser construída quando estes ficheiros são abertos para os renderizar – isto também é feito por outros visualizadores (como o CloudCompare). Durante a indexação, os pontos têm de ser reorganizados para que possam ser acedidos rapidamente durante a renderização. Uma vez concluída a indexação, temos uma estrutura de dados em forma de árvore em que cada nó contém um subconjunto da nuvem de pontos – esta nuvem de pontos indexada pode ser armazenada no disco ou na memória.

Vista de mapa 2D/3D

Mais importante ainda, os utilizadores podem visualizar os dados da nuvem de pontos num mapa 2D ou 3D. A vantagem adicional da integração total com o QGIS é que outros dados (vectoriais ou raster) podem ser sobrepostos aos dados da nuvem de pontos.

Para permitir uma rápida renderização 2D e 3D, mesmo de grandes conjuntos de dados, o QGIS é capaz de renderizar subconjuntos de dados utilizando o índice hierárquico (gerado quando os dados são carregados pela primeira vez no QGIS). Quando o utilizador faz zoom out, o QGIS desenha apenas um pequeno número de pontos e, assim que o utilizador faz zoom in, o QGIS desenha um número cada vez maior de pontos (enquanto reduz a extensão do mapa).

Renderização 2D

Todo o processo de renderização é conduzido pela classe QgsPointCloudLayerRenderer (onde a maior parte do trabalho é feito numa thread, como é o caso de outros renderizadores de camadas). Por enquanto, o erro geométrico aceitável (ou seja, o espaçamento aceitável entre pontos) é determinado de acordo com a escala do mapa – por exemplo, numa escala de 1:1.000.000, um espaçamento de 1 km entre pontos pode ser apropriado, mas numa escala de 1:1.000, é necessário um espaçamento muito menor de, digamos, 1 metro. Este parâmetro é exposto aos utilizadores para que estes o possam controlar como um parâmetro de “filtragem dinâmica”, caso o utilizador deseje substituir a predefinição (por exemplo, para uma melhor qualidade ou tempos de renderização mais rápidos).

nuvens de pontos: propriedades da camada: erro máximo
Fenêtre “Propriétés de la couche” d’un nuage de points,onglet symbologie

De seguida, percorremos a hierarquia de índices e recuperamos os nós que atravessam a extensão da vista do mapa e têm um erro geométrico aceitável. Por fim, recuperamos os dados da nuvem de pontos destes nós – quer a partir da cache de camadas (se já estiverem na memória), quer a partir dos nós de índice, e desenhamos os pontos um a um.

No trabalho realizado até agora, foi planeada uma única implementação do motor de renderização. Este desenha pontos de tamanho fixo, a cor dos pontos é determinada por um dos atributos escolhidos pelo utilizador (por exemplo, elevação, classificação, número de retorno) e a rampa de cores escolhida. Além disso, são suportadas algumas opções básicas de filtragem (por exemplo, apenas o último retorno, apenas um determinado valor ou valores de classificação, apenas um determinado intervalo de elevações).

No futuro, poderão ser acrescentadas outras representações, como a visualização de uma superfície interpolada (calculada em tempo real a partir de dados pontuais), sombreamento ou contornos.

Renderização 3D

Basicamente, a renderização de nuvens de pontos em 3D segue os mesmos princípios da renderização 2D: utilizando o índice hierárquico, determinamos quais os nós que devem ser apresentados, com base nos dados de pontos que são carregados e apresentados na cena 3D. Parte da infraestrutura necessária já existia: as vistas QGIS 3D suportam a representação do terreno em “pedaços” desde o início (à medida que o utilizador se aproxima do terreno, são representadas elevações mais detalhadas e texturas de mapas). Como o mecanismo é bastante genérico e foi alargado a dados de camadas vectoriais no passado, também foi alargado a nuvens de pontos. No passado, estava limitado pelo facto de esperar sempre uma hierarquia quadripartida, mas foi atualizado para permitir hierarquias em árvore octree.

As opções de estilo para vistas 3D são semelhantes às opções de renderização 2D: configuração do tamanho do ponto, coloração baseada num único atributo e algumas opções simples de filtragem de dados.

Também foi possível adicionar o efeito de iluminação de eye-dome, que melhora a perceção de profundidade.

Identificação de pontos

A ferramenta de identificação de mapas 2D e 3D foi actualizada para devolver informação completa sobre os pontos identificados. Para além das suas coordenadas XYZ, também devolve o valor dos outros atributos de cada ponto (como a classificação e outros atributos).

O que há de novo na versão 3.32

Fornecedor de processamento nativo para nuvens de pontos¶

Foi integrado um novo fornecedor de processamento nativo para algoritmos de nuvens de pontos: o fornecedor utiliza a ferramenta de linha de comandos pdal_wrench e suporta atualmente os seguintes algoritmos:

Novos tratamentos da caixa de ferramentas para gerir nuvens de pontos

  • Informação: fornece metadados básicos sobre a nuvem de pontos (número de pontos, extensão, crs, etc.).
  • Converter formato: converte a nuvem de pontos para um formato diferente, por exemplo, de las para laz.
  • Reprojectar: reprojecta a nuvem de pontos para um CRS diferente.
  • Fixar projeção: fixa (atribui) o CRS de um ficheiro de nuvem de pontos
  • Recortar: recortar uma nuvem de pontos cortando um ou mais polígonos
  • Mesclar: mesclar várias nuvens de pontos em um único arquivo
  • Tile: criar mosaicos a partir de dados de entrada
  • Thin: criar uma versão mais fina da nuvem de pontos
  • Boundary (Limite): exportar uma camada vetorial que contém os limites da nuvem de pontos
  • Density (Densidade): exportar um ficheiro raster em que cada célula contém o número de pontos na área dessa célula.
  • Exportar para raster: exporta dados da nuvem de pontos para uma grelha raster 2D
  • Exportar para vetor: exportar dados de uma nuvem de pontos para uma camada de vetor com pontos 3D
  • Exportar para raster (TIN): exportar dados de uma nuvem de pontos para uma grelha raster 2D utilizando a triangulação de pontos.
  • Filtro: extrair um subconjunto da nuvem de pontos utilizando expressões PDAL

Como o pdal_wrench requer PDAL >= 2.5.0, o novo provedor de processamento só estará disponível se a versão necessária do PDAL for atendida.

Existem várias razões para usar pdal_wrench em vez de usar a API PDAL e construir pipelines:

  • facilidade de utilização: o pdal_wrench fornece um conjunto de algoritmos prontos a utilizar e esconde a complexidade da criação de pipelines do utilizador, tornando muito mais fácil a utilização de dados LiDAR por pessoas que não estão familiarizadas com a tecnologia.
  • execução paralela: o PDAL executa pipelines numa única thread, enquanto o pdal_wrench suporta o processamento multithreaded numa base espacial ou de ficheiros.
  • suporte para nuvens de pontos virtuais: isto é semelhante ao raster virtual (VRT) do GDAL – um único ficheiro faz referência a vários outros ficheiros e representa-os como um único ponto de referência.

Construtor de expressões de nuvens de pontos para o Processing framework¶

Um novo widget de criação de expressões de nuvens de pontos está disponível na interface gráfica para criar filtros para nuvens de pontos de uma forma fácil de utilizar e consistente com as interfaces de criação de expressões QGIS existentes.

assistente de expressões para nuvens de pontos

Filtragem de rectângulos e expressões adicionada aos algoritmos PDAL

Adicionada a opção de filtrar a nuvem de pontos de entrada por retângulo (extensão) e expressão nos seguintes algoritmos PDAL:

  • limite
  • recorte
  • densidade
  • exportação para raster (variantes normal e TIN)
  • exportar para vetor
  • fundir
  • afinar

Isto permite que apenas um subconjunto dos pontos do(s) ficheiro(s) de entrada seja processado, sem necessidade de uma etapa de filtragem intermédia ou da criação de ficheiros temporários.

Para aqueles que apenas necessitam de filtragem, existe também um algoritmo de filtragem separado capaz de filtrar por intervalo, por expressão ou pela sua combinação.

filtragem ao nível do processamento para nuvens de pontos

Nuvens de pontos virtuais (VPC)¶

Um novo fornecedor de dados está disponível para ficheiros de nuvens de pontos virtuais (VPC) criados pelo utilitário pdal_wrench e pela ferramenta Construir nuvem de pontos virtuais (VPC) no novo fornecedor Processamento de nuvens de pontos nativas.

O arquivo VPC é tratado como uma única camada no QGIS e pode conter um grande número de arquivos de nuvem de pontos cujos índices são carregados quando a tela é suficientemente ampliada. Os ficheiros individuais contidos no ficheiro virtual são apresentados como direitos de passagem enquanto a sua extensão for inferior à largura da janela do mapa. Assim que o zoom for suficientemente grande e a extensão de um ficheiro individual exceder a largura da janela do mapa, os pontos no ficheiro são apresentados.

Uma nuvem de pontos virtual é um ficheiro contentor JSON com uma extensão .vpc, referindo-se a outros ficheiros/URLs que contêm os dados reais da nuvem de pontos. Este conceito é semelhante ao dos rasters virtuais (VRT) no GDAL.

como apresentar um VPC na janela do mapa

Bug
No momento em que escrevemos este artigo (julho de 2023), foi encontrado um bug no tratamento de renderizações do pdal_wrench pelo QGis. De momento, tudo funciona se os ficheiros utilizados para o VPC forem ficheiros copc. Caso contrário, o QGis não apresenta os pontos quando o zoom é suficiente
.

Visualizar nuvens de pontos virtuais (VPCs) em vistas 3D

As nuvens de pontos virtuais podem ser apresentadas em vistas 3D. Para a gestão do desempenho, é especificado um limiar de subíndice para que a vista apresente pontos na nuvem de pontos apenas quando apropriado, e apresente a extensão de um subíndice específico quando o critério de limiar não for cumprido.

como apresentar um VPC numa vista 3D

Si cet article vous a intéressé et que vous pensez qu'il pourrait bénéficier à d'autres personnes, n'hésitez pas à le partager sur vos réseaux sociaux en utilisant les boutons ci-dessous. Votre partage est apprécié !

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *