[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