If you use Matlab, you could calculate the curvature (radius of curvature) at any point along your polylines using this formula
K = 2*((x2-x1)*(y3-y2)-(y2-y1)*(x3-x2)) / sqrt( ...
((x2-x1)^2+(y2-y1)^2)*((x3-x2)^2+(y3-y2)^2)*((x1-x3)^2+(y1-y3)^2) );
(x1,y1), (x2,y2), and (x3,y3) being the coordinates of three successive
points on the curve, as explained here http://www.mathworks.com/matlabcentral/newsreader/view_thread/145981
To use this, you will need to have your polylines vertices sampled at equal interval. You could then use the average as an estimate of the overall curvature of a given polyline. You would also need to determine the window length to estimate the curvature, as this metric is scale-dependant (i.e you are looking at large or small variation). You could compare different spatial scales if it is relevant.
1- make sure your lines are smooth and have a high density in vertices (optional)
[Line]=densif_line(X1,Y1,npoints)
lineX(1,1:2)=NaN
lineY(1,1:2)=NaN
for i=1:length(Y1)-1
[linspace(x1,x2,npoints);linspace(y1,y2,npoints)]
interpointX=linspace(X1(i),X1(i+1),npoints);
interpointY=linspace(Y1(i),Y1(i+1),npoints);
lineX=[lineX interpointX];
lineY=[lineY interpointY];
end
Line(:,1)=lineX';
Line(:,2)=lineY';
end
2- create a vector of distance from first vertex. Cumulate the distance between two points iteratively using the function
pdist
3- iteratively estimate the radius of curvature with the above formula at a given window
4- estimate the average curvature value for the polyline
mean
5- build a loop to process all your polylines at once