Bikin Buku Lagi .. “Pemrograman Database dengan Matlab”

Menganggur saat bulan puasa ternyata enak juga buat menulis. Saat berada di “dunia” sendiri tiba-tiba adzan maghrib pertanda waktu berbuka puasa. Setelah berbuka, refresh lagi, dan siap meracik tulisan lagi. Setelah lebaran, jadilah satu buku “Pemrograman Basis Data dengan Matlab”. Belum tentu itu judulnya karena terkadang penerbit menyarankan untuk mengganti judul dengan judul yang menarik dari sisi pemasaran. Begitulah, harus terjadi kerjasama yang baik antara penulis dengan pemasaran, jika tidak, sudah dapat dipastikan buku tersebut tidak laku.

Sebenarnya buku yang sedang direview oleh penerbit (semoga lolos) tersebut berawal dari pertanyaan-pertanyaan di blog ini. Lalu muncul ide bagaimana jika dibuat dalam satu paket buku beserta contoh-contoh aplikasinya. Apalagi banyak yang masih sangsi bahwa Matlab bisa menghasilkan aplikasi yang terhubung dengan basis data seperti bahasa-bahasa yang lain seperti visual basic, java, dan bahasa pemrograman visual lainnya. Matlab selama ini dipuji karena tangguh di sisi komputasi. Bukan tangguh sih sebenarnya, tetapi mudah dan user friendly. Jadi jika bisa mengelola database, maka perancang bisa dengan baik menghubungkan komputasi teknis, soft computing, data mining, dengan basis data yang dimiliki. Database Management System (DBMS) yang dipilih adalah Microsoft Access sebagai perwakilan DBMS desktop dan MySQL untuk DBMS berbasis web. Sepertinya cukup karena keduanya merupakan DBMS yang paling banyak digunakan saat ini, terutama mahasiswa.

Untuk contoh aplikasi, dipilih kasus-kasus yang sering dijadikan tugas akhir (skripsi atau thessis) para mahasiswa yaitu data mining dengan clustering, enkripsi database, pengolahan citra, yang dirakit tentu saja dengan GUI. Tulisan diakhiri dengan lampiran-lampiran yaitu pembuatan executable program dan teori dasar struktur data di Matlab yang sangat penting karena proses perpindahan dari DBMS ke Matlab untuk diproses dan sebaliknya.

Seperti biasa, operasi dasar pada pemrograman basis data dipelajari yang dikenal dengan istilah CRUID (create, read, update, insert, dan delete). Pembuatan grafik setelah proses clustering dan pengolahan citra digital yang kemudian disimpan ke database dibahas dengan sederhana. Jika tombol “clustering” ditekan maka tiap record di database data langsung terupdate masuk kluster yang mana (kluster 0 atau 1). Tentu saja Anda bisa mengembangkan menjadi lebih dari dua kluster. Tanda tangan yang tadinya image kini dirubah menjadi biner (0 dan 1) yang bermanfaat untuk mengurangi kapasitas penyimpanan (dibandingkan penyimpanan dalam bentuk image utuh) yang biasanya diterapkan di perbankan.

Sepertinya pengolahan data dengan notepad atau excel yang bersifat offline dari database sudah mulai diganti dengan sistem yang online karena perubahan data terjadi secara cepat dengan jumlah yang besar (big data). Semoga buku seharga beberapa bungkus rokok tersebut segera terbit (whee lah …). Amiin.

Melanjutkan Riset yang Tertunda

Setelah hampir tiga bulan hilang dari peredaran karena libur kuliah, akhirnya sekarang mulai lagi bertarung mengerjakan disertasi yang sempat terhenti. Tadinya ingin masuk bulan berikutnya tetapi karena ada email bahwa pemesanan kamar kos kategori 2 sudah disetujui dan harus diambil maksimal minggu depan, mau tidak mau segera berangkat karena tipe kos ini merupakan idola semua mahasiswa AIT terutama yang sedang tesis atau disertasi mengingat bentuknya yang sangat private dan egois (karakter mahasiswa yang sedang nulis).

Banyak hal terjadi baik di Indonesia maupun di Thailand ketika mau berangkat. Beberapa hal yang mungkin bisa dijadikan masukan untuk pembaca yang mau berangkat ke Thailand:

  • Kartu Sim Card harus teregister. Berbeda dengan di Indonesia yang registrasi hanya dengan mengisi nama, no KTP dan alamat, si sini harus datang ke Simcard center dengan membawa kartu Identitas (id card/paspor). Agak ribet juga, walau bisa juga dengan online chat dgn webcam. Kita difoto dengan paspor.

  • Pesawat Air Asia mulai memberlakukan dengan ketat berat barang yang masuk ke Cabin. Jika di atas 7 kg, bakal kena charge .. waspadalah. Sepertinya petugas hanya mengincar yang membawa tas beroda, buktinya saya lolos dengan tas sanggul, walau lebih dari 7 kg.

  • Rupiah melemah terus terhadap dollar, walau mata uang tetangga2 juga ikut melemah. Berdampak terhadap harga-harga, terutama tiket pesawat.

