Anda di halaman 1dari 34

PENGENALAN KEPADA PENGATURCARAAN ARC-OBJECT MENERUSI VBA (ARCGIS-VISUAL BASIC FOR APPLICATION)

Oleh MUHAMAD FIRDAUS CHE AMAT

KANDUNGAN
PERKARA M/S 4 5 5 6 7 7 8 9 10 11 11 12 13 13 14 14 15 15 15 16 17 19 19 19 20 21 22

1.0 2.0

KATA PENGHANTAR PERSEKITARAN VISUAL BASIC 2.1 2.2 Membuka Persekitaran VBA Memahami Persekitaran VBA

3.0

MEMBANGUN DAN MENYUSUN ATUR COMMANDS & TOOLBAR 3.1 3.2 3.3 3.4 3.5 3.6 3.7 Penentuan platform simpanan projek Membina toolbar baru Membina dan menyusun letak Commands Membina UIControl Menghapuskan (delete) toolbar Menghapuskan (delete) commands Mengunci blok suaipakai (Locking customization)

4.0

PEMBANGUNAN DIALOG BOX 4.1 4.2 4.3 Merekabentuk UserForm Memasukkan controls object Setting object properties

5.0

ASAS PENGATURCARAAN VBA 5.1 5.2 5.3 5.4 Membangunkan Kekotak Mesej (Message Box) Membangunkan Kekotak Input (Input Box) Pengaturcaraan Berdasarkan Elemen Spatial Pengaturcaraan Berdasarkan Elemen Atribut

6.0

MENGATURCARA BERDASARKAN ANTARAMUKA PENGGUNA 6.1 6.2 6.3 6.4 Merekabentuk GUI Mengaktifkan Control Object pada UserForm Memasukkan pernyataan syarat dan membuat paparan di dalam kekotak Mesej (Message Box) Memanggil GUI menerusi UIButtonControl

7.0

MEMBANGUNKAN ANTARAMUKA PENGGUNA YANG MAMPU BERINTERAKSI DENGAN SPATIAL DATABASE 7.1 7.2 7.3 Merekabentuk GUI Mengaktifkan Object Control (Combo Box) Memasukkan script pertanyaan (Query Statements)

22 23 24

8.0

MEMBANGUNKAN AUTOMATED GEOPROCESSING TOOLS

25 31 32 34

RUJUKAN LAMPIRAN 1 LAMPIRAN 2

Pengenalan Kepada Pengaturcaraan ArcObjects Menerusi VBA (ArcGIS-Visual Basic For Application)

1.0

KATA PENGHANTAR Modul ini diterbitkan untuk dijadikan sebagai rujukan asas di dalam melakukan proses suaipakai antaramuka pengguna di dalam perisian ArcGIS Desktop menerusi Visual Basic Editor. Bahasa dan pendekatan yang diambil oleh penulis adalah sangat mudah supaya para pengguna lebih senang untuk mengikut siri kursus yang dijalankan. Modul ini sangat berguna kepada beginner programmer di dalam membantu untuk memahami prosedur asas bagi melakukan proses suaipakai perisian ArcGIS menggunakan VBA. Modul ini lebih mudah diikuti sekiranya para pengguna telah memahami dan sudah biasa dengan persekitaran ArcMap. Semua script yang digunakan di dalam modul ini juga disediakan di dalam versi digital untuk memudahkan para pengguna merujuk dan melakukan proses try & error bagi meningkatkan lagi pemahaman masing-masing.

2.0

PERSEKITARAN VISUAL BASIC Bahagian ini mendedahkan para peserta untuk memulakan operasi suaipakai di dalam ArcGIS Visual Basic Editor. Peserta di beri gambaran serta pengenalan asas untuk melakukan proses suaipakai tersebut. 2.1 Membuka Persekitaran VBA 2.1.1 2.1.2 Larikan (run) perisian ArcGIS Klik Tools pada toolbar, kemudian klik menu Macros, seterusnya klik Visual Basic Editor (Rujuk Rajah Di bawah)

2.1.3

Sila perhatikan persekitaran VBA ia seakan-akan VB6 (rujuk rajah dibawah)

2.2 Memahami Persekitaran VBA

Pojects

Code module

Procedure

Toolbox

Object Control

User Form

Object Properties

3.0

