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.
Satu respons untuk “Menentukan Suatu Titik di Dalam atau di Luar Polygon”