使用R中的shapefile显示区域的子集

时间:2016-01-04 18:55:12

标签: r gis shapefile

我有一个英国的shapefile:https://geoportal.statistics.gov.uk/Docs/Boundaries/Local_authority_district_(GB)_2014_Boundaries_(Generalised_Clipped).zip

我已将shapefile读入变量UK

>UK <- readOGR(dsn = "....."
>England <- UK

我只想显示英语地方管理局地区。它们在LAD_DEC_2014_GB_BGC.dbf中指定,其中LAD14CD以“E”开头

>UK@data

      LAD14CD                      LAD14NM                 LAD14NMW

0   E06000001                   Hartlepool                     <NA>
1   E06000002                Middlesbrough                     <NA>
2   E06000003         Redcar and Cleveland                     <NA>
371 W06000015                      Cardiff                 Caerdydd

>#filter UK@data and replace England@data with only English regions
>England@data <- UK@data$LAD14CD[c(grep("^E", UK$LAD14CD))]

>plot(England)

但grep命令似乎将shapefile更改为一个因子,这意味着该图如下所示: enter image description here

2 个答案:

答案 0 :(得分:4)

使用此命令:

England <- UK@data$LAD14CD[c(grep("^E", UK$LAD14CD))]

...您只是从数据槽中对一列进行了子集化,而不是整个shapefile并将其分配给England

这应该做的工作:

England <- UK[grep("^E", UK@data$LAD14CD),]

注意,你需要在那里使用尾随逗号!此外,您不需要在c()中包含grep语句,但这并不会对其造成伤害。

答案 1 :(得分:1)

我最终使用dplyrgrepl来改善事情:

library('rgdal')
library('dplyr')

UK <- readOGR(dsn="LAD_DEC_2014_GB_BGC.shp", layer="LAD_DEC_2014_GB_BGC") %>%
  subset(grepl("^E", LAD14CD))
plot(UK)