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

Reply via email to