MEMBANGUN DAN MENYUSUN ATUR COMMANDS & TOOLBAR Bahagian ini memberi satu pendedahan awal kepada peserta untuk melakukan proses suaipakai dari segi susun letak commands dan toolbar sedia ada di samping membangunkan commands dan toolbar yang baru. 3.1 Penentuan platform simpanan projek 3.1.1 Buat pilihan direktori simpanan dan simpan projek dengan nama <belajar1.mxd> kemudian klik butang Save

3.1.2

Buka Customize dialog box dengan klik toolbar Tools, kemudian klik menu Customize (rujuk rajah di bawah)

3.1.3

Tentukan platform simpanan projek pada platform <belajar1.mxd> (rujuk rajah di bawah)

3.2 Membina toolbar baru 3.2.1 3.2.2 3.2.3 Klik tab Toolbars, klik butang New Masukkan nama toolbar <MyTools> Lakukan Save in pada <belajar1.mxd>

3.2.4

Setelah berjaya disimpan, muncul satu toolbar baru yang kosong pada map viewer seperti dibawah

3.2.5

Oleh itu satu toolbar baru berjaya dibuat

3.3 Membina dan menyusun letak Commands 3.3.1 3.3.2 3.3.3 Klik tab Commands, Scroll down Categories Pilih [New Menu] Drag & Drop Commands : New Menu kepada MyTools

3.3.4

Tukar nama menu yang dibuat dengan klik kanan pada New Menu, Taip nama yang sesuai pada ruangan yang disediakan dan kemudian press keybord enter (sila rujuk rajah di bawah)

3.4 Membina UIControl 3.4.1 3.4.2 3.4.3 3.4.4 3.4.5 Pilih Categories [UIControls] Klik butang New UIControl Pilih UIButtonControl Klik Butang Create Seteleh Commands baru sudah muncul pada ruangan kanan, drag & drop kepada MyTools (rujuk para 3.3.3)

3.4.6

Bagi menambah ideal, command tersebut boleh diubahsuai dari segi simbol dengan membuat penukaran grafik. Klik kanan pada UIControl baru > Change Button Image > Buat pilihan grafik yang sesuai (sila rujuk rajah di bawah)

10

3.5 Menghapuskan (delete) toolbar 3.5.1 3.5.2 3.5.3 Klik tab Toolbars Buat pilihan pada toolbar yang berkenaan Kemudian klik butang Delete

3.6 Menghapuskan (delete) commands 3.6.1 3.6.2 3.6.3 Klik tab Commands Klik kanan pada commands yang berkenaan Klik delete

11

3.7 Mengunci blok suaipakai (Locking customization) 3.7.1 3.7.2 3.7.3 3.7.4 3.7.5 Klik tab Options Tekan butang Lock Customization Masukkan password anda sebaiknya Klik butang OK Klik Butang Close

12

4.0

PEMBANGUNAN DIALOG BOX Bahagian ini memberi sedikit pendedahan untuk melakukan proses merekabentuk GUI bagi memudahkan pengguna mengendalikan sistem yang akan dibangunkan. Ia merangkumi proses penyisipan UserForm, mengendali control object dan membuat object properties setting. 4.1 Merekabentuk UserForm 4.1.1 Menyisip UserForm Klik kanan Project > klik Insert > klik UserForm

13

4.2 Memasukkan controls object 4.2.1 4.2.2 Drag & drop control components (object control) daripada toolbox ke dalam userForm Susunkan kembali komponen tersebut mengikut kesesuaian

4.3 Setting object properties 4.3.1 4.3.2 Klik pada object control Lakukan perubahan setting pada object properties

14

5.0

ASAS PENGATURCARAAN VBA 5.1 Membangunkan Kekotak Mesej (Message Box) 5.1.1 5.1.2 5.1.3 5.1.4 Bina satu UIButtonControl (rujuk para 3.4) Masukkan namanya sebagai < Message box 1> Klik Kanan UIButtonControl tersebut > View Source Masukkan sampel script di bawah ke dalam code module :

MsgBox "Selamat Belajar VBA", vbInformation

5.1.5

Mesej terhasil

5.2 Membangunkan Kekotak Input (Input Box) 5.2.1 5.2.2 5.2.3 5.2.4 Bina satu UIButtonControl (rujuk para 3.4) Masukkan namanya sebagai < InputBox1> Klik Kanan UIButtonControl tersebut > View Source Masukkan sampel script di bawah ke dalam code module :

