本篇介绍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 | 空间矢量对象的几何信息处理方法相关推荐

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

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

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

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

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

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

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

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

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

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

  6. sp | sp格式的空间矢量对象及其函数方法简介

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

  7. raster | R语言中的空间栅格对象及其基本处理方法(Ⅲ):切片/掩膜、图层叠加...

    本篇介绍如下处理方法: 根据矢量数据的范围对栅格数据进行裁剪: 通过对栅格数据进行运算得到新的栅格对象,如通过人口和GDP的栅格数据得到人均GDP的栅格数据. 示例的栅格数据是2015年中国人口和GD ...

  8. raster | R语言中的空间栅格对象及其基本处理方法(Ⅳ):数据聚合、重采样

    本篇示例数据: library(raster) # 2015年中国人口空间分布公里网格数据集 # 数据来源:https://www.resdc.cn/DOI/DOI.aspx?DOIid=32 pop ...

  9. Geometry(几何对象定义空间位置和关联几何形状)

    Geometry 描述 几何对象定义空间位置和关联几何形状. 讨论 在许多地理处理工作流中,您可能需要使用坐标和几何信息运行特定操作,但不一定想经历创建新(临时)要素类.使用光标填充要素类.使用要素类 ...

最新文章

  1. 深圳美景品牌策划机构:美景、BOBDOG传媒合作论坛广州举行
  2. rust编程之道 pdf_深挖一篇嵌入式内核论文之后,我发现 Rust 正在悄悄改变世界...
  3. Cannot send session cache limiter - headers already sent错误解决方法
  4. acwing算法题--整数分解
  5. 自由自在珍珠奶茶以市场细分来创新品牌
  6. ThingJS:部署物联网不用买买买,互联互动是切入点
  7. Publishing failed with multiple errors和Timeout waiting for Tomcat v5.5的解决方法
  8. hdu 3405 world islands
  9. dm数据库 linux版下载,linux环境搭建DM数据库
  10. key redis 模糊查询个数_Reids Lua 模糊查询所有key 及 相对应的集合总数
  11. ruby wxruby rubytk的安装
  12. python下载哪个版本好-究竟哪个版本的Python是最快的?
  13. WPF 打印不显示的元素
  14. 关于RCP引用jar包的几个问题。
  15. 5.3 数值分析: 差商的定义及性质
  16. 樊登读书搞定读后感_《读懂一本书:樊登读书法》读后感
  17. android listview viewgroup,Android View及ViewGroup事件分发机制总结
  18. NS3_Tutorial 中文版: 第一章 简介
  19. 校友诗选_母校百年 同学聚会(来稿刊登)
  20. 计算机表格小边框如何关闭,【解惑】怎样去掉表格中打勾的小方格?

热门文章

  1. VMware NSX词汇表
  2. VSAN 个版本对应vSphere版本
  3. Spring Boot学习总结(23)——Spring Boot 实践经验总结
  4. Redis学习总结(8)——Redis常见使用场景总结
  5. Maven学习总结(46)——Maven跳过单元测试的两种方法及其区别(-Dmaven.test.skip=true与-DskipTests)
  6. PHP学习总结(3)——PHP入门篇之PHP的echo语句
  7. 使用cdn和npm引入的区别_中央空调和新风系统有什么区别?有必要一起装吗?
  8. linux动态调试工具od,OllyDBG(OD动态调试工具)
  9. docker mysql5.7.19_Docker19.03.13下安装Mysql57
  10. Prometheus Alertmanager 报警模块