Mengubah format data raster dari dan ke vektor
Data spasial dalam bentuk vektor dapat diubah menjadi format raster, begitu juga sebaliknya. Seringkali kita dihadapkan pada situasi dimana bekerja dengan format raster lebih mudah dan lebih ringan dibanding bekerja dengan format vektor. Namun penting untuk diperhatikan bahwa perubahan atau transformasi data ini dapat menyebabkan berkurangnya akurasi, dan ini sangat bergantung dengan ukuran piksel yang diinginkan.Tutorial kali ini kita akan mengubah format data vektor menjadi data raster dan sebaliknya menggunakan program R. Pada dasarnya, proses rasterisasi ini membutuhkan dua input data, yakni data vektor yang akan diubah menjadi raster dan template raster tujuan yang telah memiliki resolusi atau dimensi geografis yang dinginkan. Template raster ini berfungsi sebagai wadah tempat dimana nilai atau informasi yang ada di vektor akan disimpan. Proses rasterasi membutuhkan memori yang cukup banyak, tergantung jenis data vektor yang akan dikonversi. Sebagai contoh, mengubah data vektor seperti jalan yang berkelok-kelok atau sungai yang bercabang-cabang akan membutuhkan memori yang lebih besar dibandingkan dengan mengubah data lokasi atau titik desa dalam bentuk titik.
Ringkasnya, kita akan melakukan beberapa tahapan dimulai dari menentukan folder aktif, memanggil data vektor, memanggil data raster yang akan dijadikan sebagai template/wadah dari raster tujuan, kemudian mengubah kembali dari raster ke vektor, lalu membuat layout dan menyimpan data yang telah dikonversi. Tutorial sebelumnya telah membahas beberapa rangkaian proses ini. Salah satu hasi layout dari tutorial ini terlihat seperti gambar di bawah 1 di bawah.
Data yang digunakan dalam tutorial ini dapat diunduh disini.
Gambar 1. Hasil konversi data (DEM) dan kawasan TNGP dalam format raster menjadi vektor (kontur dan polygon) |
# Mengaktifkan folder kerja, dimana semua hasil luaran akan disimpan
setwd("D:/LUBIS_PRIVATE_DATA/R_GIS_PROJECT/04_Hasil")
# Membaca data dalam format shapefiles
# Memanggil pustaka RGDAL
library(rgdal)
# Memanggil data batas wilayah studi (polygone)
# Memanggil data titik desa di sekitar wilayah studi (point)
desa <- readOGR(dsn = "D:/LUBIS_PRIVATE_DATA/R_GIS_PROJECT/02_Data_mentah/01_Data_vektor", layer="Desa_geo")
# Memanggil data jalan di sekitar wilayah studi (polyline)
jalan <- readOGR(dsn = "D:/LUBIS_PRIVATE_DATA/R_GIS_PROJECT/02_Data_mentah/01_Data_vektor", layer="Jalan_geo")
# Memanggil data batas kawasan TNGP
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 dijadikan sebagai template/wadah dari raster tujuan
# 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")
# Gunakan raster dem sebagai template raster sebagai acuan.
raster_temp <- raster(dem)
# Kemudian hapus setiap nilai dari setiap pixel (menjadi NA)
raster_temp[] <- NA
# Check template raster
summary(raster_temp)
Semua nilai yang ada di raster dem akan hilang dan berubah menjadi NA
# Lalu ubah data vektor menjadi raster menggunakan perintah rasterize()
desa_r <- rasterize(desa, raster_temp, field=1)
jalan_r <- rasterize(jalan, raster_temp, field=1)
tngp_r <- rasterize(tngp, raster_temp, field=1)
# Plot data yang sudah dirasterise, legend dihilangkan karena tidak begitu diperlukan
plot(tngp_r, col="green", legend=FALSE)
plot(jalan_r, col="red", legend=FALSE, add=TRUE)
plot(desa_r, col="black", legend=FALSE, add=TRUE)
Hasil dari plot tersebut dapat dilihat pada gambar 2 di bawah ini
Gambar 2. Hasil konversi dari vektor ke raster |
Titik desa yang terlihat pada gambar 2 tersebut hampir tidak terlihat karena ukuran piksel yang kecil, namun bukan berarti tidak ada.
Sebaliknya, hasil raster yang sudah diubah, dapat di transformasi lagi ke data vektor dengan menggunakan perintah rastertoPoints() untuk data point, rasterToPolygones() untuk data polygone, dan rasterToContour() untuk mengubah data ke bentuk isoline. Sebagai contoh, kita akan membuat data kontur dari data dem dan kawasan TNGP.
# Konversi raster ke vektor
dem_kontur <- rasterToContour(desa_r, levels=seq(1000,3000,100))
tngp_v <- rasterToPolygons(tngp_r, dissolve = TRUE)
Pada perintah rasterToContour, nilai levels=seq(500,3000,100) memerintahkan untuk membuat garis kontur dimulai dari ketinggian 500 mpl sampai 3000 mdpl dengan jarak antar garis sekitar 100 meter. Sementara perintah dissolve=TRUE memerintahkan agar polygone yang memiliki nilai atribut yang sama digabung menjadi satu kelas.
# Plot data menggunakan warna yang
lebih menarik menggunakan pustaka RColorBrewer
library(RColorBrewer)
plot(dem,
col=brewer.pal(10,"Spectral"), ylab="X", xlab="Y")
lines(dem_kontur, lwd=0.5,
col="pink")
plot(tngp_v,border="green",
lwd=2, add=TRUE)
# Menyimpan data hasil konversi
vektor ke raster
writeRaster(desa_r,overwrite=TRUE,
filename="desa_raster.tif")
writeRaster(jalan_r,overwrite=TRUE,
filename="jalan_raster.tif")
writeRaster(tngp_r,overwrite=TRUE,
filename="tngp_raster.tif")
# Menyimpan data hasil konversi
raster ke vektor
writeOGR(dem_kontur, dsn =
"D:/LUBIS_PRIVATE_DATA/R_GIS_PROJECT/04_Hasil",layer="dem_kontur",overwrite_layer = TRUE, driver="ESRI
Shapefile")
writeOGR(tngp_v, dsn =
"D:/LUBIS_PRIVATE_DATA/R_GIS_PROJECT/04_Hasil",layer="tngp_vektor",overwrite_layer = TRUE, driver="ESRI
Shapefile")
wah ada blogger isnpiratif.
ReplyDeleteterimakasih kak lubz, R jadi solusi converting big raster data ini..