【发布时间】:2021-06-14 11:29:44
【问题描述】:
我有一个包含经度和纬度的数据框,我想创建一个 0.5x0.5 度的网格来显示其中的纬度、经度。到目前为止,我已经尝试了几种解决方案,包括在 stackoverflow 上找到的一些解决方案,它们使用 cut 和 expand.grid 以及使用包“sp”但没有一个对我有用的代码(也许我根本做不到实施它们)。
关于如何将我的数据分组为 0.5x0.5 度的网格有什么建议吗?
| Latitude | Longitude |
|---|---|
| 31.602 | -39.848 |
| 31.675 | -39.467 |
| 31.747 | -39.083 |
| 32.152 | -36.795 |
| 32.218 | -36.408 |
| 32.285 | -36.022 |
| 32.348 | -35.635 |
| 32.412 | -35.247 |
| 32.475 | -34.858 |
| 32.535 | -34.47 |
| 32.595 | -34.082 |
| 32.677 | -33.707 |
| 32.763 | -33.323 |
感谢大家的时间和精力。
编辑:我最大的努力是这个 sn-p
library(tidyverse)
pos <- dassem %>%
dplyr::select(Latitude, Longitude)
gridx <- seq(from = min(dassem$Longitude), to = max(dassem$Longitude), by = 2)
gridy <- seq(from = min(dassem$Latitude), to = max(dassem$Latitude), by = 2)
xcell <- unlist(lapply(pos$Longitude,function(x) min(which(gridx>x))))
ycell <- unlist(lapply(pos$Latitude,function(y) min(which(gridy>y))))
pos$cell <- (length(gridx) - 1) * ycell + xcell
pos
# A tibble: 45,647 x 3
Latitude Longitude cell
<dbl> <dbl> <dbl>
1 51.7 -54.9 638
2 51.9 -54.5 638
3 52.1 -54.1 638
4 52.3 -53.7 639
5 52.5 -53.2 639
6 52.7 -52.8 639
7 52.9 -52.4 639
8 53.2 -52.0 639
如您所见,它不会返回 2x2 度的网格(我将其设置为 2x2,而不是 0.5x0.5)。
【问题讨论】:
-
你能告诉我们你最好的镜头的代码吗?
-
根据您的问题调整了 OP
-
好吧,我觉得这样更清楚一点;但我不确定这个网格对你来说是什么样的。我怀疑您正试图在
cell中保存一个数据结构,而这个小标题并不意味着保存,并且您的上述操作不会产生。你能告诉我们这个“网格”对你来说是什么样的吗?它是每行一个四点多边形吗? -
否则,this answer 应该可以解决问题吗?
-
例如,查看第一行,坐标 31.602, - 39.848 将来自 0.5x0.5 正方形的顶点之一。坐标 (31.602 + 0.5, -39.848)、(31.602+0.5, -39.848 + 0.5) 和 (31.602, -39.848 + 0.5) 将形成方形网格的其他 3 个顶点。现在,我希望 R 显示哪些坐标(行)落在我形成的正方形内。
标签: r geospatial