15

5.3 Mesej terhasil

5.4 Pengaturcaraan Berdasarkan Elemen Spatial 5.4.1 Buka Customize dialog box melalui arahan klik toolbar Tools > Customize 5.4.2 Bangunkan satu UIToolControl dengan arahan yang berikut :i) Klik tab Commands ii) Select [UIControls] iii) Tekan Butang UIControl iv) Select UIToolControl v) Tekan Butang Create vi) Setelah muncul <UIToolControl1> dibahagian kanan drag & drop <UIToolControl1> ke dalam toolbar MyTools 5.4.3 Masukkan set script dengan arahan yang berikut :i) Klik kanan pada UIToolControl yang telah di-drag pada toolbar ii) Klik View Source 5.4.4 Tukar Properties Cursor i) Klik combo box procedure ii) Select item <CursorID> iii) Masukkan script seperti berikut :
UIToolControl1_CursorID = 3

iv) Save dan tutup VBA window

16

5.4.5

Masukkan script arahan untuk memaparkan nilai lokasi x dan y seperti berikut :i) Klik combo box procedure ii) Select item <MouseDown> iii) Masukkan script seperti berikut :

iv) Save dan tutup VBA window 5.4.6 Tool tersebut sedia diuji dan digunakan

5.5 Pengaturcaraan Berdasarkan Elemen Atribut 5.5.1 Buka Customize dialog box melalui arahan klik toolbar Tools > Customize 5.5.2 Bangunkan satu UIToolControl dengan arahan yang berikut :i) Klik tab Commands ii) Select [UIControls] iii) Tekan Butang UIControl iv) Select UIToolControl v) Tekan Butang Create vi) Setelah muncul <UIToolControl2> dibahagian kanan drag & drop <UIToolControl2> ke dalam toolbar MyTools 5.5.3 Masukkan set script dengan arahan yang berikut :i) Klik kanan pada UIToolControl yang telah di-drag pada toolbar ii) Klik View Source

17

5.5.4

Tukar Properties Cursor i) Klik combo box procedure ii) Select item <CursorID> iii) Masukkan script seperti berikut :

UIToolControl1_CursorID = 3

iv) Save dan tutup VBA window

5.5.5

Masukkan script arahan untuk memaparkan sebahagian nilai atribut yang terdapat di dalam table data yang berkenaan i) ii) iii) Klik combo box procedure Select item <MouseDown> Masukkan script seperti berikut : Rujuk LAMPIRAN 1 iv) Save dan tutup VBA window

5.5.6

Tool tersebut sedia diuji dan digunakan

18

6.0

MENGATURCARA BERDASARKAN ANTARAMUKA PENGGUNA 6.1 Merekabentuk GUI 6.1.1 6.1.2 Buka Visual Basic Editor dengan klik pada toolbar Tools > Macros > Visual Basic Editor Untuk merekabentuk GUI, anda boleh merujuk set arahan pada para 4.0 6.2 Mengaktifkan Control Object pada UserForm 6.2.1 Menambah Item Pada Combo Box i) Dwiklik pada UserForm berkenaan procedure iii) Pilih < Activate> iv) Masukkan script seperti berikut :ii) Setelah code module keluar klik pada combo box

v) Klik Save project

19

vi) Buat pengujian script dengan klik butang Run

vii) Close Window VBA

6.3 Memasukkan pernyataan syarat dan membuat paparan di dalam kekotak Mesej (Message Box) 6.3.1 6.3.2 6.3.3 6.3.4 Buka Visual Basic Editor dengan klik pada toolbar Tools > Klik Macros > Klik Visual Basic Editor Buka Userform dengan dwiklik UserForm1 Dwiklik butang Papar Masukkan script yang berikut :Rujuk LAMPIRAN 2 6.3.5 Script sedia untuk diuji lari

20

6.4 Memanggil GUI menerusi UIButtonControl 6.4.1 6.4.2 Buka Dialog Box Customize dengan klik pada toolbar Tools > Customize Klik kanan UIButtonControl > Klik View Source

6.4.3

Masukkan script seperti berikut :-

UserForm1.Show

21

7.0

