Curve Identification Methodology
An automatic/manual approach has been developed to identify curves. Using the Length (string), Bearing-2, and Length (segment) strategies in conjunction with the Boolean operators (e.g., AND, OR), we will automatically identify curves' segment within a county. The best combination of strategies as well as appropriate threshold values for the string's weighed average, deflection angle, and segment length will be determined through a trail-and-error analysis. The following list shows possible combinations of the strategies.
| L (st) AND B-2
L (st) AND L (seg) L (seg) AND B-2 |
L (st) OR B-2
L (st) OR L (seg) L (seg) OR B-2 |
L (st) OR B-2 OR
L (seg)
L (st) AND B-2 AND L (seg) L (st) AND B-2 OR L (seg) L (st) OR B-2 AND L (seg) B-2 AND L (st) OR L (seg) B-2 OR L (st) AND L (seg) L (seg) AND B-2 OR L (st) L (seg) OR B-2 AND L (st) |
The following two figures, showing the identified curves' segments in Story County in yellow colors, present the outcomes of some of the combined logical statements.
| ((([Dfbearing]5) and ([Flegs]=2) and ([Dfbearing]<999)) or |
| (([Dtbearing]5) and ([Tlegs]=2) and ([Dtbearing]<999)) or |
| (([Dfbearing]5) and ([Dfbearing]<80)) or |
| (([Dtbearing]5) and ([Dtbearing]<80)) or |
| (([Dfbearing]80) and ([Flegs]=2) and ([Dfbearing]<999)) or |
| (([Dtbearing]80) and ([Tlegs]=2) and ([Dtbearing]<999))) and |
| ([Length] < 400 ) and |
| ([Func]<50) |
| ((([Dfbearing]5) and ([Flegs]=2) and ([Dfbearing]<999)) or |
| (([Dtbearing]5) and ([Tlegs]=2) and ([Dtbearing]<999)) or |
| (([Dfbearing]5) and ([Dfbearing]<80)) or |
| (([Dtbearing]5) and ([Dtbearing]<80)) or |
| (([Dfbearing]80) and ([Flegs]=2) and ([Dfbearing]<999)) or |
| (([Dtbearing]80) and ([Tlegs]=2) and ([Dtbearing]<999)) or |
| (( [Sdiffer] < -3) and ([Length] < 400 ))) and |
| ([Func]<50) |
The visual curve identification process relies primarily on three data sets: aerial photography, roadway cartography (with associated roadway characteristics), and Roadware driven lane centerline data. The latter two provide the components necessary to calculate curve characteristics, e.g. length, radius, and degree. Where available, aerial photography provides the best representation of roadway alignment, allowing the user to better identify curve extents on the cartographic and Roadware representations of the roadway. Users could also manually measure pertinent curve characteristics from these images, but this would yield a much more labor intensive process.
Roadware data provides the next best representation of roadway alignment. As part of the Iowa Pavement Management Program (IPMP), Roadware uses a differential GPS equipped vehicle to collect pavement condition data along a portion of Iowa's highway network. These data are summarized to 100-meter segments of roadway and, when plotted, provide a relatively "smooth" representation of the roadway as driven (accurate to within approximately five meters). Roadware data, however, are not available for all roadways and may not be continuous due to loss of signal or data reduction errors.
The last data set, cartography, are available statewide for all roadways. Important roadway characteristics, such as traffic, are also associated with these data. Roadway alignment and changes in alignment (including curves) are represented by a series of variable length line segments. Therefore, curve extents can be difficult to identify from this data set alone. The accuracy of these data range from approximately 12 to 50 meters.
In general, aerial photography and Roadware lane centerline data provide the best representations of actual roadway alignments, facilitating more accurate curve identification. Moreover, Roadware data will likely yield more accurate curve measurements. However, these data are unavailable for all roadways and do not possess essential roadway characteristics. Cartography serves as an overarching data set, fulfilling all necessary data requirements.
Once the curves' segments have been identified, using the available data sources, the following steps are conducted to calculate curves' radii and degrees:
The purpose of the "clipping" is to isolate the boxes, with their curves within, from the rest of the road network.
Before combining the curve segments inside each polygon, the following steps need to be carried out:
i. Assign a unique number to each polygon
A unique value is assigned to each polygon. This is an indirect way of numbering the curves' segments inside the polygon. The following Areview Avenue Script is used to assign numbers to polygons:
thisProject=av.GetProject
thisView=thisProject.FindDoc("View1")
themesList=thisView.GetThemes
select theme=MsgBox.ListAsString(themesList,"Themes","Please select")
selectTab=selecttheme.getFTab
selectTab.seteditable(true)
autofield=field.make("Id",#field_decimal,10,0)
selectTab.addfields({autofield})
autofield.seteditable(true)
for each i in selectTab
Id=i+1
SelectTab.setvalue(autofield,i,Id)
end
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ii. Assign the polygon unique numbers to the curves
In this step the polygons' unique numbers are assigned to their associated curve's segments. This would enable us to integrate the curves' segments based on their unique assigned identification numbers. The "assign data by location" option of the Geoprocessing Wizard is used to spatial join the data from the attribute table of curves theme to the attribute table of "clipped" roads theme.
A curve length is determined by adding the segments that form the curve inside a box. For those segments that their entire lengths are not included in the box only their partial lengths are considered in calculating the curve length. For example, the selected curve (see the figure below) consists of segments, however, the actual curve length is the only length inside the box. Using the following procedure determines the segments' lengths that are inside the box. This process would eliminate the over representation of curve lengths.
There are two possible ways to determine a curve AADT (average annual daily traffic). We can simply use the average all segments' AADT that form a curve or more accurately use portions of AADT's of those segments that are partially inside the box. Using the following procedure a curve AADT is determined by weighing the degree of participation of a segment in forming a curve.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4. Combining the Clipped Segments
The next step is to combine the boxed curves' segments to create polylines.
The length and chord length of a curve calculation will be enable us to determine the curves' radii. The lengths can be calculated using an ArcView Avenue Script.
thisProject=av.GetProject
thisView=thisProject.FindDoc("View1")
themesList=thisView.GetThemes
select theme=MsgBox.ListAsString(themesList,"Themes","Please select")
selectTab=selecttheme.getFTab
selectTab.seteditable(true)
chLengthField=field.make("Chord_length",#field_decimal,10,4)
selectTab.addfields({chLengthField})
chLengthField.seteditable(true)
for each r in selectTab
segmentPolyLine=selectTab.ReturnValue(selectTab.FindField("Shape"),r)
segmentLine=segmentPolyLine.AsLine
segmentStartPoint=segmentLine.ReturnStart
segmentEndPoint=segmentLine.ReturnEnd
Chord_length=segmentStartPoint.Distance(segmentEndPoint)
selectTab.setvalue(chLengthField,r,Chord_length)
end
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6. Calculate the Curves' Radii
Having determined the length and chord length of the curves, the curves' radii and degrees can be calculated. First, using the circular curve equations (Equations 1 and 2), Equation 3 is derived to define the relationship between the length and chord length of the curves. Equation 3 is a function of q (i.e., half of the deflection); thus, it can be rearranged into Equation 4. Equation 4 and its derivative (Equation 5) are then plugged into the Newton iteration equation (Equation 6) to estimate q. This, in turns, facilitates the calculation of the radius and degree a curve (R and D) through the use of Equations 1 and 7, respectively.
| (1) | |
| (2) | |
| (3) | |
| (4) | |
| (5) | |
| (6) | |
| (7) |
where:
L = Curve length
C = Chord length
R = Curve radius
D = Curve degree
As shown in the table below, values of q''s
converge rather rapidly.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1626.74
|
3.52
|
|
|
|
|
|
|
|
|
|
|
|
1429.28
|
4.01
|
|
|
|
|
|
|
|
|
|
|
|
540.94
|
10.59
|
|
|
|
|
|
|
|
|
|
|
|
1430.56
|
4.01
|
|
|
|
|
|
|
|
|
|
|
|
1203.53
|
4.76
|
Roadware Data
In cases where Roadware data are available, a new ArcView Roadware Theme is generated to convert divided roadways into single routes to prevent double counting of the clipped segment lengths.