我试图阅读并绘制来自阿根廷的shp文件以创建自定义的等值线。我正在完全按照所有代码示例来加载和绘制这个地图,但没有任何工作。
R红色标志保持打开状态,因为R仍在处理信息,但从不绘制任何内容或停止工作。
这是我的屏幕,当我跑到“情节”,然后说Rstudio停止工作。知道为什么它不起作用吗?
答案 0 :(得分:1)
首先,ggplot2
似乎能够很好地处理这个问题:
library(rgdal)
library(ggplot2)
arg_shp <- readOGR("../data/arg_adm/ARG_adm1.shp", "ARG_adm1")
arg_shp_map <- fortify(arg_shp)
gg <- ggplot()
gg <- gg + geom_map(data=arg_shp_map, map=arg_shp_map,
aes(long, lat, map_id=id),
color="#2b2b2b", size=0.15, fill=NA)
gg <- gg + coord_map()
gg <- gg + ggthemes::theme_map()
gg
由于您使用的是GADM文件,因此您不需要使用外部shapefile,只需使用getData()
:
library(maptools)
library(raster)
arg_adm <- getData('GADM', country='ARG', level=1)
arg_adm_map <- fortify(arg_adm)
(上面的ggplot2
代码有效,只是将变量名称分出来。)
我无法让基础绘图系统绘制(在任何图形设备上)。我认为在海岸线的一部分有一些复杂的多边形。我们可以很轻松地处理这个问题:
library(maptools)
library(raster)
library(rgeos)
library(magrittr)
library(sp)
arg_adm <- getData('GADM', country='ARG', level=1)
gSimplify(arg_adm, 0.01, topologyPreserve=TRUE) %>%
SpatialPolygonsDataFrame(dat=arg_adm@data) -> new_arg
plot(new_arg, lwd=0.25)
(基础图默认边距及其处理投影的方式会产生不同大小的地图)
除非你需要边框精度,否则简化这样的shapefile可以节省大量的绘图时间。您也可以使用ggplot2
中的优化形状,以及阿根廷定制的地图投影:
new_arg_map <- fortify(new_arg)
gg <- ggplot()
gg <- gg + geom_map(data=new_arg_map, map=new_arg_map,
aes(long, lat, map_id=id),
color="#2b2b2b", size=0.15, fill=NA)
gg <- gg + ggalt::coord_proj("+proj=aeqd +lat_0=-37.869859624840764 +lon_0=-66.533203125")
gg <- gg + ggthemes::theme_map()
gg
(尽管如此,coord_map()
的默认墨卡托投影对于大多数用途来说已经足够了)
答案 1 :(得分:0)
据我所知,使用maptools阅读shp是可行的,但它的支持是有限的。您是否尝试使用rgdal::readOGR(dir, layer)
阅读它?
“环境”窗口显示您有一个“大&#39;对象,但它有多大?如果形状是国家或地区边界应该没有问题,但如果你拥有所有的道路或国家的所有街区的形状,事情会发生变化。
尝试使用单位测试:尝试绘制国际边界或法定边界。如果你能做到这一点,问题就是形状的大小。
PD:重新启动计算机并再试一次,如果Rstudio是唯一运行的程序,它会有所帮助。