MEMBANGUNKAN ANTARAMUKA PENGGUNA YANG MAMPU BERINTERAKSI DENGAN SPATIAL DATABASE Bahagian ini agak kompleks kerana terdapat gabungan pengaturcaraan yang melibatkan data atribut dan data spatial. Untuk mewujudkan satu permasalahan, satu senario carian telah dibuat iaitu untuk mencari lokasi lot tanah. Langkah untuk menyelesaikan kes ini adalah seperti berikut :7.1 Merekabentuk GUI 7.1.1 7.1.2 Buka Visual Basic Editor dengan klik pada toolbar Tools > klik Macros > klik Visual Basic Editor Untuk merekabentuk GUI, anda boleh merujuk set arahan pada para 4.0 tetapi rekabentuknya rujuk rajah dibawah

22

7.2 Mengaktifkan Object Control (Combo Box) 7.2.1 7.2.2 7.2.3 7.2.4 Dwiklik pada UserForm berkenaan Setelah code module keluar klik pada combo box procedure Pilih < Activate> Masukkan script seperti berikut :Nota : script ini adalah untuk membaca senaraian rekod info daerah di dalam external file untuk dijadikan item combo box.

7.2.5 7.2.6

Save project Buat pengujian script dengan klik menu Run

23

7.3 Memasukkan script pertanyaan (Query Statements) 7.3.1 7.3.2 Dwi klik pada butang cari Masukkan script seperti dibawah:-

7.3.3 7.3.4 7.3.5

Save dan close VBA Call UserForm dengan UIButtonControl (sila rujuk para 6.4) Buat pengujian script dengan klik menu UIButtonControl yang telah di setkan

24

8.0

MEMBANGUNKAN AUTOMATED GEOPROCESSING TOOLS Modul ini memberikan pendedahan kepada peserta didalam merekabentuk dan membangunkan pemprosesan secara automasi menggunakan model builder. Para peserta akan diberi tunjuk ajar melakukan proses suaipakai dan membangunkan model builder bagi mengstrukturkan fungsi pemprosesan secara automasi yang mengikut kehendak sesebuah organisasi. Kajian Kes : Mengira nilai pampasan yang diperolehi oleh pemilik sekiranya proses pengambilan balik hartanah dibuat 8.1 Buka persekitaran ArcToolbox pada ArcMap dengan klik pada icon yang berikut

8.2 Klik Kanan pada ArcToolbox > klik pada New Toolbox

8.3 Ubah nama toolbox kepada <0_MyProcessing>

25

8.4 Klik kanan pada 0_MyProcessing > klik New > klik Model

8.5 Klik kanan pada model dan rename dengan nama yang sesuai <Kira Pampasan>

26

8.6 Buka persekitaran model builder dengan klik kanan <Kira Pampasan> kemudian klik edit

27

8.7 Buat carian fungsi yang dikehendaki dengan klik tab index pada ArcToolbox , kemudian taipkan nama fungsi <add field > klik butang locate

2. Buat Carian fungsi <add field>

3. Buat selection fungsi tersebut

4. Klik butang Locate 1. Klik tab Index

28

8.8 Setelah fungsi yang dikehendaki telah ditemui, sila drag & drop fungsi berkenaan ke dalam persekitaran model builder

8.9 Drag & drop input features <Lot_clip> ke model builder

8.10 8.11

Aktifkan fungsi dengan dwi klik pada <Add Field> Masukkan parameter yang berkenaan dan klik OK (rujuk rajah

dibawah)

29

8.12

Setkan input <Lot_Clip> sebagai parameter dengan klik kanan pada Nota : Sekiranya berjaya abjab P akan muncul di sebelah Input objek tersebut

objek berkenaan dan klik Model Parameter

8.13 8.14

Save dan tutup persekitaran model builder Uji model berkenaan dengan dwi klik pada icon kira pampasan

8.15

Masukkan input ke dalam kekotak yang disediakan (rujuk rajah di

bawah)

8.16

Selesai

Selamat Maju Jaya

30

RUJUKAN
1. Robert Burke, (2003). Getting To Know ArcObjects : Programming ArcGIS with VBA. California, USA. 2. ESRI, (2006). ArcGIS Desktop Help. California, USA.

31

LAMPIRAN 1

