# Relative position of nodes

I am studying bird movements and have tracked their locations, ie from flower 1 to flower 2 to flower 3 etc. Each point is mapped out. I am trying to work out the relative direction for each movement of the bird. in the picture below the angles are A1 and A2. so A1 is the relative direction of the bird travelling from N2 to N3 based on the original direction of N1 to N2. I have over 1000 movements which are copletely random with up to 50 flowers per map. is there a way to run the movements with the outcome relative angle?

At this point the bird movements are stored in a spreadsheet. I am unsure of how to incorporate them for this purpose.

P.S. im relatively new to gis so knowledge is limited

• Probably you need to add more details to your request. I don't understand which kind of data do you have as a start and how you manage them when a new position is reached. I mean, do you refresh a point layer by adding a new field storing a new position (coordinates?) every time an animal moves off from the previous position? And then, which is the result expected? A point with new fields, a line containing all the positions, or something else? – mgri Feb 12 '17 at 9:51
• Could you please update your question with an example of your desired output? – Aaron Feb 15 '17 at 4:46

This is relatively easy if you store the data as a `Point` layer in sequential order.

• Assume your layer name is `bird_move`
• Create a new field `azimuth` which represents the azimuth between points.
• Create a new field `angle` (difference between consecutive `azimuth` values).

Start the Field Calculator and give expressions as below:

azimuth

``````degrees(azimuth(geometry(get_feature_by_id('bird_move', \$id-1)), \$geometry))
``````

angle

``````abs("azimuth"- attribute(get_feature_by_id('bird_move', \$id+1), 'azimuth') )
``````

Then you will obtain: