raster ,cluster, som パッケージ
全然分からないけど土地被覆分類してみた
作業フォルダをtottori_city.tifのあるフォルダに変更
1 2 3 4 5 6 7
| #setwd("tottori_city.tifのあるフォルダ") library(raster) library(RColorBrewer) A_crop<- stack("tottori_city.tif") #欠損値がないのを確認 summary(A_crop) DF <- as.data.frame(A_crop)
|
bandの情報を知る。(例)バンド2
1 2 3 4 5 6 7 8 9 10
| A_crop[[2]] # some basic statistics using cellStats() cellStats(A_crop[[2]], stat=max) cellStats(A_crop[[2]], stat=mean) # This is equivalent to: maxValue(A_crop[[2]]) # what is the maximum value of all three bands? max(c(maxValue(A_crop[[1]]), maxValue(A_crop[[2]]), maxValue(A_crop[[3]]))) # summary() is useful function for a quick overview summary(A_crop[[2]])
|
結果は省略
土地被覆分類(3パターン)
12種類に分類
k-means によるクラスタリングを行う
結果は、最初のクラスタのランダムな割り振りに大きく依存する。
1 2 3 4 5 6 7
| E <- kmeans(DF, 12) clusters <- raster(A_crop) clusters <- setValues(clusters, E$cluster) clusters plot(clusters,col=brewer.pal(12, "Paired"))
|
1 2 3 4 5 6 7 8 9
| #cluster::claraを使う(kmeans関数を使うよりかなり速い) library(cluster) E=clara(DF,12) clusters <- raster(A_crop) ## create an empty raster with same extent than ICE clusters <- setValues(clusters, E$clustering) clusters #png("Classification02.png",width=1000,height=1000) plot(clusters,col=brewer.pal(12, "Paired")) #dev.off()
|
自己組織化マップによるクラスタリング
1 2 3 4 5 6 7 8 9
| library(som) E.som<-som(DF, xdim=12, ydim=1) clusters <- raster(A_crop) clusters <- setValues(clusters, E.som$visual[,1]+1) clusters plot(clusters,col=brewer.pal(12, "Paired"))
|
1 2 3 4 5
| #ゾーン統計(Zonal Statistics) E.mean <- zonal(A_crop, clusters, fun="mean") E.min <- zonal(A_crop, clusters, fun="min") E.max <- zonal(A_crop, clusters, fun="max") E.sum <- zonal(A_crop, clusters, fun="sum")
|
結果は省略
放射輝度への変換方法を見つけたのでやってみた。
DNから放射輝度(Radiance)を求める方法Landsat-7 ETM+
デジタルカウント値を放射輝度に変換するには、各衛星データの仕様が必要。
p111r035_7x20001019.met
ダウンロードしたデータの必要な部分をコピペしてRに入力
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| LMAX_BAND1 = 191.600 LMIN_BAND1 = -6.200 LMAX_BAND2 = 196.500 LMIN_BAND2 = -6.400 LMAX_BAND3 = 152.900 LMIN_BAND3 = -5.000 LMAX_BAND4 = 157.400 LMIN_BAND4 = -5.100 LMAX_BAND5 = 31.060 LMIN_BAND5 = -1.000 LMAX_BAND7 = 10.800 LMIN_BAND7 = -0.350 QCALMAX_BAND1 = 255.0 QCALMIN_BAND1 = 1.0 QCALMAX_BAND2 = 255.0 QCALMIN_BAND2 = 1.0 QCALMAX_BAND3 = 255.0 QCALMIN_BAND3 = 1.0 QCALMAX_BAND4 = 255.0 QCALMIN_BAND4 = 1.0 QCALMAX_BAND5 = 255.0 QCALMIN_BAND5 = 1.0 QCALMAX_BAND7 = 255.0 QCALMIN_BAND7 = 1.0
|
デジタルカウント値(DN)を放射輝度(L)に変換
計算式は
Radiance = ((Lmax-Lmin)/(QCALmax-Qcalmin)) * (QCAL-QCALmin) + Lmin
1 2 3 4 5 6 7 8 9 10
| L1=((LMAX_BAND1 - LMIN_BAND1)/(QCALMAX_BAND1 - QCALMIN_BAND1))*(A_crop[[1]]-QCALMIN_BAND1)+ LMIN_BAND1 L2=((LMAX_BAND2 - LMIN_BAND2)/(QCALMAX_BAND2 - QCALMIN_BAND2))*(A_crop[[2]]-QCALMIN_BAND2)+ LMIN_BAND2 L3=((LMAX_BAND3 - LMIN_BAND3)/(QCALMAX_BAND3 - QCALMIN_BAND3))*(A_crop[[3]]-QCALMIN_BAND3)+ LMIN_BAND3 L4=((LMAX_BAND4 - LMIN_BAND4)/(QCALMAX_BAND4 - QCALMIN_BAND4))*(A_crop[[4]]-QCALMIN_BAND4)+ LMIN_BAND4 L5=((LMAX_BAND5 - LMIN_BAND5)/(QCALMAX_BAND5 - QCALMIN_BAND5))*(A_crop[[5]]-QCALMIN_BAND5)+ LMIN_BAND5 #L7の場合 A_crop[[6]]になるので注意 band=6は使っていないため L7=((LMAX_BAND7 - LMIN_BAND7)/(QCALMAX_BAND7 - QCALMIN_BAND7))*(A_crop[[6]]-QCALMIN_BAND7)+ LMIN_BAND7 L <- stack(L1,L2,L3,L4,L5,L7) A_crop L
|
A_crop
class : RasterStack
dimensions : 302, 351, 106002, 6 (nrow, ncol, ncell, nlayers)
resolution : 28.5, 28.5 (x, y)
extent : 419990.2, 429993.8, 3926003, 3934610 (xmin, xmax, ymin, ymax)
coord. ref. : +proj=utm +zone=53 +datum=WGS84 +units=m +no_defs +ellps=WGS84 +towgs84=0,0,0
names : tottori_city.1, tottori_city.2, tottori_city.3, tottori_city.4, tottori_city.5, tottori_city.6
min values : 40, 18, 1, 1, 1, 1
max values : 255, 254, 255, 255, 255, 255
L
class : RasterStack
dimensions : 302, 351, 106002, 6 (nrow, ncol, ncell, nlayers)
resolution : 28.5, 28.5 (x, y)
extent : 419990.2, 429993.8, 3926003, 3934610 (xmin, xmax, ymin, ymax)
coord. ref. : +proj=utm +zone=53 +datum=WGS84 +units=m +no_defs +ellps=WGS84 +towgs84=0,0,0
names : tottori_city.1, tottori_city.2, tottori_city.3, tottori_city.4, tottori_city.5, tottori_city.6
min values : 24.170866, 7.179921, -5.000000, -5.100000, -1.000000, -0.350000
max values : 191.6000, 195.7012, 152.9000, 157.4000, 31.0600, 10.8000