December 21, 2024

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.


Loyihaning Asosiy Qismi

1.    Ilmiy asos: Ob-havo prognozlarini tahlil qilish uchun matematik statistikadan, vaqt seriyalari modellashidan va meteorologik ma’lumotlardan foydalaniladi.

2.    Dastur imkoniyatlari:

ü  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.


Kod: Ob-havo Prognozi Tizimi

Python

import tkinter as tk

from tkinter import ttk, messagebox

import requests

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

def get_weather_data(city):

params = {"q": city, "appid": API_KEY, "units": "metric"}

response = requests.get(BASE_URL, params=params)

if response.status_code == 200:

return response.json()

else:

return None

# Grafik interfeysni yaratish

class WeatherApp:

def __init__(self, root):

self.root = root

self.root.title("Ob-havo Prognozi")

self.root.geometry("800x600")

# 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)

# Matplotlib grafik oynasi

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)

def display_weather(self):

city = self.city_entry.get().strip()

if not city:

messagebox.showerror("Xato", "Shahar nomini kiriting!")

return

weather_data = get_weather_data(city)

if weather_data is None:

messagebox.showerror("Xato", "Ma'lumotlar topilmadi!")

return

# 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"]]

# Grafikni yangilash

self.ax.clear()

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.set_xlabel("Vaqt")

self.ax.set_ylabel("Qiymat")

self.ax.legend()

self.ax.tick_params(axis='x', rotation=45)

self.canvas.draw()

# Tkinter oynasini ishga tushirish

if __name__ == "__main__":

root = tk.Tk()

app = WeatherApp(root)

root.mainloop()


Tizimning asosiy elementlari

1.    OpenWeatherMap API:

o   Tizim ob-havo ma’lumotlarini olish uchun OpenWeatherMap API-dan foydalanadi.

o   API kalitini OpenWeatherMap ro‘yxatdan o‘tib olish kerak.

2.    Funktsiyalar:

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.


Qo‘shimcha imkoniyatlar:

  • 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.