Sie sind auf Seite 1von 15

BAB VI.

APLIKASI PROGRAM SISTEM INFORMASI GEOGRAFIS (SIG) DAN PENGOLAHAN


CITRA DIGITAL (PCD)
Deskripsi singkat :
Pada bab ini membahas aplikasi program Sistem Informasi Geografis (SIG) dan
Pengolahan Citra Digital (PCD) yang berisi tentang penerapan bahasan pemrograman
dan desain grafis antar muka pengguna pada SIG dan PCD.
Materi ini diberikan dalam 4 X pertemuan (1x kuliah = 100 menit) untuk Minggu X,
Minggu XI, Minggu XII, dan Minggu XIII.

Manfaat, relevansi :
Setelah memahami bahasa pemrogramana dan desain grafis antar muka pengguna
pada bab sebelumnya, pada bab ini diharapkan mahasiswa dapat melanjutkannya
dengan menerapkan pada aplikasi program Sistem Informasi Geografis (SIG) dan
Pengolahan Citra Digital (PCD).

Tujuan Instruksional Khusus (Learning Outcomes)


- Mahasiswa dapat menerapkan bahasa pemrograman dan desain grafis antar muka
pengguna dalam sebuah program SIG dan PCD.

Pemrograman Komputer - D3 PJSIG

61

BAB VI
APLIKASI PROGRAM SISTEM INFORMASI GEOGRAFIS (SIG) DAN
PENGOLAHAN CITRA DIGITAL (PCD)
Pada bab ini disampaikan contoh-contoh aplikasi pengolahan citra digital, dan sistem informasi
geografis mulai dari desain grafis antar muka pengguna dan penerapan bahasa pemrograman.
Pertama dibahas mengenai contoh aplikasi pengolahan citra digital dan dilanjutkan dengan
aplikasi pada sistem informasi geografis.

PENGOLAHAN CITRA DIGITAL


(PENYUSUNAN SOFTWARE IMAGE PROCESSING SEDERHANA)
DASAR TEORI
Acara ke-4 diharapkan anda memahami bagaimana penyusunan aplikasi Image Processing
Sederhana terutama penggunaan control program dan algorithmanya. Beberapa control akan
dikenalkan dan digunakan secara intensif pada bagian ini, seperti: Picture Box, Common Dialog,
Check Box, Progress Bar, Text Box, dan sebagainya.
Aplikasi Image Processing yang akan kita buat kali ini memiliki tiga form, yaitu:
Form1 Utama (tempat citra di tampilkan)
Form2 Filter (menggunakan filter matriks)
Form3 Progressbar (menunjukkan posisi proses)
LANGKAH KERJA
Penyusunan Form
Form1
1. Tambahkan form bernama Form1 pada project anda.
2. Selanjutnya tempelkan Picture Box
pada form tersebut, biarkan nama defaultnya,
yaitu: Picture1 pada property windows.
3. Buatlah menu dengan Tools > Menu Editor , sehinggga muncul:

Pemrograman Komputer - D3 PJSIG

62

Simpan Form1 seperti di bawah ini:

Form2
1. Tambahkan form baru Project Windows>Ka Add Form .
2. Buatlah Text Box
pada Form2 dengan INDEX 0 24, cukup dengan copy dan paste
lalu susun menjadi Layout Matriks.
3. Tambahkan dua Text Box
pembagi.

Pemrograman Komputer - D3 PJSIG

lagi, yaitu: Text2 dan Text3 untuk variable bias dan

63

4. Tambahkan dua Command Button


