【发布时间】:2015-12-17 16:33:04
【问题描述】:
我想在我的数据集中为大约 100 个点创建一个缓冲区,该缓冲区的长度为 r,并且在点之间变化(基本上这是客户愿意前往该点/商店的 80% 的距离) .
我的数据包含以下列:lat_centre、lon_centre、radius_km
这是一个 1 公里的例子:
Javascript 与谷歌地图。
var draw_circle = new google.maps.Circle({
center: point_i,
radius: 1000,
strokeColor: col,
strokeOpacity: 0.15,
strokeWeight: 2,
fillColor: col,
fillOpacity: 0.15,
map: map
});
在左边绘制图像:
但是,下面的 R 尝试在右边画了一个圆圈(你可以看到它更小):
library(dismo)
emory <- gmap("Bishopsgate, London", zoom = 14, scale = 2)
d <- data.frame(lat = c(51.51594), lon = c(-0.08248))
coordinates(d) <- ~ lon + lat
projection(d) <- "+init=epsg:4326"
mm <- "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +no_defs"
d_mrc <- spTransform(d, CRS = CRS(mm))
# Buffer creation
d_mrc_bff <- gBuffer(d_mrc, width = 1000)
library(scales) # for `alpha()` function
plot(emory)
plot(d_mrc_bff, col = alpha("red", .35), add = TRUE)
points(d_mrc, cex = 2, pch = 20)
【问题讨论】:
-
ggplot(data = df, aes(x, y, size = r) + geom_point()?其中r是df中指定半径的列? -
@Phil 谢谢! r 会在哪个单位?
-
@Phil 绘图单位可能与数据单位不同(尤其是在处理地图投影时)。可能重复:Drawing circle on R map(第二个答案看起来很有希望)和Plot circle with a certain radius around point on a map(几个答案)。这个问题可以通过一点 R 代码得到很大改善,即一个最小的工作示例。
-
还有ggmap: create circle symbol where radius represents distance 在 GIS 堆栈交换上。看起来很有希望。
标签: r geometry latitude-longitude