QGIS calcula o raio de um arco para atributos

9

Eu tenho o QGIS 2.18.16 instalado. Meu problema é: como calcular o raio de um recurso de arco / curva (linha)? As linhas são originadas do arquivo .dgn, que li com o FME e escrevi no PostGis DB. Criei chaves primárias, etc., e a tabela é totalmente editável. Eu calculei comprimentos para os arcos com sucesso, mas não consigo descobrir como calcular o raio para essas curvas. Este ( https://www.mathopenref.com/arcradius.html ) pode dar uma ideia do lado da matemática, embora eu não consigo descobrir como usá-lo na calculadora QGIS. Então, eu preciso calcular o "R" para todas as linhas que tenho no banco de dados.

Abaixo está um exemplo. Meus dados têm arcos / curvas em uma tabela diferente das polilinhas "normais".

insira a descrição da imagem aqui

Sisuaski
fonte
Quando clico em um arco com a ferramenta Identify, um dos atributos derivados listados é o "raio do vértice mais próximo". Portanto, não há necessidade de calcular o raio, você só precisa descobrir como acessar essa propriedade na calculadora de campo. Ou simplesmente copie-o da ferramenta de identificação.
CSK
Você também pode visualizar as propriedades de um vértice quando uma camada está no modo de edição selecionando vértices com a Ferramenta Nó. Em seguida, as coordenadas do vértice (x, y, r) são exibidas no painel Editor de vértices.
csk
É bom saber que é pelo menos possível ver o raio através da ferramenta de identificação. Com apenas alguns arcos, copiar e colar seria uma opção, mas pretendo usar isso para todos os dados que tenho, que possuem muitos recursos de arco para serem feitos manualmente. : /
Sisuaski
Pesquisei um pouco no Google e parece que muitas pessoas não usam recursos de cadeia circular no QGIS; portanto, não há uma ferramenta ou função pronta na calculadora de campo. Pode ser necessário definir uma função Python personalizada. Se você quiser seguir esse caminho, adicione a tag pygis à sua pergunta.
CSK
Quantos vértices você possui para o recurso? O que você vê Vertex Editorquando clica no Node Tool?
12483 Marco Marco

Respostas:

6

Seguem-se fórmulas levemente testadas, portanto, prossiga com cuidado. Mas seguindo um exemplo aqui: https://www.mathopenref.com/arcradius.html insira a descrição da imagem aqui

Se seus arcos circulares tiverem um vértice no ponto do meio do arco (que eu estou dizendo é x1, y1 na figura), você poderá usá-lo juntamente com os pontos inicial e final para calcular o comprimento do acorde " W " e a altura " h " para obter o raio "R" usando a seguinte fórmula:

insira a descrição da imagem aqui

e dizendo

insira a descrição da imagem aqui

W =

sqrt(
     ( $x_at(-1) - $x_at(0) )^2 +
     ( $y_at(-1) - $y_at(0) )^2
    )

e

insira a descrição da imagem aqui

H =

sqrt(
    ( $x_at(1) - ( $x_at(-1) + $x_at(0) )/2 )^2
    + ( $y_at(1) - ( $y_at(-1) + $y_at(0) )/2 )^2
)

na sua caixa de diálogo Expressão do campo, você teria essa equação longa para o cálculo do raio:

insira a descrição da imagem aqui

R =

sqrt( 
    ( $x_at(1) - ($x_at(-1) + $x_at(0) )/2 )^2 
    + ( $y_at(1) - ($y_at(-1) + $y_at(0))/2 )^2
     ) /2
+
(   ( $x_at(-1) - $x_at(0) )^2 )  + 
    ( $y_at(-1) - $y_at(0) )^2 )  )
/ ( 8 * sqrt(
            ( ($x_at(1) - ($x_at(-1) + $x_at(0) )/2 )^2
            + ( $y_at(1) - ($y_at(-1) + $y_at(0) )/2 )^2
             )
   )
cm1
fonte
11
No LaTe X $$W= \sqrt {(x_{-1} - x_0)^2 +(y_{-1}-y_0)^2}$$ $$H = \sqrt { (x_1- \frac {(x_{-1}+x_0)} 2 )^2 + (y_1- \frac {(y_{-1}+y_0)} 2 )^2}$$ e $$R = \frac {\sqrt { (x_1- \frac {(x_{-1}+x_0)} 2 )^2 + (y_1- \frac {(y_{-1}+y_0)} 2 )^2}} {2} + \frac {(x_{-1} - x_0)^2 +(y_{-1}-y_0)^2} {8 \sqrt { (x_1- \frac {(x_{-1}+x_0)} 2 )^2 + (y_1- \frac {(y_{-1}+y_0)} 2 )^2}}$$
Marco
Muito bom! Eu não imaginava como acessar os vértices. É possível no PostGIS?
17008 Marco Marco
11
Marco, acredito que é possível extrair qualquer vértice que você está procurando. Veja o link aqui: postgis.net/docs/ST_PointN.html . Obrigado pelas mais excelentes adições e edições de fórmula.
Cm1
Enquanto espero que os desenvolvedores adicionem um botão para "calcular facilmente o raio", esta é a resposta mais útil que eu poderia esperar. Agora eu (e possivelmente outros também) tenho pelo menos uma maneira de extrair raio. :) Ainda não testei isso, mas em alguns dias terei tempo suficiente. Muito obrigado pela sua ajuda!
Sisuaski
1

Que tal extrair o raio enquanto extrai os dados com o FME? Lá você tem o transformador ArcPropertyExtractor, que deve fornecer os valores de raio nos atributos prontos para serem configurados no seu PostGIS DB

fgiron
fonte
Essa seria uma maneira possível de proceder, uma boa maneira de lidar com todos os dados. Meu problema é que não há usuários suficientes de FME em minha organização e preciso tornar o processo o mais fácil possível. Isso significa que todo o processo, incluindo arcos, áreas, linhas etc., deve poder ser realizado com o Qgis. A capacidade de atualizar o raio do recurso Arc para novos objetos é o que eu preciso fazer com o Qgis. Obrigado pela sua resposta, entretanto, atualizarei os atributos de raio com o FME por enquanto, mas espero que haja uma maneira de fazer isso com o QGIS.
Sisuaski