Rabu, 18 September 2019

Menentukan Titik Koordinat Akhir Berdasarkan Titik Koordinat Awal, Jarak dan Arah Dengan PHP

Dalam dunia telekomunikasi, kita tidak akan asing lagi jika mendengar kata Gcell atau MSDB. Gcell atau MSDB adalah file yang berisikan informasi site-site di area tertentu yang bisa dipetakan di mapinfo ataupun di google earth. Dari Gcell tersebut kita bisa mengetahui site informasi termasuk letak site dan arah masing-masing antenna.

Gcell atau MSDB sebenarnya dibuat dari tabel dalam format txt atau excel.

 Tabel Gcell

Dengan bantuan tools common atau site see tabel tersebut bisa berubah jadi tabfile yang bisa di buka di mapinfo atau bisa dirubah dalam bentuk kml yang bisa dibuka di google earth.
 Tampilan Gcell di Mapinfo

Tampilan Gcell di Google Earth

Syaratnya file txt atau excel tadi minimal harus berisi 6 kolom; yaitu:
1. Site ID
2. Azimuth (arah antenna)
3. Longitude
4. Latitude
5. Beam antenna
6. Radius

Nah pertanyaannya, pernahkah agan berfikir bagaimana caranya table yang isi 6 kolom itu berubah jadi tampilan menarik dengan bentuk segitiga sesuai arah antenna dan beamnya?

Untuk membuat bentuk arah azimuth dan beamnya itu berawal dari pertanyaan bagaimana menentukan titik akhir jika kita punya titik awal, arah dan jarak. Karena bentuk itu dibuat dari kumpulan garis, yang berawal dari titik awal dan digarisi berdasarkan arah dan jarak sehingga didapat titik akhir dan seterusnya sampai bertemu lagi ke titik awal.

Jika sudah ketemu cara menentukan titik akhir, pandangan kita akan lebih luas lagi untuk membuat sebuah bentuk.

Berikut kode PHP nya

<?php
$R = 6378.1; //Jari-jari Bumi
$brng = 71.75; //Arah dalam derajat
$brng = deg2rad($brng); //Arah dirubah ke Radian
$d = 4.43; //Jarak dalam km
$lat1 = -0.935417; // Latitude Awal dalam derajat
$lat1 = deg2rad($lat1); //Latitude dirubah ke radians
$lon1 = 100.367306; //Longitude Awal
dalam derajat
$lon1 = deg2rad($lon1); //Longitude dirubah ke radians

//====== Mencari Latitude Akhir ========
$lat2 = asin( sin($lat1)*cos($d/$R)+cos($lat1)*sin($d/$R)*cos($brng));



//====== Mencari Longitude Akhir======== 
$lon2 = $lon1 + atan2(sin($brng)*sin($d/$R)*cos($lat1),
             cos($d/$R)-sin($lat1)*sin($lat2));

$lat2 = rad2deg($lat2); //Latitude akhir dirubah ke derajat
$lon2 = rad2deg($lon2);
//Longitude akhir dirubah ke derajat


echo "Lat Target = $lat2 \n"; //Tampilkan Latitude Akhir
echo "Lon Target = $lon2 \n";
//Tampilkan Longitude Akhir 

Mungkin itu saja yang bisa saya share, semoga bermanfaat, mohon maaf jika ada kesalahan menulis. Terimakasih

Selasa, 13 Agustus 2019

Cara Baca, Tulis, Edit dan Update Google Sheet Dengan PHP Sederhana

Asslmkm. Wr. Wb.

Pernahkah Anda ingin mengambil data dari google spreadsheet? Biasanya untuk pengambilan data dari spreadsheet dilakukan dengan cara mendownload atau copy paste ke file excel secara manual. Cara traditional tersebut tidaklah membuat Anda sulit, tapi bagaimana jika data tersebut harus di download setiap malam karena data tersebut dibutuhkan di waktu paginya. Idealnya malam hari itu digunakan untuk kumpul keluarga atau tidur, bukan untuk bekerja. Apakah sempat terpikir oleh Anda, Apakah bisa data otomatis terdownload setiap malam? Jawabannya adalah BISA.

