我有一个圣地亚哥县的地址列表。我需要用R在Map上标出这些地址,并在每个地址周围画出10英里的半径。
使用tmap和tmaptools包将地址Map为点非常容易,但我不知道如何在每个位置周围画出10英里的半径。
使用tm_shape和tm_dots,我添加了size = 0.9。所以我可以画一个圆,但我需要它是一个10英里的半径。我找不到任何方法来使用tmap和tmap_tools。
有人知道如何在tm_dot周围绘制指定英里半径的Map吗?
这是我的R代码:
# Install packages ----
install.packages("tmap")
install.packages("tmaptools")
install.packages("readr")
# Load packages ----
library(tmap) # for making maps
library(tmaptools) # for the geocoding function
library(readr) # for reading in the csv file
# Import data ----
network_locations <- read_csv("clean_network_locations.csv")
# Geocoding addresses ----
coords3 <- geocode_OSM(q = network_locations$fullAddress, projection = 4326, as.sf = TRUE)
# Make map ----
tmap_mode("view")
#tm_shape with size
tm_shape(shp = coords3) +
tm_dots(title=NA, legend.show=FALSE, size=0.9, id="", alpha=0.5)
2条答案
按热度按时间axr492tv1#
您可以使用
sf::st_buffer()
在点周围创建10英里的缓冲区,然后将其作为单独的层添加到tmap
:创建于2023-03-24使用reprex v2.0.2
dfty9e192#
可能有一种方法可以直接在
tmap
中实现这一点,但我会使用sf
创建缓冲区,然后将这些缓冲区绘制为点下方的单独层。如下所示:下面是如何制作10英里缓冲区。你指定的距离取决于你使用的投影。我很确定4326使用的是米,所以我把10英里转换成了米
下面是绘图步骤
它看起来是这样的: