117382994 modul final arcgis vba

34
PENGENALAN KEPADA PENGATURCARAAN ARC-OBJECT MENERUSI VBA (ARCGIS-VISUAL BASIC FOR APPLICATION) Oleh MUHAMAD FIRDAUS CHE AMAT

Upload: fredy027

Post on 02-Jan-2016

90 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: 117382994 Modul Final ArcGIS VBA

PENGENALAN KEPADA PENGATURCARAAN ARC-OBJECT MENERUSI

VBA (ARCGIS-VISUAL BASIC FOR APPLICATION)

Oleh MUHAMAD FIRDAUS CHE AMAT

Page 2: 117382994 Modul Final ArcGIS VBA

2

KANDUNGAN

PERKARA

M/S

1.0 KATA PENGHANTAR 4

2.0 PERSEKITARAN VISUAL BASIC 5

2.1 Membuka Persekitaran VBA 5

2.2 Memahami Persekitaran VBA 6

3.0 MEMBANGUN DAN MENYUSUN ATUR “COMMANDS” & “TOOLBAR” 7

3.1 Penentuan platform simpanan projek 7

3.2 Membina toolbar baru 8

3.3 Membina dan menyusun letak Commands 9

3.4 Membina UIControl 10

3.5 Menghapuskan (delete) toolbar 11

3.6 Menghapuskan (delete) commands 11

3.7 Mengunci blok suaipakai (Locking customization) 12

4.0 PEMBANGUNAN “DIALOG BOX” 13

4.1 Merekabentuk “UserForm” 13

4.2 Memasukkan “controls object” 14

4.3 Setting object properties 14

5.0 ASAS PENGATURCARAAN VBA 15

5.1 Membangunkan Kekotak Mesej (Message Box) 15

5.2 Membangunkan Kekotak Input (Input Box) 15

5.3 Pengaturcaraan Berdasarkan Elemen Spatial 16

5.4 Pengaturcaraan Berdasarkan Elemen Atribut 17

6.0 MENGATURCARA BERDASARKAN ANTARAMUKA PENGGUNA 19

6.1 Merekabentuk GUI 19

6.2 Mengaktifkan Control Object pada UserForm 19

6.3 Memasukkan pernyataan syarat dan membuat paparan di dalam kekotak

Mesej (Message Box)

20

6.4 Memanggil GUI menerusi UIButtonControl 21

7.0 MEMBANGUNKAN ANTARAMUKA PENGGUNA YANG MAMPU BERINTERAKSI 22

DENGAN SPATIAL DATABASE

7.1 Merekabentuk GUI 22

7.2 Mengaktifkan Object Control (Combo Box) 23

7.3 Memasukkan script pertanyaan (Query Statements)

24

Page 3: 117382994 Modul Final ArcGIS VBA

3

8.0 MEMBANGUNKAN “AUTOMATED GEOPROCESSING TOOLS” 25

RUJUKAN

31

LAMPIRAN 1 32

LAMPIRAN 2

34

Page 4: 117382994 Modul Final ArcGIS VBA

4

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.

Page 5: 117382994 Modul Final ArcGIS VBA

5

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 Larikan (run) perisian ArcGIS

2.1.2 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)

Page 6: 117382994 Modul Final ArcGIS VBA

6

2.2 Memahami Persekitaran VBA

Pojects Code module Procedure

User Form

Toolbox

Object Properties

Object Control

Page 7: 117382994 Modul Final ArcGIS VBA

7

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)

Page 8: 117382994 Modul Final ArcGIS VBA

8

3.1.3 Tentukan platform simpanan projek pada platform

<belajar1.mxd> (rujuk rajah di bawah)

3.2 Membina toolbar baru

3.2.1 Klik tab Toolbars, klik butang New…

3.2.2 Masukkan nama toolbar <MyTools>

3.2.3 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

Page 9: 117382994 Modul Final ArcGIS VBA

9

3.3 Membina dan menyusun letak Commands

3.3.1 Klik tab Commands, Scroll down Categories

3.3.2 Pilih [New Menu]

3.3.3 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)

Page 10: 117382994 Modul Final ArcGIS VBA

10

3.4 Membina UIControl

3.4.1 Pilih Categories [UIControls]

