Search...>>

12.09.2017

Raster Geoprocessing in R Part 1 (Cropping, Reclassify & Polygonizer)

Analisis data berbasis raster menggunakan Program R (pemotongan, rekategorisasi & konversi data raster ke vektor/polygon)


Data dengan format raster sangat umum dijumpai, misalnya hasil perekaman penginderaan jauh (citra satelit) seperti peta topografi atau iklim dan sebagainya. Data raster berupa matriks yang terdiri dari kumpulan sel-sel yang tersusun dalam bentuk baris dan kolom dimana setiap sel berisi informasi mengenai hasil perekaman, seperti informasi ketinggian, atau suhu. Pada pengolahan atau analisis Sistem Informasi Geografis (GIS), data dalam bentuk raster dapat diolah menjadi informasi yang lebih bermanfaat dengan berbagai macam tools atau alat yang disediakan oleh berbagai macam perangkat lunak atau software, baik yang berbayar maupun yang gratis.

Pada tutorial kali ini, kita akan mengolah data raster dengan menggunakan program R yang diperoleh secara gratis. Tutorial mengenai pengolahan data raster ini terdiri dari beberapa tahapan, dan semuanya akan dibahas secara series (berkelanjutan).

Pada tutorial sebelumnya, kita telah membahas bagaimana cara mendapatkan data DEM (lihat tutorial) dan mengolahnya menjadi data yang berisikan informasi ketinggian, kemiringan lahan (slope), keterjalan tapak (roughness/terrain ruggedness) dan membuat efek hillshade (lihat tutorial). Selanjutnya, pada tutorial ini kita akan membahas bagaimana cara memotong data raster, kemudian membuat kelas kategori baru (reclassify) lalu konversi data dari format raster ke format polygone (shapefile) dan terakhir menyimpan data hasil konversi tersebut ke dalam format shapefiles. Data yang digunakan dapat diperoleh dengan mengklik menu DOWNLOAD DATA pada sisi kiri atas blog ini. Beberapa hasil yang akan diperoleh dapat dilihat pada gambar berikut.
Gambar 1. Hasil analisis raster geoprocessing part 1
Seperti biasa, tentukan folder luaran tempat dimana hasil akan disimpan
# Mengaktifkan folder kerja
setwd("D:/LUBIS_PRIVATE_DATA/R_GIS_PROJECT/04_Hasil")

Lalu memanggil data batas kawasan TNGP dalam bentuk polygone sebagai batas wilayah kajian
# Membaca data dalam format shapefiles
# Memanggil pustaka "rgdal"
require(rgdal)
tngp <- readOGR(dsn = "D:/LUBIS_PRIVATE_DATA/R_GIS_PROJECT/02_Data_mentah/01_Data_vektor", layer="Batas TNGP") 

Kemudian memanggil data raster yang akan diolah
# Memanggil pustaka "raster"
require(raster)

# Memanggil data ketinggian (digital elevation model)
dem <- raster("D:/LUBIS_PRIVATE_DATA/R_GIS_PROJECT/02_Data_mentah/02_Data_raster/Dem_TNGP.tif")

Data ketinggian tersebut kemudian diolah menjadi peta kemiringan tanah (derajat) seperti yang pernah dijelaskan pada tutorial sebelumnya (lihat tutorial)

# Membuat peta kemiringan tanah dari data ketinggian (DEM)
slope <- terrain(dem, opt="slope", unit="degrees")

Lalu kedua data tersebut (ketinggian dan kemiringan tanah) dipotong menggunakan dua jenis perintah dengan hasil yang sedikit berbeda. Pengunaan perintah crop akan memotong data raster menjadi bentuk persegi sesuai dengan extent dari batas TNGP atau wilayah kajian. Sementara perintah mask memotong raster sesuai dengan bentuk wilayah kajian sebenarnya. Sebagai konsekuensinya, penggunaan perintah crop jauh lebih ringan dan cepat dari penggunaan perintah mask.

# Memotong data raster dengan polygone menggunakan perintah crop
dem_tngp_crop <- crop(dem,tngp)
slope_tngp_crop <- crop(slope,tngp) 


# Memotong data raster dengan polygone menggunakan perintah mask
dem_tngp_mask <- mask(dem,tngp)
slope_tngp_mask <- mask(slope,tngp) 


