PowerShell, 88 82 8080 74 71 bytes
-8 bytes thanks to Mazzy
-6 bytes thanks to AdmBorkBork and Mazzy
-3 bytes thanks to AdmBorkBork
param($n,$d)$n..1|%{"' "*'*($_,($n-$_))[$d]+($y="$y='/\|"[$d]\|'[$d])+(" "," $y"[$_%2],$y ")[$_%2]+$y}
Uses [0,1,2] for NW, NE, N. Uses d
as a list index twice to first get the spacing method (Drops off the list when using 2 which returns 0) and then which character to use when drawing the lines. Appends a list to the string of spaces (which innately has spaces between the members when appended as such) which builds the road. Also swaps between an open lane or a dash based on modulo math.