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

Adrian Baddeley @dr|@n@b@dde|ey @end|ng |rom curt|n@edu@@u
Fri Jun 21 04:30:27 CEST 2019


Rather than converting an object of class 'SpatialLines' or 'SpatialLinesDataFrame' to the spatstat class 'psp' and then converting it to the spatstat class 'linnet', it is safer and more efficient to convert the SpatialLines* object directly to class linnet using as.linnet.SpatialLinesDataFrame() from the package 'maptools'.


Prof Adrian Baddeley DSc FAA

John Curtin Distinguished Professor

Department of Mathematics and Statistics

Curtin University, Perth, Western Australia


________________________________
From: Rolf Turner <r.turner using auckland.ac.nz>
Sent: Friday, 21 June 2019 10:08 AM
To: Rolando Valdez
Cc: r-sig-geo using r-project.org; Adrian Baddeley; Ege Rubak
Subject: Re: [FORGED] [R-sig-Geo] Create a Spatial Weight Matrix based on road distance


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

	[[alternative HTML version deleted]]



More information about the R-sig-Geo mailing list