在前面的推文中,小编曾多次提到R语言的空间矢量数据有sp和sf两种类型。因为sf对象有诸多优点,所以前面对其做了重点介绍。本篇,我们来简单地介绍下sp对象。

创建sp对象

下图展示了sp格式的各类对象名称及其特征:

  • 以点对象(points)为例,SpatialPoints表示只包含坐标信息、没有属性信息的点对象,SpatialPointsDataFrame表示既包含坐标信息、也包含属性信息的点对象。

sp对象的创建函数和它的类型名称相同(上图)。如创建不带属性数据的点对象的函数为SpatialPoints(),创建带属性数据的点对象的函数为SpatialPointsDataFrame()。下面依次举例说明。

点对象

SpatialPoints()函数的语法结构如下:

SpatialPoints(coords, proj4string = CRS(as.character(NA)),bbox = NULL)
  • coords:点的坐标,数据结构为矩阵或数据框;

  • proj4string:对应的投影坐标系;

  • bbox:坐标各维度的范围,可忽略。

SpatialPointsDataFrame()函数的语法结构如下:

SpatialPointsDataFrame(coords, data, coords.nrs = numeric(0), proj4string = CRS(as.character(NA)),match.ID, bbox = NULL)
  • data:存储属性数据的数据框。

示例数据为sp工具包中的meuse数据集:

library(sp)
data("meuse")

为了创建仅包含坐标信息的点对象,可以仅保留该数据集中的xy变量作为输入对象:

xy <- subset(meuse, select = c(x, y))
sp.pts <- SpatialPoints(xy)

使用SpatialPointsDataFrame()函数需要将坐标信息和属性信息分别保存在一个数据框中:

xy <- subset(meuse, select = c(x, y))
df <- subset(meuse, select = -c(x, y))
sp.dfpts <- SpatialPointsDataFrame(xy, df)# coords参数也可以使用无属性的点对象
sp.dfpts <- SpatialPointsDataFrame(sp.pts, df)

创建包含属性信息的对象,还有一种更便捷的方法。如下例:

# 方法1
sp.dfpts2 <- meuse
coordinates(sp.dfpts2) <- ~ x + y# 方法2
sp.dfpts3 <- meuse
coordinates(sp.dfpts3) <- c("x", "y")

网格对象

创建网格对象前需要先创建一个网格的拓扑结构,使用函数为GridTopology()。语法结构如下:

GridTopology(cellcentre.offset,cellsize, cells.dim)
  • cellcentre.offset:网格中心在各维度的坐标起点;

  • cellsize:网格在各维度的单位大小;

  • cells.dim:各维度的网格个数。

示例:

gt <- GridTopology(c(0,0), c(0.5,1), c(10,5))

很容易理解,创建只包含坐标信息的网格对象的函数为SpatialGrid()

SpatialGrid(grid, proj4string = CRS(as.character(NA)))
sp.grid <-SpatialGrid(gt)
plot(sp.grid)

创建包含属性信息的网格对象的函数为SpatialGridDataFrame():

df <- data.frame(attr = 1:50)
sp.dfgrid <- SpatialGridDataFrame(gt, df)

同点对象一样,网格对象也可以通过coordinates(sp) <- ~ x + y的方式创建。需要使用base工具包中的expand.grid()函数:

expand.grid(..., KEEP.OUT.ATTRS = TRUE,stringsAsFactors = TRUE)
  • ...:各维度的坐标值。

示例如下:

gt2 <- expand.grid(x = seq(0, 4.5, 0.5),y = seq(0, 4, 1))
df2 <- data.frame(attr = 50)
sp.dfgrid2 <- data.frame(gt2, df2)
coordinates(sp.dfgrid2) <- ~ x + y

线、面对象

创建线、面对象的方法基本和点、网格对象类似,但远不如后者常用,在这里就不再进行介绍了,有需要的读者可以访问下方链接查看官方说明文档:

https://mirrors.tuna.tsinghua.edu.cn/CRAN/web/packages/sp/vignettes/intro_sp.pdf

函数方法

sp对象的数据结构如下图:

  • data:属性信息;

  • coords:坐标信息;

  • bbox:坐标范围;

  • proj4string:投影信息。

使用@符号可以提取sp对象的上述信息,如:

sp.dfpts@data

基本函数

下面列举了一些常用函数,这些函数的功能及名称基本与sf工具包的函数类似:

  • []:提取属性数据中的列或行;

  • [[]]:提取属性数据中的列,即变量;

  • dimensions:查询维度;

  • bbox:查询各维度的坐标范围;

  • coordinates:提取坐标信息;

  • geometry:提取几何信息;

  • spplot:绘制地图,即可视化。

rgeos工具包

对sp对象进行处理的更多函数可见rgeos工具包。下图中的红色框内的函数,其名称以g开头,功能基本与sf工具包中的st_*系列函数类似:

说明

sp对象是R语言最初采用的数据结构形式,但近年来逐渐被sf对象所替代,而R中的许多空间处理方法对两者格式同样适用,因此小编建议以掌握sf对象的处理方法为主,sp对象的处理方法了解即可。

