0 Comments

Spatial对象

发布于:2013-03-09  |   作者:广州网站建设  |   已聚集:人围观

      Spatial类是基类,只有两个槽,第一个是约束盒,它是一个数值坐标矩阵,拥有列名为c('min','max')的数值坐标,至少有两行,第一行指向东面(x-轴),第二行指向北面(y-轴),最常见的约束盒由Spatial子类中的数据自动生成而来。第二个是定义了坐标参考系的CRS类对象,在R中CRS(as.character(NA))可以用NA代表"缺失值",这是它的默认值。对Spatial*(*表示通配符)对象的操作应该更新或将值复制到新创建的Spatial*类对象中。可以使用getClass方法来获取类的完整定义,包括槽的名字及其内容的类型:广州网站建设


  1. > library(sp)  
  2.  
  3. > getClass("Spatial")  
  4.  
  5. Slots:  
  6.  
  7. Name: bbox proj4string  
  8. Class: matrix CRS  
  9.  
  10. Known Subclasses:  
  11. Class "SpatialPoints", directly  
  12. Class "SpatialLines", directly  
  13. Class "SpatialPolygons", directly  
  14. Class "SpatialPointsDataFrame", by class "SpatialPoints", distance 2  
  15. Class "SpatialPixels", by class "SpatialPoints", distance 2  
  16. Class "SpatialGrid", by class "SpatialPoints", distance 3  
  17. Class "SpatialPixelsDataFrame", by class "SpatialPoints", distance 3  
  18. Class "SpatialGridDataFrame", by class "SpatialPoints", distance 4  
  19. Class "SpatialLinesDataFrame", by class "SpatialLines", distance 2  
  20. Class "SpatialPolygonsDataFrame", by class "SpatialPolygons",distance 2  

 

       如运行结果所示,getClass方法也返回已知的子类,在它们定义中显示了包括Spatial类在内的若干类。这也显示了本章所要介绍的内容,即将基类转换为更丰富的表达形式。但是我们应该先简单地介绍一下坐标参考系(CRS)类,在第4章中将进行详细介绍:

  1. > getClass("CRS")  
  2.  
  3. Slots:  
  4.  
  5. Name: projargs  
  6. Class: character  

 

      该类只有一个字符串作为唯一的槽值,它有可能是一个缺失值。如果它不是缺失值,则应该是一个用于描述投影(在4.1.2节中有更多详细的介绍)的PROJ.4格式的字符串。对于地理坐标最简单的字符串是 "+proj=longlat",使用"longlat"说明在sp类中向东总是在向北前。让我们从一个约束盒矩阵创建一个简单的Spatial对象和一个缺失的坐标参考系:
广州网站建设
  1. > m <- matrix(c(0, 0, 1, 1), ncol = 2dimnames = list(NULL,      c("min", "max")))  
  2. > crs <- CRS(projargs = as.character(NA))  
  3. > crs  
  4.  
  5. CRS arguments: NA  
  6.  
  7. > S <- Spatial(bbox = mproj4string = crs)  
  8. > S  
  9.  
  10. An object of class "Spatial"  
  11. Slot "bbox":     min  max  
  12. [1,]               0    1  
  13. [2,]               0    1  
  14.  
  15. Slot "proj4string":  
  16. CRS arguments: NA  

 

      我们本来可以使用new方法来创建对象,但更喜欢使用与它们实例化时的类有相同名字的辅助函数。如果所知的对象没被投影,则会理性地检查坐标轴的范围(在此超过了地理坐标的可行范围):

  1. > Spatial(matrix(c(350, 85, 370, 95), ncol = 2dimnames = list(NULL,  
  2. + c("min", "max"))), proj4string = CRS("+longlat"))  
  3. Error in validityMethod(object) : Geog raphical CRS given to  
  4. non-conformant data  
飞机