[R-sig-Geo] [FORGED] Create a Spatial Weight Matrix based on road distance

Rolf Turner r@turner @end|ng |rom @uck|@nd@@c@nz
Fri Jun 21 04:08:23 CEST 2019


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



More information about the R-sig-Geo mailing list