黃河泉 发表于 2018-8-17 08:21
老实说,第一时间就看不太懂你的意思 (如何把这些序号提取出来呢,是什么意思?),现在还是一样!请重新说 ...
谢谢老师,我现在有各地的经纬度,想计算所有城市(共283个)到citytype==3城市(不止一个)距离的最小值
- clear
- input double(latitude longitude citytype)
- 26.25656499 105.944226 1
- 26.89682499 112.56657 2
- 27.83265099 112.938664 2
- 28.26326301 117.063832 1
- 32.12502099 114.062773 2
- 25.77440001 113.0111 2
- 28.23155799 112.933463 3
- 28.93892703 118.869413 1
- 25.83248997 114.92904 2
- 26.64451107 118.1729381 1
- 32.39457201 119.398399 3
- 33.76798701 113.186252 2
- 42.01945899 121.664975 2
- 37.85619 113.574147 2
- 35.027124 111.001486 1
- end
复制代码我现在的做法很粗暴,是直接把citytype=3城市的序号数出来,然后
- local numlist "5,35,38,70,99,167,248" //citytype=3,城市的序号
- forvalues i = 1/283{
- foreach j of num `numlist' {
- local lat_city = latitude[`i']
- local lon_city = longitude[`i']
- local lat_mega = latitude[`j']
- local lon_mega = longitude[`j']
- geodist `lat_city' `lon_city' `lat_mega' `lon_mega'
- local dis_`i'_`j' = r(distance)
- }
- local mindis = min(`dis_`i'_5',`dis_`i'_35',`dis_`i'_38',`dis_`i'_70', ///
- `dis_`i'_99',`dis_`i'_167',`dis_`i'_248')
- replace mindis = `mindis' in `i'
- }
复制代码所以想请教是否有优化的手段