Dan,
Here is one way. I am not sure about your distance formulas, so I used the
Pythagorean distance formula.
. l, noobs
+------------------------------+
| points latitude longit~e |
|------------------------------|
| a 2 5 |
| b 4 9 |
| c 9 4 |
| d 1 0 |
| e 2 0 |
+------------------------------+
qui {
local j = 2
count
local num = r(N)
levels points, local(levels) clean
foreach l in `levels' {
local k = 1
gen `l' = .
forv i = `j'/`num' {
*replace `l'=acos( (cos(latitude[`i'])*cos(latitude[`i' -
`k'])*cos(longitude[`i'] - longitude[`i' - `k'])) + ///
(sin(latitude[`i'])*sin(latitude[`i' - `k'])) )*3963 in `i'
replace `l' = sqrt((abs(latitude[`i'] - latitude[`i'
-`k']))^2 + ///
(abs(longitude[`i'] - longitude[`i' - `k']))^2) in `i'
local k = `k' + 1
}
local j = `j' + 1
}
}
l points a-e, noobs
. l points a-e, noobs
+-------------------------------------------------+
| points a b c d e |
|-------------------------------------------------|
| a . . . . . |
| b 4.472136 . . . . |
| c 7.071068 7.071068 . . . |
| d 5.09902 9.486833 8.944272 . . |
| e 5 9.219544 8.062258 1 . |
+-------------------------------------------------+
Hope this helps,
Scott
> -----Original Message-----
> From: [email protected] [mailto:owner-
> [email protected]] On Behalf Of Daniel Egan
> Sent: Monday, June 13, 2005 1:03 PM
> To: [email protected]
> Subject: st: Distance matrix
>
> hello all,
>
> I am attempting to create a dataset consisting of the distance between
> two points.. Currently, the dataset is in a wide format consisting of
> latitude and longitude in the form xx.xxxxxxxxxx
>
> id x y
> a 2 5
> b 4 9
> c 9 4
> .........
>
>
>
> I would like to end up with a dataset consisting of the Euclid distance.
>
> pair dist
> a-b 4.5...
> a-c 7.01...
>
> I believe the formula is:
> distance=arcos( (cos(rlat1)*cos(rlat2)*cos(rlon1-rlon2)) +(sin(rlat1)*sin
> (rlat2)) )*3963
>
> I have tried
> mds latitude longitude, id(pid)
> and returned "too many macros". I do have aroun 43k observations.
>
> Any guidance or assistance would be greatly appreciated.
>
>
> Cheers ,
> Dan Egan
>
> *
> * For searches and help try:
> * http://www.stata.com/support/faqs/res/findit.html
> * http://www.stata.com/support/statalist/faq
> * http://www.ats.ucla.edu/stat/stata/
*
* For searches and help try:
* http://www.stata.com/support/faqs/res/findit.html
* http://www.stata.com/support/statalist/faq
* http://www.ats.ucla.edu/stat/stata/