在 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()
中,但这并没有什么坏处,只是没有必要。
我最终使用 dplyr
和 grepl
来简化事情:
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)
我有英国的 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()
中,但这并没有什么坏处,只是没有必要。
我最终使用 dplyr
和 grepl
来简化事情:
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)