VBA (visual basic aplication) merupakan bahasa pemprograman yang umum digunakan, penggunaan vba pada dasarnya untuk mempermudah user dalam membangun dan mendesain program yang lebih efisien.
kegunaan VBA pada Arcgis adalah untuk mengotomatisasi pekerjaan, pekerjaan yang dimaksud adalah pekerjaan yang dilakukan secara berulang-ulang dan pekerjaan yang kompleks.
berikut kami akan mendesain tombol pencarian data menggunakan vba agar memudahkan pencarian data dalam table Arcgis yang telah dibangun sebelumnya. jika anda menggunakan Arcgis 10.3.1 maka terlebih dahulu instal vba yang kompatible dapat di download disini
tahapannya sebagai berikut :
Tahap 1. jalankan Arcgis lalu masukan peta yang telah memiliki data dalam table, dalam hal ini kami akan menggunakan peta batas wilayah yang didalamnya memuat data nama desa.
Tahap 2. pada menu arcgis pilih Customize lalu VBA Macros pilih Visual Basic Editor atau kalau mau gampang tekan aja tombol (alt + f11)
Tahap 3. pada vba pilih Insert lalu UserForm untuk mendesain tampilannya.
Tahap 4. pada UserForm pilih CommandButton lalu pada caption tulis CARI, lalu buat ComboBox
Tahap 5. klik 2x UserForm1 lalu masukkan (Copy-Paste) bahasa pemprograman dibawah
Private Sub CommandButton1_Click()
Dim pDoc As IMxDocument
Dim pMap As IMap
Dim pLayer As IFeatureLayer
Dim pFc As IFeatureClass
Dim pQf As IQueryFilter
Dim pSelSet As ISelectionSet
Dim pFSel As IFeatureSelection
Set pDoc = ThisDocument
Set pMap = pDoc.FocusMap
For i = 0 To pMap.LayerCount - 1
If UCase(pMap.Layer(i).Name) = UCase("adm_desa") Then
Set pLayer = pMap.Layer(i)
Exit For
End If
Next
Set pFc = pLayer.FeatureClass
'Create the query filter
Set pQf = New QueryFilter
pQf.WhereClause = "Desa = '" & ComboBox1.Value & "'"
'Get the features that meet the where clause
Set pSelSet = pFc.Select(pQf, esriSelectionTypeIDSet, esriSelectionOptionNormal, Nothing)
'Apply the selection
Set pFSel = pLayer
Set pFSel.SelectionSet = pSelSet
pDoc.ActiveView.Refresh
End Sub
Tahap 5. klik 2x tombol CARI lalu masukkan bahasa pemprograman dibawah
Private Sub UserForm_Click()
Dim pMxDoc As IMxDocument
Dim PFLayer As IFeatureLayer
Dim pFc As IFeatureClass
Dim pFeat As IFeature
Dim i As Integer
Set pMxDoc = ThisDocument
For i = 0 To pMxDoc.FocusMap.LayerCount - 1
If (UCase(pMxDoc.FocusMap.Layer(i).Name) = UCase("adm_desa")) Then
Set PFLayer = pMxDoc.FocusMap.Layer(i)
Exit For
End If
Next
Set pFc = PFLayer.FeatureClass
'sort nama sungai
Dim pTableSort As ITableSort
Set pTableSort = New TableSort
pTableSort.Fields = "Desa"
pTableSort.Ascending("Desa") = True
Set pTableSort.Table = pFc
pTableSort.Sort Nothing
'Return a cursor for all the features
Dim pFCur As IFeatureCursor
Set pFCur = pTableSort.Rows
Set pFeat = pFCur.NextFeature
Dim namaExists As Boolean
namaExists = False
Do Until pFeat Is Nothing
nama = pFeat.Value(pFeat.Fields.FindField("Desa"))
'Check for duplicate name
For i = 0 To ComboBox1.ListCount - 1
If nama = ComboBox1.List(i) Then
namaExists = True
Else: End If
Next i
Select Case namaExists
Case False
ComboBox1.AddItem nama
Case Else
End Select
namaExists = False
Set pFeat = pFCur.NextFeature
Loop
ComboBox1.ListIndex = 0
End Sub
Tahap 5. cek hasilnya dengan klik run
jika anda menggunakan peta sendiri bisa dicoba dengan menganti sesuai peta dan data anda, ganti nama layer adm_desa dengan layer peta anda, dan field desa dengan field data anda.
selamat mencoba...!!!
ARTIKEL TERKAIT :
2 komentar
Write komentarTerimakasih atas tulisan yang bermafaat, semoga kedepannya lebih banyak tulisan tulisan seperti ini.
ReplyJangan lupa mampir ke website saya https://nsr.mahasiswa.atmaluhur.ac.id/
dan website kampus saya www.atmaluhur.ac.id
Obyek yg dipakai arcgis apa pak klau di excrl pakai sheet, klsu ada panduannya vba utk arcgis mohon info, mantab tulisannya
Reply