3.4.2 Klik butang New UIControl…

3.4.3 Pilih UIButtonControl

3.4.4 Klik Butang Create

3.4.5 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)

Page 11: 117382994 Modul Final ArcGIS VBA

11

3.5 Menghapuskan (delete) toolbar

3.5.1 Klik tab Toolbars

3.5.2 Buat pilihan pada toolbar yang berkenaan

3.5.3 Kemudian klik butang Delete

3.6 Menghapuskan (delete) commands

3.6.1 Klik tab Commands

3.6.2 Klik kanan pada commands yang berkenaan

3.6.3 Klik delete

Page 12: 117382994 Modul Final ArcGIS VBA

12

3.7 Mengunci blok suaipakai (Locking customization)

3.7.1 Klik tab Options

3.7.2 Tekan butang Lock Customization…

3.7.3 Masukkan password anda sebaiknya

3.7.4 Klik butang OK

3.7.5 Klik Butang Close

Page 13: 117382994 Modul Final ArcGIS VBA

13

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

Page 14: 117382994 Modul Final ArcGIS VBA

14

4.2 Memasukkan “controls object”

4.2.1 Drag & drop control components (object control) daripada

toolbox ke dalam userForm

4.2.2 Susunkan kembali komponen tersebut mengikut kesesuaian

4.3 Setting object properties

4.3.1 Klik pada object control

4.3.2 Lakukan perubahan setting pada object properties

Page 15: 117382994 Modul Final ArcGIS VBA

15

5.0 ASAS PENGATURCARAAN VBA

5.1 Membangunkan Kekotak Mesej (Message Box)

5.1.1 Bina satu UIButtonControl (rujuk para 3.4)

5.1.2 Masukkan namanya sebagai < Message box 1>

5.1.3 Klik Kanan UIButtonControl tersebut > View Source

5.1.4 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 Bina satu UIButtonControl (rujuk para 3.4)

5.2.2 Masukkan namanya sebagai < InputBox1>

5.2.3 Klik Kanan UIButtonControl tersebut > View Source

5.2.4 Masukkan sampel script di bawah ke dalam code module :

Page 16: 117382994 Modul Final ArcGIS VBA

16

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

Page 17: 117382994 Modul Final ArcGIS VBA

17

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

Page 18: 117382994 Modul Final ArcGIS VBA

18

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) Klik combo box procedure

ii) Select item <MouseDown>

iii) Masukkan script seperti berikut :

Rujuk LAMPIRAN 1

iv) Save dan tutup VBA window

5.5.6 Tool tersebut sedia diuji dan digunakan

Page 19: 117382994 Modul Final ArcGIS VBA

19

6.0 MENGATURCARA BERDASARKAN ANTARAMUKA PENGGUNA

6.1 Merekabentuk GUI

6.1.1 Buka Visual Basic Editor dengan klik pada toolbar Tools >

Macros > Visual Basic Editor

6.1.2 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

ii) Setelah code module keluar klik pada combo box

procedure

iii) Pilih < Activate>

iv) Masukkan script seperti berikut :-

v) Klik Save project

Page 20: 117382994 Modul Final ArcGIS VBA

20

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 Buka Visual Basic Editor dengan klik pada toolbar Tools >

Klik Macros > Klik Visual Basic Editor

6.3.2 Buka Userform dengan dwiklik UserForm1

6.3.3 Dwiklik butang Papar

6.3.4 Masukkan script yang berikut :-

Rujuk LAMPIRAN 2

6.3.5 Script sedia untuk diuji lari

Page 21: 117382994 Modul Final ArcGIS VBA

21

6.4 Memanggil GUI menerusi UIButtonControl

6.4.1 Buka Dialog Box Customize dengan klik pada toolbar Tools

> Customize…

6.4.2 Klik kanan UIButtonControl > Klik View Source

6.4.3 Masukkan script seperti berikut :-

UserForm1.Show

Page 22: 117382994 Modul Final ArcGIS VBA

22

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 Buka Visual Basic Editor dengan klik pada toolbar Tools >

klik Macros > klik Visual Basic Editor

7.1.2 Untuk merekabentuk GUI, anda boleh merujuk set arahan

pada para 4.0 tetapi rekabentuknya rujuk rajah dibawah

