R语言,raster包,Intersect函数,sp对象相交,sp裁切
# Sat Sep 19 11:29:09 2020 -
# 字符编码:UTF-8
# R 版本:R x64 4.0.2
# cgh163email@163.com
#个人笔记不负责任
# —— 拎了个梨🍐
.rs.restartR()
rm(list=ls());gc()
require(raster)
# Sat Sep 19 11:25:52 2020 -Intersect相交----------------------------
# 它取决于x和y的类,返回什么。
# 如果x是Raster *对象,则使用y的范围,而与y的类别无关,并返回Raster *。 这相当于农作物。
# 如果x是Spatial *对象,则返回一个新的Spatial *对象。 如果x或y具有data.frame,则它们也将作为Spatial * DataFrame的一部分返回(如果需要,在合并之后),这就是相交与其所依赖的rgeos :: gIntersection的不同之处。
#
# 将SpatialPoints *与SpatialPoints *相交使用y的范围(边界框)获得相交。 不支持SpatialPoints *和SpatialLines *的相交,因为它们在数值上不准确。 您可以使用缓冲区从SpatialLines *创建SpatialPoygons *并将其交叉使用。 或尝试gIntersection。
#
e1 <- extent(-10, 10, -20, 20)
e2 <- extent(0, 20, -40, 5)
intersect(e1, e2)
# class : Extent
# xmin : 0
# xmax : 10
# ymin : -20
# ymax : 5
#
# SpatialPolygons
require(rgdal)
require(rgeos)
p <- shapefile(system.file("external/lux.shp", package = "raster"))
b <- as(extent(6, 6.4, 49.75, 50), 'SpatialPolygons')
par(mfrow = c(1, 3)) # 一页多图
plot(p)
plot(b)
projection(b) <- projection(p)
i <- intersect(p, b)
plot(p,main = '蓝色相交')
plot(b, add = TRUE, col = 'red')
plot(i, add = TRUE, col = 'blue', lwd = 2)
# Sat Sep 19 11:30:47 2020 ---DIY---------------------------
map.gz <- sf::st_read('https://geo.datav.aliyun.com/areas_v2/bound/440100_full.json')
map.gz.sp <- as(map.gz,'Spatial')
plot(map.gz.sp)
dt.zfx <- as(extent(113.548538,114.525895,23.128423,23.841161),
'SpatialPolygons') # 构建矩形sp对象
plot(dt.zfx)
map.xiangjiao <- intersect(map.gz.sp,dt.zfx)
dev.off()
plot(map.gz.sp,main='相交演示')
plot(dt.zfx,add=TRUE,col='#FFFFCC')
plot(map.xiangjiao,add=TRUE,col='#CC9999')