On 23/06/19 6:01 PM, Rolando Valdez wrote:

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.

You still have not defined what you mean by *distance* between territories (regions, counties). Distance between *points* is well defined; distance between territories is not. You have to specify what you mean by such a distance. This could be the minimum distance between points in the regions (which is not of course a metric), distance between centroids of the territories, Hausdorff distance, or something else. This applies whether you are talking about the distance between points being Euclidean distance or road distance or some other metric. Thresholding that distance (e.g. at 50 km.) is then a trivial matter.

I have tried my best to get you to clarify what you mean, and my efforts seem to be in vain. Since Juan Pablo thinks that I am "bullying you" (which mystifies me completely) I guess I'll give up. And to respond to Juan Pablo's hope, nothing whatever is "bothering" me.

cheers,

Rolf


El sáb., 22 de jun. de 2019 a la(s) 21:15, Rolf Turner (r.tur...@auckland.ac.nz <mailto:r.tur...@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.tur...@auckland.ac.nz <mailto:r.tur...@auckland.ac.nz>
    <mailto:r.tur...@auckland.ac.nz <mailto:r.tur...@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.tur...@auckland.ac.nz <mailto:r.tur...@auckland.ac.nz>
    <mailto:r.tur...@auckland.ac.nz <mailto:r.tur...@auckland.ac.nz>>
     >     <mailto:r.tur...@auckland.ac.nz
    <mailto:r.tur...@auckland.ac.nz> <mailto:r.tur...@auckland.ac.nz
    <mailto:r.tur...@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.tur...@auckland.ac.nz
    <mailto:r.tur...@auckland.ac.nz> <mailto:r.tur...@auckland.ac.nz
    <mailto:r.tur...@auckland.ac.nz>>
     >     <mailto:r.tur...@auckland.ac.nz
    <mailto:r.tur...@auckland.ac.nz> <mailto:r.tur...@auckland.ac.nz
    <mailto:r.tur...@auckland.ac.nz>>>
     >      >     <mailto:r.tur...@auckland.ac.nz
    <mailto:r.tur...@auckland.ac.nz>
     >     <mailto:r.tur...@auckland.ac.nz
    <mailto:r.tur...@auckland.ac.nz>> <mailto:r.tur...@auckland.ac.nz
    <mailto:r.tur...@auckland.ac.nz>
     >     <mailto:r.tur...@auckland.ac.nz
    <mailto:r.tur...@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

_______________________________________________
R-sig-Geo mailing list
R-sig-Geo@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-sig-geo

Reply via email to