sp | sp格式的空间矢量对象及其函数方法简介相关推荐

  1. sf | 创建空间矢量对象及其投影设置

    R语言的空间数据主要有sp和sf两种格式.本篇介绍使用sf工具包中的相关函数创建sf格式的空间矢量对象,以及设置和转换矢量对象的投影坐标信息. 1 创建空间矢量对象 1.1 sf对象的组成 sf对象是 ...

  2. sf | 空间矢量对象的“聚合”操作

    前面介绍空间连接函数时(sf | 空间矢量对象的属性连接方法)提到,对于数值型属性,要想将属性连接后的几何要素在sf对象中整合成一行,需要额外执行"聚合"操作.所谓"聚合 ...

  3. sf | 空间矢量对象的属性连接方法

    在处理空间矢量对象时,有时需要为它们增加新的属性数据.属性数据可以有两个来源:一是根据矢量对象各要素已有的数据进行信息匹配:二是利用空间位置关系把其他矢量对象的属性数据传递过来.前者是非空间方法,后者 ...

  4. sf | 空间矢量对象的几何信息处理方法

    本篇介绍sf包的一些函数方法,这些函数方法都是用于处理空间矢量对象的几何信息. 提取对象几何信息 st_bbox:提取对象的地理或投影坐标范围: st_area:提取对象的各要素面积: st_leng ...

  5. raster | R语言中的空间栅格对象及其基本处理方法(Ⅱ):投影、属性提取

    library(raster) 投影 设置投影 在使用raster()函数创建栅格对象时,调用crs参数可以定义其投影.投影参数具有默认值: r <- raster() crs(r) ## CR ...

  6. raster | R语言中的空间栅格对象及其基本处理方法(Ⅰ)

    前面的系列推文已经完成了对R语言中的两个管理空间矢量数据的工具包(sf和sp)的介绍,以及空间自相关.空间插值等空间分析方法. 这里小编再推出一个系列来介绍R语言中管理空间栅格数据的工具包:raste ...

  7. SQL Server 2008空间数据应用系列四:基础空间对象与函数应用

    SQL Server 2008空间数据应用系列四:基础空间对象与函数应用 原文:SQL Server 2008空间数据应用系列四:基础空间对象与函数应用 友情提示,您阅读本篇博文的先决条件如下: 1. ...

  8. 应用随机过程张波商豪_学术简报五相逆变器非正弦双随机空间矢量脉宽调制策略...

    征稿 中国电工技术学会电机与系统学报(英文季刊) ☝  点击上面标题查看详情 招聘 中国电工技术学会招聘学术期刊编辑 ☝  点击上面标题查看详情 摘要 南京航空航天大学多电飞机电气系统工信部重点实验室 ...

  9. matlab 电压矢量开关,电压空间矢量研究及Matlab仿真

    近年来,电机的空间矢量理论被引入到逆变器及其控制中,形成和发展了空间矢量PWM(SVPWM)控制思想.其原理就是利用逆变器各桥臂开关控制信号的不同组合,使逆变器输出电压空间矢量的运行轨迹尽可能接近圆形 ...

最新文章

  1. USACO09FEB Fair Shuttle
  2. usb linux 内核,Linux下USB内核之学习笔记
  3. 数据结构拾遗(2) --红黑树的设计与实现(中)
  4. 9 MM配置-主数据-维护物料管理的公司代码
  5. VS编辑代码时使用正则表达式去掉行号
  6. springboot 文件上传 各种姿势 解锁,策略模式简单运用
  7. 关于使用HTML或JS实现页面重定向的方法
  8. python读取钉钉考勤数据
  9. 智能推荐系统开发中的十个关键注意点
  10. python爬虫和java爬虫哪个好_应用数据下载
  11. 八个笑话,八个人生哲理
  12. 态度和态度改变:影响思维和情绪
  13. uniapp 快速实现简单首页布局
  14. RIoTBoard开发板系列笔记(四)—— 使用VPU硬件解码
  15. C语言系列之初识C语言(二)2021.10.19
  16. CDGA:应聘数仓岗,选择企业级别 or 算法团队?
  17. JetBrains-License-Server
  18. c语言区间内质数和合数各自输出
  19. 计算机病毒查杀功能软件有哪些,计算机病毒查杀方法
  20. 最硬核的图片批量下载插件-图片助手(ImageAssistant)

热门文章

  1. java request 克隆_Java 复制HttpServletRequest InputStream的方法 只需2步轻松搞定
  2. React 16.8.3 发布,构建用户界面的 JavaScript 库
  3. 让Grub 2来拯救你的 bootloader
  4. mysql 运维常见操作
  5. 运营商数据治理实践-郭岳
  6. UVA 1411 - Ants(二分图完美匹配)
  7. H3C vrrp *** ipsec 基本配置
  8. 在Windows XP中轻松发传真
  9. 配置Setting.xml文件提高maven更新下载jar包速度
  10. Scala 学习(四) 集合之List