Perusahaan Google, selain menyediakan program gratis spreadsheet yang sangat bermanfaat bagi kita, mereka juga sangat baik menyediakan API untuk spreadsheet sehingga dengan API tersebut kita bisa membuat program untuk membantu kita dalam mengolah data di spreadsheet.

Dalam tutorial ini, kita akan coba untuk membuat program untuk membaca, menulis, memperbaharui dan menghapus data dari spreadsheet hanya menggunakan beberapa baris program PHP.

Sebagai bahan percobaan kita akan gunakan data penjualan dan pembelian pada online shop. Buatlah spreadsheet seperti link ini Billing Twin Bots Comodity Shop
Sebelum kita buat program, kita harus mengaktifkan API spreadsheet terlebih dahulu. Caranya :
  • Login ke account google Anda. dengan cara masuk ke www.google.com terus login
  • Pergi ke Google APIs Console terus buat project baru seperti gambar dibawah:
  • Buatlah nama project anda
  • setelah itu akan tampil seperti dibawah. lalu klik library
  • Cari Google Drive API dan Google Sheets API. Kita akan mengaktifkan dua-duanya. Namun hanya google sheet yang di kasih tutorial karena Google drive API langkahnya sama.

  • Selanjutnya klik Buat Kredensial
  • Atur settingnya seperti dibawah


  • setelah itu akan di bawa ke tampilan di bawah, tulis nama akun, atur sebagai pemilik, dan atur json sebagai format data.
  • Anda akan disuruh untuk menyimpan service account format .json di hardisk. Simpan lah di dalam folder untuk project Anda. File ini akan dipakai pada saat autentifikasi
  • Buka file json tadi pakai notepad, lalu copy nilai unik untuk client_email
  • Buka spreadsheet yang sudah tadi dibuat, trus click Share terus paste client_email tadi. Pastikan icon sebelah kanannya bergambar pinsil atau bisa edit. Setelah itu click Send.


Sampai saat ini API google sheet sudah bisa di gunakan. Selanjutnya kita akan install library google api client.
Sebelum ke tahap selanjutnya pastikan anda sudah install XAMPP dan Composer. Jika belum sebaiknya install dulu. Dibawah Saya sediakan link untuk download kedua software tersebut.
1. XAMPP

setelah kedua software tersebut terinstall maka buka Command Prompt trus ketik

composer require google/apiclient:^2.0

Jika sudah selesai, maka anda siap untuk membuat coding php.

Membaca Data Spreadsheet
Bukalah notepade (lebih baik pakai notepad++), terus tulis code berikut:

<?php
require __DIR__ . '/vendor/autoload.php';


Save di folder project anda, dengan nama misal = robot_spreadsheet.php (file php harus diakhiri .php)
Setelah itu buat file json kosong di notepad++ dan isi code nya sebagai berikut:
{} 
save file nya di folder yang sama dengan file php tadi lalu beri nama composer.json

catatan : biasanya file autoload.php berada pada folder root dimana anda mengistall XAMPP. dalam hal ini saya install XAMPP di folder D, maka letak file autoload.php ada di D:\vendor. Jika letak file robot_spreadsheet.php terletak di D:<folder anda>/<folder anda> maka penulisan nya harus seperti ini "require __DIR__ . '../../vendor/autoload.php';" . Jumlah ../ menandakan jumlah folder dari letak file robot_spreadsheet.php menuju drive D.

Untuk test file coding yang anda buat tadi sudah berhasil atau tidak, Anda bisa menguji nya dengan cara:
1. Buka Command Prompt
2. Karena file php berada di folder D maka tulis d: lalu enter
3. Setelah itu Menuju ke folder file php dengan menulis code cd <folder anda>\<folder anda> lalu enter