Uang kiriman dikti belum turun .. kalo ini masalah khusus .. he he he.

Memetakan Landuse dari Satelite

Untuk mengetahui landuse suatu wilayah kita bisa memesan dari instansi baik swasta maupun pemerintah yang bertanggung jawab menyediakan data-data geografis suatu wilayah, di Indonesia kita mengenal bakosurtanal (www.bakosurtanal.go.id) yang berada di Bogor. Tetapi masalahnya data yang diberikan hanya membedakan secara global seperti bangunan, pertanian, dan sebagainya. Jika kita ingin mengetahui apakah suatu bangunan itu perumahan, rumah sakit, sekolah, atau yang lainnya mau tidak mau kita harus mencari tahu sendiri. Cara mudahnya adalah dengan bantuan google baik google search ataupun google earth. Untungnya ArcGIS sudah menyediakan layanan online tersebut di dalam softwarenya.

Pilih imagery atau Imagery with labels. Sepertinya yang kedua lebih jelas, karena ada labelnya. Zoom ke arah lokasi yang akan dituju, misalnya kota bekasi.

Isi nama yang jelas agar mudah dicari ketika akan kembali lagi ke lokasi tersebut.

Pilih proyeksi sesuai dengan lokasi agar dapat diintegrasikan dengan shapefile lainnya. Klik kanan di peta dan pilih Data Frame Properties. Ini merupakan hal penting, lihat tulisan sebelumnya.

Pilih UTM zona jabotabek, yaitu di daerah S (south), atau sesuai dengan negara Anda tinggal. Ingat !!! bekasi di bumi .. bukan di planet lain.

Tambahkan peta patokan untuk memetakan landuse pertama misalnya residential/perumahan. Jangan lupa simpan terlebih dahulu project Anda untuk jaga-jaga agar jika ada masalah, data tersimpan. Zoom ke arah lokasi yang ingin dilihat:

Mulai menambah satu shapefile baru untuk landuse type resident. Buat dengan format vektor titik (point vector). Cara yang dianjurkan adalah dengan menambah satu file baru di catalog dengan nama dan jenis tertentu.

Beri nama sesuai

Klik Edit untuk mengeset proyeksi sesuai dengan proyeksi basemap dan kawan-kawan. Jika sudah maka satu map baru berformat titik muncul di Table of contents pada layer Anda. Karena saya menggambar lokasi yang berpopulasi rendah, maka saya harus mencari di area yang bisa ditambah perumahan di lokasi tersebut, biasanya di pinggiran kota. Lihat tulisan sebelumnya tentang menggambar polyline jika ingin mengetahui bagaimana menggambar polyline.

Biasanya harus menekan shapefile yang akan diedit agar pilihan menggambar titik muncul.

Karena terlalu banyak jika satu rumah untuk satu titik, maka bisa diwakilkan beberapa rumah untuk satu titik, di sini saya ambil kira-kira sepuluh rumah atau satu blok.

Jangan lupa menghentikan proses editing jika sudah selesai, dilanjutkan dengan menekan tombol simpan ketika muncul pesan untuk menyimpan hasil editing. Edit dengan simbol yang Anda inginkan. Selamat mencoba ..

Digitalization dari Peta Manual

Terkadang instansi yang kita minta datanya hanya memiliki data cetakan biasa, sehingga untuk melakukan analisa diperlukan konversi ke data digital. Misalnya kita akan mendigitalisasi wilayah hutan di kota Bekasi dengan data hutan jawa barat. Scan peta manual tersebut dengan resolusi yang tinggi karena kita hanya menggunting pada wilayah tertentu saja yang kecil, misalnya kota bekasi.

Atau kalau mau enak gambarnya dicrop aja sebesar kota bekasi. Klik kanan di menu dan aktifkan menu georeferencing. Minimal dua pasangan titik bisa membuat referensi geografis dari gambar/image tersebut. Pasangan pertama merupakan titik gambar dan titik shapefile yang sudah terproyeksi, begitu juga pasangan titik kedua. Perlu dua titik karena jika hanya satu titik, Arcgis tidak sanggup mengakuratkan hasil karena ukuran/skala yang biasanya kacau.

Kalo sudah selesai maka buat shapefile baru dengan tipe polygon untuk membuat area ruang terbuka yang nantinya menjadi dasar dalam membuat analisa suitability.

Atur dulu proyeksinya samakan dengan proyeksi kota yang telah diset sebelumnya. Setelah itu mulai proses penggambaran. Lakukan proses menggambar polygon dengan mencontek dari peta cetak yang sudah digeoreferencing, hasilnya adalah data ruang terbuka yang berada tepat di kota bekasi (berwarna biru muda).

