Buğday (Triticum aestivum L.) ve arpa (Hordeum vulgare L.), dünya genelinde en fazla üretilen tahıl türleri arasında yer almakta ve küresel gıda güvenliğinde kritik bir role sahip bulunmaktadır. Bu stratejik ürünlerin sürdürülebilir üretiminde en önemli sınırlayıcı faktörlerden biri fungal kökenli kök ve kökboğazı çürüklükleridir. Bu hastalık kompleksi, toprak kökenli patojenlerin neden olduğu ve özellikle stres koşullarında ciddi verim kayıplarına yol açan bir sendromdur. Kök ve kökboğazı çürüklüklerinin etmenleri arasında Fusarium türleri (özellikle F. culmorum ve F. pseudograminearum), Bipolaris sorokiniana, Rhizoctonia cerealis ve Pseudocercosporella herpotrichoides başlıca yer almaktadır. Bu patojenlerin her biri farklı ekolojik koşullarda baskın hale gelebilmekte ve çeşitli belirtiler oluşturmaktadır. Hastalığın karmaşık doğası, çoklu etmen varlığı ve çevresel faktörlere bağımlılığı, mücadelesini zorlaştıran temel unsurlardır. Modern tarımda sürdürülebilir üretim anlayışı çerçevesinde, kimyasal mücadele yöntemlerinin tek başına yeterli olmadığı ve çevresel riskleri de beraberinde getirdiği kabul edilmektedir. Bu nedenle, entegre hastalık yönetimi (IDM) yaklaşımının benimsenmesi gerekmektedir. Bu yaklaşım, kültürel önlemler, biyolojik mücadele, dayanıklı çeşit kullanımı ve gerektiğinde kimyasal uygulamaları içeren holistik bir stratejiyi ifade etmektedir.
HASTALLIK ETMENLERİ VE MORFOLOJİK ÖZELLİKLERİ
Fusarium türleri
Fusarium pseudograminearum Aoki & O'Donnell
F. pseudograminearum, buğday ve arpada kök çürüklüğünün başlıca etmenlerinden biridir. Bu türün teşhis edici morfolojik özellikleri şunlardır:
- Fialit yapısı: Fialitleri üzerinde boğumun hemen yanında karakteristik bir bölme oluşur
- Makrokonidiler: Belirgin ayak hücreli, genellikle 5-6 bölmeli, hafifçe kıvrık ve düz yapıda
- Klamidospor oluşumu: Besi yerinde klamidospor oluşturma kapasitesine sahiptir
- Pigmentasyon: PDA ve SNA ortamlarında karmen kırmızısı renk oluşturur
Fusarium culmorum (WG Smith) Sacc.
F. culmorum'un ayırt edici karakteristikleri:
- Makrokonidiler: Kültürde bol miktarda kısa ve kalın görünümlü makrokonidiyum oluşturur
- Bölme sayısı: Makrokonidiyumları genellikle 4-5 bölmeli olup, belirgin bir ayak hücresi bulunmaz
- Klamidospor: Kültürde klamidospor oluşturur
- Renk: Oluşturduğu pigmentler nedeniyle somon rengi karakteristiktir
Bipolaris sorokiniana (Sacc.)
B. sorokiniana'nın morfolojik özellikleri:
- Konidioforlar: Koyu kahverengi, kısa yapıda, çoğunlukla tek veya küçük gruplar halinde, düz veya kıvrık, 110-150 x 6-10 µm boyutlarında
- Konidiosporlar: 3-10 bölmeli, 60-120 x 5-20 µm boyutlarında
- Yaşam döngüsü: Hem tohumla hem de bitki artıkları ile bir yıldan diğerine geçiş gösterir
Rhizoctonia cerealis Van der Hoeven
R. cerealis'in karakteristik özellikleri:
- Hif yapısı: Hifleri dik açı oluşturacak şekilde yan dallar oluşturur
- Bölmeler: Yan dallar üzerinde boğumun hemen yanında bölme meydana gelir
- Renk değişimi: Miseller gençken şeffaf, sonra sarımtırak, yaşlandıkça koyu kahverengi hal alır
- Yaşam süresi: Toprakta uzun süre canlı kalabilme yeteneğine sahiptir
Pseudocercosporella herpotrichoides Ggt.
P. herpotrichoides'in morfolojik karakteristikleri:
- Vejetatif miseller: Genellikle sarı ile kahverengi uzun hücrelere sahip
- Stroma miselleri: Çok hücreli, kalın duvarlı ve poligonal yapıda
- Sporlar: Çoğunlukla 5-7 bölmeli, ince uzun yapıda, genellikle 40-60 x 1.5-3.5 µm boyutlarında
- Besiyeri gelişimi: PDA besiyerinde az sayıda da olsa gelişebilme kapasitesi
EPİDEMİYOLOJİ VE ÇEVRESEL FAKTÖRLER
İnokulumun Kaynağı ve Yaşam Döngüsü
Kök ve kökboğazı çürüklüğü etmenleri hem toprak hem de tohum kökenli patojenlerdir. Bu funguslar toprakta bitki artıkları üzerinde iki yıldan fazla canlılıklarını koruyabilme yeteneğine sahiptir. Bitki artıklarının toprak yüzeyinde bekletilmesi durumunda, patojenlerin yaşamlarını sürdürmeleri kolaylaşmaktadır.
İnokulumun birincil kaynakları:
- Enfekteli tohumlar: Patojenler tohum üzerinde veya içinde bulunarak yeni alanlara taşınır
- Topraktaki bitki artıkları: Önceki sezondan kalan enfekteli sap, kök ve yaprak kalıntıları
- Topraktaki sklerot ve klamidosporlar: Uzun süre canlılığını koruyabilen dayanıklı yapılar
Hastalığı Etkileyen Çevresel Faktörler
İklim Koşulları
- Fusarium türleri: Kurak geçen uzun ilkbahar periyodundan sonraki yağışlarda şiddetli hastalık oluşturur.
- B. sorokiniana: Sıcak ve nemli koşullarda gelişim gösterir.
- R. cerealis: Sonbaharda yağış ve sulamanın iyi olması durumunda bitkiler daha dirençli hale gelir.
- P. herpotrichoides: İlkbahar yağışlarında fungusun hifleri genç yaprak kınlarına ulaşır. Toprak Koşulları
- Ağır topraklar: Oksijenin yetersiz olduğu ağır topraklarda hastalık daha şiddetli gelişir.
- Zayıf topraklar: Besin elementi eksikliği olan topraklarda hastalık artışı gözlenir.
- Toprak işleme: Minimal toprak işlemesi yapılan alanlarda hastalık daha yoğun görülür.
HASTALLIK BELİRTİLERİ VE TEŞHİS
Genel Belirtiler
Kök ve kökboğazı çürüklüklerinin ortak belirtileri:
- Fide döneminde: Sararma, gelişme geriliği ve ölümler
- Vejetatif dönemde: Bitki boyunun kısalması, kardeşlenmenin azalması
- Generatif dönemde: "Beyaz başak" oluşumu, başaklarda bükülme
- Kök sisteminde: Kahverengi-siyah çürük lekeler, kök sisteminin zayıflaması
Etmene Özgü Belirtiler
Fusarium Belirtileri
- Bitkinin tacında ve yaprak kınının altında pembe renklenme
- Sap ve boğumda bal rengi görünüm
- Enfekteli kökler plastik torbaya konulduğunda pembe renklenmenin belirginleşmesi
- Çiçeklenme döneminde beyaz başak oluşumu
- Gövde kurtlarının da etkisiyle sap içinden kesilme
Bipolaris sorokiniana Belirtileri
- Kök ve kökboğazında koyu veya soluk kahverengi lekeler
- Yapraklarda noktalar halinde nekrotik lekeler
- Başakta kavuz ve tane yanıklığı
- Embriyo kararması
- Tüm gelişme dönemlerinde ve organ sistemlerinde hastalık
Rhizoctonia cerealis Belirtileri
- Bitkilerde donuk, mor veya koyu yeşil renk değişimi
- Kök sisteminin kısalması ve kahverengileşmesi
- Bitki saplarında kenarları belirgin oval lekeler
- Gelişme geriliği ve genel zayıflık
Pseudocercosporella herpotrichoides Belirtileri
- Genç yaprak kınlarında ve saplarda donuk oval lekeler
- Lekelerin kenarlarında kahverengi görünüm
- Lekelerin ortasında siyah stromaya ait püstüller
- Çürük kısımlardan bitkinin kıvrılması ve gelişigüzel yatması
- Hasat döneminde boş başaklar ve cılız taneler
EKONOMİK ÖNEMİ VE YAYILIŞI
Ekonomik Kayıplar
Kök ve kökboğazı çürüklükleri, uygun koşulların oluştuğu durumlarda %50 veya daha fazla ürün kaybına neden olabilmektedir. Bu kayıplar aşağıdaki faktörlerden kaynaklanmaktadır:
- Fide ölümleri: Erken dönem enfeksiyonları sonucu bitki populasyonunda azalma
- Verim elementlerinde azalma: Başak sayısı, başakta tane sayısı ve bin tane ağırlığında düşüş
- Kalite kayıpları: Tane ağırlığı, protein içeriği ve teknolojik kalite parametrelerinde bozulma
- İkincil enfeksiyonlar: Zayıflayan bitkilerin diğer hastalık ve zararlılara karşı duyarlılığının artması
Coğrafi Yayılış
Türkiye'de hastalık etmenlerinin dağılımı bölgesel farklılıklar göstermektedir:
- Marmara ve Ege Bölgeleri: F. pseudograminearum ve P. herpotrichoides daha yaygın
- Tüm bölgeler: F. culmorum ve R. cerealis yaygın olarak rastlanır
- İç Anadolu: Kurak koşullar nedeniyle Fusarium türleri baskın
- Karadeniz Bölgesi: Yüksek nem nedeniyle B. sorokiniana daha sık görülür.
MÜCADELE STRATEJİLERİ
Kültürel Mücadele Yöntemleri
Kültürel mücadele, sürdürülebilir hastalık yönetiminin temel taşını oluşturmaktadır. Bu yaklaşım, hastalığın gelişimi için uygun olmayan koşullar oluşturaarak patojen popülasyonunu azaltmayı hedeflemektedir.
Dayanıklı Çeşit Kullanımı
Dayanıklı çeşit kullanımı, en ekonomik ve çevre dostu mücadele yöntemidir. Dayanıklılık ıslahında dikkat edilmesi gereken hususlar:
- Horizontal dayanıklılık: Birden fazla patojene karşı geniş spektrumlu dayanıklılık
- Çeşit çeşitliliği: Tek çeşit kullanımından kaçınarak genetik çeşitliliği koruma
- Bölgesel uyum: Yerel koşullara uygun çeşit seçimi
- Erkencilik faktörü: Geççi çeşitlerin hastalıklara karşı daha dayanıklı olma eğilimi
Ürün Rotasyonu
Ürün rotasyonu, hastalık döngüsünü kırarak inokulumu azaltan temel bir yöntemdir:
- Fusarium türleri için: 2-3 yıllık rotasyon önerilir.
- Konukçu olmayan bitkiler: Baklagiller, ayçiçeği gibi alternatif ürünler
- Tuzak bitki olarak yulaf: Fusarium türlerinin popülasyonunu azaltan özel bir rotasyon elemanı
Toprak İşleme ve Anız Yönetimi
Etkili toprak işleme ve anız yönetimi stratejileri:
- Anızların gömülmesi: Bitki artıklarının toprağa karıştırılarak çürüme sürecinin hızlandırılması
- Ekim öncesi temizlik: Topraktaki yeşil bitki ve artıklarının yok edilmesi
- Uygun ekim derinliği: Tohumun optimum koşullarda çimlenmesini sağlama
- Toprak tavı: Ekim sırasında uygun nem seviyesinin korunması
Beslenme Yönetimi
Dengeli beslenme, bitkinin hastalığa karşı direncini artıran kritik bir faktördür:
- Azot yönetimi: Aşırı azot uygulamasından kaçınma
- Fosfor ve potasyum: Kök gelişimini destekleyici besin elementleri
- İz elementler: Çinko, mangan, demir eksikliklerinin giderilmesi
- Organik madde: Toprak mikrobiyotasını zenginleştirme
Kimyasal Mücadele
Kimyasal mücadele, özellikle tohum ilaçlaması şeklinde uygulandığında etkili sonuçlar vermektedir. Ancak bu yöntem, entegre mücadele sisteminin bir parçası olarak kullanılmalıdır.
Tohum İlaçlaması
Tohum ilaçlaması, hastalık mücadelesinin en kritik aşamalarından biridir:
Uygulama zamanı: Ekimden hemen önce
Uygulama tekniği: İlacın tohum yüzeyini tamamen kaplaması
Kullanılan ekipmanlar: Selektörlü ilaçlama makineleri veya karıştırıcı düzenekler
Aktif Maddeler ve Ticari Ürünler
Güncel olarak kullanılan başlıca aktif maddeler ve ürünler:
Prochloraz + Tetraconazole kombinasyonları:
- Fusazil (Syngenta): 200 ml/da fungisit uygulaması
- Hem yaprak/gövde koruyucu hem toprak etkili
- PHI süresi yaklaşık 56 gün
Fludioxonil + Sedaxane kombinasyonları:
- Dooku (Syngenta): 150 ml/100 kg tohum
- Özellikle tohum ilaçlaması için formüle edilmiş
- Rhizoctonia, Fusarium, Pythium ve Bipolaris'e karşı etkili
Carboxin + Thiram kombinasyonları:
- Vitavax 200 FF: Geleneksel tohum ilaçları
- Geniş spektrumlu koruyucu etki
- Tohum kaynaklı enfeksiyonlara karşı etkili
Direnç Yönetimi
Fungisit direncinin gelişimini önlemek için:
- Aktif madde rotasyonu: Farklı etki mekanizmalı fungisitlerin dönüşümlü kullanımı
- Kombinasyon ürünleri: Farklı gruplardan aktif maddelerin birlikte kullanımı
- Doz optimizasyonu: Etiket dozlarına uygun uygulama
Entegre Hastalık Yönetimi
Entegre hastalık yönetimi, birden fazla mücadele yönteminin sinerjik etkisinden yararlanır:
Temel İlkeler
- Önleme odaklı yaklaşım: Hastalığın oluşumunu engelleme
- Çok bileşenli sistem: Farklı yöntemlerin koordineli kullanımı
- Ekonomik eşik: Maliyet-fayda analizine dayalı karar verme
- Çevre duyarlılığı: Ekolojik dengenin korunması
Monitoring ve Karar Destek Sistemleri
Modern tarımda hastalık yönetimi için teknolojik araçların kullanımı:
İklim tabanlı tahmin modelleri:
- Sıcaklık, nem ve yağış verilerine dayalı risk analizi
- Hastalık gelişimi için kritik dönemlerin belirlenmesi
Uzaktan algılama teknolojileri:
- Uydu görüntüleri ile stresli alanların tespiti
- Drone teknolojisi ile yüksek çözünürlüklü haritalama
Mobil uygulamalar:
- Plantix, Agrobase gibi hastalık teşhis uygulamaları
- Fotoğraf tabanlı otomatik tanı sistemleri
Yapay zeka tabanlı sistemler:
- Makine öğrenmesi algoritmaları ile hastalık tahmini
- Büyük veri analizi ile optimize edilmiş mücadele önerileri
YENİ TEKNOLOJİLER VE GELECEĞE BAKIŞ
Moleküler Teşhis Yöntemleri
Geleneksel morfolojik teşhis yöntemlerine ek olarak, moleküler teknikler daha hızlı ve kesin sonuçlar sunmaktadır:
- PCR tabanlı yöntemler: Spesifik primer çiftleri ile hızlı teşhis
- Gerçek zamanlı PCR (qPCR): Patojenlerin kantitasyonu
- DNA barkodlama: Tür düzeyinde kesin identifikasyon
- Metagenomik analizler: Toprak mikrobiota analizleri
Hassas Tarım Teknolojileri
Hassas tarım yaklaşımı ile hastalık yönetimi:
Değişken oranlı uygulama:
- GPS tabanlı hassas ilaçlama sistemleri
- Tarla içi değişkenliğe göre optimize edilmiş dozlar
Sensör teknolojileri:
- Toprak nem ve sıcaklık sensörleri
- Bitki stres durumu monitörleme sistemleri
Otomasyon sistemleri:
- Otonom ilaçlama robotları
- Yapay zeka destekli karar verme sistemleri
Biyolojik Mücadele Potansiyeli
Sürdürülebilir tarım anlayışı çerçevesinde biyolojik mücadele alternatiflerinin geliştirilmesi:
Antagonist mikroorganizmalar:
- Trichoderma türleri
- Bacillus subtilis ve benzeri bakteriler
- Pseudomonas fluorescens grubu bakteriler
Biyolojik fungisitler:
- Mikrobiyal kaynaklı aktif maddeler
- Doğal kaynaklı bitki koruma ürünleri
Genetik İyileştirme ve Islah Programları
Modern ıslah teknikleri ile hastalığa dayanıklı çeşit geliştirme:
Marker destekli seleksiyon:
- DNA markerları ile dayanıklılık genlerinin takibi
- Piramitleme stratejileri ile çoklu gen transferi
Genomik seleksiyon:
- Genom çapında ilişkilendirme çalışmaları
- Tahmin modellerinin ıslah programlarında kullanımı
DEĞERLENDİRME VE İZLEME SİSTEMLERİ
Hastalık Şiddeti Değerlendirmesi
Standardize edilmiş değerlendirme protokolleri:
Arazi örneklemesi:
- Tarla büyüklüğüne göre örnekleme noktası sayısı
- Köşegen yöntemi ile objektif örnekleme
Skala sistemi (0-7):
- 0: Bitki sağlam (%0)
- 1: Az sararma (%1-15) - Kök ve kökboğazı sararmış
- 3: Orta derecede sararma (%16-40) - Kahverengileşme 1. yaprak kınına kadar
- 5: Şiddetli sararma (%41-70) - Kök ve kökboğazı kahverengi, yapraklarda lekeler
- 7: Bitki ölü (%71-100)
Mücadele Etkinliğinin Değerlendirilmesi
Kritik değerlendirme dönemleri:
- 2-4 yapraklı dönem: Erken enfeksiyon kontrolü
- Süt olum dönem: Geç dönem etkinlik değerlendirmesi
Karşılaştırmalı analizler:
- İlaçlı ve ilaçsız parsel karşılaştırmaları
- Farklı mücadele yöntemlerinin etkinlik analizi
Buğday ve arpada kök ve kökboğazı çürüklükleri, karmaşık etiyolojiye sahip multifaktöryel bir hastalık kompleksidir. Bu hastalıkların başarılı bir şekilde yönetilmesi, entegre mücadele yaklaşımının benimsenmesiyle mümkündür.
Temel Öneriler
Kısa vadeli stratejiler: - Tohum kalitesi: Sertifikalı, hastalıksız tohum kullanımı
- Tohum ilaçlaması: Uygun fungisitlerle tohum koruma
- Dayanıklı çeşit: Bölgesel koşullara uygun dayanıklı çeşit seçimi
- Ekim zamanı: Optimum ekim zamanına uyma
Orta vadeli stratejiler: - Rotasyon planlaması: 2-3 yıllık ürün rotasyonu uygulaması
- Toprak iyileştirme: Organik madde artışı ve pH düzenleme
- Su yönetimi: Drenaj sistemlerinin iyileştirilmesi
- Besin yönetimi: Dengeli gübreleme programları
Uzun vadeli stratejiler: - Çeşit geliştirme: Dayanıklı çeşit ıslah programları
- Sürdürülebilir sistem: Ekolojik dengeyi koruyan üretim sistemleri
- Teknoloji entegrasyonu: Hassas tarım teknolojilerinin adaptasyonu
BİTKİ HASTALIK RİSK TAHMİN SİSTEMİ
python
GEREKLİ KÜTÜPHANELER
import pandas as pd
import numpy as np
import requests
import json
from datetime import datetime, timedelta
from sklearn.ensemble import RandomForestRegressor, GradientBoostingRegressor
from sklearn.model_selection import train_test_split, cross_val_score
from sklearn.metrics import mean_absolute_error, r2_score
from sklearn.preprocessing import StandardScaler
import folium
from folium.plugins import HeatMap, MarkerCluster
from prophet import Prophet
import plotly.express as px
import plotly.graph_objects as go
from plotly.subplots import make_subplots
import warnings
warnings.filterwarnings('ignore')
⚙️ YAPILANDIRMA AYARLARI
class Config:
OPENWEATHER_API_KEY = "SENİN_API_KEY_BURAYA"
NASA_API_KEY = "NASA_API_KEY_BURAYA" # NDVI verisi için
Marmara Bölgesi Koordinatları (önemli tarım alanları)
MARMARA_LOCATIONS = {
'İstanbul': (41.0082, 28.9784),
'Bursa': (40.1885, 29.0610),
'Tekirdağ': (40.9781, 27.5110),
'Kocaeli': (40.7652, 29.9401),
'Sakarya': (40.7731, 30.3940),
'Balıkesir': (39.6537, 27.8903),
'Çanakkale': (40.1553, 26.4142),
'Edirne': (41.6771, 26.5550),
'Kırklareli': (41.7356, 27.2250)
}
Bitki türleri ve risk parametreleri
BITKI_TURLERI = {
'zeytin': {'ideal_sicaklik': (15, 30), 'nem_limit': 75, 'ndvi_min': 0.3},
'uzum': {'ideal_sicaklik': (18, 28), 'nem_limit': 80, 'ndvi_min': 0.4},
'domates': {'ideal_sicaklik': (20, 30), 'nem_limit': 70, 'ndvi_min': 0.5},
'misir': {'ideal_sicaklik': (18, 32), 'nem_limit': 65, 'ndvi_min': 0.6},
'bugday': {'ideal_sicaklik': (10, 25), 'nem_limit': 60, 'ndvi_min': 0.4}
}
📊 VERİ YÖNETİMİ SINIFI
class VeriYoneticisi:
def __init__(self):
self.weather_data = {}
self.hastalik_verisi = self._tarihsel_hastalik_verisi_olustur()
def _tarihsel_hastalik_verisi_olustur(self):
"""Tarihsel bitki hastalık verisi simülasyonu"""
tarihler = pd.date_range(start='2020-01-01', end=datetime.now(), freq='D')
data = []
for tarih in tarihler:
for sehir, koordinat in Config.MARMARA_LOCATIONS.items():
Mevsimsel etki
mevsim = (tarih.month % 12 + 3) // 3
mevsim_etkisi = {1: 0.1, 2: 0.3, 3: 0.6, 4: 0.2}[mevsim]
Rastgele hastalık vakaları (gerçek veride API'den çekilecek)
hastalik_olasilik = 0.1 + mevsim_etkisi * 0.3
hastalik_vakasi = np.random.binomial(1, hastalik_olasilik)
data.append({
'tarih': tarih,
'sehir': sehir,
'enlem': koordinat[0],
'boylam': koordinat[1],
'hastalik_vakasi': hastalik_vakasi,
'mevsim': mevsim
})
return pd.DataFrame(data)
def hava_durumu_verisi_cek(self, gun_sayisi=30):
"""OpenWeatherMap API'den hava durumu verisi çekme"""
base_url = "http://api.openweathermap.org/data/2.5/onecall/timemachine"
for sehir, (lat, lon) in Config.MARMARA_LOCATIONS.items():
try:
Geçmiş 30 günlük veri
end_date = datetime.now()
start_date = end_date - timedelta(days=gun_sayisi)
gunluk_veriler = []
for i in range(gun_sayisi):
tarih = start_date + timedelta(days=i)
timestamp = int(tarih.timestamp())
url = f"{base_url}?lat={lat}&lon={lon}&dt={timestamp}&appid={Config.OPENWEATHER_API_KEY}&units=metric&lang=tr"
response = requests.get(url)
if response.status_code == 200:
gun_data = response.json()
gunluk_veriler.append({
'tarih': tarih,
'sehir': sehir,
'enlem': lat,
'boylam': lon,
'sicaklik': gun_data['current']['temp'],
'nem': gun_data['current']['humidity'],
'ruzgar_hizi': gun_data['current']['wind_speed'],
'yagis': gun_data['current'].get('rain', {}).get('1h', 0),
'basinc': gun_data['current']['pressure'],
'bulutluluk': gun_data['current']['clouds']
})
self.weather_data[sehir] = pd.DataFrame(gunluk_veriler)
print(f"✅ {sehir} hava durumu verisi çekildi")
except Exception as e:
print(f"❌ {sehir} veri çekme hatası: {e}")
def ndvi_verisi_olustur(self):
"""NDVI verisi simülasyonu (gerçek projede NASA veya Copernicus API)"""
ndvi_data = []
for sehir, (lat, lon) in Config.MARMARA_LOCATIONS.items():
for i in range(30): # Son 30 gün
tarih = datetime.now() - timedelta(days=30-i)
Mevsimsel NDVI varyasyonu
mevsim_etkisi = np.sin(2 * np.pi * tarih.timetuple().tm_yday / 365)
ndvi = 0.4 + 0.3 * mevsim_etkisi + np.random.normal(0, 0.05)
ndvi = max(0.1, min(0.9, ndvi)) # 0.1-0.9 arası sınırla
ndvi_data.append({
'tarih': tarih,
'sehir': sehir,
'enlem': lat,
'boylam': lon,
'ndvi': ndvi
})
return pd.DataFrame(ndvi_data)
🧠 MAKİNE ÖĞRENMESİ MODELİ
class RiskTahminModeli:
def __init__(self):
self.model = None
self.scaler = StandardScaler()
self.feature_importance = None
def veri_hazirla(self, hava_verisi, ndvi_verisi, hastalik_verisi):
"""Tüm verileri birleştir ve özellik mühendisliği yap"""
Verileri birleştir
merged_data = hava_verisi.merge(ndvi_verisi, on=['tarih', 'sehir', 'enlem', 'boylam'])
merged_data = merged_data.merge(hastalik_verisi, on=['tarih', 'sehir', 'enlem', 'boylam'])
Özellik mühendisliği
merged_data['yil'] = merged_data['tarih'].dt.year
merged_data['ay'] = merged_data['tarih'].dt.month
merged_data['hafta'] = merged_data['tarih'].dt.isocalendar().week
merged_data['mevsim'] = (merged_data['ay'] % 12 + 3) // 3
Hareketli ortalamalar
merged_data['sicaklik_7gun_ortalama'] = merged_data.groupby('sehir')['sicaklik'].transform(
lambda x: x.rolling(7, min_periods=1).mean()
)
merged_data['nem_7gun_ortalama'] = merged_data.groupby('sehir')['nem'].transform(
lambda x: x.rolling(7, min_periods=1).mean()
)
Risk ön göstergeleri
merged_data['yuksek_nem_risk'] = (merged_data['nem'] > 75).astype(int)
merged_data['ideal_sicaklik'] = ((merged_data['sicaklik'] >= 15) &
(merged_data['sicaklik'] <= 30)).astype(int)
return merged_data
def egit(self, X, y):
"""Modeli eğit"""
Veriyi ölçeklendir
X_scaled = self.scaler.fit_transform(X)
Random Forest modeli
self.model = RandomForestRegressor(
n_estimators=300,
max_depth=15,
min_samples_split=5,
min_samples_leaf=2,
random_state=42,
n_jobs=-1
)
Çapraz doğrulama
cv_scores = cross_val_score(self.model, X_scaled, y, cv=5, scoring='r2')
print(f"📊 Çapraz Doğrulama R² Skorları: {cv_scores}")
print(f"📊 Ortalama R²: {cv_scores.mean():.3f}")
Model eğitimi
self.model.fit(X_scaled, y)
Özellik önem dereceleri
self.feature_importance = pd.DataFrame({
'feature': X.columns,
'importance': self.model.feature_importances_
}).sort_values('importance', ascending=False)
return self
def tahmin_et(self, X):
"""Tahmin yap"""
X_scaled = self.scaler.transform(X)
return self.model.predict(X_scaled)
📈 GÖRSELLEŞTİRME SINIFI
class Gorsellestirme:
def __init__(self, data):
self.data = data
def interaktif_harita_olustur(self):
"""Interaktif risk haritası oluştur"""
Harita merkezi (Marmara bölgesi)
m = folium.Map(location=[40.5, 29.0], zoom_start=8)
Marker kümeleme
marker_cluster = MarkerCluster().add_to(m)
Renk skalası (yeşil -> kırmızı)
def risk_renk(risk):
if risk < 20: return 'green'
elif risk < 40: return 'lightgreen'
elif risk < 60: return 'orange'
elif risk < 80: return 'lightred'
else: return 'red'
Her şehir için marker ekle
for sehir in self.data['sehir'].unique():
sehir_data = self.data[self.data['sehir'] == sehir].iloc[-1] # Son veri
lat, lon = Config.MARMARA_LOCATIONS[sehir]
Popup içeriği
popup_html = f"""
{sehir}
Risk Skoru: {sehir_data['risk_skoru']:.1f}/100
Sıcaklık: {sehir_data['sicaklik']:.1f}°C
Nem: {sehir_data['nem']:.1f}%
Yağış: {sehir_data['yagis']:.1f} mm
NDVI: {sehir_data['ndvi']:.3f}
Tarih: {sehir_data['tarih'].strftime('%d.%m.%Y')}
"""
folium.Marker(
location=[lat, lon],
popup=folium.Popup(popup_html, max_width=300),
tooltip=f"{sehir} - Risk: {sehir_data['risk_skoru']:.1f}",
icon=folium.Icon(color=risk_renk(sehir_data['risk_skoru']), icon='leaf')
).add_to(marker_cluster)
HeatMap ekle
heat_data = [[row['enlem'], row['boylam'], row['risk_skoru']]
for _, row in self.data.iterrows()]
HeatMap(heat_data, radius=15, blur=10, max_zoom=1).add_to(m)
m.save('marmara_bitki_risk_haritasi.html')
print("🗺️ Interaktif harita oluşturuldu: marmara_bitki_risk_haritasi.html")
return m
def zaman_serisi_grafigi(self):
"""Zaman serisi grafiği oluştur"""
fig = make_subplots(
rows=2, cols=1,
subplot_titles=('Risk Skoru Değişimi', 'Meteorolojik Veriler'),
vertical_spacing=0.1
)
Risk skoru grafiği
for sehir in self.data['sehir'].unique():
sehir_data = self.data[self.data['sehir'] == sehir]
fig.add_trace(
go.Scatter(x=sehir_data['tarih'], y=sehir_data['risk_skoru'],
name=sehir, mode='lines+markers'),
row=1, col=1
)
Meteorolojik veriler
ornek_sehir = list(Config.MARMARA_LOCATIONS.keys())[0]
ornek_data = self.data[self.data['sehir'] == ornek_sehir]
fig.add_trace(
go.Scatter(x=ornek_data['tarih'], y=ornek_data['sicaklik'],
name='Sıcaklık (°C)', line=dict(color='red')),
row=2, col=1
)
fig.add_trace(
go.Scatter(x=ornek_data['tarih'], y=ornek_data['nem'],
name='Nem (%)', line=dict(color='blue'), yaxis='y2'),
row=2, col=1
)
fig.update_layout(
title='Marmara Bölgesi Bitki Hastalık Risk Analizi',
height=800,
showlegend=True
)
fig.write_html('zaman_serisi_analiz.html')
print("📈 Zaman serisi grafiği oluşturuldu")
return fig
🔮 TAHMİN SİSTEMİ
class TahminSistemi:
def __init__(self, model, veri_yoneticisi):
self.model = model
self.veri_yoneticisi = veri_yoneticisi
def gelecek_tahmini_yap(self, gun_sayisi=7):
"""Gelecek için tahmin yap"""
Prophet ile hava durumu tahmini
tahmin_verileri = []
for sehir in Config.MARMARA_LOCATIONS.keys():
Hava durumu tahmini (basitleştirilmiş)
son_veri = self.veri_yoneticisi.weather_data[sehir].iloc[-1]
for i in range(gun_sayisi):
tahmin_tarihi = datetime.now() + timedelta(days=i+1)
Basit tahmin modeli (gerçek projede Prophet kullanılacak)
tahmin_sicaklik = son_veri['sicaklik'] + np.random.normal(0, 2)
tahmin_nem = max(30, min(95, son_veri['nem'] + np.random.normal(0, 10)))
tahmin_yagis = max(0, son_veri['yagis'] + np.random.exponential(0.5))
Mevsimsel NDVI tahmini
mevsim_etkisi = np.sin(2 * np.pi * tahmin_tarihi.timetuple().tm_yday / 365)
tahmin_ndvi = 0.4 + 0.3 * mevsim_etkisi + np.random.normal(0, 0.03)
tahmin_verileri.append({
'tarih': tahmin_tarihi,
'sehir': sehir,
'sicaklik': tahmin_sicaklik,
'nem': tahmin_nem,
'yagis': tahmin_yagis,
'ndvi': max(0.1, min(0.9, tahmin_ndvi)),
'ruzgar_hizi': son_veri['ruzgar_hizi'],
'basinc': son_veri['basinc'],
'bulutluluk': son_veri['bulutluluk']
})
return pd.DataFrame(tahmin_verileri)
🚀 ANA UYGULAMA
class BitkiHastalikRiskAnalizi:
def __init__(self):
self.veri_yoneticisi = VeriYoneticisi()
self.model = RiskTahminModeli()
self.tahmin_sistemi = None
self.sonuclar = None
def calistir(self):
"""Tam analiz işlemini çalıştır"""
print("🌿 MARMARA BÖLGESİ BİTKİ HASTALIK RİSK ANALİZİ")
print("=" * 50)
1. VERİ TOPLAMA
print("📥 Veri toplanıyor...")
self.veri_yoneticisi.hava_durumu_verisi_cek(gun_sayisi=30)
ndvi_verisi = self.veri_yoneticisi.ndvi_verisi_olustur()
Tüm verileri birleştir
tum_veriler = []
for sehir in Config.MARMARA_LOCATIONS.keys():
if sehir in self.veri_yoneticisi.weather_data:
hava_verisi = self.veri_yoneticisi.weather_data[sehir]
sehir_ndvi = ndvi_verisi[ndvi_verisi['sehir'] == sehir]
sehir_hastalik = self.veri_yoneticisi.hastalik_verisi[
self.veri_yoneticisi.hastalik_verisi['sehir'] == sehir
]
Verileri birleştir
birlesik_veri = hava_verisi.merge(sehir_ndvi, on=['tarih', 'sehir'])
birlesik_veri = birlesik_veri.merge(sehir_hastalik, on=['tarih', 'sehir'])
tum_veriler.append(birlesik_veri)
tum_veriler = pd.concat(tum_veriler, ignore_index=True)
2. RİSK SKORU HESAPLAMA
print("🧮 Risk skorları hesaplanıyor...")
def gelismis_risk_skoru(row, bitki_turu='domates'):
"""Gelişmiş risk skoru hesaplama"""
bitki_param = Config.BITKI_TURLERI[bitki_turu]
skor = 0
Sıcaklık riski
ideal_min, ideal_max = bitki_param['ideal_sicaklik']
if ideal_min <= row['sicaklik'] <= ideal_max:
skor += 25 # İdeal aralık
elif row['sicaklik'] < ideal_min - 5 or row['sicaklik'] > ideal_max + 5:
skor += 40 # Tehlikeli sıcaklık
Nem riski
if row['nem'] > bitki_param['nem_limit']:
skor += 30 # Yüksek nem riski
Yağış riski
if row['yagis'] > 10:
skor += 20 # Aşırı yağış
Bitki sağlığı riski
if row['ndvi'] < bitki_param['ndvi_min']:
skor += 25 # Zayıf bitki örtüsü
Süreklilik riski (7 günlük ortalama)
if row.get('nem_7gun_ortalama', row['nem']) > bitki_param['nem_limit']:
skor += 15
return min(skor, 100)
tum_veriler['risk_skoru'] = tum_veriler.apply(
lambda x: gelismis_risk_skoru(x, 'domates'), axis=1
)
3. MODEL EĞİTİMİ
print("🤖 Makine öğrenmesi modeli eğitiliyor...")
Özellikler ve hedef değişken
ozellikler = ['sicaklik', 'nem', 'yagis', 'ndvi', 'ruzgar_hizi',
'basinc', 'bulutluluk', 'ay', 'mevsim']
X = tum_veriler[ozellikler]
y = tum_veriler['risk_skoru']
Model eğitimi
self.model.egit(X, y)
Tahminler
tum_veriler['tahmin_risk'] = self.model.tahmin_et(X)
4. GÖRSELLEŞTİRME
print("📊 Görselleştirmeler oluşturuluyor...")
gorsel = Gorsellestirme(tum_veriler)
gorsel.interaktif_harita_olustur()
gorsel.zaman_serisi_grafigi()
5. TAHMİN SİSTEMİ
print("🔮 Gelecek tahminleri yapılıyor...")
self.tahmin_sistemi = TahminSistemi(self.model, self.veri_yoneticisi)
gelecek_tahmin = self.tahmin_sistemi.gelecek_tahmini_yap(7)
Gelecek için risk tahmini
X_gelecek = gelecek_tahmin[ozellikler]
gelecek_tahmin['risk_tahmini'] = self.model.tahmin_et(X_gelecek)
6. RAPOR OLUŞTURMA
self.rapor_olustur(tum_veriler, gelecek_tahmin)
self.sonuclar = tum_veriler
print("✅ Analiz tamamlandı!")
return self.sonuclar
def rapor_olustur(self, tarihsel_veri, tahmin_verisi):
"""Detaylı analiz raporu oluştur"""
print("\n📋 ANALİZ RAPORU")
print("=" * 40)
Genel istatistikler
ortalama_risk = tarihsel_veri['risk_skoru'].mean()
max_risk = tarihsel_veri['risk_skoru'].max()
riskli_sehirler = tarihsel_veri.groupby('sehir')['risk_skoru'].mean().sort_values(ascending=False)
print(f"📊 Ortalama Risk Skoru: {ortalama_risk:.1f}/100")
print(f"⚠️ Maksimum Risk Skoru: {max_risk:.1f}/100")
print(f"🏙️ Şehir Bazlı Riskler:")
for sehir, risk in riskli_sehirler.items():
print(f" {sehir}: {risk:.1f}/100")
Özellik önem dereceleri
print(f"\n🔍 Özellik Önem Dereceleri:")
for _, row in self.model.feature_importance.head(5).iterrows():
print(f" {row['feature']}: {row['importance']:.3f}")
Gelecek tahmin uyarıları
yuksek_risk_tahmin = tahmin_verisi[tahmin_verisi['risk_tahmini'] > 70]
if not yuksek_risk_tahmin.empty:
print(f"\n🚨 YÜKSEK RİSK UYARILARI (Önümüzdeki 7 gün):")
for _, uyari in yuksek_risk_tahmin.iterrows():
print(f" 📅 {uyari['tarih'].strftime('%d.%m.%Y')} - {uyari['sehir']}: {uyari['risk_tahmini']:.1f}/100")
🎯 PROGRAM BAŞLATMA
if __name__ == "__main__":
Uygulamayı başlat
analiz = BitkiHastalikRiskAnalizi()
sonuclar = analiz.calistir()
Kullanıcıya bilgi
print(f"""
ANALİZ TAMAMLANDI!
Oluşturulan Dosyalar:
- marmara_bitki_risk_haritasi.html (Interaktif harita)
- zaman_serisi_analiz.html (Grafikler)
KURULUM:
pip install pandas numpy requests scikit-learn folium plotly prophet
GERÇEK VERİ İLE KULLANIM:
- OpenWeatherMap'ten API anahtarı alın
- NASA EARTHDATA için hesap oluşturun
- Gerçek NDVI verisi entegre edin
- Tarihsel hastalık verisi ekleyin
Bu sistem şu anda simülasyon verileriyle çalışıyor. Gerçek veri entegrasyonu için ilgili API'lerden veri çekme kısımlarını aktif etmeniz yeterli.