Page 23: 117382994 Modul Final ArcGIS VBA

23

7.2 Mengaktifkan Object Control (Combo Box)

7.2.1 Dwiklik pada UserForm berkenaan

7.2.2 Setelah code module keluar klik pada combo box procedure

7.2.3 Pilih < Activate>

7.2.4 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 Save project

7.2.6 Buat pengujian script dengan klik menu Run

Page 24: 117382994 Modul Final ArcGIS VBA

24

7.3 Memasukkan script pertanyaan (Query Statements)

7.3.1 Dwi klik pada butang cari

7.3.2 Masukkan script seperti dibawah:-

7.3.3 Save dan close VBA

7.3.4 Call UserForm dengan UIButtonControl (sila rujuk para 6.4)

7.3.5 Buat pengujian script dengan klik menu UIButtonControl

yang telah di setkan

Page 25: 117382994 Modul Final ArcGIS VBA

25

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>

Page 26: 117382994 Modul Final ArcGIS VBA

26

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>

Page 27: 117382994 Modul Final ArcGIS VBA

27

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

kemudian klik edit

Page 28: 117382994 Modul Final ArcGIS VBA

28

8.7 Buat carian fungsi yang dikehendaki dengan klik tab index pada

ArcToolbox , kemudian taipkan nama fungsi <add field > klik butang

locate

1. Klik tab Index

2. Buat Carian fungsi <add field>

3. Buat selection fungsi tersebut

4. Klik butang Locate

Page 29: 117382994 Modul Final ArcGIS VBA

29

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 Aktifkan fungsi dengan dwi klik pada <Add Field>

8.11 Masukkan parameter yang berkenaan dan klik OK (rujuk rajah

dibawah)

Page 30: 117382994 Modul Final ArcGIS VBA

30

8.12 Setkan input <Lot_Clip> sebagai parameter dengan klik kanan pada

objek berkenaan dan klik Model Parameter

Nota : Sekiranya berjaya abjab “P” akan muncul di sebelah Input

objek tersebut

8.13 Save dan tutup persekitaran model builder

8.14 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

Page 31: 117382994 Modul Final ArcGIS VBA

31

RUJUKAN 1. Robert Burke, (2003). “Getting To Know ArcObjects : Programming ArcGIS with

VBA.” California, USA.

2. ESRI, (2006). “ArcGIS Desktop Help.” California, USA.

Page 32: 117382994 Modul Final ArcGIS VBA

32

LAMPIRAN 1

Private Sub UIToolControl2_MouseDown(ByVal button As Long, ByVal shift As _

Long, ByVal x As Long, ByVal y As Long)

Dim pMxDoc As IMxDocument

Dim pActiveView As IActiveView

Dim pPoint As IPoint

Dim 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 pEnvelope As IEnvelope

Dim pSpatialFilter As ISpatialFilter

Dim pEnumLayer As IEnumLayer

Dim pFeatureLayer As IFeatureLayer

Dim pFeatureClass As IFeatureClass

Dim pFeatureCursor As IFeatureCursor

Dim pFeature As IFeature

Dim pUID As New UID

Dim 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

Page 33: 117382994 Modul Final ArcGIS VBA

33

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

Page 34: 117382994 Modul Final ArcGIS VBA

34

LAMPIRAN 2

Private Sub cmdPapar_Click()

Dim bahasa, m, i, l As String

m = cb1.Caption

i = cb2.Caption

l = "pelbagai bahasa"

'satu syarat

If cb1.Value = True Then

bahasa = m

Else

End If

If cb2.Value = True Then

bahasa = i

Else

End If

If cb3.Value = True Then

bahasa = l

Else

End If

'Lebih daripada satu syarat

If cb1.Value = True And cb2.Value = True And cb3.Value = False Then

bahasa = m + " dan " + i

Else

End If

If cb1.Value = True And cb3.Value = True And cb2.Value = False Then

bahasa = m + " dan " + l + " yang lain"

Else

End If

If cb2.Value = True And cb3.Value = True And cb1.Value = False Then

bahasa = i + " dan " + l + " yang lain"

Else

End If

If cb1.Value = True And cb2.Value = True And cb3.Value = True Then

bahasa = m + " , " + i + " dan " + l + " yang lain"

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

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