Membuat Peta Jalan dari Open Street Map

Data merupakan aset yang sangat berharga. Dengan mengolah data kita bisa memetik keuntungan dan manfaat dari data tersebut. Menyadari hal itu banyak orang yang butuh data mengeluarkan kocek yang besar untuk mendapatkan data. Akibatnya penyedia data terkadang merahasiakan data yang dimilikinya. Hal ini bisa menguntungkan bisa juga merugikan. Terlepas dari hal itu, karena data geografis menyangkut hajat hidup orang banyak, sangat dibutuhkan data yang dapat diakses oleh semua orang, salah satunya adalah peta jalan. Sebenarnya sudah banyak aplikasi baik desktop, web-based, atau android yang dapat mengakses peta jalan ini, tetapi peneliti membutuhkan peta tematik tertentu yang akan digunakan untuk analisa spasial. Ok, langsung saja buka ArcGis, dan tambahkan satu basemap dengan nama Open Street Map.

Cukup banyak data yang tersedia, baik topography peta satelit, laut, dan sebagainya. Di sini saya akan mencoba membuat peta jalan. Jika Anda telah memiliki peta jalan, dapat Anda tambahkan di ArcMap, jangan lupa samakan terlebih dahulu proyeksinya, lihat postingan sebelumnya. Data jalan sebenarnya bisa dibeli di Bakosurtanal untuk negara Indonesia, sayangnya berbayar (ada perpres nya). Akan tetapi beberapa blogger telah memiliki data tersebut dan dengan baik hati menshare. Masalahnya adalah datanya tidak Uptodate. Contohnya adalah kota Bekasi, tampak fly over yang mengarah ke sumarecon belum digambar, oleh karena itu saya akan mencoba menggambarnya.

Klik kanan pada layer Jalan – Edit Fiture – Start Editing. Jika belum muncul juga jendela Create fiture, klik editor, masuk ke Editing Windows dan klik Ceate features.

Dobel klik pada objek Jalan, yang merupakan objek polyline (garis/lengkungan). Ternyata ada sedikit masalah yaitu pesan berikut ketika selesai membuat satu polyline.

Sepertinya ArcMap tidak sanggup memetakan garis tersebut. Oleh karena itu kita kembali selidiki shapefile jalan yang telah kita proyeksikan sebelumnya. Ternyat koordinat belum ada ukurannya:

Lalu apa yang harus dilakukan? Tentu saja harus mengisi koordinat yang sesuai pada layer Jalan tersebut. Cara penyelesaian saya adalah dengan mengekspor fitur ke file lainnya dengan mengklik kanan layer Jalan – Data – Export Data, dan pilih this layer source data, isi nama file baru hasil export tersebut. Hasilnya harus seperti berikut ini dimana polyline baru berhasil ditambahkan, karena banyak harus yang saya tambahkan, capek dan membosankan, teruskan sendiri ya.

Mengatasi Problem Koordinat dan Proyeksi di ArcGIS

ArcMap adalah salah satu fasilitas yang tersedia di ArcGis. Fungsinya mirip ArcView yang merupakan versi lawas dari ArcGis. Ketika menambah satu layer di ArcMap terkadang muncul pesan berikut ini:

Atau mungkin pesan lain yang mengatakan koordinat belum teridentifikasi dengan jelas. Tentu saja kita bisa mengklik ‘OK’ dan peta tampak di ArcMap. Masalah akan muncul jika ArcMap kita terdiri dari lebih dari satu shapefile yang beda koordinat dan proyeksinya. Untuk pesan di atas kita diminta menyamakan proyeksi shapefile tersebut. Cara yang terstruktur adalah dengan membuka Arc Catalog, dan cari file yang akan disamakan proyeksinya tersebut.

Klik kanan dan masuk ke propertis. Samakan proyeksinya dengan layer BaseMap seperti pada gambar di atas. Apa itu BaseMap, akan dijelaskan pada postingan berikutnya. Samakan seperti pada gambar di bawah ini:

Di sini saya menggunakan WGS 1984 UTM Zone 48S yang merupakan wilayah jabotabek. Jika berhasil, maka Anda akan melihat dua layer yang sekarang memiliki proyeksi yang sama. Atur susunan layer karena jika dua poligon saling berimpit, salah satunya akan tertutup. Akhirnya tampak seperti gambar di bawah ini:

Selamat mencoba, atau mungkin ada teknik lain yang lebih ok, tolong dishare.

Membuat Digital Elevation Model (DEM) dari Peta Kontur