, yaitu: command1, dan command2 (nama ini
default pada saat anda menggambarkannya, tidak perlu rename), ganti Caption menjadi:
a. Command1 Eksekusi
b. Command2 Tunda
5. Tambahkan satu saja Picture Box
ubahlah nama dari Picture1 SSPanel1, ini
berfungsi untuk meletakkan pilihan dimensi matrik yang digunakan dalam hal ini 3 x 3 dan
5 x 5.
6. Tambahkan dua Option Button
dengan nama: Option1 dan Option2, tepat didalam
SSPanel1 (Picture Box, No.5), jangan diluarnya. Ini bermanfaat seperti perintah Group
Object pada Microsoft Office > Draw, ArcView atau aplikasi grafis. Jika SSPanel1 dipindah
maka Option Button 1 & 2 dengan sendirinya akan ikut terpindahkan, kondisi ini tidak
terjadi apa bila Option Button tidak dimasukkan dalam Picture Box. Ganti Caption pada
dua OB tadi menjadi:
a. OptionButton1 3 x 3
b. OptionButton2 5 x 5
7. Beri keterangan seperlunya pada tiap goup object dengan menggunakan Label
,
seperti: Bias, Pembagi, Ukuran Matriks.
8. Tambahkan Common Dialog
, common dialog ini bermanfaat pada saat anda ingin
membuka, menyimpan, mencetak file, maka anda tentunya sering menghadapi
dialog/jendela yang berkaitan dengan aktifitas itu. Common dialog berfungsi untuk
menampilkan jendela/dialog tersebut.
Hasil Form2 akan seperti gambar di bawah ini:

Form3
1. Tambahkan Form3.
2. Tambahkan Progress Bar
, nama sudah default Progressbar1.
3. Beriketerangan seperlunya dengan Label box seperti cara sebelumnya.

Pemrograman Komputer - D3 PJSIG

64

Hasilnya seperti di bawah ini:

Penulisan Program
Keterangan pada script terletak pada baris yang diawali tanda petik, seperti berikut:
<keterangan>
Form1
1. Script untuk File > Buka Gambar
Private Sub FileOpen_Click()
Dim i As Integer, j As Integer
Dim red As Integer, green As Integer, blue As Integer
Dim pixel As Long
Dim PictureName As String
Me.Hide
CommonDialog1.InitDir = App.Path
CommonDialog1.Filter = "Images|*.BMP;*.GIF;*.JPG;*.DIB|All Files|*.*"
CommonDialog1.Action = 1
PictureName = CommonDialog1.FileName
If PictureName = "" Then Exit Sub
Picture1.Picture = LoadPicture(PictureName)
Form1.Refresh
X = Picture1.ScaleWidth
Y = Picture1.ScaleHeight
If X > 500 Or Y > Then
MsgBox "Image too large to process. Please try to loading a smaller image."
X=0
Y=0
Exit Sub
End If
Form1.Width = Form1.ScaleX(Picture1.Width + 6, vbPixels, vbTwips)
Form1.Height = Form1.ScaleY(Picture1.Height + 30, vbPixels, vbTwips)
Form1.Refresh
Form3.Show
Form3.Refresh
For i = 0 To Y - 1
For j = 0 To X - 1
pixel = Form1.Picture1.Point(j, i)
red = pixel& Mod 256
green = ((pixel And &HFF00) / 256&) Mod 256&
blue = (pixel And &HFF0000) / 65536
ImagePixels(0, i, j) = red
ImagePixels(1, i, j) = green
ImagePixels(2, i, j) = blue
Next

Pemrograman Komputer - D3 PJSIG

65

Form3.ProgressBar1.Value = i * 100 / (Y - 1)
Next
Form3.Hide
Me.Show
End Sub

2. Script untuk File > Simpan


Private Sub FileSave_Click()
Dim PictureName
CommonDialog1.Action = 2
PictureName = CommonDialog1.FileName
SavePicture Picture1.Image
End Sub

3. Script untuk File > Keluar


Private Sub FileExit_Click()
End
End Sub

4. Script untuk Filter > Lembut


