楼主: 雯雯517
39872 51

[编程问题求助] 怎么用stata geodist命令算出任意两地间的距离? [推广有奖]

  • 0关注
  • 0粉丝

大专生

53%

还不是VIP/贵宾

-

威望
0
论坛币
1 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
638 点
帖子
15
精华
0
在线时间
75 小时
注册时间
2016-3-7
最后登录
2020-12-4

楼主
雯雯517 发表于 2017-8-28 09:34:37 |AI写论文
20论坛币
我有400多个地区的经纬度,数据变量分别是,地区,代码,经度,纬度。如何用stata geodist计算出任意两地之间的距离。就是需要创建出一个矩阵,里面有任意的两地之间的距离。谢谢大神!亲测有效追增论坛币!

最佳答案

关键词:Stata tata ODIS IST Dis
已有 1 人评分经验 收起 理由
remlus + 100 精彩帖子

总评分: 经验 + 100   查看全部评分

沙发
deem 学生认证  发表于 2017-8-28 09:34:38
  1. * generate simulated data;

  2. clear
  3. set seed 1234
  4. set obs 10
  5. gen id1 = _n
  6. gen double lat1 = 37 + (41 - 37) * uniform()
  7. gen double lon1 = -109 + (109 - 102) * uniform()

  8. * pairwise combination
  9. preserve
  10. rename (id1 lat1 lon1) (id2 lat2 lon2)
  11. save geo_data, replace
  12. restore

  13. cross using geo_data

  14. * 10*10 distance matrix
  15. geodist lat1 lon1 lat2 lon2, generate(v)
  16. keep id1 id2 v
  17. reshape wide v, i(id1) j(id2)
复制代码
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
Sunknownay + 3 + 3 + 3 热心帮助其他会员

总评分: 学术水平 + 3  热心指数 + 3  信用等级 + 3   查看全部评分

藤椅
雯雯517 发表于 2017-8-28 15:09:46
deem 发表于 2017-8-28 10:40
这是我的数据样子

45CB5FF5-D154-4A40-9A70-3B0FE7CB1914.png (302.91 KB)

45CB5FF5-D154-4A40-9A70-3B0FE7CB1914.png

板凳
雯雯517 发表于 2017-8-28 15:11:30
deem 发表于 2017-8-28 10:40
请问,能根据我的数据样子帮我编写一下吗?非常感谢!

报纸
deem 学生认证  发表于 2017-8-28 16:17:04
雯雯517 发表于 2017-8-28 15:11
请问,能根据我的数据样子帮我编写一下吗?非常感谢!
你改下变量名就行了呀 这段代码挺清晰呀

地板
雯雯517 发表于 2017-8-28 16:54:24
已用您的方法计算出来任意两地间的距离,谢谢。想追问一个,用这样的方法计算出来的数据,有重复值。比如说:citycode1=110101 citycode2=110102 计算出来一个距离,citycode1=110102 citycode2=110101,又会计算出来一个相同的距离。我试过用duplicates drop dist,force。但是这样删掉的重复值不对。怎么仅保留一个距离呢?非常感谢!
已有 1 人评分经验 收起 理由
remlus + 100 精彩帖子

总评分: 经验 + 100   查看全部评分

7
雯雯517 发表于 2017-8-28 16:54:45
deem 发表于 2017-8-28 16:17
你改下变量名就行了呀 这段代码挺清晰呀
已用您的方法计算出来任意两地间的距离,谢谢。想追问一个,用这样的方法计算出来的数据,有重复值。比如说:citycode1=110101 citycode2=110102 计算出来一个距离,citycode1=110102 citycode2=110101,又会计算出来一个相同的距离。我试过用duplicates drop dist,force。但是这样删掉的重复值不对。怎么仅保留一个距离呢?非常感谢!

8
deem 学生认证  发表于 2017-8-28 17:35:14
雯雯517 发表于 2017-8-28 16:54
已用您的方法计算出来任意两地间的距离,谢谢。想追问一个,用这样的方法计算出来的数据,有重复值。比 ...
  1. * generate data;
  2. input str10 citycode longitude latitude
  3. 110101 116 39
  4. 110102 142 73
  5. 110103 25 75
  6. end

  7. * make index var;
  8. gen id2 = _n
  9. save gist_data, replace
  10. expand=_N-_n+1
  11. sort citycode
  12. bysort citycode: gen id1 = _n
  13. rename (longitude latitude) (longitude2 latitude2)

  14. merge m:1 id2 using gist_data

  15. geodist longitude latitude longitude2 latitude2, generate(v)
复制代码

9
08zjliu 发表于 2017-9-17 12:26:59
deem 发表于 2017-8-28 09:34
您好,麻烦问一下,我想计算两组经纬度所代表地点之间的距离,stata应该怎么写程序啊?

10
deem 学生认证  发表于 2017-9-17 13:13:26
08zjliu 发表于 2017-9-17 12:26
您好,麻烦问一下,我想计算两组经纬度所代表地点之间的距离,stata应该怎么写程序啊?
  1. geodist longitude latitude longitude2 latitude2, generate(v)
复制代码

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2025-12-31 17:53