Ob-havo prognozi tizimi: Ilm-fan va matematik ma’lumotlarga asoslangan dasturiy ta’minot yaratish.
Ob-havo prognozi tizimini yaratish uchun ilmiy va matematik ma’lumotlarni hisobga olgan holda, Python dasturlash tilida grafik interfeysga ega dastur ishlab chiqish mumkin. Quyidagi tizim foydalanuvchilarga ob-havo ma’lumotlarini olish va analiz qilish imkonini beradi.
1. Ilmiy asos: Ob-havo prognozlarini tahlil qilish uchun matematik statistikadan, vaqt seriyalari modellashidan va meteorologik ma’lumotlardan foydalaniladi.
ü Shaharni kiritib, ob-havo ma’lumotlarini olish.
ü Harorat, shamol tezligi va bosimni ko‘rsatish.
ü Grafik tarzda prognoz natijalarini vizualizatsiya qilish.
3. Interfeys: Tkinter yordamida grafik interfeys yaratiladi.
from tkinter import ttk, messagebox
import matplotlib.pyplot as plt
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
# API sozlamalari (OpenWeatherMap API-ni ishlatamiz)
API_KEY = "YOUR_API_KEY" # O'zingizning OpenWeatherMap API kalitingizni kiritishingiz kerak
BASE_URL = "http://api.openweathermap.org/data/2.5/forecast"
# Ob-havo ma’lumotlarini olish funksiyasi
params = {"q": city, "appid": API_KEY, "units": "metric"}
response = requests.get(BASE_URL, params=params)
if response.status_code == 200:
self.root.title("Ob-havo Prognozi")
# Shaharni kiritish uchun forma
self.city_label = ttk.Label(root, text="Shahar nomi:")
self.city_label.grid(row=0, column=0, padx=10, pady=10)
self.city_entry = ttk.Entry(root, width=30)
self.city_entry.grid(row=0, column=1, padx=10, pady=10)
self.search_button = ttk.Button(root, text="Qidirish", command=self.display_weather)
self.search_button.grid(row=0, column=2, padx=10, pady=10)
self.figure = plt.Figure(figsize=(8, 5), dpi=100)
self.ax = self.figure.add_subplot(111)
self.canvas = FigureCanvasTkAgg(self.figure, master=root)
self.canvas_widget = self.canvas.get_tk_widget()
self.canvas_widget.grid(row=1, column=0, columnspan=3)
city = self.city_entry.get().strip()
messagebox.showerror("Xato", "Shahar nomini kiriting!")
weather_data = get_weather_data(city)
messagebox.showerror("Xato", "Ma'lumotlar topilmadi!")
# Grafik ma’lumotlarini tahlil qilish
dates = [item["dt_txt"] for item in weather_data["list"]]
temperatures = [item["main"]["temp"] for item in weather_data["list"]]
pressures = [item["main"]["pressure"] for item in weather_data["list"]]
winds = [item["wind"]["speed"] for item in weather_data["list"]]
self.ax.plot(dates, temperatures, label="Harorat (°C)", color="blue")
self.ax.plot(dates, pressures, label="Bosim (hPa)", color="green")
self.ax.plot(dates, winds, label="Shamol tezligi (m/s)", color="red")
self.ax.set_title(f"{city} uchun ob-havo prognozi")
self.ax.tick_params(axis='x', rotation=45)
o Tizim ob-havo ma’lumotlarini olish uchun OpenWeatherMap API-dan foydalanadi.
o API kalitini OpenWeatherMap ro‘yxatdan o‘tib olish kerak.
o get_weather_data: Shahar nomiga ko‘ra ob-havo prognozini olish.
o display_weather: Olingan ma’lumotlarni analiz qilish va grafiklarni chizish.
3. Matplotlib grafiklari: Harorat, bosim va shamol tezligini grafikda ko‘rsatadi.
Foydalanish bo‘yicha ko‘rsatmalar
1. Kodni Python muhiti yoki IDEda ishga tushiring.
2. Tkinter interfeysi ochiladi.
3. Shahar nomini kiriting va "Qidirish" tugmasini bosing.
4. Harorat, bosim va shamol tezligining prognozi grafikda ko‘rsatiladi.
- Ma’lumotlarni CSV yoki JSON formatida saqlash.
- Foydalanuvchiga interaktiv harorat va boshqa parametrlar haqida xabar berish.
- Boshqa meteorologik elementlarni (yog‘ingarchilik, namlik) qo‘shish.
Bu tizim nafaqat o‘quvchilar uchun tushunishni osonlashtiradi, balki ilmiy va texnologik yondashuv orqali prognozlashni vizual o‘rgatish uchun mos keladi.