【发布时间】:2020-11-11 17:50:56
【问题描述】:
我想覆盖一个由 bbox lat long 坐标与相距 1 公里的 gps 点 raster 定义的区域。目前我通过以下方式为 bboxbbox=8.9771580802,47.2703623267,13.8350427083,50.5644529365 生成2000 点数:
as.data.frame(cbind(runif(2000,8.9771580802 ,13.8350427083),runif(2000,47.2703623267,50.5644529365)))
由于runif 是一个正态分布,我认为我只需要增加点数即可按照我需要的方式覆盖整个区域。
有没有更聪明的方法呢?
我需要多少分?
更新
我想我也许可以使用包sp 来完成这项工作,但我仍然不太熟悉设置:
longitudes <- c(8.9771580802, 13.8350427083)
latitudes <- c(47.2703623267, 50.5644529365)
bounding_box <- matrix(c(longitudes, latitudes), nrow = 2, byrow = TRUE, dimnames = list(NULL, c("min", "max")))
projection <- "+proj=longlat"
sp_box<-Spatial(bbox = bounding_box, proj4string = CRS(projection))
p_sample<-spsample(sp_box, 10000, type="regular")
如果我理解正确,这会给我一些在我的坐标中均匀分布的点。 spsample 有一个单元格大小选项,但我还没有掌握。
BR
安德烈亚斯
【问题讨论】:
-
runif 将给出随机分布,即不均匀分布。您需要 1 公里栅格上的点吗?
-
是的,我需要一个相距 1 公里的定义区域内的 GPS 点。
-
您能否具体说明“相距 1 公里”和“栅格”是什么意思?我们是在谈论一个正方形网格,其中一个点与其直接邻居之间的距离正好是 1km(这也意味着到当前点对角线的点的距离是 sqrt(2)km)?抱歉,也许我在空间分析方面还不够准确,无法正确理解您的问题。
-
嗨@mabreitling,谢谢你的回复。是的,这正是我的意思:“我们正在谈论一个正方形网格,其中一个点与其直接邻居之间的距离正好为 1 公里(这也意味着与当前点对角线的点的距离是 sqrt(2)公里)”
-
看起来好像
geospherepackage 中的destPoint函数应该给你你想要的:函数 destPoint 返回给定原点的点的位置,以及距离和方位.