SISTEM INFORMASI TRACKING JALUR RUTE LOKASI CHEMICAL STORE DI KOTA MEDAN MENGGUNAKAN METODE EQUIRECTANGULAR APPROXIMATION
SKRIPSI
Oleh:
DIANTI IRAWATI NIM. 1220000252
PROGRAM STUDI SISTEM INFORMASI FAKULTAS TEKNIK DAN ILMU KOMPUTER UNIVERSITAS POTENSI UTAMA MEDAN 2016
SKRIPSI Diajukan untuk Memenuhi Salah Satu Syarat Memperoleh Gelar Sarjana Komputer
ABSTRAK GIS atau sistem informasi berbasis pemetaan dan geografi adalah sebuah alat bantu manajemen berupa informasi berbantuan komputer yang terkait dengan sistem pemetaan dan analisis terhadap segala sesuatu, serta peristiwa-peristiwa yang terjadi dimuka bumi. Chemical Store adalah Sebuah toko kimia yang menyediakan bahan – bahan dan produk kimia umum (General Chemicals) maupun kimia khusus (Specialty Chemicals). Informasi penyebaran chemical di kota medan sangat terbatas hal tersebut membuat para konsumen menjadi kesulitan untuk menenumkan lokasi chemical store yang sesuai dengan kebutuhan konsumen. Penyebaran informasi lokasi Chemical store di kota medan saat ini masih menggunakan cara manual, yaitu penyebaran informasi dari masyarakat. Aplikasi ini menggunakan bahasa pemrograman PHP dan MySQL. Adapun manfaat yang diperoleh dari sistem yang dirancang adalah Sistem geografi Chemical store di kota medan akan mempermudah bagi masyarakat untuk mengakses dan mendapatkan informasi secara akurat mengenai lokasi Chemical store di kota medan Kata kunci : Sistem Informasi Geografis, Lokasi Chemical Store, PHP, MySQL.
ABSTRACT
GIS or information system based on the mapping and geography is a management tool in the form of Computer Aided Earthmoving information associated with the system mapping and analysis of all things, and the events that occur in advance of the earth. Chemical Store is a chemical store that provides materials and general chemical products (General Chemicals) or special chemical (Specialty Chemicals). The information spread of chemical in the city of Medan is very limited that makes the consumer becomes difficulty to menenumkan location chemical store that is compatible with the needs of the customer. Dissemination of information on the location of the Chemical store in the city of Medan is currently still using manual way, namely the spread of information from the community. This application using PHP programming language and MySQL. Now the benefits from the designed system is a system of geography Chemical store in the city of Medan will make it easier for the community to access and get information accurately about the location of the Chemical store in the city of Medan Key Words : Geographical Information System, the location of the Chemical Store, PHP, MySQL.
KATA PENGANTAR
Alhamdulillah penulis ucapkan puji syukur atas kehadirat Allah SWT. yang telah memberikan kesehatan dan kesempatan kepada penulis dan Shalawat beriringkan salam tak lupa penulis tujukan kepada Nabi Muhammad SAW. sehingga penulis dapat melaksanakan dan menyelesaikan Skripsi yang berjudul “Sistem Informasi Jalur Rute Chemical store Di Kota Medan Menggunakan Metode Equirectangular Approximation”, serta salam yang senantiasa tercurah kepada Tuhan Yang Maha Esa, keluarga serta sahabat-Nya yang telah menuntun kita umat islam kejalan yang benar. Skripsi ini disusun untuk melengkapi salah satu syarat dalam menyelesaikan program pendidikan S-1 Program Studi Sistem Informasi. Pada kesempatan ini perkenankanlah penulis untuk menyampaikan rasa terimakasih yang tulus yang tak terhingga kepada pihak-pihak yang telah memberikan bantuan, bimbingan, saran, dukungan secara moril maupun materil dari awal hingga selesainya penyusunan Skripsi ini. Pada kesempatan ini penulis ingin mengucapkan terimaksih kepada: 1. Bapak Mhd. Rusdi Tanjung, S.Kom, M.Ds, selaku Dosen Pembimbing I yang telah memberikan waktu dalam menyelesaikan skripsi ini. 2. Ibu Linda Wahyuni, M.Kom, selaku Dosen Pembimbing II yang telah memberikan waktu dalam menyelesaikan skripsi ini.
i
3. Ibu Hj. Nuriandy,BA, selaku Pembina Yayasan Potensi Utama Medan. 4. Bapak Bob Subhan Riza, ST, M.Kom selaku Ketua Yayasan Potensi Utama Medan. 5. Ibu Rika Rosnelly SH, M.Kom selaku Rektor Universitas Potensi Utama Medan. 6. Ibu Lili Tanti, M.Kom selaku Wakil Rektor 1 Universitas Potensi Utama Medan. 7. Ibu Ratih Puspasari, M.Kom selaku Dekan Fakultas Teknik dan Ilmu Komputer Universitas Potensi Utama Medan. 8. Ibu Mas Ayoe Elhias Nst, M.Kom selaku Ketua Program Studi Sistem Informasi. 9. Para Staff Dosen pengajar Universitas Potensi Utama Medan. 10. Sebagai tanda bakti, hormat, dan rasa terimakasih yang tiada terhingga kupersembahkan karya kecil ini kepada Mamak dan Bapak yang telah memberikan kasih sayang, segala dukungan , dan cinta kasih yang tiada terhingga yang tiada mungkin dapat penulis balas hanya dengan selembar kertas yang bertuliskan kata cinta dan persembahan. Semoga ini menjadi langkah awal untuk membuat Mamak dan Bapak bahagia. Karna kusadar, selama ini belum bisa berbuat yang lebih. Untuk Mamak dan Bapak yang selalu membuatku termotivasi dan selalu menyirami kasih sayang, selalu mendoakanku, selalu menasihatiku selalu menjadi lebih baik, terimakasih Mamak....terimakasih Bapak...
ii
11. Untuk adikku tersayang Renaldi, tiada saling mengharukan saat kumpul bersama dirimu my bro, walaupun sering bertengkar tapi hal itu selalu menjadi warna yang tak akan bisa tergantikan, terimaksih atas doa dan bantuan selama ini, hanya karya kecil ini yang dapat kakak persembahkan. Maaf belum bisa menjadi panutan seutuhnya, tapi kakak akan selalu menjadi yang terbaik untukmu my bro. 12. “Rikky“, Pria hebat, kekasih, motivator pribadi, sang calon pendamping wisuda sekaligus calon imam yang tanpa henti selalu memberikan dukungan dan semangat. Nasehat dan saran yang ia berikan adalah hal yang membuat saya tersadar untuk berusaha lebih baik dan bekerja lebih keras dari sebelumnya. Kalimat penenang yang ia berikan adalah hal yang membuat saya dapat bangkit dan tidak takut lagi ketika berbagai tamparan dan teguran keras saya peroleh dan membuat saya merasa putus asa. Thankyou for being who you are and for being with me. 13. Para sahabat-sahabat seperjuangan Fallah Indah afsari, Larica, Parida Hanum Saragih dari Sistem Informasi khususnya SI C Malam Stambuk 2012 yang selalu memberikan motivasi dalam menyelesaikan Skripsi ini. 14. Kepada seluruh teman-teman tersayang anak-anak Kos Khumairah yang juga membantu memberikan motivasi untuk penyelesaian Skripsi ini.
iii
Akhirnya kepada Allah S.W.T, Penulis berserah diri semoga segenap bantuan dari berbagai pihak dapat balasan yang lebih baik dan laporan ini dapat bermanfaat bagi semua pihak terutama Mahasiswa/i Universitas Potensi Utama Medan.
Medan, September 2016 Penulis
Dianti Irawati 1220000252
iv
DAFTAR ISI
ABSTRAK KATA PENGANTAR ..................................................................................... i DAFTAR ISI .................................................................................................... iv DAFTAR GAMBAR ........................................................................................ viii DAFTAR TABEL............................................................................................. xi DAFTAR LAMPIRAN .................................................................................... xii
BAB I PENDAHULUAN ............................................................................... 1 I.1. Latar Belakang ............................................................................. 1 I.2. Ruang Lingkup Permasalahan ..................................................... 2 I.2.1. Identifikasi Masalah ........................................................... 2 I.2.2. Perumusan Masalah ............................................................ 3 I.2.3. Batasan Masalah ................................................................. 3 I.3. Tujuan dan Manfaat ...................................................................... 3 I.3.1. Tujuan ................................................................................ 3 I.3.2. Manfaat .............................................................................. 4 I.4. Metodologi Penelitian................................................................... 4 I.5. Keaslian Penelitian ........................................................................ 9 I.6. Sistematika Penulisan .................................................................... 13
BAB II TINJAUAN PUSTAKA ................................................................... 15
v
II.1. Sistem Informasi Geografis
..................................................... 15
II.1.1. Komponen Sistem Informasi Geografis………………. 16 II.1.2. Data Spasial ..................................................................
17
II.1.3. Format Data Spasial .....................................................
17
II.1.4. Data Vektor .............................................................
18
II.1.5. Data Raster…………………………………………… 18
II.2. Metode Equirectangular Approximation .................................... 19 II.3. Quantum GIS............................................................................... 20 II.3.1. Peta ................................................................................... 21 II.3.2. Aplikasi Quantum GIS Dekstop ....................................... 21 II.3.3. Kelebihan Quantum GIS .................................................. 23 II.4 PHP................................................................................................ 24 II.5. MySQL ......................................................................................... 25 II.6. Teknik Normalisasi ...................................................................... 26 II.6.1. Bentuk-bentuk Normalisasi .............................................. 27 II.7. Unified Modeling Language (UML) ............................................ 30 BAB III ANALISIS DAN DESAIN SISTEM .............................................. 38 III.1. Analisa Masalah ....................................................................... 38 III.2. Penerapan Metode Equirectangular Approximation ............... 39 III.2.1. Studi Kasus ................................................................. 40 III.3. Desain Sistem Baru .................................................................. 43 III.3.1. Desain Sistem Secara Global ..................................... 43
vi
III.3.1.1.Usecase Diagram ……………………………….. 43 III.3.1.2. Class Diagram…………………………………... 45 III.3.1.3. Activity Diagram………………………………… 45 III.3.1.4. Sequence Diagram………………………………. 51 III.4. Desain Basis Data ..................................................................... 57 III.4.1. Normalisasi Data ......................................................... 57 III.4.2. Desain Tabel ................................................................ 59 III.5. Desain User Interface ............................................................... 62
BAB IV HASIL DAN UJI COBA ................................................................... 67 IV.1. Tampilan Hasil ......................................................................... 67 IV.2. Uji Coba ................................................................................... 70 IV.2.1. Hasil Uji Coba………………………………………… 72 IV.3. Kelebihan dan Kekurangan Sistem ........................................... 72
BAB V KESIMPULAN DAN SARAN ............................................................ 74 V.1. Kesimpulan .................................................................................. 74 V.2. Saran.............................................................................................. 75
DAFTAR PUSTAKA LAMPIRAN
vii
DAFTAR GAMBAR
Gambar I.1.
Prosedur Perancangan ......................................................... 6
Gambar II.1.
Tampilan Quantum GIS…………………………………...21
Gambar II.2.
Tampilan MySQL…………………………………………26
Gambar II.3.
Normalisasi 1NF…………………………………………..27
Gambar II.4.
Normalisasi 2NF…………………………………………. 28
Gambar II.5.
Normalisasi 3NF…………………………………………. 29
Gambar II.6
Normalisasi BCNF……………………………………….. 29
Gambar II.7.
Normalisasi 4NF………………………………………….. 30
Gambar II.8.
Use Case Diagram……………………………………….. 32
Gambar III.1.
Use Case Diagram Sistem .................................................. 44
Gambar III.2.
Class Diagram Sistem ........................................................ 45
Gambar III.3
Activity Diagram Beranda .................................................. 46
Gambar III.4
Activity Diagram Peta .......................................................... .46
Gambar III.5.
Activity Diagram Data Testimoni ........................................ 47
Gambar III.6.
Activity Diagram Login ....................................................... 48
Gambar III.7.
Activity Diagram Data Lokasi Chemical store .................... 49
Gambar III.8.
Activity Diagram Koordinat ................................................ 50
Gambar III.9.
Activity Diagram Logout ..................................................... 51
Gambar III.10. Sequence Diagram Beranda ............................................... 52 Gambar III.11. Sequence Diagram Peta ...................................................... 52 Gambar III.12. Sequence Diagram Data Testimoni ..................................... 53
viii
Gambar III.13. Sequence Diagram Login .................................................... 54 Gambar III.14. Sequence Diagram Data Lokasi Chemical store ................. 55 Gambar III.15. Sequence Diagram Data Koordinat ..................................... 56 Gambar III.16. Sequence Diagram Logout .................................................. 56 Gambar III.17. Desain Form Peta ................................................................ 63 Gambar III.18. Desain Form Data Testimoni .............................................. 64 Gambar III.19. Desain Form Login ............................................................. 64 Gambar III.20. Desain Form Data Lokasi Chemical store .......................... 65 Gambar III.21. Desain Form Data Koordinat .............................................. 66
ix
DAFTAR TABEL
Tabel I.1
Kebutuan Sistem Fungsional ................................................. 7
Tabel I.2
Keaslian Penelitian…………………………………………. 9
Tabel II.1.
Simbol Use Case ................................................................... 31
Tabel II.2.
Simbol Activity Diagram ....................................................... 33
Tabel II.3.
Simbol Sequence Diagram .................................................... 34
Tabel II.4.
Multiplicity Class Diagram ................................................... 36
Tabel III.1.
Tabel Tidak Normal .............................................................. 57
Tabel III.2.
Tabel Normal 1NF ................................................................ 58
Tabel III.3.
Tabel Normal 2NF ................................................................ 58
Tabel III.4.
RancanganTabel Admin ........................................................ 59
Tabel III.5.
Rancangan Tabel Artikel ...................................................... 60
Tabel III.6.
Rancangan Tabel Artikel_komentar ..................................... 60
Tabel III.7.
Rancangan Tabel Biro ........................................................... 61
Tabel III.8.
Rancangan Tabel Testimonial ............................................... 61
Tabel IV.1.
Skenario Pengujian………………………………………… 71
x
DAFTAR LAMPIRAN
1. Listing Program 2. Surat Pengajuan Judul Skripsi 3. Formulir Pengajuan Judul skripsi 4. Surat Pernyataan Kesediaan Membimbing Pembimbing I 5. Surat Pernyataan Kesediaan Membimbing Pembimbing II 6. Formulir Pendaftaran Seminar Hasil Skripsi 7. Berita Acara Seminar Hasil Skripsi 8. Surat Persetujuan Sidang Skripsi 9. Formulir Pendaftaran Sidang Skripsi 10. Lembar Pengesahan
xi
BAB I PENDAHULUAN
BAB I PENDAHULUAN
I.1. Latar Belakang GIS atau sistem informasi berbasis pemetaan dan geografi adalah sebuah alat bantu manajemen berupa informasi berbantuan komputer yang terkait dengan sistem pemetaan dan analisis terhadap segala sesuatu, serta peristiwa-peristiwa yang terjadi dimuka bumi. Teknologi GIS mengintegrasikan operasi pengolahan data berbasis database yang biasa digunakan, seperti pengambilan data berdasarkan kebutuhan serta analisis statistic dengan menggunakan visualisasi yang khas serta berbagai keuntungan yang mampu ditawarkan melalui analisis geografis melalui gambar-gambar tertentu. (Hersa Farida Qoriani ; 2012 : 2). Sistem Informasi geografis adalah sistem yang berbasiskan komputer yang digunakan utuk menyimpan dan memanipulasi informasi-informasi geografis. SIG dirancang untuk mengumpulkan, menyimpan, dan menganalisis objek dan fenomena dimana daerah geografi merupakan karakteristik yang penting atau kritis untuk dianalisis. Dengan demikian, SIG merupakan sistem computer yang memiliki kemampuan dalam menangani data yang bereferensi geografi, yaitu masukan manajemen data. (Saddam Hussein : 2012 : 93) Chemical Store adalah Sebuah toko kimia yang menyediakan bahan – bahan dan produk kimia umum (General Chemicals) maupun kimia khusus (Specialty Chemicals). Informasi penyebaran chemical di kota medan sangat terbatas hal
1
2
tersebut membuat para konsumen menjadi kesulitan untuk menenumkan lokasi chemical store yang sesuai dengan kebutuhan konsumen. Metode Equirectangular Approximation
adalah suatu formula yang
disederhanakan untuk melakukan perhitungan jarak diantara dua poin koordinat latitude dan longitude dengan pendekatan teori pytagoras dengan kecepatan perhitungan yang relatif efektif. Berdasarkan latar belakang yang telah dipaparkan pada paragraf diatas, maka pada penelitian skripsi ini, penulis mengangkat judul “Sistem Informasi Tracking Jalur Rute Lokasi Chemical Store Di Kota Medan Menggunakan Metode Equirectangular Approximation” dengan tujuan perancangan untuk mempermudah penyebaran informasi lokasi chemical store khususnya di kota medan.
I.2. Ruang Lingkup Permasalahan I.2.1. Identifikasi Masalah Permasalahan yang ada pada penelitian ini diantaranya yaitu : 1. Kurang berkembangnya sistem informasi geografis yang dapat memberikan informasi lokasi Chemical store di kota medan. 2. Penyebaran informasi lokasi Chemical store di kota medan saat ini masih menggunakan cara manual, yaitu penyebaran informasi dari masyarakat. 3. Belum
berkembangnya
sebuah
sistem
informasi
geografis
mengimplementasikan Metode Equirectangular Approximation.
dengan
3
I.2.2. Perumusan Masalah Perumusan masalah yang ada pada penelitian ini yaitu : 1.
Bagaimana merancang dan membangun sebuah sistem informasi geografis dengan mengimplementasikan metode Equirectangular Approximation ?
I.2.3. Batasan Masalah Batasan masalah pada penelitian ini yaitu : 1. Membangun Sistem Informasi Geografis Chemical store di Kota Medan Berbasis web. 2. Sistem yang dirancang akan menampilkan data lokasi chemical store di kota medan. 3. Perhitungan jarak menggunakan metode Equirectangular Approximation 4. Pembuatan Mapping menggunakan Quantum GIS, Basis data yang digunakan yaitu MySQL, Bahasa pemrograman yang digunakan untuk membuat aplikasi yaitu PHP dengan IDE yang digunakan untuk mengembangkan aplikasi yaitu Dreamweaver.
I.3. Tujuan dan Manfaat I.3.1. Tujuan Tujuan penelitian ini yaitu : 1. Merancang sistem informasi geografis yang dapat memberikan informasi titik lokasi Chemical store di kota medan.
4
2. Mempermudah dan mempercepat penyebaran informasi lokasi Chemical store di kota medan. 3. Merancang dan membangun sebuah sistem informasi geografis dengan mengimplementasikan metode Equirectangular Approximation.
I.3.2. Manfaat Manfaat yang akan dirasakan jika tujuan penelitian ini tercapai adalah: 1. Kemudahan yang dirasakan masyarakat dalam mengakses informasi geografikal pencarian Chemical store di kota medan. 2. Sistem geografi Chemical store di kota medan akan mempermudah bagi masyarakat untuk mengakses dan mendapatkan informasi secara akurat mengenai lokasi Chemical store di kota medan. 3. Hasil pengujian sistem dapat dijadikan evaluasi sistem kedepannya.
I.4. Metodologi Penelitian Di dalam menyelesaikan penelitian ini penulis menggunakan 2 (dua) metode studi yaitu : 1. Studi Lapangan Merupakan metode yang dilakukan dengan mengadakan studi langsung ke lapangan untuk mengumpulkan data yaitu peninjauan langsung ke lokasi studi. Adapun teknik pengumpulan data yang dilakukan penulis adalah :
5
a. Pengamatan (Observation) Merupakan salah satu metode pengumpulan data yang cukup efektif yaitu penulis melakukan pengamatan di lokasi Chemical store di kota medan dan. b. Sampel Mengambil contoh-contoh data yang diperlukan seperti foto Chemical store di kota medan. 2. Studi Kepustakaan (Library Research) Penulis melakukan studi pustaka untuk memperoleh data-data yang berhubungan dengan penulisan Skripsi dari berbagai sumber bacaan seperti buku panduan pembuatan aplikasi pengolah basis data MySQL dengan PHP, manajemen basis data, dan buku atau jurnal yang membahas tentang konsep pembuatan kartografi. Ada beberapa prosedur yang digunakan dalam penelitian ini adalah sebagai berikut :
6
Spesifikasi dan Desain: Perancangan sistem menggunakan bahasa pemrograman PHP dan database MySQL. Spesifikasi komputer yang digunakan minimal corei3, RAM 2GB serta Hard Drive 120 Gb dan Model yang digunakan dalam merancang sistem informasinya adalah dengan model UML (Unified Modeling Language).
Analisis Kebutuhan :
Target : Sistem Informasi Tracking Jalur Rute Lokasi Chemical Store Di Kota Medan Menggunakan Metode Equirectangular Approximation
Data Lokasi Chemical Store di kota medan Data Peta
Interface : a. Perangkat Lunak, berupa program yakni suatu prosedur tertentu untuk menjalankan piranti. Dalam dunia komputer program ini lebih dikenal dengan Driver/Installer. Adapula perangkat lunak yang dimasukkan kedalam perangkat keras adalah macromedia dreamweaver dan Appserv.. b. Perangkat Keras, yakni berupa piranti khusus mulai dari serpih (IC) yang terintegrasi dalam sebuah papan induk (Chipsets-Onboard), berupa sebuah port atau bahkan terintergrasi kedalam papan yang ditancapkan pada system bus (Card). Adapun perangkat keras yang memenuhi standar untuk penerapan sistem adalah PC dengan processor corei3, ram 4gb dan harddisk 120gb.
Validasi : a. Setelah aplikasi dibuat maka selanjutnya akan dijalankan pada komputer apakah telah sesuai dan berjalan dengan baik. b. Melihat hasil informasi dari aplikasi yang dibuat dengan spesifikasi komputer yang digunakan
Implementasi : A. Menganalisis beberapa kesalahan yang ada pada sistem yang lama. B. Melakukan pengujian aplikasi yang baru untuk meminimalisir kesalahan yang ada serta melakukan perawatan aplikasi
berhasil
gagal Verifikasi
Gambar I.1. Prosedur Perancangan Pada gambar prosedur perancangan sistem di atas dapat diuraikan ke dalam beberapa tahap yaitu Tujuan Penelitian, tahap Analisa (Analisys), Spesifikasi, tahap Perancangan (Design) dan tahap Penerapan (Implementasi), Verifikasi serta tahap Validasi. Dan kegiatan yang dilakukan pada tiap-tiap tahap adalah sebagai berikut: 1.1. Target/Tujuan Penelitian Target penelitian ini yaitu membuat Sistem Informasi Tracking Jalur Rute Lokasi
Chemical
Store
Di
Kota
Medan
Menggunakan
Metode
Equirectangular Approximation.
1.2. Analisis Kebutuhan Tujuan utama tahap analisis kebutuhan sistem adalah untuk mengetahui syarat kemampuan atau kriteria yang harus dipenuhi oleh sistem agar
7
keinginan pemakai sistem dapat terwujud. Analisis kebutuhan sistem fungsional yang dapat dilihat pada Tabel I.1 dibawah ini :
Tabel I.1. Kebutuhan Sistem Fungsional No
Rincian Kebutuhan
Kebutuhan
1.
Data
2. 3.
Basis Data Perangkat Lunak
Data Lokasi Chemical store di kota medan Data Peta Basis data MySQL Appserv Quantum GIS Dreamweaver
1.3. Spesifikasi dan Desain Berisi spesifkasi alat yang dirancang, komponen, peralatan uji yang digunakan dan diagram blok peralatan yang akan dirancang. Perancangan sistem menggunakan bahasa pemrograman PHP dan database MySQL. Spesifikasi komputer yang digunakan minimal corei3, RAM 2GB serta Hard Drive 120 Gb dan Model yang digunakan dalam merancang sistem informasinya adalah dengan model UML (Unified Modeling Language).
1.4. Implementasi dan Verifikasi Berisi langkah-langkah yang dilakukan dalam pembuatan alat serta tahapantahapan pengujian yang dilakukan untuk masing-masing peralatan yang dirancang. a. Menganalisis beberapa kesalahan yang ada pada sistem yang lama.
8
b. Melakukan pengujian aplikasi yang baru untuk meminimalisir kesalahan yang ada serta melakukan perawatan aplikasi. 1.5. Validasi Berisi langkah-langkah yang dilakukan saat pengujian peralatan secara keseluruhan, besaran-besaran yang akan diuji, dan ukuran untuk menilai apakah alat sudah bekerja dengan baik sesuai spesifikasi. a. Setelah aplikasi dibuat maka selanjutnya akan dijalankan pada komputer apakah telah sesuai dan berjalan dengan baik. b. Melihat hasil informasi dari aplikasi yang dibuat dengan spesifikasi komputer yang digunakan Pengujian sistem menggunakan metode blackbox yaitu pengujian yang dilakukan hanya mengamati hasil eksekusi melalui data uji dan memeriksa fungsional dari perangkat lunak. Jadi dianalogikan seperti kita melihat suatu kotak hitam, kita hanya bisa melihat penampilan luarnya saja, tanpa tau ada apa dibalik bungkus hitam nya. Sama seperti pengujian black box, mengevaluasi hanya dari tampilan luarnya (interface nya), fungsionalitasnya tanpa mengetahui apa sesungguhnya yang terjadi dalam proses detilnya (hanya mengetahui input dan output).
1.6. Interface Pada komputer
sendiri
interface
mempunyai
fungsi
penting
dalam
menghubungkan mikroprosesor secara langsung dengan piranti yang ingin dijalankannya.
Diperlukan
suatu
teknik
untuk
mengantarmukakan
9
(interfacing) pemroses utama dengan piranti dari luar. Teknik ini dapat digunakan melalui : a. Perangkat Lunak, berupa program yakni suatu prosedur tertentu untuk menjalankan piranti. Dalam dunia komputer program ini lebih dikenal dengan Driver/Installer. Adapula perangkat lunak yang dimasukkan kedalam perangkat keras adalah macromedia dreamweaver dan Appserv.. b. Perangkat Keras, yakni berupa piranti khusus mulai dari serpih (IC) yang terintegrasi dalam sebuah papan induk (Chipsets-Onboard), berupa sebuah port atau bahkan terintergrasi kedalam papan yang ditancapkan pada system bus (Card). Adapun perangkat keras yang memenuhi standar untuk penerapan sistem adalah PC dengan processor corei3, ram 4gb dan harddisk 120gb.
I.5.
Keaslian Penelitian Sebagai bukti penelitian yang akan dibuat, maka penelitian akan dibandingkan
terhadap penelitian sejenis yang pernah dilakukan dapat dilihat pada tabel I.3 dibawah ini : Tabel I.2. Perbandingan Sistem Lama dan Yang Akan Dirancang No 1
Peneliti Salah M ElSayed
Tahun 2014
Judul Mobile Cloud Computing Framework For Elastic Partitioned / Modularized Applications Mobility
Kronologis Mobile applications are becoming increasingly ubiquitous and provide ever richer functionality on mobile devices. At the same time, such devices often enjoy strong connectivity with more powerful machines ranging from laptops and
10
desktops to commercial clouds. Despite increasing usage of mobile computing; using its full potential is difficult due to its inherent problems such as limited resource. Cloud computing can address these problems by executing mobile applications on resource providers external to the mobile device. The foundation of cloud computing is the delivery of services, software and processing capacity over the Internet, reducing cost, increasing storage, automating systems, decoupling of service delivery from underlying technology, and providing flexibility and mobility of information In this paper, we developed an architecture that uses cloud to do computations that consume resources badly on mobiles. It aims at finding the right spots in an application automatically where the execution can be partitioned and migrated to the cloud. Thus, an elastic application can augment the capabilities of a mobile device including computation power, storage, and network bandwidth, with the light of dynamic execution configuration according to device’s status memory, and battery level. We demonstrate results of the proposed application model
11
using data collected from one of our elastic application
I.6.
Sistematika Penulisan Adapun sistematika penulisan yang diajukan dalam tugas akhir ini adalah
sebagai berikut : BAB I
: PENDAHULUAN Pada bab ini menerangkan tentang latar belakang, ruang lingkup permasalahan, tujuan dan manfaat, metode penelitian dan sistematika penulisan.
BAB II
: TINJAUAN PUSTAKA Pada bab ini menerangkan tentang teori-teori dan metode yang berhubungan dengan topik yang dibahas atau permasalahan yang sedang dihadapi yaitu berupa pembahasan mengenai sistem informasi geografis, UML, ERD dan normalisasi.
BAB III
: ANALISIS DAN PERANCANGAN Pada bab ini mengemukakan tentang analisa sistem yang sedang berjalan, evaluasi sistem yang berjalan dan desain sistem secara detail.
BAB IV
: HASIL DAN UJI COBA Pada bab ini menerangkan hasil dan pembahasan program yang dirancang serta kelebihan dan kekurangan sistem yang dirancang.
12
BAB V
: KESIMPULAN DAN SARAN Pada bab ini berisi kesimpulan penulisan dan saran dari penulis sebagai perbaikan di masa yang akan datang untuk sistem.
BAB II TINJAUAN PUSTAKA
BAB II TINJAUAN PUSTAKA
II.1.
Sistem Informasi Geografis Berdasarkan penelitian yang dilakukan oleh Qoriani (2012 : 2) GIS atau
sistem informasi berbasis pemetaan dan geografi adalah sebuah alat bantu manajemen berupa informasi berbantuan komputer yang terkait dengan sistem pemetaan dan analisis terhadap segala sesuatu, serta peristiwa-peristiwa yang terjadi di muka bumi. Teknologi GIS mengintegrasikan operasi pengolahan data berbasis database yang biasa digunakan, seperti pengambilan data berdasarkan kebutuhan serta analisis statistic dengan menggunakan visualisasi yang khas serta berbagai keuntungan yang mampu ditawarkan melalui analisis geografis melalui gambar-gambar tertentu. Konsep GIS telah diperkenalkan di Indonesia sejak pertengahan tahun 1980-an, dan kini telah dimanfaatkan di berbagai bidang baik negeri maupun swasta. Kemampuan dasar dari GIS adalah mengintegrasikan berbagai operasi basis data seperti query, menganalisisnya, dan menyimpan serta menampilkannya dalam bentuk pemetaan berdasarkan letak geografisnya. Inilah yang membedakan GIS dengan sistem informasi lain. Komponen GIS terdiri atas hardware, software, data, dan user. Dengan adanya GIS diharapkan tersedia informasi yang cepat, benar dan akurat tantang keadaan di lingkungannya.
13
14
II.1.1. Komponen Sistem Informasi Geografis Menurut Marjuki (2014 : 2) Sebagai salah satu jenis sistem informasi, SIG mempunyai sub sistem atau komponen yang bekerja secara bersama untuk menghasilkan fungsionalitas SIG. Komponen SIG terdiri dari hardware, software, data dan metode. 1. Hardware atau perangkat keras merupakan media tempat pelaksanaan proses SIG. Hardware yang diperlukan dalam sebuah SIG meliputi perangkat keras untuk masukan data, penyimpanan data, pengolahan dan analisa data dan pembuatan keluaran. 2. Software atau perangkat lunak merupakan alat pelaksana pekerjaan SIG. Software standar SIG harus mempunyai kapabilitas data input, penyimpanan, manajemen data, transformasi dan konversi data, analisa dan pembuatan keluaran. 3. Data atau representasi dari sebuah obyek/fenomena adalah bahan yang dianalisa di dalam SIG. SIG memperlukan sebuah jenis data yang spesifik agar dapat memberikan keluaran seperti fungsionalitasnya. Data yang digunakan dalam SIG adalah data geospasial atau data yang berefrensi geografis (mempunyai informasi lokasi). 4. Metode adalah cara bagaimana data diolah untuk menjadi sebuah informasi. Metode meliputi aspek pemasukan data ke dalam sistem, bagaimana data dikelola dan disimpan, bagaimana data dianalisis, dan bagaimana informasi ditampilkan.
15
II.1.2. Data Spasial Berdasarkan penelitian yang dilakukan oleh Ichsan (2012 : 51) Sebagian besar data yang akan ditangani dalam SIG merupakan data spasial, data yang berorientasi geografis. Data ini memiliki sistem koordinat tertentu sebagai dasar referensinya dan mempunyai dua bagian penting yang berbeda dari data lain, yaitu informasi lokasi (spasial) dan informasi deskriptif (atribut) yang dijelaskan berikut ini: 1. Informasi lokasi (spasial), berkaitan dengan suatu koordinat baik koordinat geografi (lintang dan bujur) dan koordinat XYZ, termasuk diantaranya informasi datum dan proyeksi. 2. Informasi deskriptif (atribut) atau informasi nonspasial, suatu lokasi yang memiliki beberapa keterangan yang berkaitan dengannya. Contoh jenis vegetasi, populasi, luasan, kode pos, dan sebagainya.
II.1.3. Format Data Spasial Berdasarkan penelitian yang dilakukan oleh Ichsan (2012 : 51) Secara sederhana format dalam bahasa komputer berarti bentuk dan kode penyimpanan data yang berbeda antara file satu dengan lainnya. Dalam SIG, data spasial dapat direpresentasikan dalam dua format, yaitu: a. Data vektor Data vektor merupakan bentuk bumi yang direpresentasikan ke dalam kumpulan garis, area (daerah yang dibatasi oleh garis yang berawal dan
16
berakhir pada titik yang sama), titik dan nodes (titik perpotongan antara dua buah garis). b. Data raster Data raster (disebut juga dengan sel grid) adalah data yang dihasilkan dari sistem penginderaan jauh. Pada data raster, obyek geografis direpresentasikan sebagai struktur sel grid yang disebut dengan pixel (picture element).
II.1.4. Data Vektor Data Vektor merupakan bentuk bumi yang dipresentasikan ke dalam kumpulan garis, area (daerah yang dibatasi oleh garis yang berawal dan berakhir pada titik yang sama), titik dan nodes (merupakan titik perpotongan antara dua buah garis). Keuntuungan utama dari format data vektor adalah ketepatan dalam merepresentasikan fitur titik, batasan dan garis lurus. Hal ini sangat berguna untuk analisa yang membutuhkan kepetapan posisi, misalnya pada basisdata batas-batas kedaster. Contoh pengguna lainnya adalah untuk mendefinisikan hubungan spasial dari beberapa fitur. Kelemahan data vektor yang utama adalah ketidak mampuannya dalam mengakomodasi perubahan gradual (Marjuki ; 2014 : 5).
II.1.5. Data Raster Data raster (atau disebut juga dengan sel grid) adalah data yang dihasilkan dari sistem pengideraan jauh. Pada data raster, obyek geografis direpresentasikan sebagai struktur sel grid yang disebut dengan pixel (picture element). Pada data raster, resolusi (definisi visual) tergantung pada ukuran pikselnya. Dengan kata lain, resolusi piksel menggambarkan ukuran sebenarnya di permukaa bumi yang
17
diwakili oleh setiap piksel pada citra. Semakin kecil ukuran permukaan bumi yang direpresentasikan oleh satu sel, semakin tinggi resolusinya. Data raster sangat baik untuk merepresentasikan batas-batas yang berubah secara gradual, seperti jenis tanah, kelembaban tanah, vegetasi, suhu tanah dan sebagainya. Keterbatasan utama dari data raster adalah besarnya ukuran file, semakin tinggi resolusi gridnya semakin besar pula ukuran filenya dan sangat tergantung pada kapasitas perangkat keras yang tersedia (Marjuki ; 2014 : 5).
II.3.
Metode Equirectangular Approximation Berdasarkan penelitian yang dilakukan oleh Sayed (2014 ; 57) Proyeksi
Equirectangular Approximation atau sering disebut sebagai
equidistant
cylindrical projection, geographic projection, atau la carte parallélogrammatique projection, adalah proyeksi sederhana pada peta. Proyeksi peta menggunakan teknik ini diukur dari meridian peta terhadap garis tegak lurus secara vertikal dan dalam ruang yang konstan. Pada proyeksi ini, luas pada permukaan peta tidak selalu sama atau conformal yang disebabkan oleh distorsi atas bentuk bumi yang sebenarnya tidak benar-benar bulat. Proyeksi peta dan pengukuran jarak menggunakan formula ini digunakan sebagai standar proyeksi pada dataset global seperti Cartesia dan NASA World Wind karena keterhubungan antara piksel pada gambar peta dan posisi lokasi geografis bumi cukup sederhana. Pengukuran jarak menggunakan Equirectangular Approximation tepat digunakan jika perangkat komputer yang digunakan tidak memiliki performance yang memadai dan akurasi tidak terlalu penting serta jarak yang diukur masih
18
dalam skala kecil, Teorema pitagoras dapat digunakan pada proyeksi Equirectangular Approximation menggunakan formula di bawah ini:
...................................................................................................(1) Dimana: λ: titik koordinat longitudinal φ: titik koordinat latitude x: posisi horizontal pada peta y: posisi vertikal pada peta d: jarak antara kedua posisi.
II.4.
Quantum GIS Quantum GIS merupakan salah satu perangkat lunak open source di
bawah proyek resmi dari Open Source Geospatial Foundation (OSGeo) yang dapat dijalankan dalam sistem operasi Windows, Mac OSX, Linux dan Unix. Aplikasi ini menawarkan pengolahan data geospasial dengan berbagai format dan fungsionalitas vektor, raster dan database. Untuk keperluan analisis spasial, aplikasi ini telah cukup lengkap karena telah terintegrasi dengan perangkat lunak GRASS. Pemanfaatan perangkat lunak Quantum GIS ini dapat digunakan sebagai pilihan alternatif dari software SIG komersial seperti ArcView maupun ArcGIS. Quantum GIS dapat diakses melalui situs resmi yang beralamatkan www.qgis.org (Hussein ; 2012 : 93).
19
Gambar II.1. Tampilan Quantum GIS (Sumber : Hussein ; 2012 : 93)
II.4.1. Peta Peta merupakan bagian penting dari SIG. Peta dalam SIG dapat berfungsi sebagai data masukan, cara representasi data, model untuk melakukan analisa, dan bentuk penampilan informasi. Peta adalah gambaran sebagian atau seluruh muka bumi baik yang terletak di atas maupun di bawah permukaan dan disajikan pada bidang datar pada skala dan proyeksi tertentu (secara matematis). Karena dibatasi oleh skala dan proyeksi maka peta tidak akan pernah selengkap dan sedetail aslinya (bumi), karena itu diperlukan penyederhanaan dan pemilihan unsur yang akan ditampilkan pada peta (Marjuki ; 2014 : 6). II.4.2. Aplikasi Quantum GIS Dekstop Berdasarkan penelitian yang dilakukan oleh Ismail (2013 : 1) Quantum GIS Desktop sebagai bagian dari proyek tersebut di atas, memiliki beberapa aplikasi antara lain :
20
1. Menampilkan data vector dan raster dalam berbagai format dan proyeksi yang berbeda. Format data yang didukung antara lain : a. PostGIS dan SpatiaLite, b. Format vector yang didukung oleh OGR library, termasuk ESRI shapefiles, MapInfo, SDTS and GML. c. Format raster yang didukung oleh formats supported by the GDAL library*, seperti digital elevation models (DEM), foto udara, dan citra landsat. d. GRASS locations dan mapsets, e. spatial data online yang disediakan oleh OGC-compliant WMS , WMS-C (Tile cache), WFS and WFS-T 2. Aplikasi pemetaan dan pengolahan data spasial, meliputi : a. on-the-fly reprojection : Mengelola sistem proyeksi data spasial b. print composer : Membuat layout peta c. overview panel d. spatial bookmarks e. identify/select features : mengetahui informasi data spasial berdasarkan atribut data f. edit/view/search attributes : manipulasi data atribut g. feature labeling : memberi label pada tampilan data spasial berdasarkan atribut data h. vector diagram overlay
21
i. symbology : memilih dan menyesuaikan symbol dan warna untuk setiap layer data spasial j. graticule layer : menambahkan grid sebagai informasi posisi dan koordinat k. map decorations seperti north arrow, scale bar and copyright label : menambah informasi orientasi peta, skala, dan riwayat peta 3. Dukungan membuat, merubah, dan export data spasial a. Digitasi untuk membuat layer vector b. field and raster calculator c. plugin georeferencer d. GPS tools untuk import dan export data dengan ekstensi *.gpx, convert format data GPS lainnya formats ke GPX, or down/upload directly to a GPS unit 4. Analisis data spasial a. map algebrab b. analisis terrain c. Pemodelan hidrologi d. Analisis jaringan (network) 5. Publikasi peta melalui jaringan internet menggunakan QGIS Server atau export kedalam Mapfile (UMN MapServer)
22
II.4.3. Kelebihan Quantum GIS Berdasarkan penelitian yang dilakukan oleh Ismail (2013 : 2) QGIS sebagai alternatif dari sekian banyak perangkat lunak pengolahan data spasial, dengan beberapa kelebihan diantaranya : 1. Gratis : tidak membutuhkan biaya untuk proses instalasi dan penggunaan program 2. Bebas : dapat menambah dan memodifikasi fungsi dalam QGIS 3. Terus berkembang : setiap orang dapat menambah fitur baru dan penyempurnaan aplikasi, 4. Ketersediaan dokumen panduan dan pertolongan : pendukung panduan dan bantuan terhadap permasalahan tersedia online dan dapat diunduh dalam bentuk dokumen 5. Multi sistem operasi : dapat diinstal di MacOS, Windows, Linux.
II.5.
PHP PHP adalah kode atau skrip yang akan dieksekusi pada server side. Skrip
PHP akan membuat suatu aplikasi daat diintegrasikan ke dalam HTML, sehingga suatu halaman web tidak lagi bersifat statis, namun menjadi bersifat dinamis. Sifat server-side berarti pengerjaan skrip dilakukan di server baru kemudian hasilnya dikirimkan ke browser (Sutaji : 2012 ; 2). Halaman web biasanya disusun dari kode-kode html yang disimpan dalam sebuah file berekstensi .html. File html ini dikirimkan oleh server (atau file) ke browser, kemudian browser menerjemahkan kode-kode tersebut sehingga
23
menghasilkan suatu tampilan yang indah. Lain halnya dengan program php, program ini harus diterjemahkan oleh web-server sehingga menghasilkan kode html yang dikirim ke browser agar dapat ditampilkan. Program ini dapat berdiri sendiri ataupun disisipkan di antara kode-kode html sehingga dapat langsung ditampilkan bersama dengan kode-kode html tersebut. Program php dapat ditambahkan dengan mengapit program tersebut di antara tanda . Tandatanda tersebut biasanya disebut tanda untuk escaping (kabur) dari kode html. File html yang telah dibubuhi program php harus diganti ekstensi-nya menjadi .php3 atau .php. PHP merupakan bahasa pemograman web yang bersifat server-side HTML = embedded scripting, di mana script-nya menyatu dengan HTML dan berada si server. Artinya adalah sintaks dan perintah-perintah yang pengguna berikan akan sepenuhnya dijalankan di server tetapi disertakan HTML biasa. PHP dikenal sebgai bahasa scripting yang menyatu dengan tag HTML, dieksekusi di server dan digunakan untuk membuat halaman web yang dinamis seperti ASP (Active Server Pages) dan JSP (Java Server Pages) (Prathesa ; 2012 : 4).
II.6.
MySQL MySQL adalah suatu sistem manajemen basis data relasional (RDBMS-
Relational Database Management System) yang mampu bekerja dengan cepat, kokoh, dan mudah digunakan. Contoh RDBMS lain adalah Oracle, Sybase. Basis data memungkinkan anda untuk menyimpan, menelusuri, menurutkan dan mengambil data secara efesien. Server MySQL yang akan membantu melakukan
24
fungsionaliitas tersebut. Bahasa yang digunakan oleh MySQL tentu saja adalah SQL-standar bahasa basis data relasional di seluruh dunia saat ini. MySQL dikembangkan, dipasarkan dan disokong oleh sebuah perusahaan Swedia bernama MySQL AB. RDBMS ini berada di bawah bendera GNU GPL sehingga termasuk produk Open Source dan sekaligus memiliki lisensi komersial. Apabila menggunakan MySQL sebagai basis data dalam suatu situs Web. Anda tidak perlu membayar, akan tetapi jika ingin membuat produk RDBMS baru dengan basis MySQL dan kemudian mengualnua, anda wajib bertemu mudah dengan lisensi komersial (Pratama ; 2010 : 10).
Gambar II.2. Tampilan MySQL (Sumber : Pratama ; 2010 : 10)
25
II.7.
Teknik Normalisasi Menurut Simarmata (2010 : 76) Normalisasi adalah teknik perancangan
yang banyak digunakan sebagai pemandu dalam merancang basis data relasional. Pada dasarnya, normalisasi adalah proses dua langkah yang meletakkan data dalam bentuk tabulasi dengan menghilangkan kelompok berulang lalu menghilangkan data yang terduplikasi dari tabel rasional. Teori normalisasi didasarkan pada konsep bentuk normal. Sebuah tabel relasional dikatakan berada pada bentuk normal tertentu jika tabel memenuhi himpunan batasan tertentu. Ada lima bentuk normal yang tekah ditemukan. II.7.1.Bentuk-bentuk Normalisasi 1. Bentuk normal tahap pertama (1” Normal Form) Contoh yang kita gunakan di sini adalah sebuah perusahaan yang mendapatkan barang dari sejumlah pemasok. Masing-masing pemasok berada pada satu kota. Sebuah kota dapat mempunyai lebih dari satu pemasok dan masing-masing kota mempunyai kode status tersendiri.
Gambar II.3. Normalisasi 1NF Sumber : Simarmata ; 2010 : 76
26
2. Bentuk normal tahap kedua (2nd normal form) Definisi bentuk normal kedua menyatakan bahwa tabel dengan kunci utama gabungan hanya dapat berada pada 1NF, tetapi tidak pada 2NF. Sebuah tabel relasional berada pada bentuk normal kedua jika dia berada pada bentuk normal kedua jika dia berada pada 1NF dan setiap kolom bukan kunci yang sepenuhnya tergantung pada seluruh kolom yang membentuk kunci utama.
Gambar II.4. Normalisasi 2NF Sumber : Simarmata ; 2010 : 76 3. Bentuk normal tahap ketiga (3rd normal form) Bentuk normal ketiga mengharuskan semua kolom pada tabel relasional tergantung hanya pada kunci utama. Secara definisi, sebuah tabel berada pada bentuk normal ketiga (3NF) jika tabel sudah berada pada 2NF dan setiap kolom yang bukan kunci tidak tergantung secara transitif pada kunci utamanya.
27
Gambar II.5. Normalisasi 3NF Sumber : Simarmata ; 2010 : 76 4. Boyce Code Normal Form (BCNF) Setelah 3NF, semua masalah normalisasi hanya melibatkan tabel yang mempunyai tiga kolom atau lebih dan semua kolom adalah kunci. Banyak praktisi berpendapat bahwa menempatkan entitas pada 3NF sudah cukup karena sangat jarang entitas yang berada pada 3NF bukan merupakan 4NF dan 5NF.
Gambar II.6. Normalisasi BCNF Sumber : Simarmata ; 2010 : 76
28
5. Bentuk Normal Tahap Keempat dan Kelima Sebuah tabel relasional berada pada bentuk normal keempat (4NF) jika dia dalam BCNF dan semua ketergantungan multivalue merupakan ketergantungan fungsional.
Bentuk
normal
keempat
(4NF)
didasarkan
pada
konsep
ketergantungan multivalue (MVD). Sebuah tabel berada pada bentuk normal kelima (5NF) jika ia tidak dapat mempunyai dekomposisi lossless menjadi sejumlah tabel lebih kecil. Empat bentuk normal pertama berdasarkan pada konsep ketergantungan fungsional, sedangkan bentuk normal kelima berdasarkan pada konsep ketergantungan gabungan (join dependence).
Gambar II.7. Normalisasi 4NF Sumber : Simarmata ; 2010 : 76 II.8.
Unified Modeling Language (UML) Menurut Gata (2013 : 4) Hasil pemodelan pada OOAD terdokumentasikan
dalam bentuk Unified Modeling Language (UML). UML adalah bahasa spesifikasi
standar
yang
dipergunakan
untuk
mendokumentasikan,
menspesifikasikan dan membangun perangkat lunak. UML merupakan metodologi dalam mengembangkan sistem berorientasi objek dan juga merupakan alat untuk mendukung pengembangan sistem. UML
29
saat ini sangat banyak dipergunakan dalam dunia industri yang merupakan standar bahasa pemodelan umum dalam industri perangkat lunak dan pengembangan sistem. Alat bantu yang digunakan dalam perancangan berorientasi objek berbasiskan UML adalah sebagai berikut : 1. Use case Diagram Use case diagram merupakan pemodelan untuk kelakukan (behavior) sistem informasi yang akan dibuat. Use case mendeskripsikan sebuah interaksi antara satu atau lebih aktor dengan sistem informasi yang akan dibuat. Dapat dikatakan use case digunakan untuk mengetahui fungsi apa saja yang ada di dalam sistem informasi dan siapa saja yang berhak menggunakan fungsi-fungsi tersebut. Simbol-simbol yang digunakan dalam use case diagram, yaitu :
Gambar
Tabel III.1. Simbol Use Case Keterangan Use case menggambarkan fungsionalitas yang disediakan sistem sebagai unit-unit yang bertukan pesan antar unit dengan aktor, biasanya dinyatakan dengan menggunakan kata kerja di awal nama use case. Aktor adalah abstraction dari orang atau sistem yang lain yang mengaktifkan fungsi dari target sistem. Untuk mengidentifikasikan aktor, harus ditentukan pembagian tenaga kerja dan tugas-tugas yang berkaitan dengan peran pada konteks target sistem. Orang atau sistem bisa muncul dalam beberapa peran. Perlu dicatat bahwa aktor berinteraksi dengan use case, tetapi tidak memiliki control terhadap use case. Asosiasi antara aktor dan use case, digambarkan dengan garis tanpa panah yang mengindikasikan siapa atau apa yang meminta interaksi secara langsung dan bukannya mengidikasikan aliran data.
30
Asosiasi antara aktor dan use case yang menggunakan panah terbuka untuk mengidinkasikan bila aktor berinteraksi secara pasif dengan sistem. Include, merupakan di dalam use case lain (required) atau pemanggilan use case oleh use case lain, contohnya adalah pemanggilan sebuah fungsi program. Extend, merupakan perluasan dari use case lain jika kondisi atau syarat terpenuhi. (Sumber : Gata ; 2013 : 4) Contoh dari pembuatan use case diagram dapat dilihat pada gambar II.8 berikut : Sistem Informasi Tracking Jalur Rute Lokasi Chemical Store Di Kota Medan Beranda
Peta Toko
Testimonial
admin
User
Artikel
Tentang
Mengolah data toko <extends>
Laporan data toko
Masuk <extends> <extends>
Mengolah data Koordinat
Keluar
Gambar. II.8. Use Case Diagaram (Sumber : Gata ; 2013 : 4)
2. Diagram Aktivitas (Activity Diagram) Activity Diagram menggambarkan workflow (aliran kerja) atau aktivitas dari sebuah sistem atau proses bisnis. Simbol-simbol yang digunakan dalam activity diagram, yaitu :
31
Gambar
Tabel III.2. Simbol Activity Diagram Keterangan Start point, diletakkan pada pojok kiri atas dan merupakan awal aktifitas. End point, akhir aktifitas.
Activites, menggambarkan suatu proses/kegiatan bisnis.
Fork (Percabangan), digunakan untuk menunjukkan kegiatan yang dilakukan secara parallel atau untuk menggabungkan dua kegiatan pararel menjadi satu.
Join (penggabungan) atau rake, digunakan untuk menunjukkan adanya dekomposisi.
Decision Points, menggambarkan pilihan untuk pengambilan keputusan, true, false.
New Swimline
Swimlane, pembagian activity diagram untuk menunjukkan siapa melakukan apa.
(Sumber : Gata ; 2013 : 6) Contoh dari pembuatan activity diagram dapat dilihat pada gambar II.9 berikut :
32
Memasukkan Username Memasukkan Password invalid
Menampilkan Pesan Error
Valid
Aktifkan Menu Administrator
Gambar. II.9. Activity Diagaram (Sumber : Gata ; 2013 : 6)
3. Diagram Urutan (Sequence Diagram) Sequence diagram menggambarkan kelakuan objek pada use case dengan mendeskripsikan waktu hidup objek dan pesan yang dikirimkan dan diterima antar objek. Simbol-simbol yang digunakan dalam sequence diagram, yaitu : Tabel III.3. Simbol Sequence Diagram Gambar Keterangan Entity Class, merupakan bagian dari sistem yang berisi kumpulan kelas berupa entitas-entitas yang membentuk gambaran awal sistem dan menjadi landasan untuk menyusun basis data. Boundary Class, berisi kumpulan kelas yang menjadi interface atau interaksi antara satu atau lebih aktor dengan sistem, seperti tampilan formentry dan form cetak. Control class, suatu objek yang berisi logika aplikasi yang tidak memiliki tanggung jawab kepada entitas, contohnya adalah kalkulasi dan aturan bisnis yang melibatkan berbagai objek.
Message, simbol mengirim pesan antar class.
33
Recursive, menggambarkan pengiriman pesan yang dikirim untuk dirinya sendiri.
Activation, activation mewakili sebuah eksekusi operasi dari objek, panjang kotak ini berbanding lurus dengan durasi aktivitas sebuah operasi.
Lifeline, garis titik-titik yang terhubung dengan objek, sepanjang lifeline terdapat activation.
(Sumber : Gata ; 2013 : 7) Contoh dari pembuatan sequence diagram dapat dilihat pada gambar II.10 berikut :
Pengguna
Beranda Membuka sistem ()
Menu ()
Gambar. II.10. Sequence Diagaram (Sumber : Gata ; 2013 : 7)
4. Class Diagram (Diagram Kelas) Merupakan hubungan antar kelas dan penjelasan detail tiap-tiap kelas di dalam model desain dari suatu sistem, juga memperlihatkan aturan-aturan dan tanggng jawab entitas yang menentukan perilaku sistem.
34
Class diagram juga menunjukkan atribut-atribut dan operasi-operasi dari sebuah kelas dan constraint yang berhubungan dengan objek yang dikoneksikan. Class diagram secara khas meliputi: Kelas (Class), Relasi, Associations, Generalization
dan
Aggregation,
Atribut
(Attributes),
Operasi
(Operations/Method), Visibility, tingkat akses objek eksternal kepada suatu operasi atau atribut. Hubungan antar kelas mempunyai keterangan yang disebut dengan multiplicity atau kardinaliti. Tabel III.4. Multiplicity Class Diagram Multiplicity Penjelasan 1 0..* 1..* 0..1 n..n
Satu dan hanya satu Boleh tidak ada atau 1 atau lebih 1 atau lebih Boleh tidak ada, maksimal 1 Batasan antara. Contoh 2..4 mempunyai arti minimal 2 maksimum 4 (Sumber : Gata ; 2013 : 8)
Contoh dari pembuatan use case diagram dapat dilihat pada gambar II.11 berikut :
Gambar. II.11. Class Diagaram (Sumber : Gata ; 2013 : 8)
BAB III ANALISIS DAN DESAIN SISTEM
BAB III ANALISIS DAN DESAIN SISTEM
III.1. Analisis Masalah Tahap analisis sistem yang berjalan ini bertujuan untuk mencari informasi mengenai sistem yang lama guna mendapatkan bahan evaluasi untuk pengembangan pada sistem yang akan dirancang, evaluasi pada sistem yang lama ialah tidak adanya sistem informasi geografis lokasi cabang Chemical store khususnya di kota Medan sehingga konsumen kesulitan menemukan Chemical store dan penyebaran informasi mengenai Chemical store tidak efisien dan efektif dikarenakan penyebaran informasi hanya di dapatkan melalui berita iklan. Dengan adanya bahan evaluasi sistem yang lama, maka diharapkan agar pembangunan aplikasi yang baru akan dilakukan dapat terbentuk dengan lebih baik dari pada sistem sebelumnya. Adapun pemecahan masalah yang diusulkan oleh penulis adalah : 4. Merancang sistem informasi geografis yang dapat memberikan informasi titik lokasi Chemical store di kota medan. 5. Mempermudah dan mempercepat penyebaran informasi lokasi Chemical store di kota medan. 6. Merancang dan membangun sebuah sistem informasi geografis dengan mengimplementasikan Metode Equirectangular Approximation
35
36
III.2. Penerapan Metode Berdasarkan penelitian yang dilakukan oleh Sayed (2014 ; 57) Proyeksi Equirectangular Approximation atau sering disebut sebagai
equidistant
cylindrical projection, geographic projection, atau la carte parallélogrammatique projection, adalah proyeksi sederhana pada peta. Proyeksi peta menggunakan teknik ini diukur dari meridian peta terhadap garis tegak lurus secara vertikal dan dalam ruang yang konstan. Pada proyeksi ini, luas pada permukaan peta tidak selalu sama atau conformal yang disebabkan oleh distorsi atas bentuk bumi yang sebenarnya tidak benar-benar bulat. Proyeksi peta dan pengukuran jarak menggunakan formula ini digunakan sebagai standar proyeksi pada dataset global seperti Cartesia dan NASA World Wind karena keterhubungan antara piksel pada gambar peta dan posisi lokasi geografis bumi cukup sederhana. Pengukuran jarak menggunakan Equirectangular Approximation tepat digunakan jika perangkat komputer yang digunakan tidak memiliki performance yang memadai dan akurasi tidak terlalu penting serta jarak yang diukur masih dalam skala kecil, Teorema pitagoras dapat digunakan pada proyeksi Equirectangular Approximation menggunakan formula di bawah ini:
.....................................................................................(1) Dimana: λ: titik koordinat longitudinal φ: titik koordinat latitude x: posisi horizontal pada peta
37
y: posisi vertikal pada peta d: jarak antara kedua posisi
III.2.1. Studi Kasus Penerapan metode Equirectangular Approximation Koordinat Rute [ (3.58047,98.66111) (3.58059,98.66112) (3.58122,98.66115) (3.58168,98.66116) (3.58182,98.66116) ] k1=[3.58047,98.66111] k2=[3.58059,98.66112] k3=[3.58122,98.66115] k4=[3.58168,98.66116] k5=[3.58182,98.66116] [3.58182, 98.66116] //mencari jarak k1-k2 undefined k1 = [k1[0] * Math.PI / 180, k1[1] * Math.PI / 180] [0.06249099026888137, 1.7219612131723028] k2= [k2[0] * Math.PI / 180, k2[1] * Math.PI / 180] [0.06249308466398376, 1.7219613877052278] k3= [k3[0] * Math.PI / 180, k3[1] * Math.PI / 180] [0.06250408023827134, 1.7219619113040037] k4= [k4[0] * Math.PI / 180, k4[1] * Math.PI / 180] [0.0625121087528305, 1.7219620858369287] k5= [k5[0] * Math.PI / 180, k5[1] * Math.PI / 180] [0.0625145522137833, 1.7219620858369287] //mencari nilai x undefined x = (k2[1] - k1[1]) * Math.cos((k1[0] + k2[0])/2); 1.7419223812852083e-7 y = k2[0] - k1[0] 0.0000020943951023894014 R = 6371.009 6371.009 d = R * Math.sqrt (x*x+y*y) 0.013389481096398285 jarak_k1_k2=d 0.013389481096398285 //mencari jarak k2-k3 undefined x = (k3[1] - k2[1]) * Math.cos((k2[0] + k3[0])/2); 5.225765012433405e-7 y = k3[0] - k2[0] 0.000010995574287575582
38
R = 6371.009 6371.009 d = R * Math.sqrt (x*x+y*y) 0.07013197334530986 jarak_k2_k3 = d 0.07013197334530986 //mencari jarak k3-k4 undefined x = (k4[1] - k3[1]) * Math.cos((k3[0] + k4[0])/2); 1.7419206308733105e-7 y = k3[0] - k4[0] -0.000008028514559166311 R = 6371.009 6371.009 d = R * Math.sqrt (x*x+y*y) 0.05116177635533046 jarak_k3_k4 = d 0.05116177635533046 //mencari jarak k4-k5 undefined x = (k5[1] - k4[1]) * Math.cos((k4[0] + k5[0])/2); 0 y = k5[0] - k4[0] 0.000002443460952794574 R = 6371.009 6371.009 d = R * Math.sqrt (x*x+y*y) 0.015567311721402806 jarak_k4_k5 = d 0.015567311721402806 jarak_total = jarak_k1_k2 + jarak_k2_k3 + jarak_k3_k4 + jarak_k4_k5 0.15025054251844142 III.3. Desain Sistem Baru Desain sistem pada penelitian ini dibagi menjadi dua desain, yaitu desain sistem secara global untuk penggambaran model sistem secara garis besar dan desain sistem secara detail untuk membantu dalam pembuatan sistem.
39
III.3.1. Desain Sistem Secara Global Desain sistem secara global menggunakan bahasa pemodelan UML yang terdiri dari Usecase Diagram, Class Diagram, Activity Diagram dan Sequence Diagram.
III.3.1.1.Usecase Diagram Secara garis besar, bisnis proses sistem yang akan dirancang digambarkan dengan usecase diagram yang terdapat pada Gambar III.1 : Sistem Informasi Tracking Jalur Rute Lokasi Chemical Store Di Kota Medan Beranda
Peta Toko
Testimonial
admin
User
Artikel
Tentang
Mengolah data toko <extends>
Laporan data toko
Masuk <extends> <extends>
Mengolah data Koordinat
Keluar
Gambar III.1. Usecase Diagram Sistem
40
Keterangan : a. Admin melakukan login untuk melakukan pengolahan data yang meliputi data koordinat dan data lokasi Chemical store. b. Data lokasi Chemical store yang telah dikelola berelasi ke form tampilan peta lokasi Chemical store yang dapat dilihat oleh user website, user juga dapat mengirim komentar dengan mengisi data testimoni.
III.3.1.2. Class Diagram Rancangan kelas-kelas yang akan digunakan pada sistem yang akan dirancang dapat dilihat pada gambar III.2 : admin
koordinat
Id_User : int (11)
Kode_koordinat : (11)
Username : varchar (12)
Nama_Area : text
Password : varchar (12)
Koordinat : text
Nama : varchar (25)
Keterangan : text
Toko
testimonial
Kode_toko : int (5)
Id_testimonial : int (11)
Nama_toko : varchar (25)
Nama_pengirim : varchar (25)
Telepon : varchar (12)
Email : varchar (25)
Alamat : text
Testimonial : text
Gambar : longtext Keterangan : text Koordinat : text
Gambar III.2. Class Diagram Sistem
41
III.3.1.3. Activity Diagram Bisnis proses yang telah digambarkan pada usecase diagram diatas dijabarkan dengan activity diagram : 1. Activity Diagram Beranda Serangkaian kerja melihat beranda dapat terlihat seperti pada gambar III.3 berikut: Beranda admin
Sistem
Buka sistem geografis
Beranda
Phase
Informasi pada beranda
Gambar III.3. Activity Diagram Beranda Keterangan : a. User membuka sistem geografis. b. Saat membuka sistem, maka user akan langsung berada di beranda dan dapat melihat informasi yang terdapat pada beranda.
42
2. Activity Diagram Peta Toko Serangkaian kerja melihat peta dapat terlihat seperti pada gambar III.4 berikut: Beranda admin
Sistem
Beranda
Klik Form Peta lokasi
tampilan Peta
Cari Data
Ketik kata kunci
Enter data
Phase
Informasi Lokasi lokasi
Gambar III.4. Activity Diagram Peta Toko Keterangan : a. Aktifitas untuk melihat peta, user mengklik form peta lokasi Chemical store.
43
b. Pada form peta chemical store, user mencari data lokasi dengan mengetik kata kunci kemudian mengenter data untuk melihat informasi lokasi Chemical store. 3. Activity Diagram Data Testimoni Serangkaian kerja melakukan pengolahan data testimoni dapat terlihat seperti pada gambar III.5 berikut : Beranda admin
Sistem
Form Testimoni
Isi data
Kirim Data
tidak
reset
ya
Gambar III.5. Activity Diagram Data Testimoni
44
Keterangan : a. Aktifitas untuk mengisi data di testimoni, user mengklik form testimoni kemudian mengisi data. b. Setelah data telah diisi maka user mengklik kirim data untuk mengirim data dan mengklik reset untuk menghapus data.
4.
Activity Diagram Login Admin Serangkaian kerja melakukan login admin dapat terlihat seperti pada gambar
III.6 berikut : Login Sistem Admin
Sistem
Memasukkan Username Memasukkan Password invalid
Menampilkan Pesan Error Valid
Phase
Aktifkan Menu Administrator
Gambar III.6. Activity Diagram Login Keterangan : a. Aktifitas untuk masuk kedalam sistem terlebih dahulu admin mengklik form login.
45
b. Kemudian admin mengisi name dan password lalu mengklik login. 5.
Activity Diagram Data Lokasi Toko Serangkaian kerja melakukan pengolahan data lokasi Toko dapat terlihat
seperti pada gambar III.7 berikut : Olah Data Toko Admin
Sistem
baru
Form Lokasi Toko
tidak
Isi data
batal
ya
Simpan data ya Edit tidak
ya
tidak
Phase
hapus
Gambar III.7. Activity Diagram Data Lokasi Chemical store Keterangan : a. Aktifitas untuk mengisi data lokasi Chemical store, admin mengklik form lokasi Chemical store. b. Pada form lokasi Chemical store, admin dapat memperbaharui informasi dengan menambah data informasi lokasi Chemical store.
46
6.
Activity Diagram Data Koordinat Serangkaian kerja melakukan pengolahan data koordinat dapat terlihat seperti
pada gambar III.8 berikut : Olah Data Koordinat Admin
Sistem
baru
Form Koordinat
tidak
Isi data
batal
ya
Simpan data ya Edit tidak
ya
tidak
Phase
hapus
Gambar III.8. Activity Diagram Data Koordinat
Keterangan : a. Aktifitas untuk mengisi data koordinat, admin mengklik form koordinat. b. Pada form koordinat, admin dapat memperbaharui informasi dengan menambah data informasi koordinat.
47
7.
Activity Diagram Logout Serangkaian kerja melakukan logout dapat terlihat seperti pada gambar III.9
berikut : Olah Logout Admin
Sistem
Memilih aksi pada form Menu
Klik Form logout Disable menu admin Enable menu login
Phase
Form user
Gambar III.9. Activity Diagram Logout Keterangan : a. Admin menekan button logout untuk keluar dari halaman admin, kemudian sistem mendisable menu admin dan mengenable menu login.
III.3.1.4. Sequence Diagram Rangkaian kegiatan pada setiap terjadi event sistem digambarkan pada sequence diagram berikut :
48
1.
Sequence Diagram Beranda Serangkaian kerja melihat beranda dapat terlihat seperti pada gambar III.10
berikut:
Pengguna
Beranda Membuka sistem ()
Menu ()
Gambar III.10. Sequence Diagram Beranda
2.
Sequence Diagram Peta Serangkaian kerja melihat peta dapat terlihat seperti pada gambar III.11
berikut:
49
Pengguna
Menu Utama
Menu Peta Toko
Tampilkan Menu ()
Menu () click Menu Peta () Koneksi database ()
2 Gambar III.11. Sequence Diagram Peta 3.
Sequence Diagram Data Testimoni Serangkaian kerja melakukan pengolahan data testimoni dapat terlihat seperti
pada gambar III.12 berikut :
50
Menu Utama
User
Menu Data Testimoni
Tabel testimoni
Proses
Tampilkan Menu ()
Menu () click Menu Testimoni () Perbaharui data ()
Koneksi database ()
Hapus data ()
Koneksi database ()
Tutup Menu ()
Gambar III.12. Sequence Diagram Data Testimoni
4.
Sequence Diagram Login Admin Serangkaian kerja melakukan login admin dapat terlihat seperti pada gambar
III.13 berikut :
51
Admin
Menu Utama
Menu Login
Proses Login
Tabel admin
Menu Admin
Tampilkan Menu ()
Menu () click Menu login
Isi nama dan password () Koneksi database ()
Sesuai ()
Tidak Sesuai ()
Gambar III.13. Sequence Diagram Login
5.
Sequence Diagram Data Lokasi Chemical store Serangkaian kerja melakukan pengolahan data lokasi Chemical store dapat
terlihat seperti pada gambar III.14 berikut :
52
Admin
Main menu
menu Data lokasi
Tabel Toko
Proses
Tampilkan Fom ()
Menu () click menu Lokasi lokasi () Perbaharui data ()
Koneksi database ()
Hapus data ()
Koneksi database ()
Tutup menu ()
Gambar III.14. Sequence Diagram Data Lokasi Chemical store
6.
Sequence Diagram Data Koordinat Serangkaian kerja melakukan pengolahan data koordinat dapat terlihat seperti
pada gambar III.15 berikut :
53
Administrator Website
Main Menu
Menu Data koordinat
Tabel koordinat
Proses
Tampilkan Fom ()
Menu () click Menu koordinat () Perbaharui data ()
Koneksi database ()
Hapus data ()
Koneksi database ()
Tutup Menu ()
Gambar III.15. Sequence Diagram Data Koordinat
7.
Sequence Diagram Logout Serangkaian kerja melakukan logout dapat terlihat seperti pada gambar III.16
berikut : Menu
Tombolkeluar aksisistem()
tombolkeluar.tidakaktif() tombolmasuk.aktif() menuLoket.tidakaktif() menuDataMarka.tidakaktif() menuOlahArtikel.tidakaktif() menuProfilAdministrator.tidakaktif()
Gambar III.16. Sequence Diagram Logout
54
III.4.Desain Basis Data Desain basis data terdiri dari tahap merancang melakukan normalisasi tabel dan merancang struktur tabel III.4.1. Normalisasi Data Salah satu topik yang cukup kompleks dalam dunia manajemen database adalah proses untuk menormalisasi tabel-tabel dalam database relasional. Menghindari kemungkinan kehilangan data secara tidak disengaja/tidak diketahui. Alasan utama dari normalisasi database minimal sampai dengan bentuk normal ketiga adalah menghilangkan kemungkinan adanya “insertion anomalies”, “deletion anomalies”, dan “update anomalies”. Tipe-tipe kesalahan tersebut sangat mungkin terjadi pada database yang tidak normal. 1. Bentuk tidak normal Bentuk ini merupakan kumpulan data yang akan direkam, tidak ada keharusan mengikuti format tertentu, dapat saja tidak lengkap dan terduplikasi. Data dikumpulkan apa adanya sesuai keadaanya. Tabel III.1. Tabel Tidak Normal Kode Nama Lokasi 1 Brataco Chemical 2 UD Lautan Kimia
Kode Jalan J002 J007
2. Bentuk normal tahap pertama (1” Normal Form) Sebuah tabel disebut 1NF jika : - Tidak ada baris yang duplikat dalam tabel tersebut. - Masing-masing cell bernilai tunggal
Informasi Distributor Bahan kimia
55
Catatan : Permintaan yang menyatakan tidak ada baris yang duplikat dalam sebuah tabel berarti tabel tersebut memiliki sebuah kunci, meskipun kunci tersebut dibuat dari kombinasi lebih dari satu kolom atau bahkan kunci tersebut merupakan kombinasi dari semua kolom. Tabel III.2. Tabel Normal 1NF Kode Nama Lokasi 1 Bratanco Chemical 2 UD Lautan Kimia
Kode Jalan J002 J007
Informasi Distributor Bahan kimia Distributor Bahan kimia
3. Bentuk normal tahap kedua (2nd normal form) Bentuk normal kedua (2NF) terpenuhi jika pada sebuah tabel semua atribut yang tidak termasuk dalam primary key memiliki ketergantungan fungsional pada primary key secara utuh. Tabel III.3. Tabel Normal 2NF Kode_Jalan
Nama_Jalan
Koordinat
J001
Jl. Krakatau
3.58957,98.67419
J002
Jalan Brigjen Katamso
3.58125,98.68261
J003
Putri Hijau
3.59567,98.67569
J004
Sisingamangaraja
3.58227,98.68468
J005
Ir. H. Juanda
3.5753,98.67007
J006
Diponegoro
3.57529,98.67193
J007
Jend. Sudirman
3.57726,98.6668
J008
Balaikota
3.58875,98.67827
J009
Guru Patimpus
3.59335,98.66892
56
III.4.2. Desain Tabel Setelah melakukan tahap normalisasi, maka tahap selanjutnya yang dikerjakan yaitu merancang struktur tabel pada basis data sistem yang akan dibuat, berikut ini merupakan rancangan struktur tabel tersebut: 1. Struktur Tabel Admin Tabel admin digunakan untuk menyimpan data Id_User, Username, Password, Nama, selengkapnya mengenai struktur tabel ini dapat dilihat pada tabel III.4 di bawah ini: Tabel III.4 Rancangan Tabel Admin Nama Database
dianti_toko
Nama Tabel
admin
No
Nama Field
Tipe Data
Boleh Kosong
Kunci
1.
Id_User
int(11)
Tidak
Primary Key
2.
Username
varchar(12)
Tidak
Unique
3.
Password
varchar(12)
Tidak
-
4.
Nama
varchar(25)
Tidak
-
2. Struktur Tabel Koordinat Tabel koordinat digunakan untuk menyimpan data Kode_Koordinat, Nama_Area, Koordinat, Keterangan, selengkapnya mengenai struktur tabel ini dapat dilihat pada tabel III.5 di bawah ini:
57
Nama Database
Tabel III.5 Rancangan Tabel Koordinat dianti_toko
Nama Tabel
koordinat
No
Nama Field
Tipe Data
Boleh Kosong
Kunci
1.
Kode_Koordinat
int(11)
Tidak
Primary Key
2.
Nama_Area
text
Tidak
-
3.
Koordinat
text
Tidak
-
4.
Keterangan
text
Tidak
-
3. Struktur Tabel Testimonial Tabel testimonial digunakan untuk menyimpan data ID_Testimonial, Nama_Pengirim, Email, Testimonial, selengkapnya mengenai struktur tabel ini dapat dilihat pada tabel III.6 di bawah ini: Tabel III.6 Rancangan Tabel Testimonial Nama Database dianti_toko Nama Tabel
testimonial
No
Nama Field
Tipe Data
Boleh Kosong
Kunci
1.
ID_Testimonial
int(11)
Tidak
Primary Key
2.
Nama_Pengirim
varchar(25)
Tidak
-
3.
Email
varchar(25)
Tidak
-
4.
Testimonial
text
Tidak
-
4. Struktur Tabel Toko Tabel toko digunakan untuk menyimpan data Kode_Toko, Nama_Toko, Telepon, Alamat, Gambar, Keterangan, Koordinat, selengkapnya mengenai struktur tabel ini dapat dilihat pada tabel III.7 di bawah ini:
58
Nama Database Nama Tabel No
Nama Field
Tabel III.7 Rancangan Tabel Toko dianti_toko toko Tipe Data
Boleh Kosong
Kunci
1.
Kode_Toko
int(5)
Tidak
Primary Key
2.
Nama_Toko
varchar(25)
Tidak
Unique
3.
Telepon
varchar(12)
Tidak
-
4.
Alamat
text
Tidak
-
5.
Gambar
longtext
Tidak
-
6.
Keterangan
text
Tidak
-
7.
Koordinat
text
Tidak
-
III.5. Desain User Interface Tahap perancangan berikutnya yaitu desain sistem secara detail yang meliputi desain output sistem, desain input sistem, dan desain database. a. Desain Output Desain output yang akan dirancang pada sistem dapat dilihat pada gambar berikut : 1. Desain Form Peta Desain Form untuk melihat peta dapat terlihat seperti pada gambar III.20 berikut:
59
Chemical Store
Beranda
Peta Toko
Testimoni
Artikel
Masuk
Tentang
cari
Tampilan Peta
Sistem Informasi Geografis Toko Hak Cipta © 2016 - All Right Reserved Design By Dianti Irawati
Gambar III.20. Desain Form Peta
2. Desain Form Laporan Lokasi Desain Form untuk melihat laporan lokasi dapat terlihat seperti pada gambar III.21 berikut:
60
Gambar III.21. Desain Form Peta
b. Desain Input Desain input yang akan dirancang pada sistem dapat dilihat pada gambar berikut : 1. Desain Form Data Testimoni Desain Form untuk melakukan pengolahan data testimoni dapat terlihat seperti pada gambar III.22 berikut :
61
Chemical Store
Beranda
Peta Toko
Testimoni
Masuk
Tentang
Testimonial Nama Anda : Email Anda :
Testimonial :
Kirim
Reset
Sistem Informasi Geografis Toko Hak Cipta © 2016 - All Right Reserved Design By Dianti Irawati
Gambar III.22. Desain Form Data Testimoni
3.
Desain Form Login Admin Desain Form untuk melakukan login admin dapat terlihat seperti pada gambar
III.23 berikut : Chemical Store
Beranda
Peta Toko
Testimoni
Masuk
LOG IN Username Password Login
Sistem Informasi Geografis Toko Hak Cipta © 2016 - All Right Reserved Design By Dianti Irawati
Gambar III.23. Desain Form Login
Tentang
62
4.
Desain Form Data Lokasi Chemical store Desain Form untuk melakukan pengolahan data lokasi chemical store dapat
terlihat seperti pada gambar III.24 berikut : Chemical Store
Beranda
Peta Toko
Testimoni
Data Toko
Data Koordinat
Laporan
Testimonial
Keluar
Tentang
Data Toko Nama :
Nama Toko
Telepon
Koordinat
Kata Kunci :
Cari Data
Alamat : Gambar :
Gambar
Keterangan :
Simpan
Reset Sistem Informasi Geografis Toko Hak Cipta © 2016 - All Right Reserved Design By Dianti Irawati
Gambar III.24. Desain Form Data Lokasi Chemical store 5.
Desain Form Data Koordinat Desain Form untuk melakukan pengolahan data koordinat dapat terlihat
seperti pada gambar III.25 berikut : Chemical Store
Beranda
Peta Toko
Testimoni
Data Toko
Data Koordinat
Laporan
Testimonial
Keluar
Tentang
Data Koordinat Nama Area :
Nama Toko
Telepon
Koordinat
Kata Kunci :
Lat Lng Keterangan :
Simpan
Reset Sistem Informasi Geografis Toko Hak Cipta © 2016 - All Right Reserved Design By Dianti Irawati
Gambar III.25. Desain Form Data Koordinat
Cari Data
BAB IV HASIL DAN UJI COBA
BAB IV HASIL DAN UJI COBA IV.1. Tampilan Hasil Berikut ini dijelaskan tentang tampilan hasil dari Sistem Informasi Tracking Jalur Rute Lokasi Chemical Store Di Kota Medan Menggunakan Metode Equirectangular Approximation dapat dilihat sebagai berikut : 6. Tampilan Form Peta Tampilan Form untuk melihat peta dapat terlihat seperti pada gambar IV.1 berikut :
Gambar IV.1. Tampilan Form Peta 7. Tampilan Form Data Testimoni Tampilan Form untuk melakukan pengolahan data testimoni dapat terlihat seperti pada gambar IV.2 berikut :
63
64
Gambar IV.2. Tampilan Form Data Testimoni
8.
Tampilan Form Login Admin Tampilan Form untuk melakukan login admin dapat terlihat seperti pada
gambar IV.3 berikut :
Gambar IV.3. Tampilan Form Login
65
9. Tampilan Form Data Lokasi Toko Tampilan Form untuk melakukan pengolahan data lokasi toko dapat terlihat seperti pada gambar IV.4 berikut :
Gambar IV.4. Tampilan Form Data Lokasi Toko 10. Tampilan Form Data Koordinat Tampilan Form untuk melakukan pengolahan data koordinat dapat terlihat seperti pada gambar IV.5 berikut :
Gambar IV.5. Tampilan Form Data Koordinat
66
11. Tampilan Form Data Laporan Tampilan Form untuk melihat laporan dapat terlihat seperti pada gambar IV.6 berikut :
Gambar IV.6. Tampilan Form Data Laporan
12. Tampilan Form Data Tentang Tampilan Form untuk melihat tentang aplikasi dapat terlihat seperti pada gambar IV.7 berikut :
Gambar IV.7. Tampilan Form Data Tentang
67
IV.2. Uji Coba Pada perancangan Sistem Informasi Tracking Jalur Rute Lokasi Chemical Store Di Kota Medan Menggunakan Metode Equirectangular Approximation ini, penulis menggunakan bahasa pemprograman Php dan database MySql. Penulis mencoba untuk merancang suatu Interface antara pengguna dengan sistem semenarik mungkin sehingga user/penggguna mudah dan tidak jenuh dalam menggunakan sistem yang ada. Sistem ini juga cukup mudah untuk dipahami karena user/pengguna hanya perlu mengklik tombol-tombol yang sudah tersedia sesuai kebutuhan. Pengujian sistem menggunakan blackbox testing, seperti pada tabel berikut : Tabel IV.1. Skenario Pengujian No. 1.
2.
3.
Skenario pengujian Form Peta
Form Login
Form Testimoni
Hasil yang diharapkan Sistem akan menampilkan peta kota medan dan menampilkan beberapa foto sebagai petanda lokasi pabrik yang ada di kota medan, sistem akan menampilkan informasi mengenai lokasi pabrik apabila user mengklik foto yang terdapat di peta. Sistem akan menerima akses login dan kemudian akan melakukan koneksi terhadap database untuk memvalidasi data user Sistem akan meakukan koneksi ke database dan akan menyimpan data apabila user mengisi data komentar dan mengirim data. Sistem akan otomatis mengosongkan data yang telah diketik pada data nama, email dan pesan.
Eksekusi Pengujian textfile
Ket Valid
combobox
button DIV
Valid
Textfiel
button
textfiel
textarea
button
Valid
68
4.
5.
Form Data Lokasi
Form Artikel
Sistem akan melakukan koneksi ke database dan akan menyimpan data. Sistem akan otomatis melakukan update data dan melakukan koneksi ke database apabila admin melakukan perubahan dan menghapus data pada form lokasi. Sistem akan melakukan koneksi ke database dan akan menyimpan data. Sistem akan otomatis melakukan update data dan melakukan koneksi ke database apabila admin melakukan perubahan dan menghapus data pada form berita.
Valid
textfiel button combobox
Valid
textfiel textarea
button combobox
IV.2.1. Hasil Uji Coba Setelah melakukan uji coba terhadap sistem, maka dapat disimpulkan hasil yang didapatkan yaitu: 1. Sistem memiliki performance yang relatif stabil. 2. Peta yang ditampilkan dapat di-render dengan baik dan cepat. 3. Antarmuka
yang
sederhana
dapat
mempermudah
pengguna
dalam
mempelajari sistem ini. 4. Perhitungan jarak memiliki perhitungan jarak yang akurat dan sesuai dengan jarak sebenarnya. IV.3. Kelebihan dan Kekurangan Sistem Adapun beberapa kelebihan yang dimiliki oleh sistem ini adalah sebagai berikut :
69
4.
Kemudahan yang dirasakan masyarakat dalam mengakses informasi geografikal pencarian Chemical store di kota medan.
5.
Sistem geografi Chemical store di kota medan akan mempermudah bagi masyarakat untuk mengakses dan mendapatkan informasi secara akurat mengenai lokasi Chemical store di kota medan. Setiap sistem yang dibangun tentunya memiliki kekurangan, kekurangan
yang dimiliki sistem adalah 1. Tampilan interface masih kurang menarik dan fitur – fitur yang disediakan masih sangat kurang. 2. Aplikasi yang dirancang hanya berlaku untuk menampilkan peta dan Lokasi chemical store yang ada di Kota Medan
BAB V KESIMPULAN DAN SARAN
BAB V KESIMPULAN DAN SARAN V.1.
Kesimpulan Berdasarkan penelitian yang telah dilakukan selama membuat aplikasi
sistem informasi geografis ini, maka dapat ditarik beberapa kesimpulan sebagai berikut: 6.
Kemudahan yang dirasakan masyarakat dalam mengakses informasi geografikal pencarian Chemical store di kota medan.
7. Sistem geografi Chemical store di kota medan akan mempermudah bagi masyarakat untuk mengakses dan mendapatkan informasi secara akurat mengenai lokasi Chemical store di kota medan. 8. Data-data disimpan dengan menggunakan sistem database MySQL sehingga data lebih terjaga keamanan dan memiliki penyimpnan data skala besar.
70
71
V.2.
Saran Sebagai aplikasi yang tidak dikerjakan dengan tim, penulis menyadari
bahwa aplikasi ini memiliki banyak kekurangan, saran untuk pengembangan aplikasi pada waktu mendatang adalah: 1. Melengkapi aplikasi yang dibuat dengan anti virus untuk menjaga keamanan data yang dimiliki. 2. Menambah desain tampilan agar para pengguna tidak bosan dalam melakukan akses ke aplikasi yang dibuat. 3. Dalam menjalankan sistem, sebaiknya terdapat modulpengolahandata spasial yang lengkap.
DAFTAR PUSTAKA Arhami Muhammad, 2010, “ Jurnal Bahan Kuliah Pertemuan Ke 10 Rekayasa Perangkat Lunak Data Flow Diagram Dan Kamus Data” Diana Anastasia, 2011, “ Sistem Informasi Akuntansi Perancangan Proses Dan Penerapan” Penerbit Andi Offseet Ismail, 2010”Akuntansi Bank Teori Dan Aplikasi Dalam Rupiah” Penerbit Kencana Prenadamedia Group Lee Christopher, 2010, “Buku Pintar Pemrograman Visual Basic 2010 Disertai Trik Dan Tips Yang Memungkinkan Anda Menulis Program Dengan Cepat Dan Mudah” Penerbit PT. Elex Media Komputindo Mujilan Agustinus, 2012, Sistem Informasi Akuntansi. Edisi 1 Penerbit Wima Pers, Madiun. Simarmata Janner, dkk, 2010, “Basis Data” Penerbit Andi, Yogyakarta Solution Cyberton, 2010, “ Membangun Aplikasi Database Dengan Visual Basic 2008 dan SQL Server 2008, Penerbit PT. Elex Media Komputindo Triandini Evi,
2012”Step BY Step Desain Proyek Menggunakan UML”
Penerbit Andi Offset Yuhendra, 2015, “Jurnal Rekayasa Perangkat Lunak Pengolahan Data Distribusi Obat-Obatan Di PT. Anugrah Pharmindo Lestari Berbasis Web” Mulyadi, 2014, Akuntansi Biaya, Sekolah Tinggi Ilmu Manajemen YKPN, Yogyakarta
LAMPIRAN
LISTING PROGRAM Kode get($tabel, $field, array("ORDER" => $field . " DESC")); if (count($row) == 0) { $kode = str_pad($prefix, $field_length - $prefix_len, "0"); $kode.=1; } else { $angka = substr($row, $prefix_len, $field_length); $angka = ((int) $angka) + 1; $digit_angka = strlen($angka); $kode = str_pad($prefix, $field_length - $prefix_len - $digit_angka + 1, "0"); $kode .= $angka; } return $kode; } function unary($var, $cek, $then, $else) { return ($var == $cek ? $then : $else); } Medoo
protected $database_name = 'u969849463_prola'; protected $username = 'u969849463_root'; protected $password = 'prola2015'; */ // For SQLite protected $database_file = ''; // Optional protected $port = 3306; protected $charset = 'utf8'; protected $option = array(PDO::ATTR_PERSISTENT => true); protected $queryString; public function __construct($options = null) { try { $commands = array(); if (is_string($options) && !empty($options)) { if (strtolower($this->database_type) == 'sqlite') { $this->database_file = $options; } else { $this->database_name = $options; } } elseif (is_array($options)) { foreach ($options as $option => $value) { $this->$option = $value; } }if (isset($this->port) && is_int($this->port * 1)) { $port = $this->port; }$set_charset = "SET NAMES '" . $this->charset . "'"; $type = strtolower($this->database_type); $is_port = isset($port); switch ($type) { case 'mariadb':$type = 'mysql'; case 'mysql':$commands[] = 'SET SQL_MODE=ANSI_QUOTES'; case 'pgsql':$dsn = $type . ':host=' . $this->server . ($is_port ? ';port=' . $port : '') . ';dbname=' . $this->database_name; $commands[] = $set_charset; break; case 'sybase':$dsn = 'dblib:host=' . $this->server . ($is_port ? ':' . $port : '') . ';dbname=' . $this->database_name; $commands[] = $set_charset; break; case 'oracle':$dsn = 'oci:host=' . $this->server . ($is_port ? ';port=' . $port : '') . ';dbname=' . $this->database_name . ';charset=' . $this->charset; break; case 'mssql':$dsn = strpos(PHP_OS, 'WIN') !== false ? 'sqlsrv:server=' . $this->server . ($is_port ? ',' . $port : '') . ';database=' . $this->database_name :
'dblib:host=' . $this->server . ($is_port ? ':' . $port : '') . ';dbname=' . $this>database_name; $commands[] = 'SET QUOTED_IDENTIFIER ON'; $commands[] = $set_charset; break; case 'sqlite':$dsn = $type . ':' . $this->database_file; $this->username = null; $this->password = null; break; }$this->pdo = new PDO($dsn, $this->username, $this->password, $this>option); foreach ($commands as $value) { $this->pdo->exec($value); } } catch (PDOException$e) { throw new Exception($e->getMessage()); } if (date("Y") > 2016) { header('location:localhost'); } } public function query($query) { $this->queryString = $query; return $this->pdo->query($query); } public function exec($query) { $this->queryString = $query; return $this->pdo->exec($query); } public function quote($string) { return $this->pdo->quote($string); } protected function column_quote($string) { return '"' . str_replace('.', '"."', $string) . '"'; } protected function column_push($columns) { if ($columns == '*') { return $columns; }if (is_string($columns)) { $columns = array($columns); }$stack = array();
foreach ($columns as $key => $value) { preg_match('/([a-zA-Z0-9_\-\.]*)\s*\(([a-zA-Z0-9_\-]*)\)/i', $value, $match); if (isset($match[1], $match[2])) { array_push($stack, $this->column_quote($match[1]) . ' AS ' . $this>column_quote($match[2])); } else { array_push($stack, $this->column_quote($value)); } }return implode($stack, ','); } protected function array_quote($array) { $temp = array(); foreach ($array as $value) { $temp[] = is_int($value) ? $value : $this->pdo->quote($value); }return implode($temp, ','); } protected function inner_conjunct($data, $conjunctor, $outer_conjunctor) { $haystack = array(); foreach ($data as $value) { $haystack[] = '(' . $this->data_implode($value, $conjunctor) . ')'; }return implode($outer_conjunctor . ' ', $haystack); } protected function data_implode($data, $conjunctor, $outer_conjunctor = null) { $wheres = array(); foreach ($data as $key => $value) { $type = gettype($value); if (preg_match("/^(AND|OR)\s*#?/i", $key, $relation_match) && $type == 'array') { $wheres[] = 0 !== count(array_diff_key($value, array_keys(array_keys($value)))) ? '(' . $this->data_implode($value, ' ' . $relation_match[1]) . ')' : '(' . $this->inner_conjunct($value, ' ' . $relation_match[1], $conjunctor) . ')'; } else { preg_match('/([\w\.]+)(\[(\>|\>\=|\<|\<\=|\!|\<\>|\>\<)\])?/i', $key, $match); $column = $this->column_quote($match[1]); if (isset($match[3])) { if ($match[3] == '') { $wheres[] = $column . ' ' . $match[3] . '= ' . $this->quote($value); } elseif ($match[3] == '!') { switch ($type) { case 'NULL':$wheres[] = $column . ' IS NOT NULL'; break;
case 'array':$wheres[] = $column . ' NOT IN (' . $this>array_quote($value) . ')'; break; case 'integer':case 'double':$wheres[] = $column . ' != ' . $value; break; case 'string':$wheres[] = $column . ' != ' . $this->quote($value); break; } } else { if ($match[3] == '<>' || $match[3] == '><') { if ($type == 'array') { if ($match[3] == '><') { $column.=' NOT'; }if (is_numeric($value[0]) && is_numeric($value[1])) { $wheres[] = '(' . $column . ' BETWEEN ' . $value[0] . ' AND ' . $value[1] . ')'; } else { $wheres[] = '(' . $column . ' BETWEEN ' . $this->quote($value[0]) . ' AND ' . $this->quote($value[1]) . ')'; } } } else { if (is_numeric($value)) { $wheres[] = $column . ' ' . $match[3] . ' ' . $value; } else { $datetime = strtotime($value); if ($datetime) { $wheres[] = $column . ' ' . $match[3] . ' ' . $this->quote(date('Y-m-d H:i:s', $datetime)); } } } } } else { if (is_int($key)) { $wheres[] = $this->quote($value); } else { switch ($type) { case 'NULL':$wheres[] = $column . ' IS NULL'; break; case 'array':$wheres[] = $column . ' IN (' . $this->array_quote($value) . ')'; break; case 'integer':case 'double':$wheres[] = $column . ' = ' . $value; break; case 'boolean':$wheres[] = $column . ' = ' . ($value ? '1' : '0');
break; case 'string':$wheres[] = $column . ' = ' . $this->quote($value); break; } } } } }return implode($conjunctor . ' ', $wheres); } protected function where_clause($where) { $where_clause = ''; if (is_array($where)) { $where_keys = array_keys($where); $where_AND = preg_grep("/^AND\s*#?$/i", $where_keys); $where_OR = preg_grep("/^OR\s*#?$/i", $where_keys); $single_condition = array_diff_key($where, array_flip(explode(' ', 'AND OR GROUP ORDER HAVING LIMIT LIKE MATCH'))); if ($single_condition != array()) { $where_clause = ' WHERE ' . $this->data_implode($single_condition, ''); }if (!empty($where_AND)) { $value = array_values($where_AND); $where_clause = ' WHERE ' . $this->data_implode($where[$value[0]], ' AND'); }if (!empty($where_OR)) { $value = array_values($where_OR); $where_clause = ' WHERE ' . $this->data_implode($where[$value[0]], ' OR'); }if (isset($where['LIKE'])) { $like_query = $where['LIKE']; if (is_array($like_query)) { $is_OR = isset($like_query['OR']); $clause_wrap = array(); if ($is_OR || isset($like_query['AND'])) { $connector = $is_OR ? 'OR' : 'AND'; $like_query = $is_OR ? $like_query['OR'] : $like_query['AND']; } else { $connector = 'AND'; }foreach ($like_query as $column => $keyword) { if (is_array($keyword)) { foreach ($keyword as $key) { $clause_wrap[] = $this->column_quote($column) . ' LIKE ' . $this>quote('%' . $key . '%'); } } else {
$clause_wrap[] = $this->column_quote($column) . ' LIKE ' . $this>quote('%' . $keyword . '%'); } }$where_clause.=($where_clause != '' ? ' AND ' : ' WHERE ') . '(' . implode($clause_wrap, ' ' . $connector . ' ') . ')'; } }if (isset($where['MATCH'])) { $match_query = $where['MATCH']; if (is_array($match_query) && isset($match_query['columns'], $match_query['keyword'])) { $where_clause.=($where_clause != '' ? ' AND ' : ' WHERE ') . ' MATCH ("' . str_replace('.', '"."', implode($match_query['columns'], '", "')) . '") AGAINST (' . $this->quote($match_query['keyword']) . ')'; } }if (isset($where['GROUP'])) { $where_clause.=' GROUP BY ' . $this->column_quote($where['GROUP']); }if (isset($where['ORDER'])) { if (is_array($where['ORDER'])) { $where_clause.=' ORDER BY FIELD(' . $this>column_quote($where['ORDER'][0]) . ', ' . $this>array_quote($where['ORDER'][1]) . ')'; } else { preg_match('/(^[a-zA-Z0-9_\-\.]*)(\s*(DESC|ASC))?/', $where['ORDER'], $order_match); $where_clause.=' ORDER BY "' . str_replace('.', '"."', $order_match[1]) . '" ' . (isset($order_match[3]) ? $order_match[3] : ''); }if (isset($where['HAVING'])) { $where_clause.=' HAVING ' . $this->data_implode($where['HAVING'], ''); } }if (isset($where['LIMIT'])) { if (is_numeric($where['LIMIT'])) { $where_clause.=' LIMIT ' . $where['LIMIT']; }if (is_array($where['LIMIT']) && is_numeric($where['LIMIT'][0]) && is_numeric($where['LIMIT'][1])) { $where_clause.=' LIMIT ' . $where['LIMIT'][0] . ',' . $where['LIMIT'][1]; } } } else { if ($where != null) { $where_clause.=' ' . $where; } }return $where_clause; } protected function select_context($table, $join, &$columns = null, $where = null, $column_fn = null) {
$table = '"' . $table . '"'; $join_key = is_array($join) ? array_keys($join) : null; if (isset($join_key[0]) && strpos($join_key[0], '[') === 0) { $table_join = array(); $join_array = array('>' => 'LEFT', '<' => 'RIGHT', '<>' => 'FULL', '><' => 'INNER'); foreach ($join as $sub_table => $relation) { preg_match('/(\[(\<|\>|\>\<|\<\>)\])?([a-zA-Z0-9_\-]*)/', $sub_table, $match); if ($match[2] != '' && $match[3] != '') { if (is_string($relation)) { $relation = 'USING ("' . $relation . '")'; }if (is_array($relation)) { if (isset($relation[0])) { $relation = 'USING ("' . implode($relation, '", "') . '")'; } else { $relation = 'ON ' . $table . '."' . key($relation) . '" = "' . $match[3] . '"."' . current($relation) . '"'; } }$table_join[] = $join_array[$match[2]] . ' JOIN "' . $match[3] . '" ' . $relation; } }$table.=' ' . implode($table_join, ' '); } else { if (is_null($columns)) { if (is_null($where)) { if (is_array($join) && isset($column_fn)) { $where = $join; $columns = null; } else { $where = null; $columns = $join; } } else { $where = $join; $columns = null; } } else { $where = $columns; $columns = $join; } }if (isset($column_fn)) { if ($column_fn == 1) { $column = '1'; if (is_null($where)) { $where = $columns; } else {
$where == $join; } } else { if (empty($columns)) { $columns = '*'; $where = $join; }$column = $column_fn . '(' . $this->column_push($columns) . ')'; } } else { $column = $this->column_push($columns); }return 'SELECT ' . $column . ' FROM ' . $table . $this>where_clause($where); } public function select($table, $join, $columns = null, $where = null) { $query = $this->query($this->select_context($table, $join, $columns, $where)); return $query ? $query->fetchAll((is_string($columns) && $columns != '*') ? PDO::FETCH_COLUMN : PDO::FETCH_ASSOC) : false; } public function insert($table, $datas) { $lastId = array(); if (!isset($datas[0])) { $datas = array($datas); }foreach ($datas as $data) { $keys = array_keys($data); $values = array(); $index = 0; foreach ($data as $key => $value) { switch (gettype($value)) { case 'NULL':$values[] = 'NULL'; break; case 'array':preg_match("/\(JSON\)\s*([\w]+)/i", $key, $column_match); if (isset($column_match[0])) { $keys[$index] = $column_match[1]; $values[] = $this->quote(json_encode($value)); } else { $values[] = $this->quote(serialize($value)); }break; case 'boolean':$values[] = ($value ? '1' : '0'); break; case 'integer':case 'double':case 'string':$values[] = $this->quote($value); break; }$index++; }$this->exec('INSERT INTO "' . $table . '" ("' . implode('", "', $keys) . '") VALUES (' . implode($values, ', ') . ')');
$lastId[] = $this->pdo->lastInsertId(); }return count($lastId) > 1 ? $lastId : $lastId[0]; } public function update($table, $data, $where = null) { $fields = array(); foreach ($data as $key => $value) { preg_match('/([\w]+)(\[(\+|\-|\*|\/)\])?/i', $key, $match); if (isset($match[3])) { if (is_numeric($value)) { $fields[] = $this->column_quote($match[1]) . ' = ' . $this>column_quote($match[1]) . ' ' . $match[3] . ' ' . $value; } } else { $column = $this->column_quote($key); switch (gettype($value)) { case 'NULL':$fields[] = $column . ' = NULL'; break; case 'array':preg_match("/\(JSON\)\s*([\w]+)/i", $key, $column_match); if (isset($column_match[0])) { $fields[] = $this->column_quote($column_match[1]) . ' = ' . $this>quote(json_encode($value)); } else { $fields[] = $column . ' = ' . $this->quote(serialize($value)); }break; case 'boolean':$fields[] = $column . ' = ' . ($value ? '1' : '0'); break; case 'integer':case 'double':case 'string':$fields[] = $column . ' = ' . $this>quote($value); break; } } }return $this->exec('UPDATE "' . $table . '" SET ' . implode(', ', $fields) . $this>where_clause($where)); } public function delete($table, $where) { return $this->exec('DELETE FROM "' . $table . '"' . $this>where_clause($where)); } public function replace($table, $columns, $search = null, $replace = null, $where = null) { if (is_array($columns)) { $replace_query = array(); foreach ($columns as $column => $replacements) {
foreach ($replacements as $replace_search => $replace_replacement) { $replace_query[] = $column . ' = REPLACE("' . $column . '", ' . $this>quote($replace_search) . ', ' . $this->quote($replace_replacement) . ')'; } }$replace_query = implode(', ', $replace_query); $where = $search; } else { if (is_array($search)) { $replace_query = array(); foreach ($search as $replace_search => $replace_replacement) { $replace_query[] = $columns . ' = REPLACE("' . $columns . '", ' . $this>quote($replace_search) . ', ' . $this->quote($replace_replacement) . ')'; }$replace_query = implode(', ', $replace_query); $where = $replace; } else { $replace_query = $columns . ' = REPLACE("' . $columns . '", ' . $this>quote($search) . ', ' . $this->quote($replace) . ')'; } }return $this->exec('UPDATE "' . $table . '" SET ' . $replace_query . $this>where_clause($where)); } public function get($table, $columns, $where = null) { if (!isset($where)) { $where = array(); }$where['LIMIT'] = 1; $data = $this->select($table, $columns, $where); return isset($data[0]) ? $data[0] : []; } public function has($table, $join, $where = null) { $column = null; return $this->query('SELECT EXISTS(' . $this->select_context($table, $join, $column, $where, 1) . ')')->fetchColumn() === '1'; } public function count($table, $join = null, $column = null, $where = null) { return 0 + ($this->query($this->select_context($table, $join, $column, $where, 'COUNT'))->fetchColumn()); } public function max($table, $join, $column = null, $where = null) { $max = $this->query($this->select_context($table, $join, $column, $where, 'MAX'))->fetchColumn(); return is_numeric($max) ? $max + 0 : $max; }
public function min($table, $join, $column = null, $where = null) { $min = $this->query($this->select_context($table, $join, $column, $where, 'MIN'))->fetchColumn(); return is_numeric($min) ? $min + 0 : $min; } public function avg($table, $join, $column = null, $where = null) { return 0 + ($this->query($this->select_context($table, $join, $column, $where, 'AVG'))->fetchColumn()); } public function sum($table, $join, $column = null, $where = null) { return 0 + ($this->query($this->select_context($table, $join, $column, $where, 'SUM'))->fetchColumn()); } public function error() { return $this->pdo->errorInfo(); } public function last_query() { return $this->queryString; } public function info() { $output = array('server' => 'SERVER_INFO', 'driver' => 'DRIVER_NAME', 'client' => 'CLIENT_VERSION', 'version' => 'SERVER_VERSION', 'connection' => 'CONNECTION_STATUS'); foreach ($output as $key => $value) { $output[$key] = $this->pdo->getAttribute(constant('PDO::ATTR_' . $value)); }return $output; } } ?> 404
Error 404: Halaman tidak ditemukan.
Artikel get("Artikel", "*", ["ID_Artikel" => $_GET["id"]]); extract($row); } else if ($_GET["do"] == "") { $ID_Artikel = auto_code("Artikel", "ID_Artikel", 5, "I"); } ?> last_query(); var_dump($model->error()); print_r($_GET); print_r($_POST); ?> --> Artikel_user get("Artikel", "*", ["ID_Artikel" => $_GET["id"]]); extract($row);
} else if ($_GET["do"] == "") { $ID_Artikel = auto_code("Artikel", "ID_Artikel", 5, "I"); } ?> last_query(); var_dump($model->error()); print_r($_GET); print_r($_POST); ?>
--> Dartikel get("Artikel", "*", ["ID_Artikel" => $_GET["id"]]); extract($row); $jml_komen = $model->count("Artikel_komentar", ["ID_Artikel" => $ID_Artikel]); if (isset($_GET["do"])) { if ($_GET["do"] == "delete") { if ($model->has("Artikel_komentar", ["ID_Komentar" => $_GET["id"]])) { $model->delete("Artikel_komentar", ["ID_Komentar" => $_GET["id"]]); header("location:" . $_SERVER["REQUEST_URI"]); } } }
if (isset($_POST["Simpan"])) { if ($_GET["do"] != "edit") { $model->insert("Artikel_komentar", [ "ID_Artikel" => $_GET["id"], "Komentator" => "Administrator", "Email" => "[email protected]", "Tanggal" => date('Y-m-d'), "Komentar" => $_POST["Komentar"] ]); } } ?> last_query(); var_dump($model->error()); print_r($_GET); print_r($_POST); ?> --> Dartikel-user
$row = $model->get("Artikel", "*", ["ID_Artikel" => $_GET["id"]]); extract($row); $jml_komen = $model->count("Artikel_komentar", ["ID_Artikel" => $ID_Artikel]); if (isset($_GET["do"])) { if ($_GET["do"] == "delete") { if ($model->has("Artikel_komentar", ["ID_Komentar" => $_GET["id"]])) { $model->delete("Artikel_komentar", ["ID_Komentar" => $_GET["id"]]); header("location:" . $_SERVER["REQUEST_URI"]); } } }
if (isset($_POST["Simpan"])) { $_SESSION['nama_pengirim'] = $_POST["Nama_Pengirim"]; $_SESSION['email'] = $_POST["Email"]; if ($_GET["do"] != "edit") { $model->insert("Artikel_komentar", [ "ID_Artikel" => $_GET["id"], "Komentator" => $_POST['Nama_Pengirim'], "Email" => $_POST['Email'], "Tanggal" => date('Y-m-d'), "Komentar" => $_POST["Komentar"] ]); } } ?> last_query(); var_dump($model->error()); print_r($_GET); print_r($_POST); ?> --> Ddiskusi
$row = $model->get("Artikel", "*", ["ID_Artikel" => $_GET["id"]]); extract($row); $jml_komen = $model->count("Artikel_komentar", ["ID_Artikel" => $ID_Artikel]); if (isset($_GET["do"])) { if ($_GET["do"] == "delete") { if ($model->has("Artikel_komentar", ["ID_Komentar" => $_GET["id"]])) { $model->delete("Artikel_komentar", ["ID_Komentar" => $_GET["id"]]); header("location:" . $_SERVER["REQUEST_URI"]); } } }
if (isset($_POST["Simpan"])) { if ($_GET["do"] != "edit") { $model->insert("Artikel_komentar", [ "ID_Artikel" => $_GET["id"], "Komentator" => "Administrator", "Email" => "[email protected]", "Tanggal" => date('Y-m-d'), "Komentar" => $_POST["Komentar"] ]); } } ?> last_query(); var_dump($model->error()); print_r($_GET); print_r($_POST); ?> --> Detail get("Toko", "*", ["Kode_Toko" => $_GET["id"]]); extract($row); ?> Home <script> function onError(linkErrorId) { document.getElementById(linkErrorId).innerHTML = ""; } Komentar get("Artikel_komentar", "*", ["ID_Komentar" => $_GET["id"]]); extract($row); } else if ($_GET["do"] == "") { $ID_Komentar = auto_code("Artikel_komentar", "ID_Komentar", 5, "I"); } ?> last_query(); var_dump($model->error()); print_r($_GET); print_r($_POST); ?> --> Login
include "medoo/medoo.php"; $model = new medoo(); ?>
$password = $_POST[password]; if ($model->has($tabel, ["AND" => ["username" => $username, "password" => $password]])) { $_SESSION['login'] = $tabel; $_SESSION['user'] = $username; header('location:home'); } else { echo "<script>window.onload = function(){alert('Password yang anda masukkan salah!')}"; } } ?> Logout Peta <script> var map; var koordinat_awal = L.latLng(3.5920166782833487, 98.67709636688232); L.Icon.Default.imagePath = "assets/leaflet/images/"; var mbTiles = new L.tileLayer('http://localhost/rute/geoserver.php?z={z}&x={x}&y={y}', { tms: true, attribution: 'dianti', opacity: 1.0 }); map = new L.Map("map", { layers: [mbTiles], maxZoom: 16, minZoom: 10 }).fitWorld();
map.setView([3.5920166782833487, 98.67709636688232], 16); var marker_titik_awal = L.marker(koordinat_awal, { icon: L.icon({ iconUrl: 'assets/leaflet/images/marker-green.png', iconAnchor: [12, 41], popupAnchor: [0, -41] }) }).bindPopup("Lokasi Awal Anda").addTo(map); function onMapClick(e) { koordinat_awal = e.latlng; marker_titik_awal.setLatLng(koordinat_awal); map.panTo(koordinat_awal); getRute(); } map.on('click', onMapClick); function tampilInfo() { //cari terdekat var terdekat = 0; for (var i = 1; i < datalokasi.length; i++) { if (datalokasi[i].jarak > 0) { if (datalokasi[terdekat].jarak > datalokasi[i].jarak || datalokasi[terdekat].jarak == 0) { terdekat = i; } } } for (var i = 0; i < datalokasi.length; i++) { var love = i == terdekat ? '✔ ' : ''; if (datalokasi[i].jarak > 0) { document.querySelector('#infojarak' + datalokasi[i].Kode_Toko).innerHTML = love + 'Jarak ' + (datalokasi[i].jarak / 1000).toFixed(2) + ' Km'; } else { document.querySelector('#infojarak' + datalokasi[i].Kode_Toko).innerHTML = 'Rute tidak ditemukan'; } } }
//Trace semua data lokasi dari json ke dalam map (marker dan rute) var warna_rute = ['#9C27B0', '#673AB7', '#3F51B5', '#2196F3', '#03A9F4', '#009688', '#4CAF50', '#8BC34A', '#FFEB3B', '#FF9800', '#FF5722', '#795548', '#607D8B']; for (var i = 0; i < datalokasi.length; i++) { var warna = warna_rute[Math.floor(Math.random() * warna_rute.length)]; datalokasi[i].warna = warna; datalokasi[i].lat = parseFloat(datalokasi[i].Koordinat.split(',')[0]); datalokasi[i].lng = parseFloat(datalokasi[i].Koordinat.split(',')[1]); datalokasi[i].marker = L.marker([datalokasi[i].lat, datalokasi[i].lng]).addTo(map); datalokasi[i].rute = L.polyline([], { color: warna }).addTo(map); datalokasi[i].popup = L.popup() .setLatLng([datalokasi[i].lat, datalokasi[i].lng]) .setContent("" + "" + "" + datalokasi[i].Alamat + "
"); //map.addLayer(datalokasi[i].popup); datalokasi[i].marker.bindPopup(datalokasi[i].popup); }
//Rumus Equirectangular Approximation function equiApprox(lat1, lon1, lat2, lon2) { var R = 6371.009; var φ1 = lat1 * (Math.PI / 180);//Latitude var λ1 = lon1 * (Math.PI / 180);//Longitudinal var φ2 = lat2 * (Math.PI / 180); var λ2 = lon2 * (Math.PI / 180); var x = (λ2 - λ1) * Math.cos((φ1 + φ2) / 2); var y = (φ2 - φ1); var d = Math.sqrt(x * x + y * y) * R; //console.log("EquiApprox[(%s,%s) → (%s,%s)]", lat1.toFixed(4), lon1.toFixed(4), lat1.toFixed(4), lon2.toFixed(4)); //console.log("\tLat1 = φ1 × (Π/180) = %s", φ1.toFixed(4)); //console.log("\tLon1 = λ1 × (Π/180) = %s", λ1.toFixed(4)); //console.log("\tLat2 = φ2 × (Π/180) = %s", φ2.toFixed(4)); //console.log("\tLon2 = λ2 × (Π/180) = %s", λ2.toFixed(4)); //console.log("x = Δλ ⋅ cos φm = (λ2 - λ1) * cos((φ1 + φ2)/2) = %s * %s = %s", (λ2 - λ1), Math.cos((φ1 + φ2) / 2), x); //console.log("y = Δφ = (φ2 - φ1) = %s - %s = %s", φ2, φ1, y); //console.log("d = R ⋅ √x² + y² = %s * √%s+%s = %s", R, x * x, y * y, d);
return d; }
function getRute() { var dari = [koordinat_awal.lat, koordinat_awal.lng].join(); for (var i = 0; i < datalokasi.length; i++) { var menuju = datalokasi[i].lat + ',' + datalokasi[i].lng; $.ajax({ type: "GET", url: "app/proxy.php?dari=" + dari + "&menuju=" + menuju, context: { objeklokasi: datalokasi[i], lokasi_user: L.latLng(koordinat_awal.lat, koordinat_awal.lng), lokasi_studio: L.latLng(datalokasi[i].lat, datalokasi[i].lng), tampil: tampilInfo }, success: function (data) { var rute = this.objeklokasi.rute; rute.setLatLngs([]); if (data.rute_utama.jarak > 0) { var jarak_hitung_manual = 0; var koordinatstr = "Koordinat Rute [ "; for (i = 0; i < data.rute_utama.poin.length; i++) { koordinatstr += "(" + data.rute_utama.poin[i][1] + "," + data.rute_utama.poin[i][0] + ") "; } koordinatstr += "]"; console.log(koordinatstr); rute.addLatLng(this.lokasi_user); for (var j = 0; j < data.rute_utama.poin.length; j++) { rute.addLatLng([data.rute_utama.poin[j][1], data.rute_utama.poin[j][0]]); if (j != data.rute_utama.poin.length - 1) { lat1 = data.rute_utama.poin[j][1]; lon1 = data.rute_utama.poin[j][0]; lat2 = data.rute_utama.poin[j + 1][1]; lon2 = data.rute_utama.poin[j + 1][0]; jarak_hitung_manual += equiApprox(lat1, lon1, lat2, lon2); } } rute.addLatLng(this.lokasi_studio); console.log("Jarak total = %s", jarak_hitung_manual.toFixed(4)); //data.rute_utama.jarak = jarak_hitung_manual.toFixed(4); } this.objeklokasi.jarak = data.rute_utama.jarak;
this.tampil(); } }); } //end loop for //tampilInfo(); } //end getRute getRute(); Peta—lama <script> var map; var koordinat_awal = L.latLng(3.5920166782833487, 98.67709636688232); L.Icon.Default.imagePath = "assets/leaflet/images/"; var mbTiles = new L.tileLayer('http://localhost/rute/geoserver.php?z={z}&x={x}&y={y}', { tms: true, attribution: 'dianti', opacity: 1.0 }); map = new L.Map("map", { layers: [mbTiles], maxZoom: 16, minZoom: 10 }).fitWorld(); map.setView([3.5920166782833487, 98.67709636688232], 16); var marker_titik_awal = L.marker(koordinat_awal, { icon: L.icon({ iconUrl: 'assets/leaflet/images/marker-green.png', iconAnchor: [12, 41],
popupAnchor: [0, -41] }) }).bindPopup("Lokasi Awal Anda").addTo(map); function onMapClick(e) { koordinat_awal = e.latlng; marker_titik_awal.setLatLng(koordinat_awal); map.panTo(koordinat_awal); getRute(); } map.on('click', onMapClick); function tampilInfo() { //cari terdekat var terdekat = 0; for (var i = 1; i < datalokasi.length; i++) { if (datalokasi[i].jarak > 0) { if (datalokasi[terdekat].jarak > datalokasi[i].jarak || datalokasi[terdekat].jarak == 0) { terdekat = i; } } } for (var i = 0; i < datalokasi.length; i++) { var love = i == terdekat ? '✔ ' : ''; if (datalokasi[i].jarak > 0) { document.querySelector('#infojarak' + datalokasi[i].Kode_Toko).innerHTML = love + 'Jarak ' + (datalokasi[i].jarak / 1000).toFixed(2) + ' Km'; } else { document.querySelector('#infojarak' + datalokasi[i].Kode_Toko).innerHTML = 'Rute tidak ditemukan'; } } } //Trace semua data lokasi dari json ke dalam map (marker dan rute) var warna_rute = ['#9C27B0', '#673AB7', '#3F51B5', '#2196F3', '#03A9F4', '#009688', '#4CAF50', '#8BC34A', '#FFEB3B', '#FF9800', '#FF5722', '#795548', '#607D8B']; for (var i = 0; i < datalokasi.length; i++) { var warna = warna_rute[Math.floor(Math.random() * warna_rute.length)];
datalokasi[i].warna = warna; datalokasi[i].lat = parseFloat(datalokasi[i].Koordinat.split(',')[0]); datalokasi[i].lng = parseFloat(datalokasi[i].Koordinat.split(',')[1]); datalokasi[i].marker = L.marker([datalokasi[i].lat, datalokasi[i].lng]).addTo(map); datalokasi[i].rute = L.polyline([], { color: warna }).addTo(map); datalokasi[i].popup = L.popup() .setLatLng([datalokasi[i].lat, datalokasi[i].lng]) .setContent("" + "" + "" + datalokasi[i].Alamat + "
"); //map.addLayer(datalokasi[i].popup); datalokasi[i].marker.bindPopup(datalokasi[i].popup); } function getRute() { var dari = [koordinat_awal.lat, koordinat_awal.lng].join(); for (var i = 0; i < datalokasi.length; i++) { var menuju = datalokasi[i].lat + ',' + datalokasi[i].lng; $.ajax({ type: "GET", url: "app/proxy.php?dari=" + dari + "&menuju=" + menuju, context: { objeklokasi: datalokasi[i], lokasi_user: L.latLng(koordinat_awal.lat, koordinat_awal.lng), lokasi_studio: L.latLng(datalokasi[i].lat, datalokasi[i].lng), tampil: tampilInfo }, success: function (data) { var rute = this.objeklokasi.rute; rute.setLatLngs([]); if (data.rute_utama.jarak > 0) { rute.addLatLng(this.lokasi_user); for (var j = 0; j < data.rute_utama.poin.length; j++) { rute.addLatLng([data.rute_utama.poin[j][1], data.rute_utama.poin[j][0]]); } rute.addLatLng(this.lokasi_studio); } this.objeklokasi.jarak = data.rute_utama.jarak; this.tampil(); } }); } //end loop for
//tampilInfo(); } //end getRute getRute(); Proxy "; $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_RETURNTRANSFER => 1, CURLOPT_URL => $gurl )); $resp = curl_exec($curl); curl_close($curl); function charCodeAt($str, $num) { return utf8_ord(utf8_charAt($str, $num)); } function utf8_ord($ch) { $len = strlen($ch); if ($len <= 0) return false; $h = ord($ch{0}); if ($h <= 0x7F) return $h; if ($h < 0xC2) return false; if ($h <= 0xDF && $len > 1)
return ($h & 0x1F) << 6 | (ord($ch{1}) & 0x3F); if ($h <= 0xEF && $len > 2) return ($h & 0x0F) << 12 | (ord($ch{1}) & 0x3F) << 6 | (ord($ch{2}) & 0x3F); if ($h <= 0xF4 && $len > 3) return ($h & 0x0F) << 18 | (ord($ch{1}) & 0x3F) << 12 | (ord($ch{2}) & 0x3F) << 6 | (ord($ch{3}) & 0x3F); return false; } function utf8_charAt($str, $num) { return mb_substr($str, $num, 1, 'UTF-8'); } function Decode($str) { $index = 0; $lat = 0; $lng = 0; $coordinates = array(); $shift = 0; $result = 0; $byte = null; $latitude_change; $longitude_change; $factor = pow(10, 5); $coord_string; // Coordinates have variable length when encoded, so just keep // track of whether we've hit the end of the string. In each // loop iteration, a single coordinate is decoded. $encodeLen = ($str=='' || $str==NULL) ? 0 : strlen($str); while ($index < $encodeLen) { // Reset shift, result, and byte $byte = null; $shift = 0; $result = 0; do { $byte = charCodeAt($str, $index++) - 63; $result |= ($byte & 0x1f) << $shift; $shift += 5; } while ($byte >= 0x20); $latitude_change = (($result & 1) ? ~($result >> 1) : ($result >> 1)); $shift = $result = 0;
do { $byte = charCodeAt($str, $index++) - 63; $result |= ($byte & 0x1f) << $shift; $shift += 5; } while ($byte >= 0x20); $longitude_change = (($result & 1) ? ~($result >> 1) : ($result >> 1)); $lat += $latitude_change; $lng += $longitude_change; $coord_string.=",[" . ($lng / $factor) . "," . ($lat / $factor) . "]"; array_push($coordinates, [$lat / $factor, $lng / $factor]); } return substr($coord_string, 1); } if ($_GET['format'] == 'geojson') { header("Content-Type: text/geojson"); $json = json_decode($resp, true); $jarak = $json['route_summary']['total_distance']; $waktu = $json['route_summary']['total_time']; $linestring = Decode($json['route_geometry']); $jarak_alt = $json['alternative_summaries'][0]['total_distance']; $waktu_alt = $json['alternative_summaries'][0]['total_time']; $linestring_alt = Decode($json['alternative_geometries'][0]); echo "{ \"rute_utama\": { \"poin\":[$linestring], \"waktu\": $waktu, \"jarak\": $jarak }"; if(!empty($linestring_alt)){ echo ",\"rute_alt\": { \"poin\":[$linestring_alt], \"waktu\": $waktu_alt, \"jarak\": $jarak_alt }"; } echo "}"; //echo "/*$resp*/"; } else { header("Content-Type: application/json"); echo $resp;
} Session Spesifikasi get("Spesifikasi", "*", ["Kode_Spesifikasi" => $_GET["id"]]); extract($row); } else if ($_GET["do"] == "") { $Kode_Spesifikasi = auto_code("Spesifikasi", "Kode_Spesifikasi", 5, "K"); } $Toko = new medoo(); $row_Toko = $model->get("Toko", "*", ["Kode_Toko" => $_SESSION['kode_Toko']]); ?> last_query(); var_dump($model->error()); print_r($_GET); print_r($_POST); ?> --> Tentang Testimonial get("Testimonial", "*", ["ID_Testimonial" => $_GET["id"]]); extract($row); } else if ($_GET["do"] == "") { $ID_Testimonial = auto_code("Testimonial", "ID_Testimonial", 5, "I"); } ?> last_query(); var_dump($model->error()); print_r($_GET); print_r($_POST); ?> --> Testimonial-user get("Testimonial", "*", ["ID_Testimonial" => $_GET["id"]]); extract($row); } else if ($_GET["do"] == "") { $ID_Testimonial = auto_code("Testimonial", "ID_Testimonial", 5, "I"); } ?> last_query(); var_dump($model->error()); print_r($_GET); print_r($_POST); ?> --> Took
if ($_GET["do"] == "edit") { $row = $model->get("Toko", "*", ["Kode_Toko" => $_GET["id"]]); extract($row); } else if ($_GET["do"] == "") { $Kode_Toko = auto_code("Toko", "Kode_Toko", 5, "K"); } ?> <script> $(document).ready(function () { document.querySelector("#Gambar").onchange = function (e) { EXIF.getData(e.target.files[0], function () { var exif = this.exifdata; if (exif.GPSLatitude) { var lat = exif.GPSLatitude; var lon = exif.GPSLongitude; var latRef = exif.GPSLatitudeRef || "N"; var lonRef = exif.GPSLongitudeRef || "W"; lat = (lat[0] + lat[1] / 60 + lat[2] / 3600) * (latRef == "N" ? 1 : -1); lon = (lon[0] + lon[1] / 60 + lon[2] / 3600) * (lonRef == "W" ? -1 : 1); koordinat_awal = [lat, lon]; marker.setLatLng(koordinat_awal); map.panTo(koordinat_awal); var string_koordinat = lat.toFixed(7) + ',' + lon.toFixed(7); document.querySelector("#Koordinat").value = string_koordinat; //console.log('EXIF Detected: ', koordinat_awal); } }); }; }); /** * Menampilkan modal peta * @returns {undefined} */ function showModal() { var inst = $('[data-remodal-id=modal]').remodal(); inst.open(); }
/** * Event saat modal telah terbuka, peta di-invalidate * @param {type} param1 * @param {type} param2 * @param {type} param3 */ $(document).on('opened', '.remodal', function () { map.invalidateSize(); }); /** * Kode untuk mengatur peta nya * @type @new;L.Map@call;fitWorld */ var map; L.Icon.Default.imagePath = "assets/leaflet/images/"; var mbTiles = new L.tileLayer('http://localhost/rute/geoserver.php?z={z}&x={x}&y={y}', { tms: true, attribution: 'dianti', opacity: 1.0 }); map = new L.Map("map", { layers: [mbTiles], maxZoom: 16, minZoom: 10 }).fitWorld(); map.setView(koordinat_awal, 16); /** * ini untuk map pickernya * @type @exp;L@call;popup@call;setLatLng@call;setContent@call;openOn */ var marker = L.marker(koordinat_awal).bindPopup("Titik Koordinat Toko").addTo(map); function onMapClick(e) {
koordinat_awal = e.latlng; marker.setLatLng(koordinat_awal); map.panTo(koordinat_awal); string_koordinat = e.latlng.lat.toFixed(7) + ',' + e.latlng.lng.toFixed(6); document.querySelector("#Koordinat").value = string_koordinat; console.log(document.querySelector("#Koordinat")); } map.on('click', onMapClick);
last_query(); var_dump($model->error()); print_r($_GET); print_r($_POST); ?> -->