-- Genel, Php

PHP ile Meteoroloji Hava Durumu Bilgileri Çekme (Güncel)

Daha önce çoğu kişi ülke geneli şehir ve gün bazlı güncel hava durumu bilgilerini mgm.gov.tr adresi üzerine şehir ismi gönderip çıkan sonucu kaynak kodundan cURL ile okuyup projelerinde gösteriyordu. Bende/bizde aynısını yapıyorduk 🙂 Farkettik ki meteoroloji web sitesi tasarımını ve teknolojisini değiştirmiş. Tabi cURL ile gelen bilgileri parse edenlerinde kodları patladı malesef.

Bugün düzeltme ihtiyacı ile tekrar düzenledim kodlarımı.

İhtiyacı olan kişiler için yeni bilgiler aşağıdaki gibi.

Öncelikle bilgileri artık bir servis adresi üzerine parametrre göndererek çekiyoruz. Adres http://212.175.180.28/api şeklinde.

Buraya ‘merkezler?il=Ankara‘ parametresi ile il adımızı göndererek o ile ait dataları çekeceğimiz anahtar veriler json formatında geliyor.

http://212.175.180.28/api/merkezler?il=Ankara tıklayın efendim.

Burada neler var?

Gibi bir sonuç dönecek. Burada genelde ‘sonDurumIstNo‘, ‘saatlikTahminIstNo‘, ‘gunlukTahminIstNo‘ alanları kullanılacaktır.

Eğer o an’a ait güncel hava tahmini verilerine ulaşmak istiyorsanız, yukarıda dönen sonuçlar arasından sonDurumIstNo değerini, verilen servis adresine ‘/sondurumlar?istno=17130’ (17130 verisini yukarıda şehir ismini gönderdiğimiz servis sonucundan elde ettik.) şeklinde gönderirseniz, aşağıdaki gibi bir data dönecektir.

Örn. http://212.175.180.28/api/sondurumlar?istno=17130

5 günlük bir hava tahmini verilerine ihtiyacınız varsa, yine aynı şekilde gunlukTahminIstNo verisini servis adresine ‘/tahminler/gunluk?istno=90601’ (90601 verisini yukarıda şehir ismini gönderdiğimiz servis sonucundan elde ettik.) şeklinde gönderirseniz, aşağıdaki gibi bir data dönecektir.

Örn. http://212.175.180.28/api/tahminler/gunluk?istno=90601

Gün içinde saatlik hava durumu bilgilerine erişim içinde saatlikTahminIstNo verisini servis adresine ‘/tahminler/saatlik?istno=17130’ (17130verisini yukarıda şehir ismini gönderdiğimiz servis sonucundan elde ettik.) şeklinde gönderirseniz, aşağıdaki gibi bir data dönecektir.

Örn. http://212.175.180.28/api/tahminler/saatlik?istno=17130

 

Bu verileri PHP‘de file_get_contents ile çekeceğiz.

Kod bloğunu çalıştırdığınızda sonucu göreceksiniz. Bu kod gönderdiğiniz şehir için kullanacağımız verileri dönüyor, en üstte gösterdiğim sonuç. Diğer bilgileride benzer şekilde çekebilir, gelen verileri istediğiniz gibi – meteoroloji adına konuşuyorum burada – kullanabilirsiniz.

Not:

Gelen json datalar içerisinde yer alan ‘hadise’ kısa kodlarının (örn. PB) açılımları aşağıdaki gibidir:

Saygılar.

 

Yorumla

Yorum