Private Sub UIToolControl2_MouseDown(ByVal button As Long, ByVal shift As _ Long, ByVal x As Long, ByVal y As Long) Dim Dim Dim Dim pMxDoc As IMxDocument pActiveView As IActiveView pPoint As IPoint pFeature As IFeature

Set pMxDoc = Application.Document Set pActiveView = pMxDoc.FocusMap Set pPoint = pActiveView.ScreenDisplay.DisplayTransformation. _ ToMapPoint(x, y) Set pFeature = FindFeature(pMxDoc.SearchTolerance, pPoint, _ pMxDoc.FocusMap) If Not pFeature Is Nothing Then MsgBox "Nama Daerah : " & pFeature.Value(2) & " Keluasan : " & _ pFeature.Value(5), vbInformation, "Maklumat Negeri" '& _ pFeature.Class.AliasName Else MsgBox "Tiada Dalam Rekod", vbCritical End If End Sub Private Function FindFeature(SearchTol As Double, pPoint As IPoint, pMap As_ IMap) As IFeature Dim Dim Dim Dim Dim Dim Dim Dim Dim pEnvelope As IEnvelope pSpatialFilter As ISpatialFilter pEnumLayer As IEnumLayer pFeatureLayer As IFeatureLayer pFeatureClass As IFeatureClass pFeatureCursor As IFeatureCursor pFeature As IFeature pUID As New UID ShapeFieldName As String

If pMap.LayerCount = 0 Then Exit Function 'Expand the points envelope to give better search results Set pEnvelope = pPoint.Envelope pEnvelope.Expand SearchTol, SearchTol, False 'Create a new spatial filter and use the new envelope as the geometry Set pSpatialFilter = New SpatialFilter Set pSpatialFilter.Geometry = pEnvelope pSpatialFilter.SpatialRel = esriSpatialRelIntersects 'Search each selectable feature layer for a feature 'Return the first feature found pUID = "{40A9E885-5533-11D0-98BE-00805F7CED21}" 'IFeatureLayer Set pEnumLayer = pMap.Layers(pUID, False) pEnumLayer.Reset Set pFeatureLayer = pEnumLayer.Next Do While Not pFeatureLayer Is Nothing 'Only search the selectable layers If pFeatureLayer.Selectable Then ShapeFieldName = pFeatureLayer.FeatureClass.ShapeFieldName Set pSpatialFilter.OutputSpatialReference(ShapeFieldName) = _ pMap.SpatialReference pSpatialFilter.GeometryField = _ pFeatureLayer.FeatureClass.ShapeFieldName Set pFeatureClass = pFeatureLayer.FeatureClass

32

Set pFeatureCursor = pFeatureClass.Search(pSpatialFilter, False) Set pFeature = pFeatureCursor.NextFeature 'Get the first feature If Not pFeature Is Nothing Then Set FindFeature = pFeature 'Exit if feature is valid Exit Do End If End If Set pFeatureLayer = pEnumLayer.Next Loop End Function

33

LAMPIRAN 2

Private Sub cmdPapar_Click() Dim m = i = l = bahasa, m, i, l As String cb1.Caption cb2.Caption "pelbagai bahasa"

'satu syarat If cb1.Value bahasa = Else End If If cb2.Value bahasa = Else End If If cb3.Value bahasa = Else End If

= True Then m

= True Then i

= True Then l

'Lebih daripada satu syarat If cb1.Value = True And cb2.Value = True And bahasa = m + " dan " + i Else End If If cb1.Value = True And cb3.Value = True And bahasa = m + " dan " + l + " yang lain" Else End If If cb2.Value = True And cb3.Value = True And bahasa = i + " dan " + l + " yang lain" Else End If If cb1.Value = True And cb2.Value = True And bahasa = m + " , " + i + " dan " + l + " Else End If ' syarat jantina Dim jantina As String If ob1.Value = True Then jantina = ob1.Caption Else End If If ob2.Value = True Then jantina = ob2.Caption Else End If

cb3.Value = False Then

cb2.Value = False Then

cb1.Value = False Then

cb3.Value = True Then yang lain"

MsgBox "Nama saya adalah " & UserForm1.txtNama.Text & " yang berasal _ dari " & UserForm1.cmbAsl.Text & " boleh bertutur dalam " & bahasa & _ " yang mana merupakan seorang " & jantina, vbInformation, "Lokasi _ Semasa" End Sub

34

Anda mungkin juga menyukai