[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 08:01:30 CEST 2019
I apologize for the lack of clarity.
Let me try again:
The SWM captures the spatial structure among territories. In the case of a
matrix based on distance, you define a distance-threshold, say 50 km, and
every territory under that distance is considered as neighbor, in the
matrix, those territories considered neighbors take the value 1, and 0
otherwise (territories beyond 50 km). This is what 'dnearneigh' function
does.
Then, I want to define a distance-threshold, say 50 km by road (not
euclidean) and every territory under that distance (by road) be considered
as neighbor.
El sáb., 22 de jun. de 2019 a la(s) 21:15, Rolf Turner (
r.turner using auckland.ac.nz) escribió:
> On 23/06/19 3:30 PM, Rolando Valdez wrote:
> > 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).
>
> OK. It's getting a *bit* clearer .... You are interested in "road
> distances" between counties. I'm still not entirely sure what this
> means. Is it the *minimum* distance by road from one county to another?
> In which case, if two counties are contiguous (adjacent) and there is a
> road crossing the border between the two, is the distance between the
> counties equal to zero? (This doesn't seem like it would be
> satisfactory ....)
>
> Yes, actually it is possible that two counties were connected by more than
one road, however it's not a big deal. If I define a distance of 50 km, it
doesn't matter how many times two counties are connected, I just need that
they are at 50 km trough, at least, one road.
> If this is not the case, then what *is* the case? Perhaps you want
> distances between the *centroids* of the counties. What then do you
> mean by road distance when the centroids do not lie on a road?
>
This is a big challenge, I'm still working on it.
>
> You apparently need to deal with counties in which there are no roads at
> all. To handle this you have to define what *you* mean by the distance
> by road from county A to county B when there are no roads at all in
> county B. Perhaps infinity would be the appropriate distance, but *I*
> don't know; you have to make the call.
>
If two counties are not connected through a road, they could not be
neighbors. In this case, it would correspond to a value 0 in the matrix.
>
> Previously you indicated that you needed to know (pairwise) road
> distances between specified points in a given set, and I showed you how
> to obtain those using pairdist(), from spatstat. Now it seems that you
> want something rather different, and it's still not clear what.
>
> In a sense is the same, but you said so properly, We have different
research fields.
> You need to get *your* thoughts clear; make some definitions and
> specifications, and decide what you really want or need.
>
I got it.
>
> It seems that you are expecting R to magically do your thinking for you;
> it won't!
>
> No, I'm not expecting that.
> cheers,
>
> Rolf
>
> > El sáb., 22 de jun. de 2019 a la(s) 20:00, Rolf Turner
> > (r.turner using auckland.ac.nz <mailto: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>
> > <mailto: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>>
> > > <mailto: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