【问题标题】:display a subset of regions using a shapefile in R使用 R 中的 shapefile 显示区域子集
【发布时间】:2016-01-04 18:55:11
【问题描述】:

我有一个英国的 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 更改为一个因子,这意味着绘图如下所示:

【问题讨论】:

  • 问题是 plot(UK) 工作正常,但我似乎无法过滤这些区域
  • 可能是UK@data$LAD14CD[substr(UK$LAD14CD,1) == "E"]?
  • 谢谢,这获得了我需要的 ID,但我需要使用这些 ID 对 UK@Data 进行子集化。我可以这样做: England@data[England$LAD14CD %in% UK@data$LAD14CD[substr(UK$LAD14CD,1,1) == "E"],] 但是我如何用这个覆盖 England@data新子集?

标签: r gis shapefile


【解决方案1】:

使用这个命令:

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

...您只是从数据槽中提取一列,而不是整个 shapefile 并将其分配给 England

这应该可以完成工作:

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

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

【讨论】:

  • 它出错了:[.data.frame(x@data, i, j, ..., drop = FALSE) 中的错误:选择了未定义的列
  • 以下得到正确的行: UK@data[UK$LAD14CD %in% UK$LAD14CD[c(grep("^E", UK$LAD14CD))],] 但必须有更整洁的方式?您的代码仍然给出与以前相同的错误:(
  • 您的链接不会立即导致下载,因此很难测试。如果您发布UK@datahead 会更容易为您提供帮助
  • 对不起!我已经更新了链接。 head 命令与上面发布的数据几乎相同
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2022-10-06
    • 1970-01-01
    • 1970-01-01
    • 2011-01-28
    • 2020-04-07
    • 2013-02-22
    • 2014-02-18
    • 2019-10-30
    • 2015-04-18
    相关资源
    最近更新 更多