Calculate the angular difference between lines and a predefined bearing
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).
angle_diff(l, angle, bidirectional = FALSE, absolute = TRUE)
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 |
Building on the convention used in bearing()
and in many applications,
North is definied as 0, East as 90 and West as -90.
Other lines:
geo_toptail()
,
is_linepoint()
,
line2df()
,
line2points()
,
line_bearing()
,
line_breakup()
,
line_match()
,
line_midpoint()
,
line_sample()
,
line_segment()
,
line_via()
,
mats2line()
,
n_sample_length()
,
n_vertices()
,
onewaygeo()
,
points2line()
,
toptail_buff()
,
toptailgs()
,
update_line_geometry()
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) a <- angle_diff(flowlines, angle = 0, bidirectional = TRUE, absolute = TRUE) plot(flowlines) plot(flowlines[a < 15, ], add = TRUE, lwd = 3, col = "red") # East-West plot(flowlines[a > 75, ], add = TRUE, lwd = 3, col = "green") }
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.