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

Rolando Valdez rv@|dezr @end|ng |rom gm@||@com
Sun Jun 23 05:30:28 CEST 2019


Sorry again.

A Spatial Weight Matrix (swm) is an object used in spatial econometrics to
characterize the spatial structure among territories. It is an element nxn
where n is the number of territorial units (counties, districts, states,
cities, regions) in the sample and it could be based on contiguity or
distance. Usually, you can create a swm based on distance using
'dnearneigh' from spdep and then convert to a listw through 'nb2listw'. The
problem is that the matrix that you generate trough 'dnearneigh'computes
the euclidean distance among centroids of polygons. This is where I spot my
issue, I need to compute the swm using the road distance instead of
euclidean distance computed through 'dnearneigh'. I do have a shapefile
with poligons (counties) and another shapefile with lines (roads).


El sáb., 22 de jun. de 2019 a la(s) 20:00, Rolf Turner (
r.turner using auckland.ac.nz) escribió:

>
> On 23/06/19 2:38 PM, Rolando Valdez wrote:
>
> > I am sorry, I was not clear enough. My goal is to calculate a spatial
> > weight matrix (nxn) across counties but, instead of euclidean distance,
> > to use road distance.
>
> I'm afraid I still don't understand.  To put it mildly. You presumably
> have a clear idea of what you are trying to, but those of us who are not
> involved in your research have no such idea.  We (or at least I) haven't
> a clue as to what you are talking about.
>
> What do you mean by "spatial weight"?  What are these weights used for?
> What is n?  How are the counties involved?  Is n the number of counties?
> Are you interested in the road distance (minimum road distance?) between
> pairs of counties?
>
> Please explain *clearly* and do not expect those who are trying to help
> you to be mind-readers!!!
>
> cheers,
>
> Rolf
>
> >
> > El sáb., 22 de jun. de 2019 a la(s) 19:28, Rolf Turner
> > (r.turner using auckland.ac.nz <mailto:r.turner using auckland.ac.nz>) escribió:
> >
> >
> >     On 23/06/19 1:17 PM, Rolando Valdez wrote:
> >
> >      > Thank you for your answer.
> >      >
> >      > I have a shapefile with, say, counties, and I got another
> >     shapefile with
> >      > the roads. ¿What if a county does not intersect any road?
> >
> >     I am sorry, but it is not at all clear to me just what the problem
> is.
> >     How do the counties come into the picture?  You said you wanted to
> get
> >     the road distance between points on the roads.  What have the
> counties
> >     got to do with this?
> >
> >     Can you perhaps provide a reproducible example?
> >
> >     cheers,
> >
> >     Rolf
> >
> >      >
> >      > El jue., 20 de jun. de 2019 a la(s) 19:08, Rolf Turner
> >      > (r.turner using auckland.ac.nz <mailto:r.turner using auckland.ac.nz>
> >     <mailto:r.turner using auckland.ac.nz <mailto:r.turner using auckland.ac.nz>>)
> >     escribió:
> >      >
> >      >
> >      >     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
>


-- 
Rol~

	[[alternative HTML version deleted]]



More information about the R-sig-Geo mailing list