Untuk menentukan lokasi yang tepat terkadang ada syarat yang mengharuskan kemiringan tertentu, misalnya lokasi sekolah, perumahan, dan lain-lain. Oleh karena itu dibutuhkan data layer yang digunakan untuk menentukan lokasi dengan syarat tersebut. Biasanya syaratnya tidak hanya slope, jarak tertentu dari jalan raya, polusi, daerah rawan bencana dan lain sebagainya. Untuk DEM sendiri biasanya data yang tersedia berupa kontur yaitu garis-garis yang merepresentasikan ketinggian tertentu. ArcGIS memiliki fasilitas topografi untuk membuat DEM yang bertipe raster agar lebih mudah di-overlay dengan kriteria-kriteria yang lain.

Buat project baru dengan nama misalnya dem, kemudian tambahkan shapefile peta kontur lokasi yang akan dibuat DEM-nya. Buka Arc Catalog, drag file shapefile ke Table of Contents.

Buka ArcToolbox, dan di 3D analysis tool di bagian raster interpolation pilih topo to raster yang akan mengkonversi topografi menjadi raster. Isi shapefile yang dibutuhkan, untuk extent keluaran bisa dibatasi untuk region tertentu. Isi nama file keluaran dari hasil proses interpolasi ini. Tunggu hingga ArcGIS menginformasikan berhasil atau tidaknya proses konversi dengan memunculkan pesan berikut di pojok kanan bawah komputer.

Jika silang merah, berarti ada yang salah dengan proses tersebut. Jika berhasil, DEM siap digunakan. Selamat mencoba.

 

Error 000824 the tool is not licensed

Mempelajari software baru sangat menjengkelkan tetapi menyenangkan. Kita bisa mengetahui kecanggihan hasil karya orang yang tidak jarang membuat kita takjub. Walaupun kita tidak boleh tergantung dari tools, tetapi untuk menuangkan ide tentu saja kita membutuhkan alat yang dapat merepresentasikan isi kepala kita dengan cepat dan gampang terlihat. Untuk masalah data spasial, ArcGIS menjadi andalan beberapa peneliti. Software buatan ESRI ini terus mengembangkan versi-versi terbarunya agar mudah dan nyaman digunakan, salah satunya adalah proses pembuatan model.

Lisensi ArcGIS cukup mahal, tetapi biasanya institusi-institusi pendidikan, pemerintah, dan instansi lain biasanya telah membeli lisensi. Walaupun sudah ada versi open source yang gratis, sepertinya ArcGIS masih menjadi andalan dan banyak dipakai oleh peneliti-peneliti. Paper-paper di jurnal-jurnal internasional banyak kita jumpai penerapan software ini. Kembali ke model, setelah berpusing-pusing ria dengan problem sistem koordinat dan proyeksi, muncul masalah baru ketika akan melakukan model suitability analysis yaitu error 000824 the tool is not licensed. Sungguh menjengkelkan, karena hari itu saya sudah jenuh membaca ketika melakukan searching di google. Akhirnya saya mencoba membuka youtube, karena tidak perlu membaca, tinggal mendengarkan sambil melamun 🙂.

Ternyata beres juga masalah tersebut, dengan caru masuk ke menu Customize – Extension, lalu centang fasilitas-fasilitas yang kita butuhkan. Atau centang saja semua, beres sudah masalah.

Menentukan Suatu Titik di Dalam atau di Luar Polygon

Setelah berhasil merancang algoritma yang berfungsi mengoptimasi beberapa lokasi landuse, berikutnya adalah merancang optimasi dengan batasan. Tidak ada gunanya merancang sistem yang mengoptimasi lokasi optimal tetapi tidak melibatkan batasan tertentu. Batasan di sini misalnya lokasi yang menjadi target lokasi optimal harus bebas banjir, tidak berbahaya, dan aspek-aspek suitability/kesesuaian sesuai jenis peruntukan lahannya (perumahan, kantor, komersial, dan lain-lain). Dengan demikian saat proses optimasi, harus terlebih dahulu dipastikan bahwa kandidat lokasi tersebut berada di dalam region yang diperbolehkan. Istilah untuk optimasi jenis ini adalah constraint optimization.

Ilmu yang mempelajari apakah satu titik berada di dalam dan di luar suatu polygon adalah computer graphic. Secara gampangnya, suatu titik berada di dalam suatu area apabila beririsan dengan garis/lengkungan area tersebut tepat satu kali, dimana garis itu ditarik dari titik yang akan diuji pada sumbu x atau sumbu y keluar/menjauh. Jika beririsan dua kali, atau tidak sama sekali, maka dipastikan titik tersebut berada di luar bidang area tersebut. Cukup sederhana tetapi prakteknya sangat sulit. Setelah searching di internet, ternyata sudah banyak yang membuat M-file dengan bahasa Matlab, salah satunya adalah pada link berikut ini.

Karena Area of Interest (AOI) riset saya adalah kota Bekasi, maka saya membutuhkan region kota Bekasi dalam format shapefile (*.shp). Data dapat diunduh (biasanya berupa data untuk seluruh kota di Indonesia). Lakukan proses clipping untuk menemukan region kota Bekasi saja. Setelah itu impor ke dalam workspace dengan instruksi:

  • data1=impor(‘bekasi_city.shp’);
  • y=transpose([data1.X;data1.Y]);
  • land=(y);

