因为用的grd文件,所以割断的时候是顺序连续的
# Fri Sep 11 01:55:51 2020 -
# 字符编码:UTF-8
# R 版本:R x64 4.0.2 for window 10
# cgh163email@163.com
# 个人笔记不负责任
# —— 拎了个梨🍐
rm(list=ls());gc()
.rs.restartR()
require(raster)
boundaries()# 边界(边缘)检测
# 检测边界(边缘)。 边界是在其周围的4或8个单元中具有多个类别的单元,或者,如果类= FALSE,则是具有值的单元和具有NA的单元。
## S4 method for signature 'RasterLayer'
boundaries(
x,
#RasterLayer对象
type = 'inner',
#字符。 “内部”或“外部” 'inner' or 'outer'
classes = FALSE,
#字符。 逻辑上。 如果为TRUE,则将所有不同值(四舍五入后)以及NA都区分出来。 如果为FALSE(默认设置),则仅考虑NA和非NA单元之间的边缘
directions = 8,
#整数。 哪些单元格被认为是相邻的? 应该是8(女王的情况)或4(Rook的情况)
asNA = FALSE,
#符合逻辑 如果为TRUE,则非边缘返回为NA而不是零
filename = "",
#字符。 输出RasterLayer的文件名(可选)
...
)#关于writeRaster的其他参数
r <- raster(nrow = 18, ncol = 36, xmn = 0)
r[150:250] <- 1
r[251:450] <- 2
par(mfrow = c(2, 2)) # 一页多图
plot(r, main = '原始')
plot(boundaries(r, type = 'inner') , main = 'inner')
plot(boundaries(r, type = 'outer') , main = 'outer')
plot(boundaries(r, classes = TRUE) , main = 'classes=TRUE')
# Fri Sep 11 02:02:00 2020 --DIY----------------------------
require(tidyper)
rm(list = ls())
#map.bys <- raster('白云山60米采样高程点.grd')
map.bys <- raster('https://gitee.com/youmigo/open-file/raw/master/.grd/%E7%99%BD%E4%BA%91%E5%B1%B160%E7%B1%B3%E9%87%87%E6%A0%B7%E9%AB%98%E7%A8%8B%E7%82%B9.grd')
map.bys %>% length()
# [1] 8208
map.bys[1000:3000] <- NA
map.bys[4500:7000] <- NA
par(mfrow = c(2, 2)) # 一页多图
plot(map.bys)
map.bys %>% boundaries(type = 'inner') %>% plot()
map.bys %>% boundaries(type = 'outer') %>% plot()
map.bys %>% boundaries(classes = T) %>% plot()
# End
演练的grd文件: