SlideShare a Scribd company logo
1 of 31
Download to read offline
GEOVISI™ GIS TEXTBOOKS SERIES :
BUKU SERI PEMROGRAMAN SISTEM INFORMASI GEOGRAFIS
                        DENGAN MAPINFO MAPBASIC




                               PENULIS : IBNU ROSYADI, S.Si
                                   PT GEOVISI MITRATAMA
BAB 1




GeoVISI™ GIS TEXTBOOKS SERIES : GIS Programming Using Map Basic. Silahkan dikopi dan disebarkan secara bebas   1
dengan syarat tidak menghilangkan label Geovisi. Geovisi™ merupakan merk dagang PT. Geovisi Mitratama
http://geovisi.com email : info@geovisi.com. E-book ini dipublish di Mailing list Komunitas GIS.
1. Dasar-Dasar Pemrograman MapBasic
1.1 Elemen-Elemen Dasar Pemrograman MapBasic

Elemen dasar pemrograman MapBasic mendeskripsikan beberapa aspek dasar dari sintak pemrograman
MapBasic.

1.1.1 Baris Komentar Program

Baris komentar merupakan baris kode yang dimaksudkan sebagai deskripsi dari program yang akan
diabaikan oleh compiler MapBasic. Seperti pada program Basic pada umumnya, pada MapBasic
komentar diawali dengan karakter aphostrophe (').

Contoh penulisan komentar:

' Program menampilkan pesan

Note "Selamat Datang"




Silahkan compile dan jalankan program dengan cara klik menu Project kemudian pilih Compile, setelah
berhasil silahkan klik menu Run maka akan menghasilkan tampilan seperti berikut ini:




GeoVISI™ GIS TEXTBOOKS SERIES : GIS Programming Using Map Basic. Silahkan dikopi dan disebarkan secara bebas   2
dengan syarat tidak menghilangkan label Geovisi. Geovisi™ merupakan merk dagang PT. Geovisi Mitratama
http://geovisi.com email : info@geovisi.com. E-book ini dipublish di Mailing list Komunitas GIS.
Perhatikan bahwa kode beris kode “' Program menampilkan pesan“ tidak berefek pada program.



1.1.2 Variabel

Variabel merupakan tempat menyimpan nilai yang dapat berubah selama siklus hidupnya. Sebelum
digunakan, variabel harus dideklarasikan terlebih dahulu. Statemen Dim (untuk variabel lokal) atau
Global (untuk variabel global) digunakan untuk mendeklarasikan dan mendefinisikan variabel. Deklarasi
variabel mencakup nama dan tipe variabel. Gunakan operator sama dengan (=) untuk memasukkan nilai
ke dalam variabel. Contoh pendeklarasian dan pengisian nilai pada variabel.

Dim nama As String

nama = "Ibnu"




Satu statemen pendeklarasian dan pendefinisian variabel (Dim atau Global) dapat digunakan untuk
mendeklarasikan beberapa variabel dengan dipisahkan tanda koma. Contoh berikut merupakan
pendeklarasian dua variabel dengan tipe yang sama.


GeoVISI™ GIS TEXTBOOKS SERIES : GIS Programming Using Map Basic. Silahkan dikopi dan disebarkan secara bebas   3
dengan syarat tidak menghilangkan label Geovisi. Geovisi™ merupakan merk dagang PT. Geovisi Mitratama
http://geovisi.com email : info@geovisi.com. E-book ini dipublish di Mailing list Komunitas GIS.
Dim nama, alamat As String

nama = "Ibnu"

alamat = "Yogyakarta"




Contoh berikut merupakan pendeklarasian empat variabel dengan tipe yang berbeda.

Dim nama, alamat As String, tinggi, berat As Float

nama = "Ibnu"

alamat = "Yogyakarta"

tinggi = 170.5

berat = 60

Note "Nama : " + nama + Chr$(10) + "Alamat : " + alamat + Chr$(10) +

 "Tinggi : " + tinggi + Chr$(10) + "Berat : " + berat




Penamaan Variabel

Terdapat beberapa ketentuan untuk pemberian nama varibel sebagai berikut:
    -   harus dimulai dengan karakter huruf (alfabetik), garis bawah atau tilde (~)
    -   tidak boleh mengandung spasi
    -   maksimum 31 karakter
    -   dapat terdiri dari karakter huruf, bilangan, tanda pound (#), atau garis bawah


GeoVISI™ GIS TEXTBOOKS SERIES : GIS Programming Using Map Basic. Silahkan dikopi dan disebarkan secara bebas   4
dengan syarat tidak menghilangkan label Geovisi. Geovisi™ merupakan merk dagang PT. Geovisi Mitratama
http://geovisi.com email : info@geovisi.com. E-book ini dipublish di Mailing list Komunitas GIS.
-     dapat diakhiri dengan tanda persen (%), ampersand (&), tanda seru (!), atau karakter @, dimana
          penulisan ini tidak memiliki fungsi khusus walaupun dalam bahasa Basic dapat mengindikasikan
          tipe variabel tertentu
    -     tidak boleh sama dengan salah satu key word yang dimiliki oleh MapBasic (misal: Call, Close,
          Goto, dan lain sebagainya)
    -     bersifat case-insensitive sehingga penulisan nama variabel dengan huruf besar dan kecil dianggap
          sama.


Tipe Variabel

Tipe variabel yang didukung oleh MapBasic adalah

              Tipe                                         Keterangan

 SmallInt                       Data 2 byte bilangan bulat dengan

                                interval nilai antara -32.767 sampai 32.767

 Integer                        Data 4 byte bilangan bulat dengan

                                interval nilai antara -2.147.483.647 sampai 2.147.483.647

 Float                          Data 8 byte format IEEE bilangan real

 String                         Data karakter dengan panjang maksimal hingga 32.767
                                karakter




GeoVISI™ GIS TEXTBOOKS SERIES : GIS Programming Using Map Basic. Silahkan dikopi dan disebarkan secara bebas   5
dengan syarat tidak menghilangkan label Geovisi. Geovisi™ merupakan merk dagang PT. Geovisi Mitratama
http://geovisi.com email : info@geovisi.com. E-book ini dipublish di Mailing list Komunitas GIS.
String * n                     Data karakter dengan panjang n karakter (hingga 32.767
                                karakter)

 Logical                        Data 1 byte, TRUE (nilai ≠ 0) atau FALSE (nilai = 0)

 Date                           Data 4 byte: 2 byte untuk menyimpan data tahun, 1 byte
                                untuk bulan, dan 1 byte untuk hari (tanggal)

 Object                         Tipe data yang digunakan untuk menyimpan variabel objek-
                                objek yang bersifat grafis (point, region, line, polyline, arc,
                                rectangle, rounded rectangle, ellipse, text, atau frame)



Tipe Variabel Buatan Sendiri

Untuk mendefinisikan variabel buatan sendiri digunakan statemen “Type…End Type”. Berikut contoh
kode pembuatan dan penggunaan tipe variabel buatan sendiri.
Type DataPribadi
        nama As String * 30
        alamat As String * 100
        tinggi As Float
        berat As Float
End Type
Dim siswa As DataPribadi


GeoVISI™ GIS TEXTBOOKS SERIES : GIS Programming Using Map Basic. Silahkan dikopi dan disebarkan secara bebas   6
dengan syarat tidak menghilangkan label Geovisi. Geovisi™ merupakan merk dagang PT. Geovisi Mitratama
http://geovisi.com email : info@geovisi.com. E-book ini dipublish di Mailing list Komunitas GIS.
siswa.nama = "Ibnu"
siswa.alamat = "Yogyakarta"
siswa.tinggi = 170.5
siswa.berat = 60
Note siswa.nama




Variabel Array

MapBasic mendukung variabel array satu dimensi dengan aturan penulisan sebagai berikut:

Dim NamaVariabel (JumlahAnggota) As TipeVariabel




Statemen “UBound” digunakan untuk mengetahui ukuran aktual variabel array, sedangkan “ReDim”
digunakan untuk mengubah ukuran atau jumlah anggota variabel array yang bersangkutan.

Contoh kode program pendeklarasian, pengisian nilai dan pengambilan nilai dari variabel array.
Dim nama(4) As String
nama(1) = "Ani"
nama(2) = "Ana"
nama(3) = "Ina"
nama(4) = "Oni"


Note nama(1)




GeoVISI™ GIS TEXTBOOKS SERIES : GIS Programming Using Map Basic. Silahkan dikopi dan disebarkan secara bebas   7
dengan syarat tidak menghilangkan label Geovisi. Geovisi™ merupakan merk dagang PT. Geovisi Mitratama
http://geovisi.com email : info@geovisi.com. E-book ini dipublish di Mailing list Komunitas GIS.
Jangkauan (Scope) Variabel

Variabel yang dideklarasikan dengan menggunakan statemen “Dim” merupakan varibel lokal yang hanya
berlaku (siklus hidupnya) di dalam fungsi atau prosedur dimana variable tersebut dideklarasikan.
Sedangkan variabel yang dideklarasikan dengan menggunakan statemen “Global” berlaku umum di
dalam sebuah program MapBasic. Variabel ini dideklarasikan di luar fungsi atau prosedur, dan
didefinisikan sebelum fungsi atau prosedur.

Apabila terdapat kasus dua nama variabel yang sama dimana sebuah variabel global dan yang satu lagi
variabel lokal di dalam prosedur, maka prioritas akan diberikan pada variabel lokal selama siklus
hidupnya, kemudian setelah siklus variabel lokal berlalu prioritas diberikan kepada variabel global.


Declare Sub Main
Declare Sub initialize_globals
Global strVar As String


Sub Main
        Dim strVar As String
        strVar = "Lokal"
        Call initialize_globals
        Note "Prosedur Main : " + strVar
End Sub



GeoVISI™ GIS TEXTBOOKS SERIES : GIS Programming Using Map Basic. Silahkan dikopi dan disebarkan secara bebas   8
dengan syarat tidak menghilangkan label Geovisi. Geovisi™ merupakan merk dagang PT. Geovisi Mitratama
http://geovisi.com email : info@geovisi.com. E-book ini dipublish di Mailing list Komunitas GIS.
Sub initialize_globals
        strVar = "Global"
        Note "Prosedur initialize_globals : " + strVar
End Sub




1.1.3 Konstanta

Konstanta merupakan nilai tertentu (data value) yang tidak akan berubah selama program yang
bersangkutan dieksekusi (siklus hidup). Konstanta didefinisikan dengan key word “Define”. Contoh kode
yang mengandung konstanta:


Define Pi 3.14
Define Programmer "Ibnu"




1.1.4 Operator

Operator merupakan simbol yang menginformasikan kepada compiler MapBasic untuk menjalankan
manipulasi matematis atau logika tertentu. MapBasic mendukung beberapa jenis operator sebagai berikut:




GeoVISI™ GIS TEXTBOOKS SERIES : GIS Programming Using Map Basic. Silahkan dikopi dan disebarkan secara bebas   9
dengan syarat tidak menghilangkan label Geovisi. Geovisi™ merupakan merk dagang PT. Geovisi Mitratama
http://geovisi.com email : info@geovisi.com. E-book ini dipublish di Mailing list Komunitas GIS.
Operator Numerik

     Operator                                             Deskripsi

          +             Penjumlahan (untuk variabel bertipe string akan menghasilkan variabel
                        string baru dari masukan dua variabel

          -             Pengurangan

          *             Perkalian

          /             Pembagian

                       Pembagian bilangan bulat integer (tanpa sisa)

        Mod             Sisa pembagian bilangan bulat

          ^             Pangkat



Operator Perbandingan

     Operator                                             Deskripsi

          =             Sama dengan

         <>             Tidak sama dengan




GeoVISI™ GIS TEXTBOOKS SERIES : GIS Programming Using Map Basic. Silahkan dikopi dan disebarkan secara bebas   10
dengan syarat tidak menghilangkan label Geovisi. Geovisi™ merupakan merk dagang PT. Geovisi Mitratama
http://geovisi.com email : info@geovisi.com. E-book ini dipublish di Mailing list Komunitas GIS.
<             Lebih kecil dari

          >             Lebih besar dari

         <=             Lebih kecil atau sama dengan

         >=             Lebih besar atau sama dengan

     Between            Di antara nilai minimum dan maksimum yang ditentukan sendiri

                        Misal: X Between 0 And 10



Operator Logika

     Operator                                             Deskripsi

        And             Kedua operand benar – kedua kondisi terpenuhi, menghasilkan nilai
                        logika TRUE

         Or             Salah satu operand benar – salah satu kondisi sudah terpenuhi,
                        menghasilkan nilai logika TRUE

        Not             Operand akan menghasilkan nilai logika FALSE



GeoVISI™ GIS TEXTBOOKS SERIES : GIS Programming Using Map Basic. Silahkan dikopi dan disebarkan secara bebas   11
dengan syarat tidak menghilangkan label Geovisi. Geovisi™ merupakan merk dagang PT. Geovisi Mitratama
http://geovisi.com email : info@geovisi.com. E-book ini dipublish di Mailing list Komunitas GIS.
Operator Geografis

     Operator                                             Deskripsi

     Contains           Koordinat titik pusat (centroid) unsur spasial yang kedua berada di
                        dalam wilayah unsur spasial yang pertama

   Contains Part        Sebagian wilayah unsur spasial yang kedua berada di dalam wilayah
                        unsur spasial yang pertama

  Contains Entire       Keseluruhan wilayah unsur spasial yang kedua berada di dalam wilayah
                        unsur spasial yang pertama

      Within            Koordinat titik pusat (centroid) unsur spasial yang pertama berada di
                        dalam wilayah unsur spasial yang kedua

   Partly Within        Sebagian wilayah unsur spasial yang pertama berada di dalam wilayah
                        unsur spasial yang kedua

  Entirely Within       Keseluruhan wilayah unsur spasial yang pertama berada di dalam
                        wilayah unsur spasial yang kedua

     Intersects         (wilayah, batas, atau garis) unsur spasial yang pertama dan yang kedua
                        berpotongan di beberapa titik


GeoVISI™ GIS TEXTBOOKS SERIES : GIS Programming Using Map Basic. Silahkan dikopi dan disebarkan secara bebas   12
dengan syarat tidak menghilangkan label Geovisi. Geovisi™ merupakan merk dagang PT. Geovisi Mitratama
http://geovisi.com email : info@geovisi.com. E-book ini dipublish di Mailing list Komunitas GIS.
Prioritas Operator

MapBasic menentukan prioritas evaluasi dengan urutan seperti berikut:
    1.   tanda kurung [()]
    2.   pangkat [^]
    3.   negasi [–]
    4.   perkalian [*], pembagian [/ dan ], mod
    5.   penjumlahan [+], pengurangan [-], penggabungan string [+ dan &]
    6.   operator geografis, operator perbandingan, dan Like
    7.   operator Not
    8.   operator And
    9.   operator Or


1.2 Struktur Pemrograman

1.2.1 Percabangan

Compiler MapBasic mendukung bebarapa konsep dan implemantasi struktur pemrograman sebagai
berikut:



IF – THEN – END IF

Digunakan untuk percabangan yang melibatkan satu kondisi dengan satu alternatif (blok) tindakan.




GeoVISI™ GIS TEXTBOOKS SERIES : GIS Programming Using Map Basic. Silahkan dikopi dan disebarkan secara bebas   13
dengan syarat tidak menghilangkan label Geovisi. Geovisi™ merupakan merk dagang PT. Geovisi Mitratama
http://geovisi.com email : info@geovisi.com. E-book ini dipublish di Mailing list Komunitas GIS.
If (kondisi) Then

         Blok Proses

End If




IF – THEN – ELSE – END IF

Digunakan untuk percabangan yang melibatkan satu kondisi dengan dua alternatif (blok) tindakan.

If (kondisi) Then

         Blok Proses_1

Else

         Blok Proses_2

End If

IF – THEN – ELSEIF – ELSE – END IF

Digunakan untuk percabangan yang melibatkan beberapa kondisi dan beberapa alternatif (blok) tindakan.



If (kondisi_1) Then

         Blok Proses_1

ElseIf (kondisi_2) Then

         Blok Proses_2


GeoVISI™ GIS TEXTBOOKS SERIES : GIS Programming Using Map Basic. Silahkan dikopi dan disebarkan secara bebas   14
dengan syarat tidak menghilangkan label Geovisi. Geovisi™ merupakan merk dagang PT. Geovisi Mitratama
http://geovisi.com email : info@geovisi.com. E-book ini dipublish di Mailing list Komunitas GIS.
ElseIf (kondisi_n) Then

         Blok Proses_n

Else

         Blok Proses_n+1

End If

DO – CASE

Digunakan untuk percabangan yang melibatkan beberapa kondisi dan beberapa alternatif (blok) tindakan,
sebagai alternatif dari IF – THEN – ELSEIF – ELSE – END IF

Do Case VariabelString (atau bilangan bulat)

         Case KumpulanNilai_1

                Blok Proses_1

         Case KumpulanNilai_2

                Blok Proses_2

         Case KumpulanNilai_n

                Blok Proses_n

         Case Else

                Blok Proses_n+1

End Case

1.2.2 Pengulangan

GeoVISI™ GIS TEXTBOOKS SERIES : GIS Programming Using Map Basic. Silahkan dikopi dan disebarkan secara bebas   15
dengan syarat tidak menghilangkan label Geovisi. Geovisi™ merupakan merk dagang PT. Geovisi Mitratama
http://geovisi.com email : info@geovisi.com. E-book ini dipublish di Mailing list Komunitas GIS.
Compiler MapBasic mendukung konsep dan implementasi struktur pengulangan sebagai berikut:

FOR - NEXT

Melakukan pengulangan blok proses dari nilai awal ke nilai akhir

For IndeksLoop = NilaiAwal To NilaiAkhir

        Blok Proses

Next

Skema For-Next di atas akan menambah nilai IndeksLoop naik satu tingkat. Apabila menghendaki
tingkatan yang tidak sama dengan satu (dapat bernilai negatif atau positif) maka dapat ditambahkan
STEP, sehingga skemanya menjadi sebagai berikut:

For IndeksLoop = NilaiAwal To NilaiAkhir Step NilaiStep

        Blok Proses

Next

Apabila menghendaki keluar dari pengulangan sebelum IndeksLoop NilaiAkhir dapat digunakan
statemen EXIT FOR, sehingga skemannya dapat menjadi seperti berikut:

For IndeksLoop = NilaiAwal To NilaiAkhir Step NilaiStep

        Blok Proses1

        If (Kondisi) Then

                Exit For



GeoVISI™ GIS TEXTBOOKS SERIES : GIS Programming Using Map Basic. Silahkan dikopi dan disebarkan secara bebas   16
dengan syarat tidak menghilangkan label Geovisi. Geovisi™ merupakan merk dagang PT. Geovisi Mitratama
http://geovisi.com email : info@geovisi.com. E-book ini dipublish di Mailing list Komunitas GIS.
End If

        Blok Proses2

Next




DO – LOOP UNTIL dan DO UNTIL – LOOP

Digunakan untuk proses pengulangan hingga tercapai suatu kondisi tertentu (pengulangan terakhir
dilakukan pada saat kondisi terpenuhi)



Do

        Blok Proses

Loop Until (Kondisi)




Pada skema DO – LOOP UNTIL di atas program minimal melakukan satu kali eksekusi Blok Proses.

Do Until (Kondisi)

        Blok Proses

Loop




DO – LOOP WHILE dan DO WHILE – LOOP

GeoVISI™ GIS TEXTBOOKS SERIES : GIS Programming Using Map Basic. Silahkan dikopi dan disebarkan secara bebas   17
dengan syarat tidak menghilangkan label Geovisi. Geovisi™ merupakan merk dagang PT. Geovisi Mitratama
http://geovisi.com email : info@geovisi.com. E-book ini dipublish di Mailing list Komunitas GIS.
Digunakan untuk proses pengulangan selama kondisi tertentu dipenuhi (pengulangan dilakukan selama
kondisi terpenuhi). Skema yang berlaku adalah sebagai berikut:

Do

        Blok Proses

Loop While (Kondisi)

Pada skema DO – LOOP While di atas program minimal melakukan satu kali eksekusi Blok Proses.

Do While (Kondisi)

        Blok Proses

Loop




WHILE – WEND

Merupakan variasi dari “Do While – Loop “ dengan skema sebagai berikut:

While (Kondisi)

        Blok Proses

Wend




DO – EXIT DO – LOOP

GeoVISI™ GIS TEXTBOOKS SERIES : GIS Programming Using Map Basic. Silahkan dikopi dan disebarkan secara bebas   18
dengan syarat tidak menghilangkan label Geovisi. Geovisi™ merupakan merk dagang PT. Geovisi Mitratama
http://geovisi.com email : info@geovisi.com. E-book ini dipublish di Mailing list Komunitas GIS.
Untuk proses pengulangan (tak terhingga) di mana di dalam blok yang bersangkutan terdapat pengujian
suatu kondisi untuk keluar. Skema yang berlaku adalah sebagai berikut:

Do

        Blok Proses1

        If (Kondisi) Then

                 Exit Do

        End If

        Blok Proses2

Loop




GeoVISI™ GIS TEXTBOOKS SERIES : GIS Programming Using Map Basic. Silahkan dikopi dan disebarkan secara bebas   19
dengan syarat tidak menghilangkan label Geovisi. Geovisi™ merupakan merk dagang PT. Geovisi Mitratama
http://geovisi.com email : info@geovisi.com. E-book ini dipublish di Mailing list Komunitas GIS.
BAB 2




GeoVISI™ GIS TEXTBOOKS SERIES : GIS Programming Using Map Basic. Silahkan dikopi dan disebarkan secara bebas   20
dengan syarat tidak menghilangkan label Geovisi. Geovisi™ merupakan merk dagang PT. Geovisi Mitratama
http://geovisi.com email : info@geovisi.com. E-book ini dipublish di Mailing list Komunitas GIS.
2. Prosedur, Fungsi serta Feature Dasar Pemrograman Aplikasi Pada
MapBasic
Implemantasi prosedur dan fungsi bertujuan untuk memodularisasikan program yang bersangkutan
melalui pemisahan tugas-tugas menjadi unit tersendiri yang lebih kecil sehingga dapat dikendalikan dan
dikelola dengan mudah, dapat digunakan untuk membangun program aplikasi yang baru, dan dapat
menghindari duplikasi potongan program. Dengan penggunaan prosedur dan fungsi pengembangan
program aplikasi MapBasic dapat terpenuhi secara efisien dalam waktu yang relatif singkat.



2.1 Prosedur

Prosedur merupakan sekumpulan baris-baris kode (instruksi) yang kemudian diberi nama sendiri
(terkadang memiliki parameter dengan tipe data tertentu) dan akan menghasilkan status (state) yang
terdefinisi (tidak bersifat mengembalikan nilai).

Skema prosedur dalam MapBasic adalah:
Declare Sub NamaProsedur ([Kumpulan Parameter]) ' deklarasi prosedur
. . .
Sub NamaProsedur ([Kumpulan Parameter])         ' awal prosedur
    Blok baris kode berisi prosedur
End Sub                                         ' akhir prosedur




GeoVISI™ GIS TEXTBOOKS SERIES : GIS Programming Using Map Basic. Silahkan dikopi dan disebarkan secara bebas   21
dengan syarat tidak menghilangkan label Geovisi. Geovisi™ merupakan merk dagang PT. Geovisi Mitratama
http://geovisi.com email : info@geovisi.com. E-book ini dipublish di Mailing list Komunitas GIS.
Contoh pembuatan dan pengunaan prosedur:
Declare Sub TulisPesan (kalimat As String)

Sub TulisPesan(kalimat As String)
    Note kalimat
End Sub

Dim pesan As String
Pesan = "Selamat Datang"
Call TulisPesan(pesan)                    ' pemanggilan prosedur



Prosedur Main (Sub Main) adalah prosedur MapBasic yang bersifat khusus dan akan dieksekusi pertama
kali ketika program aplikasi yang bersangkutan dieksekusi. Kemudian, prosedur ini dapat mengambil alih
kontrol program dengan memanggil prosedur, fungsi, atau baris-baris kode elementer lainnya.



Contoh penggunaan prosedur Main:
Declare Sub Main
Declare Sub TulisPesan (kalimat As String)

Sub TulisPesan(kalimat As String)
    Note kalimat
End Sub

Sub Main                                       ' prosedur Main
    Dim pesan As String
    Pesan = "Selamat Datang"
    Call TulisPesan(pesan)                     ' pemanggilan prosedur
End Sub




GeoVISI™ GIS TEXTBOOKS SERIES : GIS Programming Using Map Basic. Silahkan dikopi dan disebarkan secara bebas   22
dengan syarat tidak menghilangkan label Geovisi. Geovisi™ merupakan merk dagang PT. Geovisi Mitratama
http://geovisi.com email : info@geovisi.com. E-book ini dipublish di Mailing list Komunitas GIS.
Untuk keluar dari prosedur aktif tanpa harus menyelesaikan seluruh program dalam prosedur tersebut,
dapat digunakan key word “Exit Sub”. Berikut contoh penggunaannya:
Declare Sub Main
Declare Sub TulisPesan (kalimat As String)

Sub TulisPesan(kalimat As String)
    if (len(kalimat)=1) Then
       Note "Anda belum menuliskan kalimat"
       Exit Sub
    End If
    Note kalimat
End Sub

Sub Main                                       ' prosedur Main
    Dim pesan As String
    Pesan = "S"
    Call TulisPesan(pesan)                     ' pemanggilan prosedur
End Sub




2.2 Fungsi

Fungsi merupakan sekumpulan baris-baris kode (instruksi) yang kemudian diberi nama sendiri (terkadang
memiliki parameter dengan tipe data tertentu) dan akan menghasilkan suatu nilai dengan domain yang
telah didefinisikan di dalam spesifikasinya (bersifat mengembalikan nilai). Pada dasarnya, compiler
MapBasic mendukung beberapa jenis fungsi sebagai berikut:
        -    fungsi-fungsi standard (umum) yang telah dimiliki oleh bahasa pemrograman Basic
        -    fungsi-fungsi khusus yang hanya dimiliki oleh MapInfo maupun MapBasic sendiri
        -    fungsi-fungsi buatan sendiri (custom function)

GeoVISI™ GIS TEXTBOOKS SERIES : GIS Programming Using Map Basic. Silahkan dikopi dan disebarkan secara bebas   23
dengan syarat tidak menghilangkan label Geovisi. Geovisi™ merupakan merk dagang PT. Geovisi Mitratama
http://geovisi.com email : info@geovisi.com. E-book ini dipublish di Mailing list Komunitas GIS.
Skema penulisan custom function adalah sebagai berikut:
Declare Function NamaFungsi ([KumpulanParameter]) As TipeDataOutput

...

Function NamaFungsi ([KumpulanParameter]) As TipeDataOutput
    Blok baris kode fungsi
    NamaFungsi = nilai
End Function



Nilai pengembalian disimpan dalam variabel yang digunakan pada fungsi dengan nama yang sama
dengan nama fungsi. Untuk memperjelas pembuatan dan penggunaan fungsi berikut diberikan contoh
fungsi.
Declare Function Tambah (a As Integer, b As Integer) As Integer

Function Tambah (a As Integer, b As Integer) As Integer
    Dim c As Integer
    c = a + b
    Tambah = c
End Function

Dim bil1, bil2 As Integer
bil1 = 2
bil2 = 3
Note bil1 & " + " & bil2 & " = " & Tambah(bil1, bil2)




GeoVISI™ GIS TEXTBOOKS SERIES : GIS Programming Using Map Basic. Silahkan dikopi dan disebarkan secara bebas   24
dengan syarat tidak menghilangkan label Geovisi. Geovisi™ merupakan merk dagang PT. Geovisi Mitratama
http://geovisi.com email : info@geovisi.com. E-book ini dipublish di Mailing list Komunitas GIS.
Untuk keluar dari fungsi sebelum seluruh kode dalam fungsi dieksekusi dapat menggunakan key word
“Exit Function”



2.3 Passing Variabel (by reference dan by value)

Secara default passing variabel pada argumen/parameter prosedur dan fungsi dalam MapBasic adalah by
reference, dimana variabel yang dijadikan parameter pada prosedur atau fungsi apabila terjadi perubahan
nilai akibat proses di dalam prosedur atau fungsi tersebut maka nilai itu akan tetap berlaku di luar
prosedur atau fungsi. Pada contoh berikut prosedur “CetakNilai” akan menggunakan nilai variabel
“Angka” yang telah dirubah oleh prosedur “RubahNilai” bukan nilai yang didefinisikan di awal pada
prosedur “Main”.


Declare Sub Main
Declare Sub RubahNilai(obj As Integer)
Declare Sub CetakNilai(obj As Integer)

Sub Main
    Dim Angka As Integer
    Angka = 10
    Note "Nilai Awal " + Angka
    Call RubahNilai(Angka)
    Call CetakNilai(Angka)
End Sub

Sub RubahNilai(obj As Integer)
    obj = obj * 10
End Sub



GeoVISI™ GIS TEXTBOOKS SERIES : GIS Programming Using Map Basic. Silahkan dikopi dan disebarkan secara bebas   25
dengan syarat tidak menghilangkan label Geovisi. Geovisi™ merupakan merk dagang PT. Geovisi Mitratama
http://geovisi.com email : info@geovisi.com. E-book ini dipublish di Mailing list Komunitas GIS.
Sub CetakNilai(obj As Integer)
    Note "Nilai Akhir " + obj
End Sub



Apabila menghendaki passing variabel dengan menggunakan by Value, MapBasic menyediakan key-
word byVal, maka variabel tidak terpengaruh oleh prosedur atau fungsi yang menggunakan variabel
tersebut. Pada contoh berikut prosedur “CetakNilai” akan menggunakan nilai variabel yang diisikan pada
prosedur “Main” dan tidak terpengaruh oleh perubahan nilai variabel oleh prosedur “RubahNilai”.


Declare Sub Main
Declare Sub RubahNilai(byVal obj As Integer)
Declare Sub CetakNilai(byVal obj As Integer)

Sub Main
    Dim Angka As Integer
    Angka = 10
    Note "Nilai Awal " + Angka
    Call RubahNilai(Angka)
    Call CetakNilai(Angka)
End Sub

Sub RubahNilai(byVal obj As Integer)
    obj = obj * 10
End Sub

Sub CetakNilai(byVal obj As Integer)
    Note "Nilai Akhir " + obj
End Sub




GeoVISI™ GIS TEXTBOOKS SERIES : GIS Programming Using Map Basic. Silahkan dikopi dan disebarkan secara bebas   26
dengan syarat tidak menghilangkan label Geovisi. Geovisi™ merupakan merk dagang PT. Geovisi Mitratama
http://geovisi.com email : info@geovisi.com. E-book ini dipublish di Mailing list Komunitas GIS.
2.4 Pengendalian Program

END PROGRAM

Jika menghendaki penghentian sementara jalannya eksekusi suatu program aplikasi MapBasic, maka
telah disediakan key-word “End Program”. Berikut diberikan contoh kode program yang menggunakan
End Program
Dim langkah1, langkah2 As String
langkah1 = "Melakukan langkah pertaman"
langkah2 = "Melakukan langkah kedua"

Note langkah1
End Program
Note langkah2 'baris kode yang tidak sempat dieksekusi


RUN APPLICATION, TERMINATE APPLICATION dan END MAPINFO

Apabila menghendaki melakukan eksekusi terhadap suatu program aplikasi MapBasic atau menambahkan
workspace MapInfo dari program aplikasi MapBasic yang lain, maka dapat digunakan key-word “Run
Application.

Dan sebaliknya apabila ingin menghentikan eksekusi terhadap suatu program aplikasi dari program
aplikasi yang lain, maka dapat digunakan key-word “Terminate Application”.

Sedangkan untuk menghentikan keseluruhan aktivitas aplikasi serta menutup program aplikasi SIG
MapInfo-nya secara permanen digunakan key-word “End MapInfo”.

Untuk mencoba penggunaannya buatlah dua program aplikasi MapBasic sebagai berikut:


GeoVISI™ GIS TEXTBOOKS SERIES : GIS Programming Using Map Basic. Silahkan dikopi dan disebarkan secara bebas   27
dengan syarat tidak menghilangkan label Geovisi. Geovisi™ merupakan merk dagang PT. Geovisi Mitratama
http://geovisi.com email : info@geovisi.com. E-book ini dipublish di Mailing list Komunitas GIS.
'Program 1
Dim str As String
str = "Ini program satu"
Note str



Simpan dan compile kode program di atas ke dalam alamat yang nanti dijadikan parameter dalam
program yang kedua barikut:
'Program 2
Dim pesan As String
Dim FileProgram1 As String
FileProgram1 = "D:LatihanMapBasic3latihan3_4a.mbx"

pesan = "Ini program dua"
Note pesan

'Run Application FileProgram1      'menjalankan program yang lain
Terminate Application FileProgram1 'menghentikan program yang lain
End MapInfo                        'menutup program aplikasi MapInfo



2.5 Include

Key-word “Include” digunakan untuk menggabungkan data-data dalam satu program MapBasic. Dengan
cara seperti ini, data (yang pada umumnya diimplementasikan sebagai suatu konstanta) yang terdapat di
dalam file teks include secara otomatis akan diintegrasikan ke dalam baris-baris kode MapBasic pada saat
kompilasi. Pada MapBasic, pernyataan include (pada umumnya) digunakan untuk memanfaatkan




GeoVISI™ GIS TEXTBOOKS SERIES : GIS Programming Using Map Basic. Silahkan dikopi dan disebarkan secara bebas   28
dengan syarat tidak menghilangkan label Geovisi. Geovisi™ merupakan merk dagang PT. Geovisi Mitratama
http://geovisi.com email : info@geovisi.com. E-book ini dipublish di Mailing list Komunitas GIS.
sejumlah besar baris-baris pernyataan define. Berikut disajikan contoh penggunaan include yang
diimplementasikan pada dua file berisi kode berikut:
'Contoh file def berisi konstanta

Define Phi 3.14

'Program MapBasic yang menggunakan file def

Include "d:LatihanMapBasic5konstanta.def"

Dim r, Luas as Float
Dim nama as String

r = 10
Luas = Phi * r^2

Note Luas




2.6 Mengelola Modul Dalam File Project

Untuk menghubungkan file-file modul dalam satu project                pada MapBasic dapat dilakukan dengan
membuat sebuah file project MapBasic. Untuk mencoba silahkan buat dua file berisi kode seperti di
bawah ini, kemudian silahkan lakukan langkah Compile.
Declare Sub Main()
Declare Function Tambah (a As Integer, b As Integer) As Integer

Sub Main()
    Dim nilai1, nilai2, jumlah As Integer
    nilai1 = 10
    nilai2 = 20


GeoVISI™ GIS TEXTBOOKS SERIES : GIS Programming Using Map Basic. Silahkan dikopi dan disebarkan secara bebas   29
dengan syarat tidak menghilangkan label Geovisi. Geovisi™ merupakan merk dagang PT. Geovisi Mitratama
http://geovisi.com email : info@geovisi.com. E-book ini dipublish di Mailing list Komunitas GIS.
jumlah = Tambah(nilai1, nilai2)
    Note jumlah
End Sub



Declare Function Tambah (a As Integer, b As Integer) As Integer

Function Tambah (a As Integer, b As Integer) As Integer
 Tambah = a + b
End Function

Kemudian buatlah file project (*.mbp) dengan kode sebagai berikut:
[LINK]
Application=Gabung.mbx
Module=Utama.mbo
Module=Tambah.mbo

Dengan file project ini maka prosedur Main dan fungsi Tambah dapat saling berhubungan menjadi satu
kesatuan program. Untuk mencobanya silahkan klik menu Project kemudian Link Current Project,
selanjutnya setelah berhasil klik Run.




GeoVISI™ GIS TEXTBOOKS SERIES : GIS Programming Using Map Basic. Silahkan dikopi dan disebarkan secara bebas   30
dengan syarat tidak menghilangkan label Geovisi. Geovisi™ merupakan merk dagang PT. Geovisi Mitratama
http://geovisi.com email : info@geovisi.com. E-book ini dipublish di Mailing list Komunitas GIS.

More Related Content

More from IMAT RUHIMAT (15)

2. A B S T R A K
2. A B S T R A K2. A B S T R A K
2. A B S T R A K
 
B U K U M A P S E R V E R
B U K U  M A P S E R V E RB U K U  M A P S E R V E R
B U K U M A P S E R V E R
 
L I N U X
L I N U XL I N U X
L I N U X
 
Gis Bab2
Gis Bab2Gis Bab2
Gis Bab2
 
Gis Bab9
Gis Bab9Gis Bab9
Gis Bab9
 
Gis Bab8
Gis Bab8Gis Bab8
Gis Bab8
 
Gis Bab7
Gis Bab7Gis Bab7
Gis Bab7
 
Gis Bab6
Gis Bab6Gis Bab6
Gis Bab6
 
Gis Bab5
Gis Bab5Gis Bab5
Gis Bab5
 
Gis Bab4
Gis Bab4Gis Bab4
Gis Bab4
 
Gis Bab1
Gis Bab1Gis Bab1
Gis Bab1
 
Gis Bab3
Gis Bab3Gis Bab3
Gis Bab3
 
Modul Map Info
Modul Map InfoModul Map Info
Modul Map Info
 
25743698 Pengenalan Mapserver
25743698 Pengenalan Mapserver25743698 Pengenalan Mapserver
25743698 Pengenalan Mapserver
 
25060467 Power Designer6 Tutorial
25060467  Power  Designer6  Tutorial25060467  Power  Designer6  Tutorial
25060467 Power Designer6 Tutorial
 

Modul Map Basic Indo

  • 1. GEOVISI™ GIS TEXTBOOKS SERIES : BUKU SERI PEMROGRAMAN SISTEM INFORMASI GEOGRAFIS DENGAN MAPINFO MAPBASIC PENULIS : IBNU ROSYADI, S.Si PT GEOVISI MITRATAMA
  • 2. BAB 1 GeoVISI™ GIS TEXTBOOKS SERIES : GIS Programming Using Map Basic. Silahkan dikopi dan disebarkan secara bebas 1 dengan syarat tidak menghilangkan label Geovisi. Geovisi™ merupakan merk dagang PT. Geovisi Mitratama http://geovisi.com email : info@geovisi.com. E-book ini dipublish di Mailing list Komunitas GIS.
  • 3. 1. Dasar-Dasar Pemrograman MapBasic 1.1 Elemen-Elemen Dasar Pemrograman MapBasic Elemen dasar pemrograman MapBasic mendeskripsikan beberapa aspek dasar dari sintak pemrograman MapBasic. 1.1.1 Baris Komentar Program Baris komentar merupakan baris kode yang dimaksudkan sebagai deskripsi dari program yang akan diabaikan oleh compiler MapBasic. Seperti pada program Basic pada umumnya, pada MapBasic komentar diawali dengan karakter aphostrophe ('). Contoh penulisan komentar: ' Program menampilkan pesan Note "Selamat Datang" Silahkan compile dan jalankan program dengan cara klik menu Project kemudian pilih Compile, setelah berhasil silahkan klik menu Run maka akan menghasilkan tampilan seperti berikut ini: GeoVISI™ GIS TEXTBOOKS SERIES : GIS Programming Using Map Basic. Silahkan dikopi dan disebarkan secara bebas 2 dengan syarat tidak menghilangkan label Geovisi. Geovisi™ merupakan merk dagang PT. Geovisi Mitratama http://geovisi.com email : info@geovisi.com. E-book ini dipublish di Mailing list Komunitas GIS.
  • 4. Perhatikan bahwa kode beris kode “' Program menampilkan pesan“ tidak berefek pada program. 1.1.2 Variabel Variabel merupakan tempat menyimpan nilai yang dapat berubah selama siklus hidupnya. Sebelum digunakan, variabel harus dideklarasikan terlebih dahulu. Statemen Dim (untuk variabel lokal) atau Global (untuk variabel global) digunakan untuk mendeklarasikan dan mendefinisikan variabel. Deklarasi variabel mencakup nama dan tipe variabel. Gunakan operator sama dengan (=) untuk memasukkan nilai ke dalam variabel. Contoh pendeklarasian dan pengisian nilai pada variabel. Dim nama As String nama = "Ibnu" Satu statemen pendeklarasian dan pendefinisian variabel (Dim atau Global) dapat digunakan untuk mendeklarasikan beberapa variabel dengan dipisahkan tanda koma. Contoh berikut merupakan pendeklarasian dua variabel dengan tipe yang sama. GeoVISI™ GIS TEXTBOOKS SERIES : GIS Programming Using Map Basic. Silahkan dikopi dan disebarkan secara bebas 3 dengan syarat tidak menghilangkan label Geovisi. Geovisi™ merupakan merk dagang PT. Geovisi Mitratama http://geovisi.com email : info@geovisi.com. E-book ini dipublish di Mailing list Komunitas GIS.
  • 5. Dim nama, alamat As String nama = "Ibnu" alamat = "Yogyakarta" Contoh berikut merupakan pendeklarasian empat variabel dengan tipe yang berbeda. Dim nama, alamat As String, tinggi, berat As Float nama = "Ibnu" alamat = "Yogyakarta" tinggi = 170.5 berat = 60 Note "Nama : " + nama + Chr$(10) + "Alamat : " + alamat + Chr$(10) + "Tinggi : " + tinggi + Chr$(10) + "Berat : " + berat Penamaan Variabel Terdapat beberapa ketentuan untuk pemberian nama varibel sebagai berikut: - harus dimulai dengan karakter huruf (alfabetik), garis bawah atau tilde (~) - tidak boleh mengandung spasi - maksimum 31 karakter - dapat terdiri dari karakter huruf, bilangan, tanda pound (#), atau garis bawah GeoVISI™ GIS TEXTBOOKS SERIES : GIS Programming Using Map Basic. Silahkan dikopi dan disebarkan secara bebas 4 dengan syarat tidak menghilangkan label Geovisi. Geovisi™ merupakan merk dagang PT. Geovisi Mitratama http://geovisi.com email : info@geovisi.com. E-book ini dipublish di Mailing list Komunitas GIS.
  • 6. - dapat diakhiri dengan tanda persen (%), ampersand (&), tanda seru (!), atau karakter @, dimana penulisan ini tidak memiliki fungsi khusus walaupun dalam bahasa Basic dapat mengindikasikan tipe variabel tertentu - tidak boleh sama dengan salah satu key word yang dimiliki oleh MapBasic (misal: Call, Close, Goto, dan lain sebagainya) - bersifat case-insensitive sehingga penulisan nama variabel dengan huruf besar dan kecil dianggap sama. Tipe Variabel Tipe variabel yang didukung oleh MapBasic adalah Tipe Keterangan SmallInt Data 2 byte bilangan bulat dengan interval nilai antara -32.767 sampai 32.767 Integer Data 4 byte bilangan bulat dengan interval nilai antara -2.147.483.647 sampai 2.147.483.647 Float Data 8 byte format IEEE bilangan real String Data karakter dengan panjang maksimal hingga 32.767 karakter GeoVISI™ GIS TEXTBOOKS SERIES : GIS Programming Using Map Basic. Silahkan dikopi dan disebarkan secara bebas 5 dengan syarat tidak menghilangkan label Geovisi. Geovisi™ merupakan merk dagang PT. Geovisi Mitratama http://geovisi.com email : info@geovisi.com. E-book ini dipublish di Mailing list Komunitas GIS.
  • 7. String * n Data karakter dengan panjang n karakter (hingga 32.767 karakter) Logical Data 1 byte, TRUE (nilai ≠ 0) atau FALSE (nilai = 0) Date Data 4 byte: 2 byte untuk menyimpan data tahun, 1 byte untuk bulan, dan 1 byte untuk hari (tanggal) Object Tipe data yang digunakan untuk menyimpan variabel objek- objek yang bersifat grafis (point, region, line, polyline, arc, rectangle, rounded rectangle, ellipse, text, atau frame) Tipe Variabel Buatan Sendiri Untuk mendefinisikan variabel buatan sendiri digunakan statemen “Type…End Type”. Berikut contoh kode pembuatan dan penggunaan tipe variabel buatan sendiri. Type DataPribadi nama As String * 30 alamat As String * 100 tinggi As Float berat As Float End Type Dim siswa As DataPribadi GeoVISI™ GIS TEXTBOOKS SERIES : GIS Programming Using Map Basic. Silahkan dikopi dan disebarkan secara bebas 6 dengan syarat tidak menghilangkan label Geovisi. Geovisi™ merupakan merk dagang PT. Geovisi Mitratama http://geovisi.com email : info@geovisi.com. E-book ini dipublish di Mailing list Komunitas GIS.
  • 8. siswa.nama = "Ibnu" siswa.alamat = "Yogyakarta" siswa.tinggi = 170.5 siswa.berat = 60 Note siswa.nama Variabel Array MapBasic mendukung variabel array satu dimensi dengan aturan penulisan sebagai berikut: Dim NamaVariabel (JumlahAnggota) As TipeVariabel Statemen “UBound” digunakan untuk mengetahui ukuran aktual variabel array, sedangkan “ReDim” digunakan untuk mengubah ukuran atau jumlah anggota variabel array yang bersangkutan. Contoh kode program pendeklarasian, pengisian nilai dan pengambilan nilai dari variabel array. Dim nama(4) As String nama(1) = "Ani" nama(2) = "Ana" nama(3) = "Ina" nama(4) = "Oni" Note nama(1) GeoVISI™ GIS TEXTBOOKS SERIES : GIS Programming Using Map Basic. Silahkan dikopi dan disebarkan secara bebas 7 dengan syarat tidak menghilangkan label Geovisi. Geovisi™ merupakan merk dagang PT. Geovisi Mitratama http://geovisi.com email : info@geovisi.com. E-book ini dipublish di Mailing list Komunitas GIS.
  • 9. Jangkauan (Scope) Variabel Variabel yang dideklarasikan dengan menggunakan statemen “Dim” merupakan varibel lokal yang hanya berlaku (siklus hidupnya) di dalam fungsi atau prosedur dimana variable tersebut dideklarasikan. Sedangkan variabel yang dideklarasikan dengan menggunakan statemen “Global” berlaku umum di dalam sebuah program MapBasic. Variabel ini dideklarasikan di luar fungsi atau prosedur, dan didefinisikan sebelum fungsi atau prosedur. Apabila terdapat kasus dua nama variabel yang sama dimana sebuah variabel global dan yang satu lagi variabel lokal di dalam prosedur, maka prioritas akan diberikan pada variabel lokal selama siklus hidupnya, kemudian setelah siklus variabel lokal berlalu prioritas diberikan kepada variabel global. Declare Sub Main Declare Sub initialize_globals Global strVar As String Sub Main Dim strVar As String strVar = "Lokal" Call initialize_globals Note "Prosedur Main : " + strVar End Sub GeoVISI™ GIS TEXTBOOKS SERIES : GIS Programming Using Map Basic. Silahkan dikopi dan disebarkan secara bebas 8 dengan syarat tidak menghilangkan label Geovisi. Geovisi™ merupakan merk dagang PT. Geovisi Mitratama http://geovisi.com email : info@geovisi.com. E-book ini dipublish di Mailing list Komunitas GIS.
  • 10. Sub initialize_globals strVar = "Global" Note "Prosedur initialize_globals : " + strVar End Sub 1.1.3 Konstanta Konstanta merupakan nilai tertentu (data value) yang tidak akan berubah selama program yang bersangkutan dieksekusi (siklus hidup). Konstanta didefinisikan dengan key word “Define”. Contoh kode yang mengandung konstanta: Define Pi 3.14 Define Programmer "Ibnu" 1.1.4 Operator Operator merupakan simbol yang menginformasikan kepada compiler MapBasic untuk menjalankan manipulasi matematis atau logika tertentu. MapBasic mendukung beberapa jenis operator sebagai berikut: GeoVISI™ GIS TEXTBOOKS SERIES : GIS Programming Using Map Basic. Silahkan dikopi dan disebarkan secara bebas 9 dengan syarat tidak menghilangkan label Geovisi. Geovisi™ merupakan merk dagang PT. Geovisi Mitratama http://geovisi.com email : info@geovisi.com. E-book ini dipublish di Mailing list Komunitas GIS.
  • 11. Operator Numerik Operator Deskripsi + Penjumlahan (untuk variabel bertipe string akan menghasilkan variabel string baru dari masukan dua variabel - Pengurangan * Perkalian / Pembagian Pembagian bilangan bulat integer (tanpa sisa) Mod Sisa pembagian bilangan bulat ^ Pangkat Operator Perbandingan Operator Deskripsi = Sama dengan <> Tidak sama dengan GeoVISI™ GIS TEXTBOOKS SERIES : GIS Programming Using Map Basic. Silahkan dikopi dan disebarkan secara bebas 10 dengan syarat tidak menghilangkan label Geovisi. Geovisi™ merupakan merk dagang PT. Geovisi Mitratama http://geovisi.com email : info@geovisi.com. E-book ini dipublish di Mailing list Komunitas GIS.
  • 12. < Lebih kecil dari > Lebih besar dari <= Lebih kecil atau sama dengan >= Lebih besar atau sama dengan Between Di antara nilai minimum dan maksimum yang ditentukan sendiri Misal: X Between 0 And 10 Operator Logika Operator Deskripsi And Kedua operand benar – kedua kondisi terpenuhi, menghasilkan nilai logika TRUE Or Salah satu operand benar – salah satu kondisi sudah terpenuhi, menghasilkan nilai logika TRUE Not Operand akan menghasilkan nilai logika FALSE GeoVISI™ GIS TEXTBOOKS SERIES : GIS Programming Using Map Basic. Silahkan dikopi dan disebarkan secara bebas 11 dengan syarat tidak menghilangkan label Geovisi. Geovisi™ merupakan merk dagang PT. Geovisi Mitratama http://geovisi.com email : info@geovisi.com. E-book ini dipublish di Mailing list Komunitas GIS.
  • 13. Operator Geografis Operator Deskripsi Contains Koordinat titik pusat (centroid) unsur spasial yang kedua berada di dalam wilayah unsur spasial yang pertama Contains Part Sebagian wilayah unsur spasial yang kedua berada di dalam wilayah unsur spasial yang pertama Contains Entire Keseluruhan wilayah unsur spasial yang kedua berada di dalam wilayah unsur spasial yang pertama Within Koordinat titik pusat (centroid) unsur spasial yang pertama berada di dalam wilayah unsur spasial yang kedua Partly Within Sebagian wilayah unsur spasial yang pertama berada di dalam wilayah unsur spasial yang kedua Entirely Within Keseluruhan wilayah unsur spasial yang pertama berada di dalam wilayah unsur spasial yang kedua Intersects (wilayah, batas, atau garis) unsur spasial yang pertama dan yang kedua berpotongan di beberapa titik GeoVISI™ GIS TEXTBOOKS SERIES : GIS Programming Using Map Basic. Silahkan dikopi dan disebarkan secara bebas 12 dengan syarat tidak menghilangkan label Geovisi. Geovisi™ merupakan merk dagang PT. Geovisi Mitratama http://geovisi.com email : info@geovisi.com. E-book ini dipublish di Mailing list Komunitas GIS.
  • 14. Prioritas Operator MapBasic menentukan prioritas evaluasi dengan urutan seperti berikut: 1. tanda kurung [()] 2. pangkat [^] 3. negasi [–] 4. perkalian [*], pembagian [/ dan ], mod 5. penjumlahan [+], pengurangan [-], penggabungan string [+ dan &] 6. operator geografis, operator perbandingan, dan Like 7. operator Not 8. operator And 9. operator Or 1.2 Struktur Pemrograman 1.2.1 Percabangan Compiler MapBasic mendukung bebarapa konsep dan implemantasi struktur pemrograman sebagai berikut: IF – THEN – END IF Digunakan untuk percabangan yang melibatkan satu kondisi dengan satu alternatif (blok) tindakan. GeoVISI™ GIS TEXTBOOKS SERIES : GIS Programming Using Map Basic. Silahkan dikopi dan disebarkan secara bebas 13 dengan syarat tidak menghilangkan label Geovisi. Geovisi™ merupakan merk dagang PT. Geovisi Mitratama http://geovisi.com email : info@geovisi.com. E-book ini dipublish di Mailing list Komunitas GIS.
  • 15. If (kondisi) Then Blok Proses End If IF – THEN – ELSE – END IF Digunakan untuk percabangan yang melibatkan satu kondisi dengan dua alternatif (blok) tindakan. If (kondisi) Then Blok Proses_1 Else Blok Proses_2 End If IF – THEN – ELSEIF – ELSE – END IF Digunakan untuk percabangan yang melibatkan beberapa kondisi dan beberapa alternatif (blok) tindakan. If (kondisi_1) Then Blok Proses_1 ElseIf (kondisi_2) Then Blok Proses_2 GeoVISI™ GIS TEXTBOOKS SERIES : GIS Programming Using Map Basic. Silahkan dikopi dan disebarkan secara bebas 14 dengan syarat tidak menghilangkan label Geovisi. Geovisi™ merupakan merk dagang PT. Geovisi Mitratama http://geovisi.com email : info@geovisi.com. E-book ini dipublish di Mailing list Komunitas GIS.
  • 16. ElseIf (kondisi_n) Then Blok Proses_n Else Blok Proses_n+1 End If DO – CASE Digunakan untuk percabangan yang melibatkan beberapa kondisi dan beberapa alternatif (blok) tindakan, sebagai alternatif dari IF – THEN – ELSEIF – ELSE – END IF Do Case VariabelString (atau bilangan bulat) Case KumpulanNilai_1 Blok Proses_1 Case KumpulanNilai_2 Blok Proses_2 Case KumpulanNilai_n Blok Proses_n Case Else Blok Proses_n+1 End Case 1.2.2 Pengulangan GeoVISI™ GIS TEXTBOOKS SERIES : GIS Programming Using Map Basic. Silahkan dikopi dan disebarkan secara bebas 15 dengan syarat tidak menghilangkan label Geovisi. Geovisi™ merupakan merk dagang PT. Geovisi Mitratama http://geovisi.com email : info@geovisi.com. E-book ini dipublish di Mailing list Komunitas GIS.
  • 17. Compiler MapBasic mendukung konsep dan implementasi struktur pengulangan sebagai berikut: FOR - NEXT Melakukan pengulangan blok proses dari nilai awal ke nilai akhir For IndeksLoop = NilaiAwal To NilaiAkhir Blok Proses Next Skema For-Next di atas akan menambah nilai IndeksLoop naik satu tingkat. Apabila menghendaki tingkatan yang tidak sama dengan satu (dapat bernilai negatif atau positif) maka dapat ditambahkan STEP, sehingga skemanya menjadi sebagai berikut: For IndeksLoop = NilaiAwal To NilaiAkhir Step NilaiStep Blok Proses Next Apabila menghendaki keluar dari pengulangan sebelum IndeksLoop NilaiAkhir dapat digunakan statemen EXIT FOR, sehingga skemannya dapat menjadi seperti berikut: For IndeksLoop = NilaiAwal To NilaiAkhir Step NilaiStep Blok Proses1 If (Kondisi) Then Exit For GeoVISI™ GIS TEXTBOOKS SERIES : GIS Programming Using Map Basic. Silahkan dikopi dan disebarkan secara bebas 16 dengan syarat tidak menghilangkan label Geovisi. Geovisi™ merupakan merk dagang PT. Geovisi Mitratama http://geovisi.com email : info@geovisi.com. E-book ini dipublish di Mailing list Komunitas GIS.
  • 18. End If Blok Proses2 Next DO – LOOP UNTIL dan DO UNTIL – LOOP Digunakan untuk proses pengulangan hingga tercapai suatu kondisi tertentu (pengulangan terakhir dilakukan pada saat kondisi terpenuhi) Do Blok Proses Loop Until (Kondisi) Pada skema DO – LOOP UNTIL di atas program minimal melakukan satu kali eksekusi Blok Proses. Do Until (Kondisi) Blok Proses Loop DO – LOOP WHILE dan DO WHILE – LOOP GeoVISI™ GIS TEXTBOOKS SERIES : GIS Programming Using Map Basic. Silahkan dikopi dan disebarkan secara bebas 17 dengan syarat tidak menghilangkan label Geovisi. Geovisi™ merupakan merk dagang PT. Geovisi Mitratama http://geovisi.com email : info@geovisi.com. E-book ini dipublish di Mailing list Komunitas GIS.
  • 19. Digunakan untuk proses pengulangan selama kondisi tertentu dipenuhi (pengulangan dilakukan selama kondisi terpenuhi). Skema yang berlaku adalah sebagai berikut: Do Blok Proses Loop While (Kondisi) Pada skema DO – LOOP While di atas program minimal melakukan satu kali eksekusi Blok Proses. Do While (Kondisi) Blok Proses Loop WHILE – WEND Merupakan variasi dari “Do While – Loop “ dengan skema sebagai berikut: While (Kondisi) Blok Proses Wend DO – EXIT DO – LOOP GeoVISI™ GIS TEXTBOOKS SERIES : GIS Programming Using Map Basic. Silahkan dikopi dan disebarkan secara bebas 18 dengan syarat tidak menghilangkan label Geovisi. Geovisi™ merupakan merk dagang PT. Geovisi Mitratama http://geovisi.com email : info@geovisi.com. E-book ini dipublish di Mailing list Komunitas GIS.
  • 20. Untuk proses pengulangan (tak terhingga) di mana di dalam blok yang bersangkutan terdapat pengujian suatu kondisi untuk keluar. Skema yang berlaku adalah sebagai berikut: Do Blok Proses1 If (Kondisi) Then Exit Do End If Blok Proses2 Loop GeoVISI™ GIS TEXTBOOKS SERIES : GIS Programming Using Map Basic. Silahkan dikopi dan disebarkan secara bebas 19 dengan syarat tidak menghilangkan label Geovisi. Geovisi™ merupakan merk dagang PT. Geovisi Mitratama http://geovisi.com email : info@geovisi.com. E-book ini dipublish di Mailing list Komunitas GIS.
  • 21. BAB 2 GeoVISI™ GIS TEXTBOOKS SERIES : GIS Programming Using Map Basic. Silahkan dikopi dan disebarkan secara bebas 20 dengan syarat tidak menghilangkan label Geovisi. Geovisi™ merupakan merk dagang PT. Geovisi Mitratama http://geovisi.com email : info@geovisi.com. E-book ini dipublish di Mailing list Komunitas GIS.
  • 22. 2. Prosedur, Fungsi serta Feature Dasar Pemrograman Aplikasi Pada MapBasic Implemantasi prosedur dan fungsi bertujuan untuk memodularisasikan program yang bersangkutan melalui pemisahan tugas-tugas menjadi unit tersendiri yang lebih kecil sehingga dapat dikendalikan dan dikelola dengan mudah, dapat digunakan untuk membangun program aplikasi yang baru, dan dapat menghindari duplikasi potongan program. Dengan penggunaan prosedur dan fungsi pengembangan program aplikasi MapBasic dapat terpenuhi secara efisien dalam waktu yang relatif singkat. 2.1 Prosedur Prosedur merupakan sekumpulan baris-baris kode (instruksi) yang kemudian diberi nama sendiri (terkadang memiliki parameter dengan tipe data tertentu) dan akan menghasilkan status (state) yang terdefinisi (tidak bersifat mengembalikan nilai). Skema prosedur dalam MapBasic adalah: Declare Sub NamaProsedur ([Kumpulan Parameter]) ' deklarasi prosedur . . . Sub NamaProsedur ([Kumpulan Parameter]) ' awal prosedur Blok baris kode berisi prosedur End Sub ' akhir prosedur GeoVISI™ GIS TEXTBOOKS SERIES : GIS Programming Using Map Basic. Silahkan dikopi dan disebarkan secara bebas 21 dengan syarat tidak menghilangkan label Geovisi. Geovisi™ merupakan merk dagang PT. Geovisi Mitratama http://geovisi.com email : info@geovisi.com. E-book ini dipublish di Mailing list Komunitas GIS.
  • 23. Contoh pembuatan dan pengunaan prosedur: Declare Sub TulisPesan (kalimat As String) Sub TulisPesan(kalimat As String) Note kalimat End Sub Dim pesan As String Pesan = "Selamat Datang" Call TulisPesan(pesan) ' pemanggilan prosedur Prosedur Main (Sub Main) adalah prosedur MapBasic yang bersifat khusus dan akan dieksekusi pertama kali ketika program aplikasi yang bersangkutan dieksekusi. Kemudian, prosedur ini dapat mengambil alih kontrol program dengan memanggil prosedur, fungsi, atau baris-baris kode elementer lainnya. Contoh penggunaan prosedur Main: Declare Sub Main Declare Sub TulisPesan (kalimat As String) Sub TulisPesan(kalimat As String) Note kalimat End Sub Sub Main ' prosedur Main Dim pesan As String Pesan = "Selamat Datang" Call TulisPesan(pesan) ' pemanggilan prosedur End Sub GeoVISI™ GIS TEXTBOOKS SERIES : GIS Programming Using Map Basic. Silahkan dikopi dan disebarkan secara bebas 22 dengan syarat tidak menghilangkan label Geovisi. Geovisi™ merupakan merk dagang PT. Geovisi Mitratama http://geovisi.com email : info@geovisi.com. E-book ini dipublish di Mailing list Komunitas GIS.
  • 24. Untuk keluar dari prosedur aktif tanpa harus menyelesaikan seluruh program dalam prosedur tersebut, dapat digunakan key word “Exit Sub”. Berikut contoh penggunaannya: Declare Sub Main Declare Sub TulisPesan (kalimat As String) Sub TulisPesan(kalimat As String) if (len(kalimat)=1) Then Note "Anda belum menuliskan kalimat" Exit Sub End If Note kalimat End Sub Sub Main ' prosedur Main Dim pesan As String Pesan = "S" Call TulisPesan(pesan) ' pemanggilan prosedur End Sub 2.2 Fungsi Fungsi merupakan sekumpulan baris-baris kode (instruksi) yang kemudian diberi nama sendiri (terkadang memiliki parameter dengan tipe data tertentu) dan akan menghasilkan suatu nilai dengan domain yang telah didefinisikan di dalam spesifikasinya (bersifat mengembalikan nilai). Pada dasarnya, compiler MapBasic mendukung beberapa jenis fungsi sebagai berikut: - fungsi-fungsi standard (umum) yang telah dimiliki oleh bahasa pemrograman Basic - fungsi-fungsi khusus yang hanya dimiliki oleh MapInfo maupun MapBasic sendiri - fungsi-fungsi buatan sendiri (custom function) GeoVISI™ GIS TEXTBOOKS SERIES : GIS Programming Using Map Basic. Silahkan dikopi dan disebarkan secara bebas 23 dengan syarat tidak menghilangkan label Geovisi. Geovisi™ merupakan merk dagang PT. Geovisi Mitratama http://geovisi.com email : info@geovisi.com. E-book ini dipublish di Mailing list Komunitas GIS.
  • 25. Skema penulisan custom function adalah sebagai berikut: Declare Function NamaFungsi ([KumpulanParameter]) As TipeDataOutput ... Function NamaFungsi ([KumpulanParameter]) As TipeDataOutput Blok baris kode fungsi NamaFungsi = nilai End Function Nilai pengembalian disimpan dalam variabel yang digunakan pada fungsi dengan nama yang sama dengan nama fungsi. Untuk memperjelas pembuatan dan penggunaan fungsi berikut diberikan contoh fungsi. Declare Function Tambah (a As Integer, b As Integer) As Integer Function Tambah (a As Integer, b As Integer) As Integer Dim c As Integer c = a + b Tambah = c End Function Dim bil1, bil2 As Integer bil1 = 2 bil2 = 3 Note bil1 & " + " & bil2 & " = " & Tambah(bil1, bil2) GeoVISI™ GIS TEXTBOOKS SERIES : GIS Programming Using Map Basic. Silahkan dikopi dan disebarkan secara bebas 24 dengan syarat tidak menghilangkan label Geovisi. Geovisi™ merupakan merk dagang PT. Geovisi Mitratama http://geovisi.com email : info@geovisi.com. E-book ini dipublish di Mailing list Komunitas GIS.
  • 26. Untuk keluar dari fungsi sebelum seluruh kode dalam fungsi dieksekusi dapat menggunakan key word “Exit Function” 2.3 Passing Variabel (by reference dan by value) Secara default passing variabel pada argumen/parameter prosedur dan fungsi dalam MapBasic adalah by reference, dimana variabel yang dijadikan parameter pada prosedur atau fungsi apabila terjadi perubahan nilai akibat proses di dalam prosedur atau fungsi tersebut maka nilai itu akan tetap berlaku di luar prosedur atau fungsi. Pada contoh berikut prosedur “CetakNilai” akan menggunakan nilai variabel “Angka” yang telah dirubah oleh prosedur “RubahNilai” bukan nilai yang didefinisikan di awal pada prosedur “Main”. Declare Sub Main Declare Sub RubahNilai(obj As Integer) Declare Sub CetakNilai(obj As Integer) Sub Main Dim Angka As Integer Angka = 10 Note "Nilai Awal " + Angka Call RubahNilai(Angka) Call CetakNilai(Angka) End Sub Sub RubahNilai(obj As Integer) obj = obj * 10 End Sub GeoVISI™ GIS TEXTBOOKS SERIES : GIS Programming Using Map Basic. Silahkan dikopi dan disebarkan secara bebas 25 dengan syarat tidak menghilangkan label Geovisi. Geovisi™ merupakan merk dagang PT. Geovisi Mitratama http://geovisi.com email : info@geovisi.com. E-book ini dipublish di Mailing list Komunitas GIS.
  • 27. Sub CetakNilai(obj As Integer) Note "Nilai Akhir " + obj End Sub Apabila menghendaki passing variabel dengan menggunakan by Value, MapBasic menyediakan key- word byVal, maka variabel tidak terpengaruh oleh prosedur atau fungsi yang menggunakan variabel tersebut. Pada contoh berikut prosedur “CetakNilai” akan menggunakan nilai variabel yang diisikan pada prosedur “Main” dan tidak terpengaruh oleh perubahan nilai variabel oleh prosedur “RubahNilai”. Declare Sub Main Declare Sub RubahNilai(byVal obj As Integer) Declare Sub CetakNilai(byVal obj As Integer) Sub Main Dim Angka As Integer Angka = 10 Note "Nilai Awal " + Angka Call RubahNilai(Angka) Call CetakNilai(Angka) End Sub Sub RubahNilai(byVal obj As Integer) obj = obj * 10 End Sub Sub CetakNilai(byVal obj As Integer) Note "Nilai Akhir " + obj End Sub GeoVISI™ GIS TEXTBOOKS SERIES : GIS Programming Using Map Basic. Silahkan dikopi dan disebarkan secara bebas 26 dengan syarat tidak menghilangkan label Geovisi. Geovisi™ merupakan merk dagang PT. Geovisi Mitratama http://geovisi.com email : info@geovisi.com. E-book ini dipublish di Mailing list Komunitas GIS.
  • 28. 2.4 Pengendalian Program END PROGRAM Jika menghendaki penghentian sementara jalannya eksekusi suatu program aplikasi MapBasic, maka telah disediakan key-word “End Program”. Berikut diberikan contoh kode program yang menggunakan End Program Dim langkah1, langkah2 As String langkah1 = "Melakukan langkah pertaman" langkah2 = "Melakukan langkah kedua" Note langkah1 End Program Note langkah2 'baris kode yang tidak sempat dieksekusi RUN APPLICATION, TERMINATE APPLICATION dan END MAPINFO Apabila menghendaki melakukan eksekusi terhadap suatu program aplikasi MapBasic atau menambahkan workspace MapInfo dari program aplikasi MapBasic yang lain, maka dapat digunakan key-word “Run Application. Dan sebaliknya apabila ingin menghentikan eksekusi terhadap suatu program aplikasi dari program aplikasi yang lain, maka dapat digunakan key-word “Terminate Application”. Sedangkan untuk menghentikan keseluruhan aktivitas aplikasi serta menutup program aplikasi SIG MapInfo-nya secara permanen digunakan key-word “End MapInfo”. Untuk mencoba penggunaannya buatlah dua program aplikasi MapBasic sebagai berikut: GeoVISI™ GIS TEXTBOOKS SERIES : GIS Programming Using Map Basic. Silahkan dikopi dan disebarkan secara bebas 27 dengan syarat tidak menghilangkan label Geovisi. Geovisi™ merupakan merk dagang PT. Geovisi Mitratama http://geovisi.com email : info@geovisi.com. E-book ini dipublish di Mailing list Komunitas GIS.
  • 29. 'Program 1 Dim str As String str = "Ini program satu" Note str Simpan dan compile kode program di atas ke dalam alamat yang nanti dijadikan parameter dalam program yang kedua barikut: 'Program 2 Dim pesan As String Dim FileProgram1 As String FileProgram1 = "D:LatihanMapBasic3latihan3_4a.mbx" pesan = "Ini program dua" Note pesan 'Run Application FileProgram1 'menjalankan program yang lain Terminate Application FileProgram1 'menghentikan program yang lain End MapInfo 'menutup program aplikasi MapInfo 2.5 Include Key-word “Include” digunakan untuk menggabungkan data-data dalam satu program MapBasic. Dengan cara seperti ini, data (yang pada umumnya diimplementasikan sebagai suatu konstanta) yang terdapat di dalam file teks include secara otomatis akan diintegrasikan ke dalam baris-baris kode MapBasic pada saat kompilasi. Pada MapBasic, pernyataan include (pada umumnya) digunakan untuk memanfaatkan GeoVISI™ GIS TEXTBOOKS SERIES : GIS Programming Using Map Basic. Silahkan dikopi dan disebarkan secara bebas 28 dengan syarat tidak menghilangkan label Geovisi. Geovisi™ merupakan merk dagang PT. Geovisi Mitratama http://geovisi.com email : info@geovisi.com. E-book ini dipublish di Mailing list Komunitas GIS.
  • 30. sejumlah besar baris-baris pernyataan define. Berikut disajikan contoh penggunaan include yang diimplementasikan pada dua file berisi kode berikut: 'Contoh file def berisi konstanta Define Phi 3.14 'Program MapBasic yang menggunakan file def Include "d:LatihanMapBasic5konstanta.def" Dim r, Luas as Float Dim nama as String r = 10 Luas = Phi * r^2 Note Luas 2.6 Mengelola Modul Dalam File Project Untuk menghubungkan file-file modul dalam satu project pada MapBasic dapat dilakukan dengan membuat sebuah file project MapBasic. Untuk mencoba silahkan buat dua file berisi kode seperti di bawah ini, kemudian silahkan lakukan langkah Compile. Declare Sub Main() Declare Function Tambah (a As Integer, b As Integer) As Integer Sub Main() Dim nilai1, nilai2, jumlah As Integer nilai1 = 10 nilai2 = 20 GeoVISI™ GIS TEXTBOOKS SERIES : GIS Programming Using Map Basic. Silahkan dikopi dan disebarkan secara bebas 29 dengan syarat tidak menghilangkan label Geovisi. Geovisi™ merupakan merk dagang PT. Geovisi Mitratama http://geovisi.com email : info@geovisi.com. E-book ini dipublish di Mailing list Komunitas GIS.
  • 31. jumlah = Tambah(nilai1, nilai2) Note jumlah End Sub Declare Function Tambah (a As Integer, b As Integer) As Integer Function Tambah (a As Integer, b As Integer) As Integer Tambah = a + b End Function Kemudian buatlah file project (*.mbp) dengan kode sebagai berikut: [LINK] Application=Gabung.mbx Module=Utama.mbo Module=Tambah.mbo Dengan file project ini maka prosedur Main dan fungsi Tambah dapat saling berhubungan menjadi satu kesatuan program. Untuk mencobanya silahkan klik menu Project kemudian Link Current Project, selanjutnya setelah berhasil klik Run. GeoVISI™ GIS TEXTBOOKS SERIES : GIS Programming Using Map Basic. Silahkan dikopi dan disebarkan secara bebas 30 dengan syarat tidak menghilangkan label Geovisi. Geovisi™ merupakan merk dagang PT. Geovisi Mitratama http://geovisi.com email : info@geovisi.com. E-book ini dipublish di Mailing list Komunitas GIS.