Fungsi impor saya buat sendiri, untuk mempermudah saja, yaitu fungsi shaperead, yang bisa Anda lihat dengan mengetik ‘help shaperead’ di command window untuk lebih jelasnya. Untuk melihat secara visual regionnya, gunakan ‘mapview’ dan buka file shapefile yang Anda miliki.

Letakkan kursor di dalam region kota Bekasi, catat koordinatnya, kemudian cek apakah berada di dalam kota Bekasi atau di luar kota Bekasi. Misalnya titik yang berada di dalam adalah (106.98, -6.27), ikuti instruksi berikut ini untuk mengecek apakah berada di dalam atau di luar.

  • p1=[106.98 -6.27]
  • p1 =
  • 106.9800 -6.2700
  • >> in=inpoly(p1,land)
  • in =
  • 1

Perhatikan, Matlab menjawab 1, yang berarti titik berada di dalam kota Bekasi. Bagaimana jika di luar kota Bekasi? Arahkan mouse di luar kota Bekasi, catat koordinatnya, misalnya (107, -6), test lagi:

  • p=[107 -6];
  • in=inpoly(p,land)
  • in =
  • 0

Matlab menjawab nol, yang artinya di luar region/area. Jadi kode teruji benar. Terjawablah sudah problem menentukan suatu titik di luar atau di dalam region yang nantinya akan diintegrasikan dengan algoritma optimisasi. Akhir kata, fungsi di atas juga bisa digunakan untuk deretan titik, tidak harus satu titik saja. Misalnya kedua titik di atas, titip pertama p dan titik kedua p1, akan dicek secara bersama, kita tinggal menggabungkan kedua titik tersebut menjadi variabel titik:

  • test = [p;p1]
  • test =
  • 107.0000 -6.0000
  • 106.9800 -6.2700
  • in=inpoly(test,land)
  • in =
  • 0
  • 1

Yang artinya titik pertama di luar dan titik kedua didalam. Selamat mencoba dan bermain-main dengan data spatial dengan Matlab.

Koneksi Matlab dengan ArcGIS/ArcView

Sempet juga saya kelabakan ketika menerima hibah penelitian tentang spatial data yang diintegrasikan dengan algoritma tertentu. Karena kepepet, waktu itu saya menggunakan GUI matlab untuk membuat peta seperti arcgis dan juga bantuan aplikasi google map/earth yang ditempel di web berbasis ruby on rails, karena waktu kuliah web technology saya diajarkan bahasa pemrograman ruby on rails. Hasilnya kira-kira berikut ini:

Meneruskan riset yang sederhana tentang optimasi lokasi, untuk optimasi landuse tentu saja tidak bisa dengan cara seperti optimasi spbu yang memang terletak di pinggir jalan. Landuse akan mencari areal dua dimensi yang luas sekali, terutama untuk kasus kota bekasi yang luasnya sekitar 200 km persegi. Ternyata rumit juga terutama criteria/objective function untuk suitability. Ditambah lagi constraint untuk candidate locations, weh. Untuk sementara hasilnya seperti ini, semoga lancar ke depannya.

Optimasi Landuse dengan Matlab

Saatnya mulai membuat kode program matlab untuk mengoptimasi lokasi landuse dan landcover dengan data dari arcview/arcgis. Banyak algoritma yang digunakan oleh riset-riset optimasi saat ini, dua yang terkenal yaitu dengan Particle Swarm Optimization (PSO) dan Genetic Algorithms (GAs). Karena masing-masing memiliki kelemahan dan kelebihan, banyak yang berusaha melakukan hybrid antara satu metode dengan metode lainnya yang ternyata menghasilkan efisiensi dan akurasi yang baik.

Gambar di atas memperlihatkan hasil optimasi landuse tipe lingkaran. Di sini kode masih agak error, dan belum menerapkan algoritma untuk constraint (terlihat result berwarna hijau kabur melewati batas wilayah), tapi untuk sementara cukup menggembirakan karena dapat menghubungkan antara matlab dengan arcview/arcgis untuk menampilkannya. Setiap selesai melakukan optimasi, untuk melihat hasilnya kita harus merefresh Arcview dengan menekan tombol layer .

Menjawab Problem Data type “Struct” di Matlab

Menjawab permasalahan yang dijumpai ketika membuat kode program dengan bahasa Matlab adalah dengan cara: 1) membaca help, 2) situs www.matworks.com, 3) komunitas di internet, dengan bantuan google, dan 4) youtube. Permasalahan muncul karena karakter bahasa matlab yang sedikit berbasis objek. Buku yang beredar di pasaran pun tidak sanggup menjawab seluruh pertanyaan yang beredar. Pertanyaan-pertanyaan liar selalu bermunculan baik melalui komentar ataupun email. Salah satu yang bikin ribet adalah masalah struktur data, karena Matlab memiliki struktur data yang agak banyak. Banyaknya struktur data mungkin dikarenakan kemudahan-kemudahan yang matlab berikan melebihi bahasa induknya yaitu c++ dan fortran.

