绘制SHP文件R.

时间:2016-05-29 05:15:38

标签: r dictionary plot shapefile

我试图阅读并绘制来自阿根廷的shp文件以创建自定义的等值线。我正在完全按照所有代码示例来加载和绘制这个地图,但没有任何工作。

R红色标志保持打开状态,因为R仍在处理信息,但从不绘制任何内容或停止工作。

这是我的屏幕,当我跑到“情节”,然后说Rstudio停止工作。知道为什么它不起作用吗?

enter image description here

2 个答案:

答案 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

enter image description here

由于您使用的是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)

enter image description here

(基础图默认边距及其处理投影的方式会产生不同大小的地图)

除非你需要边框精度,否则简化这样的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

enter image description here

(尽管如此,coord_map()的默认墨卡托投影对于大多数用途来说已经足够了)

答案 1 :(得分:0)

据我所知,使用maptools阅读shp是可行的,但它的支持是有限的。您是否尝试使用rgdal::readOGR(dir, layer)阅读它?

“环境”窗口显示您有一个“大&#39;对象,但它有多大?如果形状是国家或地区边界应该没有问题,但如果你拥有所有的道路或国家的所有街区的形状,事情会发生变化。

尝试使用单位测试:尝试绘制国际边界或法定边界。如果你能做到这一点,问题就是形状的大小。

PD:重新启动计算机并再试一次,如果Rstudio是唯一运行的程序,它会有所帮助。