|
Membuat Aplikasi SIG dengan MapObjects Bagian I: Fungsi-fungsi Standar |
|
|
|
|
Written by Administrator
|
|
Monday, 30 April 2007 |
|
Page 8 of 10 VII. Identify
Tool standar berikutnya adalah tool untuk melihat data Tabular dari object yang dipilih. Dalam Arcview, fungsi ini disebut dengan Identify, dan kita akan mengikuti standar penamaan ini. Proses Identify dilakukan dengan melakukan klik pada suatu posisi dalam peta. Dari posisi ini akan diambil keterangan dari object yang diklik. Dalam contoh berikutnya keterangan object yang akan ditampilkan adalah isi dari field Name pada Kota dan Propinsi, dan field Route pada layer Jalan. Untuk layer propinsi diambil juga luas dari propinsi yang terpilih, dan pada layer jalan diambil juga panjang jalan.
Dengan cara yang sama dengan Identify ini, kita dapat mengambil isi field apapun dari shapefile. Seringkali dalam shapefile hanya ada kode object saja, sedang keterangan-keterangan lainnya disimpan dalam database non spatial seperti MS Access, SQL Server, atau Oracle. Jika seperti ini bentuknya, maka saat Identify kita ambil kode object, kemudian kita query ke database non spatial tadi untuk mencari record yang field kode objectnya sama dengan yang terambil tadi. Jadi tidak masalah apabila data keterangan berada pada database diluar shapefile. Cara ini juga yang digunakan untuk mengkonekkan object tertentu di peta dengan data foto , video, atau yang lainnya.
Proses identify dilakukan saat event MouseDown pada object map, seperti halnya zoom in, zoom out, dan pan. Jadi kita akan memerlukan suatu mode yang menunjukkan bahwa yang akan berlaku saat ini saat klik di peta adalah untuk fungsi Identify. Dan agar tampilan lebih bagus, saat mengisi mode, kita juga mengubah bentuk pointer mouse dengan moIdentify. Berikut adalah bentuk desain form untuk contoh identify.
Gambar 13. Desain tampilan untuk Identify
Kode pertama yang harus ditambahkan adalah pada saat tombol Identify diklik:
Private Sub Command5_Click() pMode = "identify" Map1.MousePointer = moIdentify End Sub
Selanjutnya dalam event MouseDown ditambah dengan case jika mode aktif adalah identify. Untuk proses pengambilan data attribut (non spatial) dari suatu object dapat dilakukan dengan beberapa cara. Jika akan mengambil object yang dekat dengan lokasi klik, dapat digunakan fungsi SearchByDistance milik object MapLayer. Fungsi ini akan mengembalikan recordset yang ada pada suatu shapefile yang dekat dengan suatu shape tertentu dan pada jarak tertentu. Shape disini adalah point yang dibentuk dengan fungsi ToMapPoint, sedang jarak diisi suatu nilai double yang besarnya akan menentukan seberapa jauh radius dari object2 dalam layer dari point tadi yang akan diambil datanya. Semakin besar jarak berarti semakin besar radius dan membuat hasil klik kurang spesific karena mengembalikan banyak object. Sebaliknya jika terlalu kecil akan membuat kita sulit untuk mendapatkan informasi dari suatu object karena jaraknya harus tepat dengan klik kita. Recordset yang dikembalikan dari hasil SearchByDistance memiliki field khusus yang digunakan untuk mengambil nilai spatial object. Nama field ini adalah field “Shape” yang mengeluarkan object point, line, atau polygon, tergantung dari tipe layernya. Untuk mengambil panjang jalan, dapat dilakukan dengan cara mengambil property length dari object Line yang ada dalam field shape ini, sedang untuk mengambil luas, dilakukan dengan cara memanggil property Area. Karena peta mexico yang kita pakai menggunakan satuan derajat, maka untuk panjang perlu dikalikan dengan suatu konstanta yang membuat nilai derajat menjadi satuan meter. Untuk daerah katulistiwa, satu derajat kurang lebih sama dengan 110 km.
Dalam contoh, akan dilakukan looping terlebih dahulu terhadap semua layer. Masing-masing layer akan disearch dan keterangan-keterangan objectnya akan ditampung dalam suatu string dan dikeluarkan dalam messagebox. Berikut adalah kode yang perlu ditambahkan dalam event MouseDown dalam object map, melengkapi kode-kode untuk zoom in, zoom out, dan pan.
Case "identify" Dim i As Long Dim L As MapObjects2.MapLayer Dim rec As MapObjects2.Recordset Dim s As String Dim P As MapObjects2.Point Dim FName As String Set P = Map1.ToMapPoint(X, Y) For i = 0 To 2 '0=cities, 1=roads, 2=states If i = 0 Then s = s & "Kota:" & vbCrLf FName = "Name" End If If i = 1 Then s = s & "Jalan:" & vbCrLf FName = "Route" End If If i = 2 Then s = s & "Propinsi:" & vbCrLf FName = "Name" End If Set L = Map1.Layers(i) Set rec = L.SearchByDistance(P, 0.1, "") While Not rec.EOF s = s & vbTab & rec.Fields(FName).ValueAsString If i = 1 Then s = s & ", Panjang=" & _ Format(rec.Fields("Shape").Value.Length * 110, "0") & "Km" If i = 2 Then s = s & ", Luas=" & _ Format(rec.Fields("Shape").Value.Area * 110 * 110, "0") & "Km2" s = s & vbCrLf Wend Next MsgBox s
Untuk mengetes program, klik-lah pada suatu titik dalam peta. Jika didekat titik klik tadi ada jalan, maka akan muncul rute-rute jalan tadi. Jika lokasi yang diklik dekat dengan. suatu kota, maka akan muncul nama-nama kota yang dekat dengan klik tadi. Contoh tampilan setelah melakukan identify ini dapat dilihat pada gambar 14.
Gambar 14. Contoh hasil saat melakukan Identify
|
|
Last Updated ( Thursday, 26 July 2007 )
|
Kuliah TKI - Blog da...
mm Apparently, 21,000 boots imported by
Clas-class php yang ...
mm Apparently, 21,000 boots imported by
Kuliah TK Internet :...
mm Apparently, 21,000 boots imported by
The Power of GIS - U...
mm Apparently, 21,000 boots imported by
Kuliah TK Internet :...
mm Apparently, 21,000 boots imported by
JPGraph - membuat gr...
timberland - mm Apparently, 21,000 bo...
Kuliah TKI : Ajax - ...
mm Apparently, 21,000 boots imported by
Banner spesial untuk...
mm Apparently, 21,000 boots imported by