sp | sp格式的空间矢量对象及其函数方法简介
在前面的推文中,小编曾多次提到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")
为了创建仅包含坐标信息的点对象,可以仅保留该数据集中的x
和y
变量作为输入对象:
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格式的空间矢量对象及其函数方法简介相关推荐
- sf | 创建空间矢量对象及其投影设置
R语言的空间数据主要有sp和sf两种格式.本篇介绍使用sf工具包中的相关函数创建sf格式的空间矢量对象,以及设置和转换矢量对象的投影坐标信息. 1 创建空间矢量对象 1.1 sf对象的组成 sf对象是 ...
- sf | 空间矢量对象的“聚合”操作
前面介绍空间连接函数时(sf | 空间矢量对象的属性连接方法)提到,对于数值型属性,要想将属性连接后的几何要素在sf对象中整合成一行,需要额外执行"聚合"操作.所谓"聚合 ...
- sf | 空间矢量对象的属性连接方法
在处理空间矢量对象时,有时需要为它们增加新的属性数据.属性数据可以有两个来源:一是根据矢量对象各要素已有的数据进行信息匹配:二是利用空间位置关系把其他矢量对象的属性数据传递过来.前者是非空间方法,后者 ...
- sf | 空间矢量对象的几何信息处理方法
本篇介绍sf包的一些函数方法,这些函数方法都是用于处理空间矢量对象的几何信息. 提取对象几何信息 st_bbox:提取对象的地理或投影坐标范围: st_area:提取对象的各要素面积: st_leng ...
- raster | R语言中的空间栅格对象及其基本处理方法(Ⅱ):投影、属性提取
library(raster) 投影 设置投影 在使用raster()函数创建栅格对象时,调用crs参数可以定义其投影.投影参数具有默认值: r <- raster() crs(r) ## CR ...
- raster | R语言中的空间栅格对象及其基本处理方法(Ⅰ)
前面的系列推文已经完成了对R语言中的两个管理空间矢量数据的工具包(sf和sp)的介绍,以及空间自相关.空间插值等空间分析方法. 这里小编再推出一个系列来介绍R语言中管理空间栅格数据的工具包:raste ...
- SQL Server 2008空间数据应用系列四:基础空间对象与函数应用
SQL Server 2008空间数据应用系列四:基础空间对象与函数应用 原文:SQL Server 2008空间数据应用系列四:基础空间对象与函数应用 友情提示,您阅读本篇博文的先决条件如下: 1. ...
- 应用随机过程张波商豪_学术简报五相逆变器非正弦双随机空间矢量脉宽调制策略...
征稿 中国电工技术学会电机与系统学报(英文季刊) ☝ 点击上面标题查看详情 招聘 中国电工技术学会招聘学术期刊编辑 ☝ 点击上面标题查看详情 摘要 南京航空航天大学多电飞机电气系统工信部重点实验室 ...
- matlab 电压矢量开关,电压空间矢量研究及Matlab仿真
近年来,电机的空间矢量理论被引入到逆变器及其控制中,形成和发展了空间矢量PWM(SVPWM)控制思想.其原理就是利用逆变器各桥臂开关控制信号的不同组合,使逆变器输出电压空间矢量的运行轨迹尽可能接近圆形 ...
最新文章
- USACO09FEB Fair Shuttle
- usb linux 内核,Linux下USB内核之学习笔记
- 数据结构拾遗(2) --红黑树的设计与实现(中)
- 9 MM配置-主数据-维护物料管理的公司代码
- VS编辑代码时使用正则表达式去掉行号
- springboot 文件上传 各种姿势 解锁,策略模式简单运用
- 关于使用HTML或JS实现页面重定向的方法
- python读取钉钉考勤数据
- 智能推荐系统开发中的十个关键注意点
- python爬虫和java爬虫哪个好_应用数据下载
- 八个笑话,八个人生哲理
- 态度和态度改变:影响思维和情绪
- uniapp 快速实现简单首页布局
- RIoTBoard开发板系列笔记(四)—— 使用VPU硬件解码
- C语言系列之初识C语言(二)2021.10.19
- CDGA:应聘数仓岗,选择企业级别 or 算法团队?
- JetBrains-License-Server
- c语言区间内质数和合数各自输出
- 计算机病毒查杀功能软件有哪些,计算机病毒查杀方法
- 最硬核的图片批量下载插件-图片助手(ImageAssistant)
热门文章
- java request 克隆_Java 复制HttpServletRequest InputStream的方法 只需2步轻松搞定
- React 16.8.3 发布,构建用户界面的 JavaScript 库
- 让Grub 2来拯救你的 bootloader
- mysql 运维常见操作
- 运营商数据治理实践-郭岳
- UVA 1411 - Ants(二分图完美匹配)
- H3C vrrp *** ipsec 基本配置
- 在Windows XP中轻松发传真
- 配置Setting.xml文件提高maven更新下载jar包速度
- Scala 学习(四) 集合之List