Beberapa kata kunci yang melibatkan struktur data di matlab dan dapat diakses di fasilitas help antara lain: num2str, cellstr, num2cell, dan sebagainya. Untuk mengetahui tata caranya secara cepat dengan cara mengetik di command window, misalnya: >>help num2str.

Yang menarik di sini, kita dapat mengetahui pula fungsi-fungsi yang berhubungan dengannya lewat informasi “See also”. Untuk mengetahui secara detail dalam bentuk GUI yang rapi dapat mengganti help dengan doc sebelum kata fungsi yang ingin kita ketahui lebih lanjut. Atau menekan tulisan doc num2str.

Untuk situs resmi matlab, sepertinya formatnya tidak jauh berbeda dengan help, yang memaksa kita untuk membaca luas yang terkadang jadi lupa dengan masalah utamanya. Sepertinya andalan utama untuk saat ini adalah searching di internet dengan search engine tercanggih di dunia, google (www.google.com). Untuk bahasa pemrograman, biasanya google mengarahkan ke situs resmi dan komunitas programming, seperti misalnya stackoverflow (www.stackoverflow.com). Perhatikan jawaban di bawahnya oleh para senior, misalnya pertanyaan untuk kasus saya di muka berikut ini:

Terkadang kita tidak mengenal fungsi-fungsi tertentu, karena memang jumlahnya sangat banyak dan tidak mungkin dihapal semuanya. Nah, di sini karena yang ikut terlibat adalah programmer-programmer dengan latar belakang yang beragam, bagi programmer tertentu mungkin banyak memakai fungsi tertentu yang khas di bidangnya yang bagi orang di bidang lain masih dianggap asing. Contoh di atas adalah fungsi setfield yang masih asing bagi pemula atau yang menggunakan matlab untuk komputasi yang tidak berhubungan dengan database. Ikuti di command window saran di atas, dan berhasil. Tentu saja andalan utama kita adalah help yang resmi dari Matlab. Berikut ini trik untuk mengupdate nilai field dari data jenis struct.

Misalkan kita punya data landtype:

  • landtype =
  • 4134884 7681103
  • 9275435 3020821
  • 2063774 5498421
  • 5850328 1631791
  • 5932021 1324960
  • 4557209 2641519
  • 1531668 5462547
  • 2804685 2757848
  • 7250245 6744421
    • ……….

Akan dimasukan ke variabel struktur “data” untuk variabel X dan Y di dalam data tersebut.

  • data =
  • 17×1 struct array with fields:
  • Geometry
  • X
  • Y
  • ID

Dengan mengetikan instruksi ini, fields X dan Y akan berisi landtype.

  • for i=1:17
  • data(i).X=landtype(i,1)
  • data(i).Y=landtype(i,2)
  • end

Kita uji, misalnya untuk data pertama.

  • >> [data(1).X data(1).Y]
  • ans =
  • 4134884 7681103

Bernilai sama dengan landtype pada data di atas yang dicetak tebal. Berikutnya akan kita ekspor hasilnya menjadi shapefile agar bisa dibuka di arcview / arcgis.

>> shapewrite(data,’result’)

Doctoral-Thessis Proposal

Entah sudah berapa kali saya membuat proposal, baik saat studi lanjut ataupun saat mengajukan dana hibah penelitian. Alhamdulillah, seluruh proposal yg saya ajukan, termasuk proposal disertasi, diterima. Kalaupun tidak itu karena masalah administrasi seperti tidak boleh menerima dana hibah lebih dari satu dalam tahun yang sama dan sebagainya. Berbeda dengan proposal-proposal sebelumnya, proposal disertasi merupakan proposal terberat yang pernah saya buat karena membutuhkan ilmu-ilmu yang telah saya pelajari sebelumnya. Selain itu, mencari temuan baru, walaupun hanya secuil ternyata membutuhkan usaha yang besar dari mempelajari riset-riset terkini hingga menganalisa bahwa temuan yang akan kita teliti memang bisa dikerjakan dalam range waktu yang sudah ditentukan.

