Jika pada tulisan yang lalu untuk satu region dengan instruksi inpoly dapat diketahui apakah titik tersebut di dalam atau di luar region, ternyata mengalami error ketika region yang diambil dari shapefile lebih dari satu dengan dibatasi oleh beberapa koordinat kosong “NaN”.
Salah satu fungsi Matlab yang bisa mengatasi masalah ini adalah fungsi inpolygon. Fungsi ini berbeda dengan fungsi inpoly yang hanya satu region dan harus diunduh dulu karena tidak tersedia di Matlab. Pada fungsi bawaan Matlab, Inpolygon, region tidak dinyatakan dalam satu variabel melainkan menjadi dua sumbu yaitu sumbu x yang dinyatakan dengan xv dan sumbu y yang dinyatakan dengan yv, seperti dari sumber tulisan ini.
Jika polygon yang anda miliki di ekspor dalam format kolom (baris menyatakan point) maka harus di convert dengan fungsi transpose. Saya memiliki region jalan dan danau kota bekasi dengan format baris, maka saya harus konversi menjadi format kolom kemudian memisahkan menjadi dua (xv dan yv).
-
>> xv=transpose(y(:,1));
-
>> yv=transpose(y(:,2));
Dua kode di atas adalah membuat variabel x dan y dari region. Berikutnya kita akan mengecek apakah suatu titik, misalnya rumah sakit di kab bekasi apakah terletak di jalan, sungai atau danau? .. (pertanyaan yg aneh .. he he). Kita impor lokasi rumah sakit dulu:
-
>> data2=impor(‘xxxxxxx.shp’);
-
>> y2=transpose([data2.X;data2.Y]);
-
>> tes=transpose(y2);
-
>> inpolygon(tes(1,:),tes(2,:),xv,yv)
-
ans =
-
0 0 0 0 0 0 0 0 0 0 0 0
Variabel yang akan diuji ditranspose dan diberi nama tes, kemudian dicek dengan fungsi inpolygon. Hasilnya bener kan .. tidak ada rumah sakit yang berada di jalan, sungai atau danau. Kayak kurang kerjaan aja ya. Tapi itu berguna untuk program penataan ruang (pabrik, geografi, dll). Mengapa bangsa eropa maju, ya mungkin karena “They think everyting”. O iya, untuk melihat region di Matlab dengan toolbox “mapview“, masukan koordinatnya. Penggunaan secara detail dapat dilihat di tulisan sebelumnya.