Private Sub ProcessSmooth_Click()
Dim i As Integer, j As Integer
Dim red As Integer, green As Integer, blue As Integer
For i = 1 To Y - 2
For j = 1 To X - 2
red = ImagePixels(0, i - 1, j - 1) + ImagePixels(0, i - 1, j) + ImagePixels(0, i - 1, j + 1) +
ImagePixels(0, i, j - 1) + ImagePixels(0, i, j) + ImagePixels(0, i, j + 1) + ImagePixels(0, i + 1, j - 1) +
ImagePixels(0, i + 1, j) + ImagePixels(0, i + 1, j + 1)
green = ImagePixels(1, i - 1, j - 1) + ImagePixels(1, i - 1, j) + ImagePixels(1, i - 1, j + 1) +
ImagePixels(1, i, j - 1) + ImagePixels(1, i, j) + ImagePixels(1, i, j + 1) + ImagePixels(1, i + 1, j - 1) +
ImagePixels(1, i + 1, j) + ImagePixels(1, i + 1, j + 1)
blue = ImagePixels(2, i - 1, j - 1) + ImagePixels(2, i - 1, j) + ImagePixels(2, i - 1, j + 1) +
ImagePixels(2, i, j - 1) + ImagePixels(2, i, j) + ImagePixels(2, i, j + 1) + ImagePixels(2, i + 1, j - 1) +
ImagePixels(2, i + 1, j) + ImagePixels(2, i + 1, j + 1)
Picture1.PSet (j, i), RGB(red / 9, green / 9, blue / 9)
Next
Picture1.Refresh
Next
End Sub

5. Script untuk Filter > Tajam


Private Sub ProcessSharpen_Click()
Dim i As Integer, j As Integer
Const Dx As Integer = 1
Const Dy As Integer = 1
Dim red As Integer, green As Integer, blue As Integer
For i = 1 To Y - 2
For j = 1 To X - 2
red = ImagePixels(0, i, j) + 0.5 * (ImagePixels(0, i, j) ImagePixels(0, i - Dx, j - Dy))
green = ImagePixels(1, i, j) + 0.5 * (ImagePixels(1, i, j) ImagePixels(1, i - Dx, j - Dy))
blue = ImagePixels(2, i, j) + 0.5 * (ImagePixels(2, i, j) - ImagePixels(2, i - Dx, j - Dy))

Pemrograman Komputer - D3 PJSIG

66

If red > 255 Then red = 255


If red < 0 Then red = 0
If green > 255 Then green = 255
If green < 0 Then green = 0
If blue > 255 Then blue = 255
If blue < 0 Then blue = 0
Picture1.PSet (j, i), RGB(red, green, blue)
Next
Picture1.Refresh
Next
End Sub

6. Script untuk Filter > Timbul


Private Sub ProcessEmboss_Click()
Dim i As Integer, j As Integer
Const Dx As Integer = 1
Const Dy As Integer = 1
Dim red As Integer, green As Integer, blue As Integer
For i = 1 To Y - 2
For j = 1 To X - 2
red = Abs(ImagePixels(0, i, j) - ImagePixels(0, i + Dx, j + Dy) + 128)
green = Abs(ImagePixels(1, i, j) - ImagePixels(1, i + Dx, j + Dy) + 128)
blue = Abs(ImagePixels(2, i, j) - ImagePixels(2, i + Dx, j + Dy) + 128)
Picture1.PSet (j, i), RGB(red, green, blue)
Next
Picture1.Refresh
Next
End Sub

7. Script untuk Filter > Samar

Private Sub ProcessDiffuse_Click()


Dim i As Integer, j As Integer
Dim Rx As Integer, Ry As Integer
Dim red As Integer, green As Integer, blue As Integer
For i = 2 To Y - 3
For j = 2 To X - 2
Rx = Rnd() * 4 - 2
Ry = Rnd() * 4 - 2
red = ImagePixels(0, i + Rx, j + Ry)
green = ImagePixels(1, i + Rx, j + Ry)
blue = ImagePixels(2, i + Rx, j + Ry)
Picture1.PSet (j, i), RGB(red, green, blue)
Next
DoEvents
Next
End Sub

8. Script untuk Filter > Matriks


Private Sub ProcessCustom_Click()
Dim RedSum As Integer, GreenSum As Integer, BlueSum As Integer
Dim red As Integer, green As Integer, blue As Integer
Dim fi As Integer, fj As Integer

Pemrograman Komputer - D3 PJSIG

67

Dim i As Integer, i As Integer


