sf | 空间矢量对象的几何信息处理方法
本篇介绍sf
包的一些函数方法,这些函数方法都是用于处理空间矢量对象的几何信息。
提取对象几何信息
st_bbox:提取对象的地理或投影坐标范围;
st_area:提取对象的各要素面积;
st_length:提取对象的各要素周长;
st_geometry:提取对象的几何信息列;
st_coordinates:提取各要素几何信息的地理或投影坐标。
对象类型转换
st_boundary:提取各要素的边界,可实现面对象转为线对象的功能;
st_centriod:提取各要素的质心,可实现面对象转为点对象的功能;
st_polygonize:实现闭合线对象转换为面对象;
st_cast:类型转换通用函数,前篇已经有所介绍(sf | 空间矢量对象的“聚合”操作);
st_voronoi:生成泰森多边形,相当于把点对象转为面对象。
叠置分析
st_interp:生成对象内要素两两之间的交集;
st_difference:生成对象内要素两两之间的差集;
st_sym_difference:交集取反操作,即去除对象内两两要素的相交部分,保留不相交部分;
st_crop:用指定地理或投影坐标确定的矩形范围截取矢量对象;
使用以上函数并配合st_union
函数可以实现ArcGIS中的一系列操作:
library(sf)
library(tidyverse)
# 示例数据
nc <- st_read(system.file("shape/nc.shp", package="sf")) %>% filter(AREA > 0.2)
bbox <- st_bbox(nc) + c(-0.1,0.4,0.1,0.1)
ncgrid <- st_sf(geom = st_make_grid(st_as_sfc(bbox), n = c(4,5)))par(plt = c(0,1,0,0.8))
plot(st_geometry(nc), main = "nc",col = sf.colors(categorical = TRUE, alpha = .5))
plot(st_geometry(ncgrid), main = "ncgrid",col = sf.colors(categorical = TRUE, alpha = .5))
# 相交操作
plot(st_geometry(st_interp(ncgrid, nc)),col = sf.colors(categorical = TRUE, alpha = .5),main = "Intersect")
# 裁剪操作
plot(st_geometry(st_interp(ncgrid, st_union(nc))),col = sf.colors(categorical = TRUE, alpha = .5),main = "Clip")
# 擦除操作
st_difference(ncgrid, st_union(nc)) -> erase
plot(st_geometry(erase),col = sf.colors(categorical = TRUE, alpha = .5),main = "Erase")
# 交集取反操作
st_sym_difference(ncgrid, st_union(nc)) %>%st_difference(st_union(st_interp(ncgrid, st_union(nc)))) -> symdiff
plot(st_geometry(symdiff),col = sf.colors(categorical = TRUE, alpha = .5),main = "SymDiff")
# 矩形切块
bbox <- c(xmin = -79, ymin = 34, xmax = -78, ymax = 34.8)
plot(st_geometry(st_crop(nc, bbox)),col = sf.colors(categorical = TRUE, alpha = .5),main = "切块")
邻域分析
st_distance:计算两个矢量对象内两两要素质心之间的距离,当第二个对象缺省时计算第一个对象各要素相互之间的距离;
st_nearest_feature:返回第二个对象中与第一个对象各要素距离最近的要素索引;
st_nearest_points:返回两个矢量对象各要素之间距离最近的两个点之间的线路;
st_buffer:生成缓冲区。
nc <- read_sf(system.file("gpkg/nc.gpkg", package="sf"))
par(plt = c(0,1,0,0.45))
plot(st_geometry(nc), main = "最近点对")
ls = st_nearest_points(nc[1,], nc)
plot(ls, col = 'red', add = TRUE)par(plt = c(0,1,0,0.9))
ncbuffer <- st_buffer(st_union(filter(nc, AREA > 0.2)), dist = 0.2)
plot(st_geometry(ncbuffer), col = "grey", main = "缓冲区")
plot(st_geometry(nc), add = T)
plot(st_boundary(st_union(filter(nc, AREA > 0.2))), add = T, col = "red")
其他函数
st_simplify:简化对象的拓扑关系;
st_make_grid:在指定地理或投影坐标范围内创建网格;
st_jitter:随机偏移矢量对象各要素的位置;
st_sample:在面数据内部按某种规则选取若干个点(默认随机选取);
st_line_sample:在线数据上按某种规则选取若干点(默认均匀选取)。
nc <- filter(nc, AREA > 0.2)
# 随机偏移位置
ncjitter <- st_jitter(nc, factor = 0.01)
par(plt = c(0,1,0,0.85))
plot(st_geometry(nc), main = "随机偏移")
plot(st_geometry(ncjitter), add = T, border = "red")
# 在面内选点
ncsample <- st_sample(nc, 100)
plot(st_geometry(nc), main = "面内选点")
plot(st_geometry(ncsample), add = T, col = "red")
# 在线上选点
st_boundary(st_union(nc)) %>% st_cast("LINESTRING") %>%st_transform(2246) -> ncboundary
linesample <- st_line_sample(st_geometry(ncboundary), n = 50)
plot(ncboundary, main = "线上选点")
plot(linesample, add = T, col = "red")
sf | 空间矢量对象的几何信息处理方法相关推荐
- sf | 空间矢量对象的属性连接方法
在处理空间矢量对象时,有时需要为它们增加新的属性数据.属性数据可以有两个来源:一是根据矢量对象各要素已有的数据进行信息匹配:二是利用空间位置关系把其他矢量对象的属性数据传递过来.前者是非空间方法,后者 ...
- sf | 空间矢量对象的“聚合”操作
前面介绍空间连接函数时(sf | 空间矢量对象的属性连接方法)提到,对于数值型属性,要想将属性连接后的几何要素在sf对象中整合成一行,需要额外执行"聚合"操作.所谓"聚合 ...
- sf | 创建空间矢量对象及其投影设置
R语言的空间数据主要有sp和sf两种格式.本篇介绍使用sf工具包中的相关函数创建sf格式的空间矢量对象,以及设置和转换矢量对象的投影坐标信息. 1 创建空间矢量对象 1.1 sf对象的组成 sf对象是 ...
- raster | R语言中的空间栅格对象及其基本处理方法(Ⅰ)
前面的系列推文已经完成了对R语言中的两个管理空间矢量数据的工具包(sf和sp)的介绍,以及空间自相关.空间插值等空间分析方法. 这里小编再推出一个系列来介绍R语言中管理空间栅格数据的工具包:raste ...
- raster | R语言中的空间栅格对象及其基本处理方法(Ⅱ):投影、属性提取
library(raster) 投影 设置投影 在使用raster()函数创建栅格对象时,调用crs参数可以定义其投影.投影参数具有默认值: r <- raster() crs(r) ## CR ...
- sp | sp格式的空间矢量对象及其函数方法简介
在前面的推文中,小编曾多次提到R语言的空间矢量数据有sp和sf两种类型.因为sf对象有诸多优点,所以前面对其做了重点介绍.本篇,我们来简单地介绍下sp对象. 创建sp对象 下图展示了sp格式的各类对象 ...
- raster | R语言中的空间栅格对象及其基本处理方法(Ⅲ):切片/掩膜、图层叠加...
本篇介绍如下处理方法: 根据矢量数据的范围对栅格数据进行裁剪: 通过对栅格数据进行运算得到新的栅格对象,如通过人口和GDP的栅格数据得到人均GDP的栅格数据. 示例的栅格数据是2015年中国人口和GD ...
- raster | R语言中的空间栅格对象及其基本处理方法(Ⅳ):数据聚合、重采样
本篇示例数据: library(raster) # 2015年中国人口空间分布公里网格数据集 # 数据来源:https://www.resdc.cn/DOI/DOI.aspx?DOIid=32 pop ...
- Geometry(几何对象定义空间位置和关联几何形状)
Geometry 描述 几何对象定义空间位置和关联几何形状. 讨论 在许多地理处理工作流中,您可能需要使用坐标和几何信息运行特定操作,但不一定想经历创建新(临时)要素类.使用光标填充要素类.使用要素类 ...
最新文章
- 深圳美景品牌策划机构:美景、BOBDOG传媒合作论坛广州举行
- rust编程之道 pdf_深挖一篇嵌入式内核论文之后,我发现 Rust 正在悄悄改变世界...
- Cannot send session cache limiter - headers already sent错误解决方法
- acwing算法题--整数分解
- 自由自在珍珠奶茶以市场细分来创新品牌
- ThingJS:部署物联网不用买买买,互联互动是切入点
- Publishing failed with multiple errors和Timeout waiting for Tomcat v5.5的解决方法
- hdu 3405 world islands
- dm数据库 linux版下载,linux环境搭建DM数据库
- key redis 模糊查询个数_Reids Lua 模糊查询所有key 及 相对应的集合总数
- ruby wxruby rubytk的安装
- python下载哪个版本好-究竟哪个版本的Python是最快的?
- WPF 打印不显示的元素
- 关于RCP引用jar包的几个问题。
- 5.3 数值分析: 差商的定义及性质
- 樊登读书搞定读后感_《读懂一本书:樊登读书法》读后感
- android listview viewgroup,Android View及ViewGroup事件分发机制总结
- NS3_Tutorial 中文版: 第一章 简介
- 校友诗选_母校百年 同学聚会(来稿刊登)
- 计算机表格小边框如何关闭,【解惑】怎样去掉表格中打勾的小方格?
热门文章
- VMware NSX词汇表
- VSAN 个版本对应vSphere版本
- Spring Boot学习总结(23)——Spring Boot 实践经验总结
- Redis学习总结(8)——Redis常见使用场景总结
- Maven学习总结(46)——Maven跳过单元测试的两种方法及其区别(-Dmaven.test.skip=true与-DskipTests)
- PHP学习总结(3)——PHP入门篇之PHP的echo语句
- 使用cdn和npm引入的区别_中央空调和新风系统有什么区别?有必要一起装吗?
- linux动态调试工具od,OllyDBG(OD动态调试工具)
- docker mysql5.7.19_Docker19.03.13下安装Mysql57
- Prometheus Alertmanager 报警模块