距离计算中常会需要求点与点、点与线,甚至设置点与面之间的最短距离。ArcGis本身可以完成这样的工作,本文将要介绍的是基于stata命令的计算方法。
案例:我们有一个包含特许学校位置的数据集mnch和一个包含湖泊边界的数据集mnlakes,我们希望找到离每个学校最近的湖泊。
首先绘制一下具体的空间分布情况
use http://pped.org/mnch, clear
merge using http://pped.org/mnlakes
twoway area lat lon, nodropbase cmiss(n) col(navy) || scatter y x, msymbol("o") mcolor(red) msize(small) mlcolor(black) legend(position(11) lab(1 "lake") lab(2 "school")) scheme(burd)
最小距离的计算
use http://pped.org/mnch, clear // 学校点数据
local n = _N // 学校的总个数
g double m = .
merge using http://pped.org/mnlakes // 湖泊面文件
qui forvalues i = 1/`n' {
vincenty lat lon y[`i'] x[`i'], v(d) //计算所有湖泊到每一个学习的距离
su d, meanonly
replace m = r(min) in `i' // 提取最小距离
drop d
}
最终得到的变量m
便是每个学校距离湖泊的最短距离。也可用同样的思路计算空间权重矩阵,这里就不再详述。
往期回顾
- 使用stata的twoway系列命令绘制地图
- 如何使用R、matlab、arcgis进行趋势面分析
- 使用R进行空间自相关检验
- 空间权重矩阵的那些事(八)-球面距离权重矩阵
- R中空间权重矩阵的处理
- 使用R进行地图可视化
- 使用QGIS进行地图可视化
- 南海九段线可以这样处理
- Stata 绘图也可以很好看