如何对一个shapefile进行子集划分。

5

“Property1A”形状文件的数据集为:

 df
#      suburb        area asst
# 0     Te Aro   14.541780 R076
# 1     Te Aro    7.655428 R076
# 2     Te Aro 3189.976134 <NA>
# 3     Te Aro  242.173386 0132
# 4     Karori  537.697290 R003
# 5    Pipitea 1116.954993 R105
# 6    Mt Cook  106.099900 R151
# 7     Te Aro   83.307421 R057
# 8 Aro Valley  544.665788 R105
# 9 Aro Valley   59.726882 R110

当我尝试对区域“Te Aro”进行子集操作时,我使用的代码如下所示:

TeAro <- subset(Property1A, suburb == "Te Aro") 

但是出现了一个错误:
TeAro <- subset(Property1A, suburb == "Te Aro")
# Error in eval(expr, envir, enclos) : object 'suburb' not found

为什么会出现错误?

一个可重现的例子。您是否创建了一个名为Property1A的对象(您的示例表明您有一个名为df的对象)?您是如何读取这个shape文件的? - mnel
1
你说的“Property1A”是一个shapefile,这是什么意思?你是如何将它读入到R中的? - mnel

载入库(rgdal)

载入库(shapefiles)

Property1A <- readOGR(".", "Properties_1A")

一个shapefile由四个文件组成,分别是dbf文件、sbn文件、shp文件和shx文件。 我将shapefile读入R,并使用ShapeFileName@data获取其中包含的数据。我检查了shapefile中的数据,并确认其中包含变量“suburb”,但我感到困惑的是为什么我无法通过“suburb”对shapefile进行子集操作。
- Bingbing Liu
2
Property1[Property1$suburb %in% "Te Aro",] - user3710546
好的,明白了。也许这是一个多边形 shapefile 文件,在我尝试 TeAro <- subset(Property1A, Property1A$suburb == "Te Aro") 时它有效果。 - Bingbing Liu
显示剩余6条评论
1个回答

11

subset的名称应该可以使用。如果您使用readOGR进行读取,则无需安装shapefiles软件包:

> require(rgdal)
Loading required package: rgdal
Loading required package: sp
rgdal: version: 0.8-14, (SVN revision 496)
Geospatial Data Abstraction Library extensions to R successfully loaded
Loaded GDAL runtime: GDAL 1.9.0, released 2011/12/29
Path to GDAL shared files: /usr/share/gdal/1.9
Loaded PROJ.4 runtime: Rel. 4.8.0, 6 March 2012, [PJ_VERSION: 470]
Path to PROJ.4 shared files: (autodetected)

将印度各州的169个多边形转换为空间对象:

> India = readOGR(".","india_state")
OGR data source with driver: ESRI Shapefile 
Source: ".", layer: "india_state"
with 169 features and 3 fields
Feature type: wkbPolygon with 2 dimensions

现在按名称进行子集筛选:

> Gujarat = subset(India, NAME=="Gujarat")
> dim(Gujarat)
[1] 12  3
> dim(India)
[1] 169   3

我可以绘制这些对象,它们可以很好地映射:

> plot(Gujarat)

如果没有您的数据或者不知道您使用的R及其包的版本,那么我们无法确定为什么这对您失败了。

包:rgdal 版本:0.8-14

包:sp 版本:1.0-14

R版本3.0.2....


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接