Dim Offset As Integer
Form2.Show 1 'wait for user to define filter
If FilterCancel = True Then Exit Sub
If FilterNorm = 0 Then FilterNorm = 1
If Form2.Option1.Value Then
Offset = 1
Else
Offset = 2
End If
For i = Offset To Y - Offset - 1
For j = Offset To X - Offset - 1
RedSum = 0: GreenSum = 0: BlueSum = 0
For fi = -Offset To Offset
For fj = -Offset To Offset
RedSum = RedSum + ImagePixels(0, i + fi, j + fj) * CustomFilter(fi + 2, fj + 2)
GreenSum = GreenSum + ImagePixels(1, i + fi, j + fj) * CustomFilter(fi + 2, fj + 2)
BlueSum = BlueSum + ImagePixels(2, i + fi, j + fj) * CustomFilter(fi + 2, fj + 2)
Next
Next
red = Abs(RedSum / FilterNorm + FilterBias)
green = Abs(GreenSum / FilterNorm + FilterBias)
blue = Abs(BlueSum / FilterNorm + FilterBias)
Picture1.PSet (j, i), RGB(red, green, blue)
Next
DoEvents
Next
End Sub

Form2
9. Script untuk Menu File > Simpan Konfigurasi
Private Sub FileSave_Click()
On Error GoTo ExitSub
CommonDialog1.Filter = "Custom Filters|*.FLR"
CommonDialog1.CancelError = True
CommonDialog1.ShowSave
Me.Caption = CommonDialog1.FileTitle
FFileNum = FreeFile
Open CommonDialog1.FileName For Output As FFileNum
If Option1.Value Then Write #FFileNum, "3" Else Write #FFileNum, "5"
Write #FFileNum, Text2.Text
Write #FFileNum, Text3.Text
For i = 0 To 4
For j = 0 To 4
Write #FFileNum, Text1(i * 5 + j).Text
Next
Next
Close #FFileNum
Exit Sub
ExitSub:
Exit Sub
End Sub

10. Script untuk Menu File > Ambil Konfigurasi

Pemrograman Komputer - D3 PJSIG

68

Private Sub FileLoad_Click()


On Error GoTo ExitSub
CommonDialog1.Filter = "Custom Filters|*.FLR"
CommonDialog1.CancelError = True
CommonDialog1.ShowOpen
FFileNum = FreeFile
Me.Caption = CommonDialog1.FileTitle
Open CommondDialog1.FileName For Input As FFileNum
Input #FFileNum, FSize
If FSize = 3 Then Option1.Value = True Else Option2.Value = True
Input #FFileNum, div
Input #FFileNum, bias
Text2.Text = div
Text3.Text = bias
For i = 0 To 4
For j = 0 To 4
Input #FFileNum, fweight
Text1(i * 5 + j).Text = fweight
Next
Next
Close #FFileNum
Exit Sub
ExitSub:
Exit Sub
End Sub

11. Script untuk Kontrol Object Eksekusi


Private Sub Command1_Click()
Dim i, j
FilterCancel = False
For i = 0 To 4
For j = 0 To 4
CustomFilter(i, j) = Val(Text1(i * 5 + j).Text)
Next
Next
FilterNorm = Val(Text2.Text)
FilterBias = Val(Text3.Text)
Form2.Hide
End Sub

12. Script untuk Kontrol Object Tunda


Private Sub Command2_Click()
FilterCancel = True
Form2.Hide
End Sub

Pemrograman Komputer - D3 PJSIG

69

MANAJEMEN BASIS DATA SIG


(PENYUSUNAN APLIKASI PENGOLAHAN BASIS DATA SIG)

DASAR TEORI
Acara ke-5 diharapkan anda memahami bagaimana penyusunan aplikasi pengolahan basis data
SIG dalam konteks ini menggunakan Piranti Lunak ArcView, dengan menggunakan Koneksi Jarak
Jauh (Remote DataBase Connection Using Microsoft Jet DataBase Enggine).
Dengan aplikasi sederhana ini diharapkan mahasiswa memiliki imajinasi dan daya kreasi yang baik
untuk meningkatkan kemampuan dalam bidang pemrograman SIG.
Bahan yang digunakan adalah:
Peta Kodya Yogyakarta, dengan data:
ID
Nama Kecamatan
Jumlah Penduduk
Jumlah Kematian
LANGKAH KERJA
1. Buka Program VB, Add Ins> Visual Data Manager > buka c:/gis/admdiy.dbf
Ka > design