Selanjutnya, data raster yang sudah dipotong kemudian direkategorikan berdasarkan nilai raster menjadi beberapa kelas sesuai dengan kebutuhan. Pada tutorial ini, data ketinggian akan dikategorisasikan menjadi 4 kelas yakni kelas 1 (0-800 mdpl), kelas 2 (800-1500 mdpl), kelas 3 (1500-2500 mdpl) dan kelas 4 (diatas 2500 mdpl). Sementara kelas kemiringan tanah dikategorikan menjadi 4 kelas seperti kelas 1 (0-15 derajat), kelas 2 (15-25 derajat), kelas 3 (25-40 derajat) dan kelas 4 (diatas 40 derajat). Pengkategorian nilai raster dapat dilakukan dengan menggunakan perintah reclassify pada pustaka raster.

# Membuat kelas kategori ketinggian (kelas 1 = 0-800, kelas 2 = 800-1500, dst)
dem_tngp_mask_rc <- reclassify(dem_tngp_mask, c(-Inf,800,1, 800,1500,2, 1500,2500,3, 2500,Inf,4))

# Membuat kelas kategori kemieirngan tanah (kelas 1 = 0-15, kelas 2 = 15-25, dst)
slope_tngp_mask_rc <- reclassify(slope_tngp_mask, c(-Inf,15,1, 15,25,2, 25,40,3, 40,Inf,4)) 

Untuk melihat hasil dari setiap tahapan, kita akan plot data yang telah dihasilkan dengan perintah plot seperti pada Gambar 1 diatas.

# Membuat partisi plot 2x3
par(mfrow = c(2, 3))
plot(dem, main="Ketinggian (mdpl)")
plot(tngp,add=TRUE, border="red") 

# Plot peta elevasi setelah di mask
plot(dem_tngp_mask, main="Pemotongan (Masking)")
plot(tngp,add=TRUE, border="red")

# Plot peta elevasi setelah di rekategori
plot(dem_tngp_mask_rc, main="Kelas Ketinggian")
plot(tngp,add=TRUE, border="red")

# Plot kemiringan tanah
plot(slope, main="Kemiringan Tanah (Derajat)")
plot(tngp,add=TRUE, border="red")

# Plot peta kemiringan tanah setelah di mask
plot(slope_tngp_mask, main="Pemotongan (Masking)")
plot(tngp,add=TRUE, border="red")

# Plot peta kemiringan tanah setelah di rekategori
plot(slope_tngp_mask_rc, main="Kelas Kemiringan Tanah")
plot(tngp,add=TRUE, border="red")
par(mfrow = c(1, 1))
## Tutup partisi

Data raster yang telah direkategorikan dapat diubah kedalam bentuk polygone dalam format shapefiles dengan menggunakan perintah rasterToPolygone pada pustaka raster. Untuk langkah terakhir, data hasil konversi akan disimpan kedalam format shapefiles. Langkah terakhir ini akan memakan waktu yang cukup lama dan sangat bergantung pada besarnya data raster yang akan dikonversi serta jumlah memory yang tersedia pada komputer.

# Konversi kelas ketinggian dari raster ke polygone
dem_tngp_mask_rc_poly <- rasterToPolygons(dem_tngp_mask_rc, fun=NULL, n=4,
na.rm=TRUE, digits=12, dissolve=TRUE)


# Konversi kelas kemiringan tanah dari raster ke polygone
slope_tngp_mask_rc_poly <- rasterToPolygons(slope_tngp_mask_rc, fun=NULL, n=4,
na.rm=TRUE, digits=12, dissolve=TRUE)



# Menyimpan data hasil analisis data raster

writeOGR(dem_tngp_mask_rc_poly, dsn = "D:/LUBIS_PRIVATE_DATA/R_GIS_PROJECT/04_Hasil",layer="kelas_ketinggian_TNGP",overwrite_layer = TRUE, driver="ESRI Shapefile")

writeOGR(slope_tngp_mask_rc_poly, dsn = "D:/LUBIS_PRIVATE_DATA/R_GIS_PROJECT/04_Hasil",layer="kelas_kelerengan_TNGP",overwrite_layer = TRUE, driver="ESRI Shapefile")



Selamat Mencoba….

1 comment: