[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