qualquer um que possa ajudar. Eu só quero adicionar direção (rolamento: N 25 35 E) e distância (comprimento: 125 metros) como meu novo campo em dados de polilinha / linha. existe um plug-in para gerar esses campos? Eu tentei usar "exportar / adicionar colunas de geometria" nos meus dados de linha, mas apenas o valor "Comprimento" foi adicionado.
18
Respostas:
Você pode calcular o rumo na calculadora de campo no QGIS. Isso funciona em coordenadas UTM (métricas) em pequenas distâncias (centenas de km), mas algo mais sofisticado seria necessário para grandes distâncias ou graus decimais.
Abra a tabela de atributos para sua camada de linha, alterne a edição e clique no botão Calculadora de Campo para abrir a caixa de diálogo:
Crie um novo campo como decimal com precisão de 1 ou 2.
Cole este código na caixa "Expressão" e clique em "OK":
(atan((xat(-1)-xat(0))/(yat(-1)-yat(0)))) * 180/3.14159 + (180 *(((yat(-1)-yat(0)) < 0) + (((xat(-1)-xat(0)) < 0 AND (yat(-1) - yat(0)) >0)*2)))
A primeira parte calcula a tangente inversa das diferenças x e y e a converte em graus (180 / pi). A segunda parte adiciona 180 ou 360 à figura resultante para dar um rolamento de 0 a 360 °.
fonte
Você não precisa de um plugin. Tudo está na classe QgsPoint de PyQGIS
Se você examinar o conteúdo de uma classe de pontos QGIS com a função incorporada Python dir () no Console Python.
Você pode ver que existem funções de azimute e sqrDist e depois de algumas tentativas:
O problema
Então, no console Python
agora xy contém todos os nós (pontos) da linha
Usando todos os pontos de nó da linha:
1) ponto azimutal i para ponto i + 1 (+/- 180 °) (nós de uma linha)
2) distância euclidiana entre o ponto i e o ponto i + 1
Depois, não é muito difícil adicionar esses valores à tabela de atributos.
Eu uso essa técnica para analisar os lineamentos (geologia) com matplotlib e o plugin Script Runner
fonte
A solução fornecida pelo @Simbamangu é bastante eficaz, mas não abrange todos os casos. Por exemplo, aplicar a fórmula com um deslocamento horizontal NULL o resultado, portanto você deve usar esta fórmula na Calculadora de campo do QGIS
fonte