Eu tenho vértices de polilinha em uma tabela do Excel.
ASSET_ID VERTEX_NUM X Y ANGLE_CHANGE
---------- ---------- ---------- ---------- ------------
10 1 118.56 3.8 null
10 2 118.62 1.03 null
10 3 121.93 1.03 ?
20 1 123.59 1.19 null
20 2 124.21 1.02 null
20 3 124.85 .96 ?
20 4 125.49 1.01 ?
20 5 126.11 1.16 ?
20 6 126.7 1.41 ?
20 7 127.24 1.75 ?
20 8 127.26 2.16 ? --I chose to put this point in the screenshot just because the change in angle is large. So it was easy to illustrate what I'm looking for (lots of room for markup).
20 9 127.36 2.56 ?
20 10 127.52 2.94 ?
20 11 127.75 3.29 ?
20 12 128.03 3.59 ?
30 1 129.84 1.26 null
30 2 133.26 2.88 null
Eu quero determinar qual é a "mudança de ângulo" de ponto a ponto.
Em outras palavras, dada uma linha entre os pontos 1 e 2, como posso calcular a mudança no ângulo para o ponto 3?
Supondo que suas colunas no Excel sejam A, B etc, as colunas X, Y, ANGLE_CHANGE são C, D, E, respectivamente, e a primeira linha de dados é o número 2.
Para encontrar o ângulo, você pode usar esta fórmula para E3:
Selecione a célula E3 e arraste a pequena alça para baixo sobre as colunas abaixo.
Este usa a função ATAN que retorna seu resultado em radianos, precisando ser multiplicado por
180/Pi
para dar graus.Você obterá os 87 graus desejados (quase um ângulo reto, quase vertical) com uma fórmula simples
=ATAN2(<current X>-<previous X>;<current Y>-<previous Y>)*180/PI()
Como
=ATAN2(C14-C13;D14-D13)*180/PI()
Eu construí com base nas respostas de @harrymc e @JohnSUN.
Isto é o que eu inventei:
Relacionado:
Qual método de densificação SDE.ST_Geometry usa para aproximar arcos como segmentos?
Determinar se a linha tem curvas verdadeiras via SQL (SDE.ST_GEOMETRY no Oracle)