2. Add Index >


buat index pada tiap field/nama kolom , menjadi:
Pemrograman Komputer - D3 PJSIG

70

Field

Nama Index

ID
IDENTITAS
KPDT
MATI
RASIO%

ID
IDENTITAS
KEPADATAN
MATI
RASIO%

3. Kembali ke program utama


Gambarlah dengan control object form1, dengan susunan Name, Label, Caption, dan
Properti tiap objectnya, sebagai berikut:
Object

Nama

Keterangan

Properti

TextBox
TextBox
TextBox
TextBox
TextBox
TextBox
TextBox
TextBox
ComboBox
CommandButton
CommandButton
CommandButton
CommandButton
CommandButton
Data

IDKU
txtFields(0)
txtFields(0)
txtFields(0)
txtFields(0)
txtFields(0)
Text1
Text2
Combo1
cmdRefresh
cmdUpdate
cmdClose
Command1
Command2
Data1

ID
NAMA
IDENTITAS
JUMLAH PENDUDUK
KEMATIAN
RASIO%
Isian Kebaris
Isian Cari data
List Kolom/Field
Refresh Data
Update Data
Tutup Aplikasi
Kebaris (Eksekusi)
Cari data (Eksekusi)
Basis Data

Data Source: Data1, Field: ID


Data Source: Data1, Field: Nama
Data Source: Data1, Field: Identitas
Data Source: Data1, Field: KPDT
Data Source: Data1, Field: Kematian
Data Source: Data1, Field: Baris

Connect:dBaseIV;
DataBaseName:C:\GIS
RecordSource:admdiy

4. Tuliskan kode untuk program ini, simpan dalam Acara5_a.


Private Sub cmdRefresh_Click()

Pemrograman Komputer - D3 PJSIG

71

'Refresh hanya digunakan untuk MultiUser


Data1.Refresh
End Sub
Private Sub cmdUpdate_Click()
Data1.UpdateRecord
Data1.Recordset.Bookmark = Data1.Recordset.LastModified
End Sub
Private Sub cmdClose_Click()
Unload Me
End Sub
Private Sub Command1_Click()
On Error Resume Next
Data1.Refresh
Data1.RecordsetType = 1
Data1.Recordset.GetRows Text1.Text - 1
End Sub
Private Sub Command2_Click()
Dim Kolom As String
Dim Cari As String
Kolom = Combo1.Text
Cari = Text2.Text
If Cari = "" Then
Exit Sub
Else
Data1.RecordsetType = 0
Data1.Refresh
Data1.Recordset.Index = Kolom
Data1.Recordset.Seek ">=", Cari
End If
End Sub
Private Sub Data1_Error(DataErr As Integer, Response As Integer)
'Disini Error Handling Diletakkan
'Jika melewatkan kesalahan tutup baris di bawah ini
'Jika ingin memberi pesan Editlah
'MsgBox "Kesalahan Data:" & Error$(DataErr)
Response = 0 'Membuang kesalahan/tidak dianggap
'Data1.RecordsetType = 1
'Data1.Refresh
'Data1.Recordset.MoveFirst
End Sub
Private Sub Data1_Reposition()
Screen.MousePointer = vbDefault
On Error Resume Next
' 'Menampilkan posisi record
' 'Untuk Type Dataset = dynasets and snapshots
Data1.Caption = "Catatan No:" & IDKU.Text
' 'Untuk Type Table, diindek dulu (dimatikan sementara [REM])
End Sub
Private Sub Data1_Validate(Action As Integer, Save As Integer)
'Kode-kode validasi

Pemrograman Komputer - D3 PJSIG

72

Select Case Action


