Menghitung Beda Dua Tanggal

Salah satu tugas GIS adalah melakukan perhitungan beda dari dua tanggal. Sebagai contoh memilih petak tanam sengon yang sudah siap tebang, memilih stasiun pengamatan yang harus sudah diganti alatnya setelah lebih dari seminggu terpasan, dan sebagainya. Tugas tersebut dapat dilakukan dengan menggunakan operasi terkait tanggal. Jika jumlahnya sedikit tentu dapat dilakukan dengan mudah.

Berikut dicontohkan perhitungan beda dua tanggal dengan menggunakan data kebakaran hutan dan lahan (firespot, MODIS) dan software ArcMap 10.4. Tugas yang diberikan adalah memilih firespot yang memiliki umur <= 23 bulan dari hari ini.

Cara sederhana

Cara favorite saya adalah dengan menghitung sendiri di atas kertas HVS tanggal berapa yang memenuhi kriteria tersebut. Misal hari ini adalah tanggal 4 Oktober 2016, maka

  • Hitung 23 bulan ke belakang. Sehingga tanggal 4 November 2014 adalah tanggal perbatasan. Jika firespot terjadi sebelum tanggal tersebut maka tidak memenuhi kriteria dan tidak akan dipilih.
  • SORT field tanggal (misal field ACQ_DATE) pada data firespot tipe sortir ASCENDING (atau DESCENDING terserah)
  • Cari tanggal perbatasan yaitu 4 November 2014 atau tanggal terdekat. Pilih lah tanggal tersebut
  • Scroll ke batas sekarang (jika ascending berarti pada bagian akhir tabel), pada kondisi tanggal perbatasan masih terpilih
  • Tekan SHIFT dan KLIK pada baris tearkhir. Maka seluruh baris (fitur) yang memenuhi kriteria <= 23 bulan akan terpilih
  • Buat field baru dengan nama misalnya BLN_23 tipe short integer dengan presisi minimal 2
  • Dengan field calculator, isikan angka 1 pada baris terpilih
beda-dua-tanggal-01
Gb 1. Mengisi Field Calculator

Cara ribet

Cara di atas simple dan cepat. Namun cara tersebut memiliki kekurangan karena tidak cool, terlihat tidak ilmiah dan kurang menantang. Ya, saya maklum sebagian orang tidak suka dengan hal-hal yang sederhana. Untuk melakukan dengan cara yang lebih ribet dapat diikuti langkah-langkah berikut.

Buat field baru tipe short integer dengan presisi isi saja 2 dengan nama misalnya BLN_23. Lakukan Field Calculator pada field tersebut dengan sintak VB Script sebagai berikut

IF ( DateDiff ( "m", [ACQ_DATE] , Now ( ) ) ) <= 23 Then
 BedaBulan = 1
Else
 BedaBulan = 0
End IF

Terus pada kotak kedua diisi

BedaBulan

Seperti tampak pada Gambar 2 berikut ini.

beda-dua-tanggal-02
Gb 2. Menggunakan VB Script dengan mengaktifkan CODEBLOCK

Field calculator pada Gambar 2 akan menghasilkan nilai 1 dan 0 pada Field BLN_23. Jika nilainya 1 berarti memenuhi kriteria yaitu firespot yang terjadi pada waktu <= 23 bulan, sedangkan jika 0 berarti tidak demikian. Tentu sintak tersebut dapat dimodifikasi tergantung keinginan, misalnya

  • Jika yang ingin dihitung adalah beda hari maka “m” diganti dengan “d”
  • fungsi now () menunjukan tanggal sekarang. Ini dapat diganti dengan FIELD berisi tanggal referensi jika perhitungan tidak menggunakan tanggal sekarang, misalnya mencari hotspot berumur <23 bulan dari hari kedatangan Bu Menteri tahun kemarin.
  • Jika yang ingin diisikan pada field BLN_23 adalah tipe sintak maka dapat digunakan Bedabulan = “Hotspot baru” ELSE BedaBulan “Hotspot lama”
  • BedaBulan hanya variabel statement sementara, dapat diisi apa saja misal “LamaBulan”, “PanjangBulan”. Yang penting sama dengan kotak di bagian bawahnya

Cara Selangkah Demi Selangkah

Jika cara sebelumnya terlalu instan dan menyulitkan check-and-recheck, dapat juga dilakukan cara yang lebih lama namun lebih meyakinkan. Biasanya yang sedang melakukan riset lebih menyukai cara ini untuk memudahkan cek dan lebih afdol pol. Cara ini sebenarnya hanya break-down dari cara sebelumnya, sebagai berikut.

>> Buat field baru misal dengan nama BEDA_BLN, tipe short integer dengan presisi isi saja 2

>> Isi dengan field calculator pada field tersebut dengan sintak berikut untuk menghitung perbedaan bulan antara tanggal firespot dan tanggal sekarang. Fungsi now () dapat diganti dengan field tanggal lain jika referensinya bukan tanggal hari ini.

DateDiff ( "m", [ACQ_DATE] , Now (  ) )

>> Buat field baru misal dengan nama BLN_23, tipe short integer dengan presisi isi saja 2

>> Lakukan selection dengan SELECT BY ATTRIBUTES dengan kriteria

"BEDA_BLN" <= 23

>> Pada kondisi sebagian row terpilih, isikan dengan field calculator pada field BLN_23 angka 1 untuk menunjukan row tersebut memenuhi kriteria.

/Have fun

SHARE

Leave a Reply