Memang tidak ada salahnya jujur terhadap diri sendiri, sampai di mana kemampuan kita. Setelah mencoba nekat mengambil jurusan ilmu computer, saya nyerah juga akhirnya. Ketika saya pertama kali kuliah di jurusan computer science, kira2 dua tahun yang lalu, ada pertemuan mahasiswa-mahasiswa Indonesia di gedung Remote Sensing and Geographic Information Systems (RS-GIS) dan ketika melewati lorong-lorongnya, entah mengapa di hati saya berdesir suatu kekaguman terhadap bidang itu ketika melihat foto-foto yang dipajang di dinding lorong itu. Dengan blackberry, saya foto-foto di situ. Foto-foto tersebut masih tersimpan dan saya anggap angin lalu. Dan saya terkejut ketika beberapa waktu yang lalu membuka-buka file lama berisi foto-foto backup blackberry saya, tampak foto “iseng” tersebut yang seolah-olah mengingatkan saya bahwa saya dulu “pernah” terketuk hatinya dengan bidang GIS yang saat ini menjadi bidang disertasi saya. Lebih “ganas”nya lagi, saya harus membahas juga aspek environment/lingkungan seperti yang pernah saya foto juga. “There is no accident”, kata si guru kura2 dalam film kungfu panda,  semua ada yang ngatur.

Kembali ke masalah salah jurusan. Untung saya hobi main catur, saya teringat tiap kali melakukan kesalahan, yang harus saya kerjakan adalah mengurangi dampak dari kesalahan yang telah saya buat itu. Demikian pula, ketika saya tidak sanggup melanjutkan jurusan berat tersebut, saya langsung beralih ke jurusan information management yang sedikit fleksibel. Seluruh kekuatan saya data, termasuk hibah penelitian yang saya peroleh tiga tahun berturut-turut (akan saya lanjutkan menjadi disertasi), walaupun sulit saya anggap kekuatan karena secara logika menghemat tiga tahun. Bedanya hanya cakupan ilmu yang harus diperketat dengan tambahan temuan-temuan baru (research gap).

Mata kuliah-mata kuliah pendukung saya ambil, dari GIS hingga Artificial Intelligent & Neuro-Fuzzy, karena akan saya kombinasikan keduanya menjadi domain riset saya. Yah, begitulah, namanya orang kepepet.

http://alumni.ugm.ac.id/simponi/?page=adir_prf&niu=103361

Mungkin kalau dipikir-pikir aneh juga seorang insinyur mesin, mengambil jenjang tertinggi bidang informatika. Banyak juga yang seperti itu kok, Rano Karno juga, insinyur mesin sekarang jadi plt walikota .. (itu kan insinyurnya di film he he .. 🙂 ).

Pareto Front Optimal

Belajar sesuatu terkadang lebih mudah dengan langsung mempraktekannya. Kata pepatah experience is the best teacher. Matlab menyediakan fasilitas help baik yang terselip di programmnya atau di situs resminya, www.mathworks.com.

Buka matlab, buat fungsi objective yang akan diminimisasi. File – New – Function, atau saya lebih suka langsung mengetik di command window nama M-file yang akan saya buat >>edit simple_multi. Tekan enter ketika Matlab mengkonfirmasi bahwa M-file yang dimaksud tidak ada dan apakah kita akan membuatnya.

Ada dua fungsi di dalam satu fungsi pada M-file di atas. Tugasnya adalah mencari nilai X yang membuat dua fungsi itu minimum. Tidak ditentukan di awal bobot antara fungsi 1 dan fungsi 2 karena kalau bobotnya sudah ditentukan tentu saja langsung bisa ketemu jawabannya. Bobot yang kita gunakan bobot standar yang jika dijumlahkan = 1, misalnya w1=0.3 dan w2=0.7. Ikuti saja instruksi dari www.mathworks.com untuk memperoleh nilai x beserta bobotnya.

  • F = simple_multi(t);
  • t = linspace(-0.5,1.5);
  • plot(t,F, ‘LineWidth’ ,2)
  • hold on
  • plot([0,0],[0,8], ‘g–‘ );
  • plot([1,1],[0,8], ‘g–‘ );
  • plot([0,1],[1,6], ‘k.’ , ‘MarkerSize’ ,15);
  • text(-0.25,1.5, ‘Minimum(f_1(x))’ )
  • text(.75,5.5, ‘Minimum(f_2(x))’ )
  • hold off
  • legend( ‘f_1(x)’ , ‘f_2(x)’ )
  • xlabel({‘x’ ; ‘Tradeoff region between the green lines’ })
  • edit pickindex
  • k = 1;
  • [min1,minfn1] = fminbnd(@(x)pickindex(x,k),-1,2);
  • k = 2;
  • [min2,minfn2] = fminbnd(@(x)pickindex(x,k),-1,2);
  • goal = [minfn1,minfn2];
  • nf = 2;
  • N = 50;
  • onen = 1/N;
  • x = zeros(N+1,1);
  • f = zeros(N+1,nf);
  • fun = @simple_multi;
  • x0 = 0.5;
  • for r = 0:N
  • t = onen*r; % 0 through 1
  • weight = [t,1-t];
  • [x(r+1,:),f(r+1,:)] = fgoalattain(fun,x0,goal,weight, …
  • [],[],[],[],[],[],[]);
  • End

