空间多边形数据集+子集

问题描述 投票:0回答:1

我正在使用空间多边形数据框。数据可以在这里下载:qazxsw poi

这包含英格兰和威尔士的下层输出区域(lsoa)。

我需要对数据帧进行子集化,以便仅保留london lsoa11cd的多边形。

我有伦敦的lsoa11cd列表。它们介于E01000001和E01004765之间。我不确定如何继续对空间多边形进行子集化(参见附图)。在下面找到一个不起作用的尝试。

http://geoportal.statistics.gov.uk/datasets/lower-layer-super-output-areas-december-2011-super-generalised-clipped-boundaries-in-england-and-wales

london <- shapefile[substr(shapefile@data$lsoa11cd, -7 , -1) <= 1004765, ] london <- london[substr(london@data$lsoa11cd, -7 , -1) >= 1000001, ]

r
1个回答
1
投票

如果我正确地解释你的问题,这应该很好地工作:

使用Dataframe screenshot包中的shapefile函数读入shapefile:

raster

看起来所有的library(raster) # Read-in the data. This will create a SpatialPolygonsDataFrame with 34,753 features s <- shapefile('Lower_Layer_Super_Output_Areas_December_2011_Super_Generalised_Clipped__Boundaries_in_England_and_Wales.shp') 值都有一个字母和一个数字作为字符串中的前两个字符。让我们首先对数据进行子集化,以便只保留那些以'E'作为lsoa11cd值的第一个聊天对象。

lsoa11cd

现在我们可以从每个s <- s[grep("^[aE].*", s$lsoa11cd), ] 字符串中删除前两个字符并转换为数字变量,以便更轻松地进行子集化,如下所示:

lsoa11cd

然后,您可以在您指定的范围内简单地进行子集化:

s$lsoa11cd <- as.numeric(substring(s$lsoa11cd, 3)) 
© www.soinside.com 2019 - 2024. All rights reserved.