[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

# Re: st: spatial analysis - DISTANCE

 From David Torres To statalist@hsphsun2.harvard.edu Subject Re: st: spatial analysis - DISTANCE Date Sun, 30 Aug 2009 10:15:43 -0400

Austin, I've looked over the code you offered and it seems that what I'm getting is just the xy coordinates rather than what I need. There's got to be a way, somehow, to have stata return a list of all the unitids that are within the specified radius. When I run the code I have, all I get is a return of the unitid on the nearest school to my 65000 tracts. However, within the rad10 variable, several tracts have multiple schools within my radius of 10 miles. I need to get all of these unitids regardless of whether I end up with wide or long data; I can always reshape later.
```
Is my question clearer?

```
Well, any help you or anyone else can give is greatly appreciated. In the meantime, I'll keep working at it.
```
Thanks
David D. Torres

Quoting Austin Nichols <austinnichols@gmail.com>:

```
```David Torres<torresd@umich.edu> :
This is in reference to e.g.
http://stata.com/statalist/archive/2009-07/msg00083.html
http://stata.com/statalist/archive/2007-01/msg00098.html
I believe.

Note that standard Stata commands like -summarize- and -replace-
inside the loop do all the work of saving characteristics of the
nearest, or k nearest, observations (and whatever else, such as mean
of Z over those with distance less than 10 units).  No program like
-vincenty- (on SSC) does that; a -replace- command does it.
-vincenty- does not return "the min, max, mean, or whatever" and it
appears that -globdist- (which I found with -findit-) does only part
of what -vincenty- does (and the -globdist- help file contains the
caveat that "Testing of this program has been limited").  In other
words, add a -replace- to put the result you want in a variable.

Maybe you want something like:

g long rad10=.
g double dist1=.
g id1=""
g xy1=""
merge using univpoints00_0
forv i=1/`np' {
qui vincenty `=latitude[`i']' `=longitude[`i']' sch_lat sch_lon, hav(dis)
g within10=dis<10
su within10, meanonly
qui replace rad10=r(sum) in `i'
su dis, meanonly
qui replace dist1=r(min) in `i'
qui levelsof unitid if dis==dist1[`i'], loc(vs)
foreach v of loc vs {
qui replace id1="`v' "+id1 in `i'
su sch_lat if unitid==`v', meanonly
loc y1=r(mean)
su sch_lon if unitid==`v', meanonly
loc x1=r(mean)
qui replace xy1="(`x1',`y1') "+id1 in `i'
}
drop dis within10
}

On Sat, Aug 29, 2009 at 4:26 PM, David Torres<torresd@umich.edu> wrote:
```
```I am trying to calculate multiple distances from one set of xy coordinates
to another
using vincenty.  In addition to getting those distances, however, I need to
somehow list
the ids for the xy coordinates used to calculate the distance.

Here is the piece of code I'm working with:

code excerpt:

g long rad10=.
g double dist1=.
g id1=""
merge using univpoints00_0

forv i=1/`np' {
qui vincenty `=latitude[`i']' `=longitude[`i']' sch_lat sch_lon, hav(dis)
g within10=dis<10
su within10, meanonly
qui replace rad10=r(sum) in `i'
su dis, meanonly
qui replace dist1=r(min) in `i'
qui levelsof unitid if dis==dist1[`i'], loc(vs)
foreach v of loc vs {
qui replace id1="`v' "+id1 in `i'
}
drop dis within10
}

end excerpt

As you can see, I'm getting a count of all sch_lat and sch_lon coordinates
within a 10
mile radius of the other set of latitude and longitude points.  Then I
return only the
minimum distance.  Will vincenty allow for returning more than just the min,
max, mean,
or whatever?  Or is globdist a better choice for returning multiple
distances and the ids
attached to the point the distance to which is being calculated?

Thanks

David Torres
UMich
```
```
*
*   For searches and help try:
*   http://www.stata.com/help.cgi?search
*   http://www.stata.com/support/statalist/faq
*   http://www.ats.ucla.edu/stat/stata/

```
```

*
*   For searches and help try:
*   http://www.stata.com/help.cgi?search
*   http://www.stata.com/support/statalist/faq
*   http://www.ats.ucla.edu/stat/stata/
```

 © Copyright 1996–2015 StataCorp LP   |   Terms of use   |   Privacy   |   Contact us   |   What's new   |   Site index