【发布时间】:2018-02-17 03:32:32
【问题描述】:
目前我正在处理纬度和经度数据集。我想研究纬度/经度分布并找出每个纬度/经度的最近点。我已经做了几件事,但我仍然面临一些问题。我的数据集如下所示
Latitude Longitude
38.929596 -77.2478813
38.929596 -77.2478813
38.9295887 -77.2478945
38.9295048 -77.247922
38.9294865 -77.2479055
38.9294865 -77.2479055
38.9294865 -77.2479055
38.9294773 -77.2478712
38.9294773 -77.2478712
38.9294773 -77.2477417
38.9294773 -77.2477417
38.9292972 -77.247649
38.9292972 -77.247649
38.9292972 -77.247649
38.9291838 -77.2475982
38.9291838 -77.2475982
38.9290903 -77.2467052
38.9289893 -77.2462247
38.9290013 -77.2462322
38.9290008 -77.2462207
38.9290468 -77.2456722
- 假设每行包含 1 个点。
所以,最终的数据框看起来像(对于最近的点)
No Latitude Longitude nearest_points(lat) nearest_points(lon) Distance
1 38.929596 -77.2478813 ..... .... ...
2 38.929596 -77.2478813
3 38.9295887 -77.2478945
4 38.9295048 -77.247922
5 38.9294865 -77.2479055
6 38.9294865 -77.2479055
7 38.9294865 -77.2479055
8 38.9294773 -77.2478712
9 38.9294773 -77.2478712
10 38.9294773 -77.2477417
11 38.9294773 -77.2477417
12 38.9292972 -77.247649
13 38.9292972 -77.247649
14 38.9292972 -77.247649
15 38.9291838 -77.2475982
16 38.9291838 -77.2475982
17 38.9290903 -77.2467052
18 38.9289893 -77.2462247
19 38.9290013 -77.2462322
20 38.9290008 -77.2462207
21 38.9290468 -77.2456722
- 分布是什么意思?是简单的直方图吗?
代码如下 - 2.
data = read.csv('Data.csv')
library(raster)
distribution <- pointDistance(data[, c("Longitude", "Latitude")], lonlat=TRUE)
distribution_matrix <- as.matrix(as.dist(distribution))
diag(distribution_matrix) <- NA
现在我为分布目的创建一个 nxn 矩阵,即计算与每个点的距离。现在如何测量 R 中的分布?
1.同时计算最近点。代码是 -
i <- apply(distribution_matrix, 1, which.min)
p <- cbind(1:nrow(distribution_matrix), i)
distribution_matrix[p]
apply(distribution_matrix, 1, min, na.rm=TRUE)
但这不像我的最终输出。我想要有距离的数据框格式。
【问题讨论】:
-
最接近什么?赤道和本初子午线的交点?
-
@r2evans - 这是一个距离..两点之间的最近距离
-
抱歉,但 “找到每个纬度/经度的最近点” 有点含糊,而且是特定于上下文的。好的,没关系,这似乎是比较经典的
distance,带有半正弦函数,是吗? -
@r2evans - 你是对的......实际上我的目标是进行聚类......但在此之前我想测量每个点的距离并想知道最近的一对点。另一件事是“pointDistance”给我公里/米的距离吗?
标签: r google-maps