Kali ini sedikit orat oret untuk masalah membuat widget atau script guna menampilkan informasi cuaca yang bersumber dari situs resmi bmkg.go.id ke dalam website Anda. Sebenarnya pada situs bmkg sudah menyediakan data yang bersifat open yang bisa disingkronkan dengan website lain dalam beberapa klasifikasi, bisa dilihat di url ini http://data.bmkg.go.id/ yang didalamnya berupa kumpulan data xml. Kali ini hanya mengambil informasi cuaca saja dan lebih detailnya informasi cuaca pada sebuah 1 kota saja. Agar file xml tadi bisa ditampilkan diwebsite Anda, ada beberapa metode untuk mengaplikasikannya dan saya memilih untuk menggunakan metode parse xml.
Mungkin Anda juga pernah menjumpai metode lain untuk mengaplikasikanya menggunakan php curl, namun saya lebih cenderung untuk menggunakan metode parse xml, dan berikut dibawah merupakan contoh script pengambilan data prakiraan cuaca dari bmkg, lebih tepatnya informasi cuaca untuk propinsi jawa timur dengan kota Blitar:
<?php
$url = "http://data.bmkg.go.id/propinsi_16_1.xml"; // from http://data.bmkg.go.id/ sesuaikan dengan lokasi yang diinginkan
$sUrl = file_get_contents($url, False);
$xml = simplexml_load_string($sUrl);
for ($i=0; $i<sizeof($xml->Isi->Row); $i++) {
$row = $xml->Isi->Row[$i];
if(strtolower($row->Kota) == "blitar") {// blitar merupakan contoh kota yang diambil data cuacanya dari bmkg
echo "<b>" . strtoupper($row->Kota) . "</b><br/>";
echo "<img src='http://www.bmkg.go.id/ImagesStatus/" . $row->Cuaca . ".gif' alt='" . $row->Cuaca . "'><br/>";
echo "Cuaca : " . $row->Cuaca . "<br/>";
echo "Suhu : " . $row->SuhuMin . " - ".$row->SuhuMax . " °C<br/>";
echo "Kelembapan : " . $row->KelembapanMin . " - " . $row->KelembapanMax . " %<br/>";
echo "Kecepatan Angin : " . $row->KecepatanAngin . " (km/jam)<br/>";
echo "Arah Angin : " . $row->ArahAngin . "<br/>";
break;
}
}
?>
dan berikut hasil priview dari scipt diatas;

Apabila ingin menggunakan lewat metode php curl berikut contohnya dibawah:
<?php
function fungsiCurl($url){
$data = curl_init();
curl_setopt($data, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($data, CURLOPT_URL, $url);
curl_setopt($data, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6");
$hasil = curl_exec($data);
curl_close($data);
return $hasil;
}
$url = fungsiCurl('http://www.bmkg.go.id/BMKG_Pusat/Informasi_Cuaca/Prakiraan_Cuaca/Prakiraan_Cuaca_Indonesia.bmkg');
$pecah = explode('<h1>Prakiraan Cuaca Indonesia</h1>',$url);
$pecah2 = explode('<h3>Cuaca Propinsi Lainnya :</h3>',$pecah[1]);
$result = $pecah2[0];
$result = preg_replace("/<img[^>]+\>/i", "", $result);
print_r($result);
?>
Tidak seperti metode parse xml php, untuk metode diatas yang menggunakan curl php akan menampikan informasi yang diambil dari link
http://www.bmkg.go.id/BMKG_Pusat/Informasi_Cuaca/Prakiraan_Cuaca/Prakiraan_Cuaca_Indonesia.bmkg
ditampilkan berupa tabel, dan berikut tampilannya:

Untuk lebih lanjutnya mengenai metode php curl Anda bisa langsung menuju ke link ini karena sumber dari metode dari php curl saya ambil dari ruang sebelah teman, :-)



6 Comments
Hallo mas. Wah makasih nih mas, code-nya berguna banget. Saya pakai untuk aplikasi penelitian saya.
ReplyDeleteMau tanya mas. Saya pake metode parse xml. Saya buat form html supaya user bisa pilih propinsi dan kabupaten. Value dari pilihan propinsi akan jadi kode propinsi (misalnya 16, seperti yang di contoh code). Jadi code-nya begini:
$url = 'http://data.bmkg.go.id/propinsi_'$id_p'_2.xml';
Tapi variabel $url jadi kepotong. Jadi error deh
Gtu juga di bagian kota, juga saya ganti jadi variabel yang nilainya dari form html. Code-nya jadi begini:
if(strtolower($row->Kota) == '$kabkot')
Bener begitu nggak mas?
Makasih
coba koreksi ya, ini yang saya buat untuk menampilkan info area propinsi Jawa Timur berikut dengan kotanya, link downloadnya ini:
ReplyDeletehttps://albertsukmono.github.io/escampur/albert/uploads/2015/09/prakiraan-cuaca-propinsi-jatim.php_.zip
kalau ada akun di Github bisa belajar bareng nanti, semoga bisa membantu walau sedikit. Terimakasih
Hihi.. Udah bisa mas. Solusinya variable $url saya pecah jadi 3:
ReplyDelete$urlA = "http://data.bmkg.go.id/propinsi_";
$urlB = $id_p;
$urlC = "_1.xml";
Terus digabung jadi:
$urlGab = "$urlA$urlB$urlC";
Baru deh variable $urlGab dipake untuk ngisi variable $sUrl
Buat yang variable kota, saya nggak pake strtolower, jadinya:
if($row->Kota == $kabkot) {
}
lengkapnya begini:
http://arif.mit.biotrop.org/indexanalisis.rar
makasih mas :-)
Okey siap..sama-sama mas..
ReplyDeleteini saya baru buka filenya mas, pakek frameworknya bootstrap ya,,siip..
ada dua file config dan db yang gak ada, jadi gak bisa dilihat hasilnya...
maaap...pak...sy coba kok tulisannya begini apa yg salah ya.... Object not found!
DeleteThe requested URL was not found on this server. If you entered the URL manually please check your spelling and try again.
If you think this is a server error, please contact the webmaster.
Error 404
keren bro bisa kotak katik php prakiraan cuaca
ReplyDelete