Criando setas com base nas velocidades do GPS para mostrar o deslocamento

8

Estou tendo problemas para criar simbologia no ArcGIS que pode mostrar setas de velocidade de estações GPS. Eu tenho um arquivo de pontos com informações de localização, velocidade e direção de cada estação GPS. Quero criar um mapa semelhante à imagem que anexei. O tamanho das setas permanece o mesmo, mas o comprimento muda com base na velocidade. Ver abaixo.

insira a descrição da imagem aqui

Meu primeiro instinto foi usar símbolos graduados, no entanto, isso apenas escala as setas e não as estica.

dmariamp
fonte

Respostas:

12

Eu acho que sua melhor aposta é apresentar dados por linhas.

  • Crie qualquer tamanho de buffer em torno dos pontos
  • Converta-os em linhas

Aplique a seguinte expressão da calculadora de campo (Python) no campo Forma:

def plineM (B,V,SCALE,shp):
 b=float(B);v=float(V)
 part=shp.getPart(0)
 buf=arcpy.Polygon(part)
 pC=buf.centroid
 X=pC.X+v*SCALE*math.cos(b/180*3.141593)
 Y=pC.Y+v*SCALE*math.sin(b/180*3.141593)
 newP=arcpy.Point(X,Y)
 pLine=arcpy.Polyline(arcpy.Array([pC,newP]))
 return pLine

----------------------------

plineM( !BEARING!, !Velocity!,0.5, !Shape! )

Certificando-se de que seus rolamentos são expressos em graus, no sentido anti-horário a partir de Leste

TABELA DE PONTOS DE ENTRADA:

insira a descrição da imagem aqui

RESULTADO:

insira a descrição da imagem aqui

Você pode querer brincar com o fator de escala. Observe que ele é testado no shapefile, se não for o caso, comece a editar a sessão nas linhas antes de executar a expressão.

ATUALIZAÇÃO: janeiro 2020

Algumas pessoas relataram ERRO 000539 ao usar a expressão sugerida. O motivo provável é o grande buffer em torno do ponto original, resultando em sobreposições de buffer. Se você estiver usando a ferramenta incorporada do ArcGIS para converter buffers em linhas, poderá resultar em linhas compostas por 2 vértices:

insira a descrição da imagem aqui

Solução possível é criar buffers menores.

FelixIP
fonte
Ótima resposta. Definitivamente as linhas são o caminho a seguir aqui.
Fezter
1
Sim, sim, caso contrário, por que o ponto 2 do post? Outra abordagem é calcular coordenadas finais usando as mesmas fórmulas na tabela de polígonos e usar a ferramenta xy para alinhar.
FelixIP 21/01
1
Leia os comentários acima. Se isso não funcionar, converta para um script verdadeiro. Calculadora Arcgis, pode ser imprevisível, para dizer o mínimo.
FelixIP 21/01
1
@JGIS veja resposta atualizada.
FelixIP 22/01
1
Eu vejo 2 razões possíveis: a) seu PC não sabe o que é seno, improvável b) você não leu meu post e expressou ângulos em outra coisa, exceto em graus. Altamente provável.
FelixIP 22/01
2

O FelixIP forneceu uma solução bastante elegante. Uma alternativa mais simples seria:

  1. Defina a simbologia para a sua camada de pontos como "Símbolos graduados", com o valor definido no seu campo VELOCITY.
  2. Clique no botão Modelo para selecionar um símbolo que seja adequado para descrever rolamentos e velocidades - escolhi uma seta da fonte ESRI North para o exemplo.
  3. Defina o intervalo Tamanho do símbolo para alguns valores que funcionarão no seu mapa (você pode refinar esses valores posteriormente).
  4. Clique no botão Avançado e selecione a opção "Rotação". Na janela Girar, selecione o campo Rolamento na caixa suspensa e escolha o estilo de rotação adequado aos seus dados.

(1)

Passo 1

2)

Passo 2

4)

etapa 3

(Exemplo de resultado)

Passo 4

Adão
fonte
Eu deveria ter apontado que esses símbolos serão centralizados em onde o ponto está localizado. Isso pode ser alterado para que o ponto inicial da seta seja localizado no ponto GPS, alterando o deslocamento Y do símbolo do ponteiro na etapa 2 para que a base da seta fique nivelada com o eixo X da visualização. Se necessário, você também pode adicionar uma camada de ponto ao símbolo para mostrar o ponto GPS.
Adam
1
Obrigado por sua sugestão. No entanto, eu estava procurando uma solução em que o comprimento da flecha mudasse com base na velocidade, e não apenas dimensionasse o tamanho da flecha.
Dmariamp