4. Tulis php robot_spreadsheet.php lalu enter
Jika tidak ada error berarti code dan letak folder anda sudah benar


Bootstrapping Google API Authentication
Pertama kita perlu install library google/apiclient untuk otentikasi dan asimlqt/php-google-spreadsheet-client untuk mengakses spreadsheets. Caranya buka command prompt terus ketik code berikut:
1. composer require google/apiclient:"^2.0"
2. composer require asimlqt/php-google-spreadsheet-client:"3.0.*"

Memulai Coding
Yang perlu di perhatikan disini adalah
1. posisi file.json yang telah di download ketika mengaktifkan API Google spreadsheet.
2. SpreadsheetID
3. Range yang akan di baca atau di update.
Untuk SpreadsheetID bisa dilihat di addressbar browser anda, terletak diantara garismiring setelah id, bisa dilihat capture dibawah: 

Serta untuk Range harus dimasukan nama sheet + range.
Buat file php terus tulis code sperti dibawah:

<?php
require __DIR__ . '../../../vendor/autoload.php';


//===============Inisial autentik=====================
$client = new \Google_Client();
$client->setApplicationName('My PHP App');
$client->setScopes([\Google_Service_Sheets::SPREADSHEETS]);
$client->setAccessType('offline');

//==============proses input file json================
$jsonAuth = getenv('JSON_AUTH');
$client->setAuthConfig(__DIR__ . '/Botspreadsheet-354ffe2.json'); //Ubah

Botspreadsheet-354ffe2.json menjadi nama file json anda

$sheets = new \Google_Service_Sheets($client);

$data = [];

$spreadsheetId = '13o0Wzefewhyjy9PUPKUKAFFFLPhdfefOjBrouMmc_LznhvI'; // ubah spreadsheetId dengan spreadsheetID anda
$range = 'Sheet1!A3:H'; // variable untuk menyimpan range yang akan di baca, A3:H artinya, data yang akan di baca adalah kolom A sampai H dimulai dari baris 3
$rows = $sheets->spreadsheets_values->get($spreadsheetId, $range, ['majorDimension' => 'ROWS']);
if (isset($rows['values'])) {
    foreach ($rows['values'] as $row) {
        if (empty($row[0])) { // Jika sudah kosong maka stop membaca data
            break;
        }

        $data[] = [
            'col-a' => $row[0],
            'col-b' => $row[1],
            'col-c' => $row[2],
            'col-d' => $row[3],
            'col-e' => $row[4],
            'col-f' => $row[5],
            'col-g' => $row[6],
            'col-h' => $row[7],
        ];

        //============Proses mengupdate atau menulis data===============


        $currentRow = 3; //variable untuk menentukan baris ke

        $updateRange = 'S'.$currentRow; // variable untuk menentukan range yang akan di edit
        $updateBody = new \Google_Service_Sheets_ValueRange([
            'range' => $updateRange,
            'majorDimension' => 'ROWS',
            'values' => ['values' => date('c')],
        ]); //range I2 akan di isi tanggal jika anda ingin mengisi dengan yang lain tinggal ganti
date('c') dengan data yang anda inginkan


            $sheets->spreadsheets_values->update(
            $spreadsheetId,
            $updateRange,
            $updateBody,
            ['valueInputOption' => 'USER_ENTERED']
        );

        $currentRow++;
    }
}

print_r($data); //menampilkan data yang telah di baca


Jika sudah, simpan dan panggil file tersebut menggunakan command prompt, Jika tidak ada error setelah di runing akan muncul seperti ini di command prompt

dan karena penggalan code diatas sudah termasuk code untuk update spreead sheet maka di google spreadsheetnya di kolom S3 akan ada data baru yaitu tanggal.

Demikian program PHP sederhana untuk baca, tulis, dan update googlespread sheet.
Semoga bermanfaat.


Terimakasih

Assalamualaikum Wr Wb. 

Iklan13

Iklan14