提问者:小点点

如何在R地图上绘制位置?


library(ggmap) # -- for geocoding, obtaining city locations
readRDS("gadm36_IND_2_sp.rds")
ind2 = gadm

最后的输出如下:

插槽“bbox”:最小最大值 x 68.186249 97.41516 y 6.754256 35.50133

插槽 “proj4string”: CRS 参数: proj=longlat datum=WGS84 no_defs ellps=WGS84 towgs84=0,0,0 eval(expr, envir, enclos) 中的错误: 找不到对象 'gadm' 回溯:

之后,下一个代码是:

# plotting districts of a State, in this case West Bengal
wb2 = (ind2[ind2$NAME_1=="West Bengal",])

nam = c("Purulia","Bankura","Midnapur")
pos = geocode(nam)
tlat = pos$lat+0.05    # -- the city name will be above the marker
cities = data.frame(nam, pos$lon,pos$lat,tlat)
names(cities)[2] = "lon"
names(cities)[3] = "lat"


text1 = list("panel.text", cities$lon, cities$tlat, cities$nam,col="red", cex = 0.75)
mark1 = list("panel.points", cities$lon, cities$lat, col="blue")
text2 = list("panel.text",87.0,26.0,"GADM map", col = "dark green", cex = 1.2)
spplot(wb2, "NAME_1",
sp.layout=list(text1,mark1, text2),
main="West Bengal Districts",
colorkey=FALSE, scales=list(draw=TRUE))

以上代码的输出是:eval(expr,envir,enclos)中的错误:未找到对象“in D2”trace back:

如何在地图上绘制位置?


共1个答案

匿名用户

您没有提供足够的信息来创建可重现的问题,但我能够将一些类似的数据放在一起,然后使用以下代码在地图上绘制您的位置。我选择使用简单的要素对象而不是空间对象。

首先,创建了一个简单的特征对象,其名称和列表列具有城市的 lon/lat。

pts.sf <- st_as_sf(city_pts, pts.sfc)

然后创建了底图。

wmap <- rnaturalearth::ne_countries(scale = 'medium', type = 'map_units', returnclass = 'sf')
india <- wmap %>% filter(admin == "India") 
imap <- india$geometry
st_crs(imap) <- 4326

然后把这些点标绘在底图上。

my_plot <- ggplot(data = imap) + 
    geom_sf() + 
    geom_sf(data = pts.sf, aes(),
    fill = "blue", color = "blue", size=10, alpha=0.5 ) +
    coord_sf(xlim = c(85, 90), ylim = c(21, 24), expand = FALSE) + 
    xlab("Longitude") + ylab("Latitude")

my_plot

该图在下面的链接中提供。好问题!