I have a shapefile of gps positions (sucession of points, with X Y Z data) of hundreds of kilometers of road
and I'd like to know if it possible with ArcGis 10 to determine the radius of each curvature.
Example : I have one segment of a road represented by 100 gps points and I'd like to draw the curves and measure the radius of each curvature.
Is there a tool for that ? Or a script ?
I hope I will be able to find the help I need here because I'm lost.
First of all, I'd like to thank you both for trying to help me, it is greatly appreciated because I really don't know what to do.
Dan, I've tried to access your document on onlinelibrary but it's a "buy to consult" and I use the computer at work and am not allowed to make any purchases online unless it is a tool that will do exactly what we need for this project and you said earlier that you haven't updaded your version to arcgis so would it be of any direct use for me ? Not trying to be picky but it has to be justified and to get permssion to buy something, it has to be THE tool that we need.
Riyas, thank you for this script. I tried to execute it but I have another problem that I'm not sure how to solve. The GPS points are taken 10meters (40 feet) away from each other and when I'm trying to reduce the scale at the closest I can to see separate points (1:0.004), one single point cannot be selected, the selection tool select a GPS point that is 30 points away from the one I selected ? Is there a way around it ? Because I cannot select the beginning, middle and end of a road. I have to select the road as a whole.
Again, thank you for your help.
The paper contains no code...and I can't locate my digital copy (If I have some success at work, I will forward it to you).
We were using high-end GPS, mounted in a trailer, to collect the data (and a "good driver" )
In principle, and going by memory, the following steps were used.
1 a road segment was selected (via various means), the segment may or may no contain a true curve, a threshold could be specified
2 straight lines segments were identified based upon a deviation parameter
3 the tangent segment from the straight line segment to the road curve was delineated
4 an initial assessment of the circular segment was determined...points that were within a tolerance were identified and collected
5 circular regression was applied to the points collected in step 4 to minimize the deviations from the curve and overcome the simplistic assessment of a 3-point circle
6 the exit segment (see 3) was determined
7 proceed with the next straight line segment or next tangent or next circular curve depending upon road layout.
I do have some python code and a toolbox that I was testing last year...if you can wait until after the labor day weekend (this weekend), I will get you a copy off if interested for testing purposes. My contact email can be found in my profile.
Agree that 3 points along a larger section of road will not be a true representation of actual curvature of the road.
My understanding of xavier's requirement was he's interested in curvature for individual segment formed by 2 GPS points (which i understand is not possible) the next simplest option was to use 3 consecutive coordinates to measure the curvature.
I found your circular regression script here Circular Regression .
I have the newer python version in test phase now, this is only part of a larger problem as identified above. As indicated in the initial thread, there is a greater density of points available...hopefully along the curve segment. Accurate estimates of the radius of curvature in an engineering context has a different threshold of needs.
Good morning ! (depending on your location of course)
Thank you for your quick answers.
Yes Dan, I would be extremely interested and could wait until next tuesday. I don't know If I could send you the shapefile of the road I'm doing my tests on ? Maybe it could help you (as a whole) to understand really what my problem is. Reading your different steps, it seem to do what I need to do (but i'm far from an expert in that specific field). And we do use a very high-end GPS mounted on a econoline so it would seem to be close to what you did.
And Riyas, as it is now and if it cannot be changed / corrected, I cannot indeed select 2 points next to each other. I could select points but it is quite random (I can select one point every 20 or so points) BUT I actually do need to get the individual segment formed by 2 GPS points (or at least, as many GPS positions there is for a single curve). The whole idea would be to draw a road from those GPS points and within the road, having each curve and its radius in that road. It's a complicated task that I don't know if it can be done using ArcGis or if it would require other softwares like autocad.
I'm glad I found this forum to help me, this is giving me hopes
You'll need at least three points for calculating radius of curvature.
Important: The script I posted above is very simplistic. It assumes your circle passes through all the three points and does not take anything else into account. If this simplest interpretation of curvature would meet your need I'll modify the script to use selection from layer.
If one best fit radius of curvature for the whole road which takes all GPS points into account, Dan's script I referenced above is your best candidate.