如何对shapefile进行子集化

时间:2014-09-23 01:15:36

标签: r shapefile

shapefile“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”设置shapefile的子集时,我使用的代码是:

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

但是有一个错误:

TeAro <- subset(Property1A, suburb == "Te Aro")
# Error in eval(expr, envir, enclos) : object 'suburb' not found

为什么会出错?

1 个答案:

答案 0 :(得分:5)

带有名字的

subset应该有效。如果您正在阅读shapefiles,则不需要readOGR包:

> 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 ....