12 Yorum

  1. Merhaba Gökhan Bey,
    Öncelikle elinize sağlık…
    “ruzgarYonu”:20, satırında 20 rüzgarın derecesini mi belirtiyor yoksa onun da “PB”: “Parçalı Bulutlu”; gibi ayrı bir lejantı var mı? Eğer derece ise; 20’yi – “20 derece Kuzey Doğu” olarak mı düşüyoruz

    • Levent Bey merhaba,

      çok güzel bir noktayı fark etmişsiniz 🙂 Gerekli olmayınca ben hiç inceleme gereği duymamışım o noktada.
      Şimdi tekrar inceledim MGM sitesini. Kodlar içerisinde “ruzgarYonu” değerini yöne çeviren bir metot var. Aşağıda paylaşıyorum, “ruzgarYonu” değerini bu metottan geçirirseniz rüzgarın yön değerini verecektir.


      function convertruzgarYonu(ruzgarYonu) {
      if ((ruzgarYonu >= 0 && ruzgarYonu < 22.5) || (ruzgarYonu <= 360 && ruzgarYonu > 337.5))
      return "Kuzeyden";
      if (ruzgarYonu >= 22.5 && ruzgarYonu < 67.5) return "Kuzeydoğudan"; if (ruzgarYonu >= 67.5 && ruzgarYonu < 112.5) return "Doğudan"; if (ruzgarYonu >= 112.5 && ruzgarYonu < 157.5) return "Güneydoğudan"; if (ruzgarYonu >= 157.5 && ruzgarYonu < 202.5) return "Güneyden"; if (ruzgarYonu >= 202.5 && ruzgarYonu < 247.5) return "Güneybatıdan"; if (ruzgarYonu >= 247.5 && ruzgarYonu < 292.5) return "Batıdan"; if (ruzgarYonu >= 292.5 && ruzgarYonu < = 337.5) return "KuzeyBatıdan"; return ""; }

      Kolay gelsin.

  2. Merhaba,

    Çalışmanız için teşekkürler.
    Öncelikle php konusunda çok yeniyim(Hiç bilgim yok). Anladığım kadarıyla en alttaki kodu bir php dosyası oluşturup içine yazdım fakat sadece ilk kod penceresinde çıkanlar aynı şekilde sayfada gösterildi.
    Mesela İzmir için saatlik bilgileri, 5 günlük bilgileri düzenli şekilde bir sayfada nasıl gösterebilirim?
    Ayrıca “?il=İzmir&ilce=Karsiyaka” sekline url sonuna eklediğimizde ilçeleri görebiliyoruz. İlçe verisi çekmeyi de gösterirseniz yapmakta olduğum siteme eklemek istiyorum. Şimdiden çok teşekkürler.
    İyi çalışmalar.

  3. Bende kendimce birşeyler ekleyip gelen kullanıcıya güzel bir karşılama için veri ekledim fakat her hadise koduna uygun birşey bulamadım fikir verebilirmisiniz…

    “A”=>array(“D”=>”Açık”,”N”=>”Hava Açık Olacak Güzel Bir Gezme Havası”),
    “AB”=>array(“D”=>”Az Bulutlu”,”N”=>”Hava Az Bulutlu Olacak Güneş Yinede Kendini Gösterecek”),
    “PB”=>array(“D”=>”Parçalı Bulutlu”,”N”=>”Hava Parçalı Bulutlu Olacak Güneş Nadir Olasada Görülebilir”),
    “CB”=>array(“D”=>”Çok Bulutlu”,”N”=>”Hava Çok Bulutlu Olacak Güneşi Bu Gün Göremeyebilirsin”),
    “HY”=>array(“D”=>”Hafif Yağmurlu”,”N”=>”Hava Hafif Yağmurlu Olacak Montunu Almalısın.”),
    “Y”=>array(“D”=>”Yağmurlu”,”N”=>”Hava Yağmurlu Olacak Yağmurluğunu Unutma.”),

  4. Merhaba, çalışmanız için çok teşekkürler, emeğinize sağlık!
    Ancak hadise kodları içerisinde KGY açılımı bulunmuyor maalesef.

    • Halit merhaba,
      öncelikle teşekkür ederim. Yazıyı yayına aldığımda öyle bir kod yoktu 🙂 Uyarın için teşekkürler. Yeni kodu ve açılımı ekledim.
      “KGY”: “Kuvvetli Gökgürültülü Sağanak Yağışlı”;
      İyi çalışmalar.

  5. Merhaba Gökhan,
    emeğine sağlık güzel bilgiler sunmuşsun yalnız bana bunların yanında deniz suyu sıcaklıkları, kar kalınlıkları ve stadyum tahminlerini arıyorum bir türlü bulamadım, burada paylaşırsan takip deyim..

  6. slm kardes yav ben tam olarak hava durumu bilgisini almak istiyorum mesela sıcaklık 12 derce yagmurlu gibi ama burda hiç öle bisey goremedim istatistikno dediğim zaman boyle yazıyo 17060 up uzun bir rakam bana 12 derece yada 30 derece demiyor yardımcı olursan sevinirim..