BAB 4: Memotong Raster: Fokus pada Area Kerja
#Studi kasus: "Cukup bagian Alpha saja"
Kepala Seksi hanya membutuhkan data untuk KPH Alpha. Namun raster yang dimiliki Analis Muda mencakup seluruh area. Mengirim semuanya membuat berkas besar dan memuat daerah yang tidak perlu. Selain itu, statistik yang dihitung dari raster utuh ikut mencampur area lain. Bab ini mengajarkan cara memotong raster seukuran area kerja.
#Konsep: memotong raster dalam tiga kalimat
Clip (memotong) adalah menggunting raster mengikuti bentuk sebuah poligon, seperti menggunting foto mengikuti garis tepi sebuah pola. Poligon penggunting disebut mask (masker). Piksel di luar poligon dibuang atau diberi nilai NoData, sehingga tidak ikut dihitung.
Istilah baru bab ini:
- Clip (potong): menggunting raster dengan poligon atau dengan kotak.
- Mask: poligon yang menentukan bagian mana yang dipertahankan.
- Extent: kotak terkecil yang membungkus sebuah data.
- NoData: penanda piksel tanpa nilai. Ingat Bab 1.
- Cutline: garis tepi poligon yang dipakai menggunting (istilah di GDAL).

#Dua cara memotong
- Memotong dengan kotak (extent). Hasilnya selalu persegi panjang. Cepat dan sederhana.
- Memotong dengan poligon (mask). Hasilnya mengikuti bentuk poligon. Raster tetap berbentuk persegi panjang, tetapi piksel di luar poligon berubah menjadi NoData.
Raster selalu berbentuk persegi panjang. Karena itu, hasil pemotongan dengan poligon tidak benar-benar "berbentuk poligon". Bagian luar poligon hanya dikosongkan.
#Angka dari data latihan
| Pemotongan | Hasil |
|---|---|
DEM dengan Area_Kajian (poligon 6 sudut) | Raster 155 x 160 = 24.800 piksel. NoData 6.100. Terisi 18.700 piksel = 74.800 m² = 7,48 ha |
Luas poligon Area_Kajian (dihitung dari koordinat) | 74.800 m² = 7,48 ha |
| DEM dengan KPH Alpha | 10.000 piksel = 4,00 ha, tanpa NoData |
| DEM dengan kotak 200 m x 200 m di barat daya | 100 x 100 = 10.000 piksel |
Luas dari hitungan piksel (7,48 ha) cocok dengan luas poligon (7,48 ha). Itu tanda pemotongan berjalan benar. Pada poligon dengan tepi yang lebih rumit, selisih kecil di tepi adalah hal biasa. Angka diuji di QGIS 4.0.2 (Skrip 4.1).
#Bagian A: QGIS
#Bagian A: Memotong raster di QGIS
#Memotong dengan poligon (mask)
- Tambahkan
DEM_KPH.tifdanArea_Kajian.gpkg. Pastikan keduanya memakai CRS yang sama (EPSG:32749). - Buka Raster ► Extraction ► Clip Raster by Mask Layer….
- Isi Input layer dengan
DEM_KPHdan Mask layer denganArea_Kajian. - Pada Assign a specified NoData value to output bands, isi -9999. Itu nilai NoData yang sama dengan DEM asal.
- Biarkan Match the extent of the clipped raster to the extent of the mask layer tercentang. Pilihan ini membuat ukuran hasil sebatas kotak pembungkus poligon.
- Centang Keep resolution of input raster supaya ukuran piksel tetap 2 m.
- Simpan sebagai
DEM_kajian.tif, lalu klik Run. - Perhatikan hasilnya: bentuk poligon tampak, dan sudut-sudut di luar poligon kosong.
#Menghitung piksel NoData
- Buka Processing Toolbox, cari Raster layer unique values report.
- Isi Input layer dengan
DEM_kajian, lalu jalankan. - Lihat Total pixel count (24.800) dan NoData pixel count (6.100). Selisihnya, 18.700, adalah piksel yang terisi.
- Kalikan 18.700 dengan 4 m² per piksel. Hasilnya 74.800 m² atau 7,48 ha.
#Memotong dengan satu KPH saja
- Klik kanan layer
Batas_KPH► Filter… (pembangun kueri). - Isi kueri:
"NAMA_KPH" = 'KPH Alpha', lalu klik OK. Layer hanya menampilkan KPH Alpha. - Jalankan lagi Clip Raster by Mask Layer dengan
Batas_KPHsebagai mask. Hasil: 100 x 100 = 10.000 piksel, tanpa NoData, 4 ha. - Ulangi untuk KPH Beta dan Gamma dengan mengganti kueri.
#Memotong dengan kotak
Buka Raster ► Extraction ► Clip Raster by Extent…. Isi Input layer dan Clipping extent. Untuk extent, Anda bisa memilih dari layer lain atau menggambar di kanvas. Hasilnya persegi panjang, tanpa NoData baru.
#Dengan Python (opsional)
Berkas skrip/b3_04_clip.py:
import processing
from qgis.core import QgsVectorLayer
DATA = r"D:/data/paket-b3"
OUT = r"C:/kerja_b3"
# 1) Potong DEM dengan Area_Kajian (poligon tidak beraturan)
hasil = processing.run("gdal:cliprasterbymasklayer", {
"INPUT": DATA + "/DEM_KPH.tif",
"MASK": DATA + "/Area_Kajian.gpkg",
"NODATA": -9999,
"CROP_TO_CUTLINE": True,
"KEEP_RESOLUTION": True,
"OUTPUT": OUT + "/DEM_kajian.tif"})
u = processing.run("native:rasterlayeruniquevaluesreport", {"INPUT": hasil["OUTPUT"], "BAND": 1})
isi = u["TOTAL_PIXEL_COUNT"] - u["NODATA_PIXEL_COUNT"]
print("Piksel total:", u["TOTAL_PIXEL_COUNT"], "| NoData:", u["NODATA_PIXEL_COUNT"])
print("Piksel berisi nilai:", isi, "= luas (ha):", round(isi * 4 / 10000, 2))
# 2) Potong dengan satu KPH saja (filter lapisan batas lebih dulu)
batas = QgsVectorLayer(DATA + "/Batas_KPH.gpkg|layername=Batas_KPH", "Batas_KPH", "ogr")
batas.setSubsetString("\"NAMA_KPH\" = 'KPH Alpha'")
h2 = processing.run("gdal:cliprasterbymasklayer", {
"INPUT": DATA + "/DEM_KPH.tif", "MASK": batas, "NODATA": -9999,
"CROP_TO_CUTLINE": True, "KEEP_RESOLUTION": True, "OUTPUT": OUT + "/DEM_Alpha.tif"})
u2 = processing.run("native:rasterlayeruniquevaluesreport", {"INPUT": h2["OUTPUT"], "BAND": 1})
print("KPH Alpha: piksel total", u2["TOTAL_PIXEL_COUNT"], "| NoData", u2["NODATA_PIXEL_COUNT"])Keluaran yang diuji di QGIS 4.0.2:
Piksel total: 24800 | NoData: 6100
Piksel berisi nilai: 18700 = luas (ha): 7.48
KPH Alpha: piksel total 10000 | NoData 0#Bagian B: ArcGIS Pro
#Bagian B: ArcGIS Pro
- Buka alat Extract by Mask (Spatial Analyst Tools). Alat ini memerlukan ekstensi Spatial Analyst.
- Isi Input raster dengan DEM dan Input raster or feature mask data dengan poligon batas. Alat ini menerima mask berupa fitur atau raster.
- Extraction Area bernilai INSIDE secara bawaan, artinya yang dipertahankan adalah bagian di dalam mask. Pilih OUTSIDE bila ingin kebalikannya.
- Tentukan Output raster, lalu jalankan. Piksel di luar mask menjadi NoData. [CEK: tampilan hasil]
- Untuk memotong hanya satu KPH, pilih fiturnya lebih dulu. Alat memakai fitur terpilih bila ada seleksi. [CEK]
- Alat lain, Clip Raster (Data Management), memotong dengan kotak atau poligon tanpa Spatial Analyst. [CEK]
#Bagian C: ArcMap 10.8
#Bagian C: ArcMap 10.8
- Buka alat Extract by Mask (toolbox Spatial Analyst). Parameternya dua: in_raster (raster sumber) dan in_mask_data (raster atau fitur sebagai mask).
- Menurut dokumentasi Esri, mask berupa fitur diubah dulu menjadi raster dengan ukuran sel dan susunan yang sama dengan raster masukan. Untuk raster multiband, semua band diproses.
- Tentukan keluaran, lalu jalankan.
- Untuk memotong dengan kotak, pakai alat Clip (Data Management). [CEK]
#Cek paham
- Mengapa raster hasil pemotongan dengan poligon tetap berbentuk persegi panjang?
- Apa fungsi NoData pada hasil pemotongan?
- Bagaimana mengecek bahwa pemotongan berjalan benar?
Jawaban:
- Raster hanya bisa berupa petak-petak persegi panjang. Bagian luar poligon tidak dihapus, hanya diberi nilai NoData.
- Menandai piksel di luar area kerja sehingga tidak ikut dalam statistik atau luas.
- Hitung piksel terisi dikali luas satu piksel, lalu bandingkan dengan luas poligon. Pada data latihan, 7,48 ha dan 7,48 ha cocok.
#Kesalahan umum
- Mask dan raster tidak tumpang tindih. Hasilnya kosong atau galat. Tampilkan keduanya bersama dan lihat apakah letaknya berimpit.
- Lupa menetapkan nilai NoData. Piksel di luar poligon bisa terisi nol, tergantung alat, lalu ikut mengacaukan rata-rata. [CEK: perilaku tanpa NoData] Selalu tetapkan NoData yang tidak mungkin muncul sebagai data nyata.
- Mengubah ukuran piksel tanpa sadar. Bila Keep resolution tidak dicentang, ukuran piksel hasil bisa berubah. Hasil luas jadi bergeser. Centang pilihan itu.
- Mask berisi banyak poligon. Semua poligon dipakai sekaligus. Bila hanya butuh satu KPH, saring dulu (Filter) atau potong satu per satu.
#Ringkasan dan latihan
Ringkasan: Clip menggunting raster dengan kotak atau poligon. Piksel di luar poligon menjadi NoData. Luas hasil bisa dicek dengan menghitung piksel terisi dikali luas piksel.
Latihan:
- Potong
DEM_KPHuntuk KPH Beta dan Gamma. Hitung piksel terisi dan luasnya. Jawaban uji: Beta 10.000 piksel (4 ha) dan Gamma 20.000 piksel (8 ha). - Potong keempat band dengan mask KPH Alpha, lalu bandingkan ukuran berkasnya dengan raster utuh. Jawaban: berkas Alpha lebih kecil karena hanya memuat seperempat piksel.
#Tabel perbandingan: memotong raster
| Hal | QGIS | ArcGIS Pro | ArcMap 10.8 |
|---|---|---|---|
| Potong dengan poligon | Clip Raster by Mask Layer | Extract by Mask (Spatial Analyst) | Extract by Mask (Spatial Analyst) |
| Potong dengan kotak | Clip Raster by Extent | Clip Raster [CEK] | Clip [CEK] |
| Menetapkan NoData | Kolom NoData pada alat | Piksel luar mask menjadi NoData | Piksel luar mask menjadi NoData |
| Bagian yang dipertahankan | Di dalam poligon | INSIDE (bawaan) atau OUTSIDE | Di dalam mask |
| Lisensi | Gratis | Spatial Analyst untuk Extract by Mask | Spatial Analyst untuk Extract by Mask |