Spatial类是基类,只有两个槽,第一个是约束盒,它是一个数值坐标矩阵,拥有列名为c('min','max')的数值坐标,至少有两行,第一行指向东面(x-轴),第二行指向北面(y-轴),最常见的约束盒由Spatial子类中的数据自动生成而来。第二个是定义了坐标参考系的CRS类对象,在R中CRS(as.character(NA))可以用NA代表"缺失值",这是它的默认值。对Spatial*(*表示通配符)对象的操作应该更新或将值复制到新创建的Spatial*类对象中。可以使用getClass方法来获取类的完整定义,包括槽的名字及其内容的类型:广州网站建设
- > library(sp)
- > getClass("Spatial")
- Slots:
- Name: bbox proj4string
- Class: matrix CRS
- Known Subclasses:
- Class "SpatialPoints", directly
- Class "SpatialLines", directly
- Class "SpatialPolygons", directly
- Class "SpatialPointsDataFrame", by class "SpatialPoints", distance 2
- Class "SpatialPixels", by class "SpatialPoints", distance 2
- Class "SpatialGrid", by class "SpatialPoints", distance 3
- Class "SpatialPixelsDataFrame", by class "SpatialPoints", distance 3
- Class "SpatialGridDataFrame", by class "SpatialPoints", distance 4
- Class "SpatialLinesDataFrame", by class "SpatialLines", distance 2
- Class "SpatialPolygonsDataFrame", by class "SpatialPolygons",distance 2
如运行结果所示,getClass方法也返回已知的子类,在它们定义中显示了包括Spatial类在内的若干类。这也显示了本章所要介绍的内容,即将基类转换为更丰富的表达形式。但是我们应该先简单地介绍一下坐标参考系(CRS)类,在第4章中将进行详细介绍:
- > getClass("CRS")
- Slots:
- Name: projargs
- Class: character
该类只有一个字符串作为唯一的槽值,它有可能是一个缺失值。如果它不是缺失值,则应该是一个用于描述投影(在4.1.2节中有更多详细的介绍)的PROJ.4格式的字符串。对于地理坐标最简单的字符串是 "+proj=longlat",使用"longlat"说明在sp类中向东总是在向北前。让我们从一个约束盒矩阵创建一个简单的Spatial对象和一个缺失的坐标参考系:
广州网站建设
- > m <- matrix(c(0, 0, 1, 1), ncol = 2, dimnames = list(NULL, c("min", "max")))
- > crs <- CRS(projargs = as.character(NA))
- > crs
- CRS arguments: NA
- > S <- Spatial(bbox = m, proj4string = crs)
- > S
- An object of class "Spatial"
- Slot "bbox": min max
- [1,] 0 1
- [2,] 0 1
- Slot "proj4string":
- CRS arguments: NA
我们本来可以使用new方法来创建对象,但更喜欢使用与它们实例化时的类有相同名字的辅助函数。如果所知的对象没被投影,则会理性地检查坐标轴的范围(在此超过了地理坐标的可行范围):
- > Spatial(matrix(c(350, 85, 370, 95), ncol = 2, dimnames = list(NULL,
- + c("min", "max"))), proj4string = CRS("+longlat"))
- Error in validityMethod(object) : Geog raphical CRS given to
- non-conformant data



