【问题标题】:How can I find the closest counties of a US county if I have the Latitude and Longitude in R?如果我在 R 中有纬度和经度,如何找到美国县的最近县?
【发布时间】:2016-05-10 00:27:35
【问题描述】:

我知道函数sqrt((x1-x0)^2 + (y1-y0)^2) 可以找到距离。但是我有两列纬度和经度,我想找到最近的 4 个县之间的差异。 我需要一个循环吗? 我还有一列百分比。每个县都有一个百分比。所以,我需要找到最近的县之间的百分比方差。

【问题讨论】:

  • 欢迎来到 StackOverflow !请提供minimal reproducible example
  • 这里的“差异”是什么意思?统计方差?如果有,有多少县?
  • 您在平面上使用欧几里得距离,但球体上的距离不同。 geosphere 包具有此功能(例如,请参阅 this SO answer)。你也可以滚动你自己的函数:见herehere
  • 我使用的是 2D,因为之后我要进行映射。

标签: r google-maps geospatial


【解决方案1】:

当然不需要循环问题。

您最好创建一个 earth.dist 函数,而不是这样做:

earth.dist <- function (long1, lat1, long2, lat2)
{
rad <- pi/180
a1 <- lat1 * rad
a2 <- long1 * rad
b1 <- lat2 * rad
b2 <- long2 * rad
dlon <- b2 - a2
dlat <- b1 - a1
a <- (sin(dlat/2))^2 + cos(a1) * cos(b1) * (sin(dlon/2))^2
c <- 2 * atan2(sqrt(a), sqrt(1 - a))
R <- 6378.145
d <- R * c
return(d)
}

通过结合这个和所有国家之间的计算,您可以按升序排列每个国家的列表,然后计算方差。 它将遵循您正在寻找的结果。

希望这个功能解释对您有所帮助。

【讨论】:

  • 我只使用美国国家。美国国家有州,一个州有很多县。
  • 在这种情况下,我想你可以使用县来代替。在没有数据的情况下,我最好的尝试是遵循以下步骤: 1. 对于每个县,使用eath_dist + lapply 计算到所有县的距离。 2. 只为每一行获取前 4 行。 3. 之后计算每个距离的方差。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-08-17
  • 1970-01-01
  • 1970-01-01
  • 2020-07-12
  • 2012-10-30
  • 2019-10-31
  • 1970-01-01
相关资源
最近更新 更多