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

display a subset of regions using a shapefile in R

我有英国的 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 更改为一个因子,这意味着绘图看起来像这样:

使用此命令:

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

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

这应该可以完成工作:

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

注意,后面需要逗号!此外,您不需要将 grep 语句包装在 c() 中,但这并没有什么坏处,只是没有必要。

我最终使用 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)