On 21/06/19 12:26 PM, Rolando Valdez wrote:
Dear community,
Is there any way to create a spatial weight matrix based on road distance?
I am trying to use the road distance between two points instead of
euclidean distance.
I've seen that there is a package named osrm. Can anyone give some advice?
I don't know anything about "osrm". Calculating "road distances" can be
done in the spatstat package reasonably easily, if you take the trouble
to represent your collection of roads as a "linnet" object.
Given that you have done so, suppose that your linnet object is "L" and
that you have vectors "x" and "y" specifying the points on L (i.e. on
your roads) between which you want to know the distances.
Do:
X <- lpp(data.frame(x=x,y=y),L)
dMat <- pairdist(X)
The object "dMat" is a (symmetric) square matrix; dMat[i,j] is the
distance between point i and point j. (Of course the diagonal entries
are all 0.)
If your collection of roads is specified by means of a shapefile,
vignette("shapefiles") will tell you how to turn this collection into a
"psp" ("planar segment pattern") object; the function (method)
as.linnet.psp() can then be used to turn the "psp" object into a
"linnet" object.
HTH
cheers,
Rolf Turner
--
Honorary Research Fellow
Department of Statistics
University of Auckland
Phone: +64-9-373-7599 ext. 88276
_______________________________________________
R-sig-Geo mailing list
R-sig-Geo@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-sig-geo