sp包矢量數據操作
s1 <- readRDS("Income_schooling.rds")
s2 <- readRDS("dist.rds")
l1 <- readRDS("highway.rds")
#函數bbox獲取空間數據邊界,sp包
b1<-bbox(s1)
b2<-bbox(s2)
b3<-pmax(b1,b2)
b3[,1]<-pmin(b1[,1],b2[,1])
#aggregate()函數,融合邊界,合為一體,raster包
ME<-aggregate(s1)
s1$med<-s1$Income>median(s1$Income)
#以某種屬性進行融合
ME.inc<-aggregate(s1,by="med")
#group_by()對s1@data進行以med屬性分組,然后summarize()統計各組的中位數
#.$medinc將統計結果賦值給
ME.inc$Income <- s1@data %>% group_by(med) %>%
summarize(medinc = median(Income)) %>% .$medinc
#計算面積
ME.inc$Area<-gArea(ME.inc,byid=TRUE)/1000000
#intersect()截取相交部分,raster
clp1<-intersect(s1,s2)
#按照輸入數據順序,來決定輸出數據類型,clp2為線空間數據
clp2<-intersect(l1,s1)
#clp3為面空間數據
clp3<-intersect(s1,l1)
#union()相交融合,raster包
un1<-union(s1,s2)
sf包矢量數據操作
提取對象幾何信息:
- st_bbox(): 提取對象的坐標范圍
- st_area(): 求對象的各要素面積
- st_length(): 提取對象的各要素周長
- st_geometry(): 提取對象的幾何信息
- st_drop_geometry(): 刪除對象的幾何要素,成為數據框
- st_coordinates(): 提取各要素幾何信息的地理或投影坐標
- st_boundary(): 提取各要素的邊界,返回線對象
- st_centriod(): 提取各要素的質心,返回點對象
- st_voronoi(): 生成泰森多邊形。
疊置分析: - st_intersection:生成對象內要素兩兩之間的交集;
- st_difference:生成對象內要素兩兩之間的差集;
- st_sym_difference:交集取反操作,即去除對象內兩兩要素的相交部分,保留不相交部分;
- st_crop:用指定地理或投影坐標確定的矩形范圍截取矢量對象;
其他函數: - st_simplify:簡化對象的拓撲關系;
- st_make_grid:在指定地理或投影坐標范圍內創建網格;
- st_jitter:隨機偏移矢量對象各要素的位置;
- st_sample:在面數據內部按某種規則選取若干個點(默認隨機選取);
- st_line_sample:在線數據上按某種規則選取若干點(默認均勻選取)。
柵格操作
bath2 <- bath * (-1)
bath3 <- bath2 < 0
tm_shape(bath3) + tm_raster(palette = "Greys") +
tm_legend(outside = TRUE, text.size = .8)
#重分類reclassify()
#創建一個矩陣,第一列和第二列為重分類的起始值和結束值,第三列為顯示值
m <- c(0, 100, 100, 100, 500, 500, 500,
1000, 1000, 1000, 11000, 11000)
m <- matrix(m, ncol=3, byrow = T)
#right表示右閉合
bath3 <- reclassify(bath, m, right = T)
#兩個柵格操作
elevation<-elev-bath
#平滑處理focal()
f1<-focal(elevation,w=matrix(1,nrow = 11,ncol = 11),fun=mean)
m <- matrix(c(1,1,1,1,0,1,1,1,1)/8,nrow = 3)
f2 <- focal(elevation, w=m, fun=sum)
#Sobel過濾器
Sobel <- matrix(c(-1,0,1,-2,0,2,-1,0,1) / 4, nrow=3)
f3 <- focal(elevation, w=Sobel, fun=sum)
#單元格合並aggregate(),raster
z1<-aggregate(elevation,fact=2,fun=mean,expand=TRUE)
#res()用於查看像素大小
res(z1)