Case vbDataActionMoveFirst
Case vbDataActionMovePrevious
Case vbDataActionMoveNext
Case vbDataActionMoveLast
Case vbDataActionAddNew
Case vbDataActionUpdate
Case vbDataActionDelete
Case vbDataActionFind
Case vbDataActionBookmark
Case vbDataActionClose
End Select
Screen.MousePointer = vbHourglass
End Sub
Private Sub Text1_Change()
On Error Resume Next
Data1.Refresh
Data1.RecordsetType = 1
Data1.Recordset.GetRows Text1.Text - 1
End Sub
Private Sub Text1_KeyPress(KeyAscii As Integer)
'Hanya boleh diisi angka atau backspace
If Not (KeyAscii >= Asc("0") And KeyAscii <= Asc("9") Or KeyAscii = vbKeyBack) Then
Beep
KeyAscii = 0
End If
End Sub
Private Sub Text2_Change()
Dim Kolom As String
Dim Cari As String
Kolom = Combo1.Text
Cari = Text2.Text
If Cari = "" Then
Exit Sub
Else
Data1.RecordsetType = 0
Data1.Refresh
Data1.Recordset.Index = Kolom
Data1.Recordset.Seek ">=", Cari
End If
End Sub
Private Sub txtFields_Change(Index As Integer)
On Error Resume Next
Select Case Index
Case 2, 3
txtFields(4).Text = Format((txtFields(3) / txtFields(2)) * 100, "0.##")
End Select
End Sub

Pemrograman Komputer - D3 PJSIG

73

SOAL:
1. Buatlah sebuah baris program pemfilteran Roberts Gradient pada pengolahan citra digital.
2. Berikan contoh-contoh aplikasi pemrograman yang terkait SIG dan PCD.

Referensi
David I. Schneider, An Introduction to Programming Using Visual Basic 6.0, Fourth Edition,
Prentice-Hall, Inc, New Jersey, 1999.
Francesco Balena, Programming Microsoft Visual Basic 6.0, Microsoft Press, 1999.
Hidayat, R.N., 2002, Praktikum Visual Basic, Jurusan Perencanaan Pengembangan Wilayah,
Fakultas Geografi UGM, Yogyakarta.
McLeod, R., dan Schell, G., 2007, Management Information System 10ed, Prentice Hall.

Pemrograman Komputer - D3 PJSIG

74

KUNCI JAWABAB SOAL:


1. Buatlah sebuah baris program pemfilteran Roberts Gradient pada pengolahan citra digital.
Private Sub Command1_Click()
Dim w(400, 400) As Integer
n1 = 0
For i = 1 To Picture1.ScaleWidth Step 15
n1 = n1 + 1
n2 = 0
For j = 1 To Picture1.ScaleHeight Step 15
warna = Picture1.Point(i, j)
r = warna And RGB(255, 0, 0)
g = Int((warna And RGB(0, 255, 0)) / 256)
b = Int(Int((warna And RGB(0, 0, 255)) / 256) / 256)
wx = Int((r + g + b) / 3)
Picture1.PSet (i, j), RGB(wx, wx, wx)
n2 = n2 + 1
w(n1, n2) = wx
Next j
Next i
For i = 1 To n1
For j = 1 To n2
If i = 1 Then wx1 = w(i, j) Else wx1 = w(i, j) - w(i - 1, j)
If j = 1 Then wx2 = w(i, j) Else wx2 = w(i, j) - w(i, j - 1)
wx = Abs(wx1) + Abs(wx2)
If wx > 255 Then wx = 255
Picture2.PSet ((i - 1) * 15 + 1, (j - 1) * 15 + 1), RGB(wx, wx, wx)
Next j
Next i
End Sub

2. Berikan contoh-contoh aplikasi pemrograman yang terkait SIG dan PCD.


Aplikasi pemrograman SIG:
- Sistem Informasi Jaringan Jalan berbasis SIG
- Sistem Informasi Jaringan Listrik berbasis SIG
- Sistem Informasi Infrastruktur Data Spasial
Aplikasi pemrograman PCD:
- Pemrograman spasial untuk pemfilteran citra satelit
- Pemrograman spasial untuk klasifikasi multispectral, OBIA (Object Based Image
Analysis), segmentasi objek, pengklasteran objek.

Pemrograman Komputer - D3 PJSIG

75

Das könnte Ihnen auch gefallen