Grafik pertama berisi grafik dua fungsi objective yang akan dioptimasi:

Kita harus mengkompromikan antara f1 dan f2 karena ketika f1 ke arah minimum, fungsi f2 naik nilainya. Pareto menggunakan prinsip nondominant dimana tidak boleh ada yg dominan antara f1 dan f2. Perhatikan grafik kedua dari instruksi di atas:

Grafik di atas adalah sebaran beberapa komposisi bobot w1 dan w2 terhadap kedua fungsi objective. Titik2 itu membentuk garis lengkungan yang menggambarkan nondominant. Titik terbaiknya dapat dilihat dari panduan di link ini, perhatikan gambarnya.

Mengetahui Id Scopus Beserta H-Index

Salah satu tri darma perguruan tinggi adalah penelitian selain pengajaran dan pengabdian kepada masyarakat (lanjutan tulisan yg lalu). Terkejut juga ketika membuka kembali laman penelitian dikti (www.simlitabmas.dikti.go.id) yang tiba-tiba saat login dosen muncul kolom isian id scopus beserta h-index yang dimiliki. Saya hanya menduga mungkin pemerintah mulai mengarahkan dosen menjadi peneliti setelah terpisahnya kemendikbud menjadi kementerian pendidikan dan kementerian ristek – pendidikan tinggi. Sebelumnya memang muncul di sosial media berita ranking ilmuwan-ilmuwan Indonesia yang terindex scopus, yang dapat dilihat di link berikut ini.

Tampak nama, institution, h-index, dan citations. Pertanyaannya adalah dari mana memperoleh informasi tersebut? Dikti memberikan kolom isian di simlitabmas bahkan tanpa memberi penjelasan bagaimana menemukannya. Di google ada beberapa situs yang menjelaskan dengan baik, tapi sayangnya itu dari negara tetangga malaysia di link ini. Berikut langkah untuk memperolehnya:

  • Langkah pertama untuk memperoleh nomor identitas di scopus adalah mempublikasi paper yang terindeks di scopus. Tidak harus menjadi peneliti utama, co-author bisa langsung mendapat nomor ID. Tidak ada cara lain. (kalo ada cara lain, kasih tahu ya ..)
  • Buka situs scopus (www.scopus.com), dan klik Author search, ketik nama belakang Anda (family name) dilanjutkan dengan menekan simbol kaca pembesar (search). Untuk institusi yang tidak berlangganan scopus, sepertinya hanya bisa melihat Author saja. Ketika muncul peringatan untuk mendaftar/register scopus, di bawah ada link berwarna biru dengan tulisan “author preview” yang bisa diklik dan dilanjutkan dengan searching lewat nama Author.

  • Tunggu beberapa saat, jika tidak muncul memang nama Anda tidak ada, segera membuat publikasi ilmiah yang terindeks di level internasional, misalnya scopus, thomson, google scholar, dll. Jika terindeks maka akan muncul nama anda di scopus, thomson, google scholar, dan indexer lainnya. Untuk saat ini sepertinya dikti masih memakai Scopus, mungkin indexer yg lain segera menyusul.

  • Setelah muncul beberapa nama, cari nama yang sesuai dengan afiliasi dan paper-paper yang telah dipublish. Nama di atas saya itu Prof. Eko Handayanto dari Malang (nomor 71 di list). Di sini saya memakai bendera Asian Institute of Technology (AIT) Thailand setelah sebelumnya Islam 45 university karena memang saya sedang belajar di sana, juga alasan-alasan lain yg tidak dapat saya jelaskan di sini. Setelah itu klik nama Anda di kolom paling kiri.

  • Di sana tampak nama, institusi (affiliation), Author ID, serta h-index. Jika ingin melihat grafik h-index, bisa dengan menekan view h-graph. Untuk perhitungan lebih detil dapat disearching di google, atau menunggu postingan saya berikutnya. Maaf ya Prof. E. Handayanto, ijin menampilkan nama Anda di sini ya, semoga bisa seperti Anda.

  • Setelah itu isi di kolom simlitabmas ID Author saya di scopus dengan skor index yang baru satu.

Update:  7 Mei 2015

Ternyata kalau tidak login scopus tidak bisa dijalankancara di atas ya. Ok kita coba tanpa login. masuk ke http://www.scopus.com kemudian klik Author Preview.

Jika saya masukkan nama saya, akan muncul tulisan-tulisan saya, dan karena saya penulis utama, nama saya bisa diklik untuk melihat h-indexnya.

scopus-rahmadya

Sementara, untuk co-author saya, misalnya Samsiana. Tampak nama samsiana tidak bisa diklik, kemungkinan besar h-index masih nol. untuk mengisi id scopus bisa melihat di bawah (saya pake mozilla) untuk mengetahui nomor id scopus berikut ini:

scopus-rahmadya