angle_diff {stplanr} | R Documentation |
Calculate the angular difference between lines and a predefined bearing
Description
This function was designed to find lines that are close to parallel and perpendicular to some pre-defined route. It can return results that are absolute (contain information on the direction of turn, i.e. + or - values for clockwise/anticlockwise), bidirectional (which mean values greater than +/- 90 are impossible).
Usage
angle_diff(l, angle, bidirectional = FALSE, absolute = TRUE)
Arguments
l |
A spatial lines object |
angle |
an angle in degrees relative to North, with 90 being East and -90 being West. (direction of rotation is ignored). |
bidirectional |
Should the result be returned in a bidirectional format? Default is FALSE. If TRUE, the same line in the oposite direction would have the same bearing |
absolute |
If TRUE (the default) only positive values can be returned |
Details
Building on the convention used in in the bearing()
function from the
geosphere
package and in many applications,
North is definied as 0, East as 90 and West as -90.
See Also
Other lines:
geo_toptail()
,
is_linepoint()
,
line2df()
,
line2points()
,
line_bearing()
,
line_breakup()
,
line_midpoint()
,
line_segment()
,
line_segment1()
,
line_via()
,
mats2line()
,
n_segments()
,
n_vertices()
,
onewaygeo()
,
points2line()
,
toptail_buff()
Examples
lib_versions <- sf::sf_extSoftVersion()
lib_versions
# fails on some systems (with early versions of PROJ)
if (lib_versions[3] >= "6.3.1") {
# Find all routes going North-South
lines_sf <- od2line(od_data_sample, zones = zones_sf)
angle_diff(lines_sf[2, ], angle = 0)
angle_diff(lines_sf[2:3, ], angle = 0)
}