Eu tenho uma camada MultiLineStringZM em um banco de dados sqlite e estou tentando visualizar as medidas ou valores m nos vértices. Tentei procurar informações sobre como fazer isso no QGIS, e tudo o que consegui reunir é que isso não é possível diretamente da camada de cadeia de linhas e que os pontos precisam ser extraídos para uma camada separada.
Eu usei Vector
-> Geometry Tools
-> Extract nodes
para criar uma camada multiponto representando os vértices da minha camada de cadeia múltipla, mas o processo perde os valores m dos vértices. Eu preciso dos valores m preservados salvando o valor m como um atributo do ponto ou algo mais?
Internamente, temos uma ferramenta de linha de comando que converte cadeias de linhas em um shapefile de ponto com os valores m armazenados como um atributo em cada ponto, e eu usei isso para verificar se existem valores m atribuídos aos vértices, e eu poderia usar que, se for necessário, mas se possível, seria bom se isso pudesse ser feito diretamente dentro do QGIS.
EDIT - Repetindo o que disse acima, mas enfatizando novamente o fato de termos uma ferramenta de linha de comando que pode alcançar os resultados que estou procurando e que usam as bibliotecas GDAL, portanto, uma solução que mostra apenas uma resposta parcial em PyQGIS não é a resposta que estou procurando. Estou procurando uma ferramenta interna, um plug-in pronto para o QGIS ou um script completo que possa extrair (não criar / gerar) e visualizar valores m a partir de uma geometria MultiLineStringZM ou LineStringZM.
fonte
Respostas:
Pelo que pude descobrir, não parece haver uma solução existente para essa situação exata, mas eu ainda queria fazer isso no QGIS, então mergulhei no script python.
Um guia para escrever algoritmos de processamento pode ser encontrado aqui https://docs.qgis.org/2.18/en/docs/user_manual/processing/scripts.html
Para usar esse código, abra a caixa de ferramentas Processamento, expanda Scripts e, em seguida, expanda Ferramentas. Selecione "Criar novo script" e copie e cole o código abaixo na janela de script (tenha cuidado ao copiar e colar código python, pois o espaço em branco é sintaticamente significativo. Se estiver com problemas, insira o código em um editor de texto que mostre espaço em branco e verifique se copiado corretamente). Salve-o onde quiser e há um botão de executar script na parte superior da janela. Depois de salvá-lo, você pode "Adicionar script do arquivo" e colocar permanentemente o script em "Scripts do usuário".
Quando a janela de processamento aparecer, selecione a camada que contém a geometria do vetor e selecione executar. O script se comporta da mesma maneira que "Extrair nós", exceto que ele adiciona uma coluna chamada
MValues
e ouZValues
dependendo do que está disponível na geometria de entrada.fonte
Com o QGIS 3.0 ou mais recente, esta tarefa é trivial. Na "Caixa de ferramentas de processamento" (abra com ctrl + alt + t ou Processando -> Caixa de ferramentas), procure por "Extrair vértices" e execute esse algoritmo.
Selecione sua geometria de linha ou polígono M ou ZM como a camada Entrada e execute.
Os vértices serão extraídos com os valores M e Z intactos, dependendo do que estiver na geometria original.
Se o valor M for necessário como um campo na tabela de atributos, a calculadora de campos poderá ser usada com uma expressão como
m($geometry)
fonte