|
<<<<<<< HEAD float CropRecommendationEngine::compensatePH(const CropCompensationParams ¶ms) { return getCompensationService().correctPH(params.temperature, params.rawValue);} float CropRecommendationEngine::compensateEC(float EC_raw, float temperature, float humidity, SoilType soilType) { return getCompensationService().correctEC(EC_raw, soilType, temperature, humidity);} NPKReferences CropRecommendationEngine::compensateNPK(float N_raw, float P_raw, float K_raw, float temperature, float humidity, SoilType soilType) { NPKReferences npk{N_raw, P_raw, K_raw};getCompensationService().correctNPK(temperature, humidity, soilType, npk);return npk;} float CropRecommendationEngine::compensateEC(float EC_raw, float temperature) { return compensateEC(EC_raw, temperature, 60.0F, SoilType::LOAM);} float CropRecommendationEngine::compensateNPK(float NPK_raw, float temperature, float moisture) { NPKReferences npk{NPK_raw, NPK_raw, NPK_raw};getCompensationService().correctNPK(temperature, moisture, SoilType::LOAM, npk);return npk.nitrogen;} SoilType CropRecommendationEngine::parseSoilType(const String &soilTypeStr) { if(soilTypeStr=="sand") { return SoilType::SAND;} if(soilTypeStr=="loam") { return SoilType::LOAM;} if(soilTypeStr=="clay") { return SoilType::CLAY;} if(soilTypeStr=="peat") { return SoilType::PEAT;} if(soilTypeStr=="sandpeat") { return SoilType::SANDPEAT;} return SoilType::LOAM;=======String CropRecommendationEngine::generateCropSpecificRecommendations(const String &cropName, const NPKReferences &npk, SoilType soilType, float pH) { String recommendations="";if(cropName=="tomato"||cropName=="томат") { if(pH< 6.5F) { recommendations+="🍅 Томаты требуют кальций для предотвращения вершинной гнили. ";recommendations+="Рекомендуется: внести кальциевую селитру (Ca(NO3)2)\n";} if(npk.potassium > 200.0F) { recommendations+="🍅 Высокий калий может блокировать магний у томатов. ";recommendations+="Рекомендуется: внести сульфат магния (MgSO4)\n";} if(npk.nitrogen > 150.0F &&npk.phosphorus< 100.0F) { recommendations+="🍅 Томаты нуждаются в сбалансированном питании. ";recommendations+="Рекомендуется: увеличить фосфор для развития корневой системы\n";} if(pH > 7.0F||npk.potassium > 300.0F) { recommendations+="🍅 Томаты требуют бор для предотвращения деформации плодов. ";recommendations+="Рекомендуется: внести борную кислоту (H3BO3)\n";} } else if(cropName=="cucumber"||cropName=="огурец") { if(npk.potassium< 200.0F) { recommendations+="🥒 Огурцы требуют много калия для плодоношения. ";recommendations+="Рекомендуется: внести калийную селитру (KNO3)\n";} if(pH > 7.0F) { recommendations+="🥒 Щелочная почва снижает доступность бора для огурцов. ";recommendations+="Рекомендуется: внести борную кислоту (H3BO3)\n";} if(npk.potassium > 200.0F &&npk.nitrogen< 150.0F) { recommendations+="🥒 Огурцы требуют магний для фотосинтеза. ";recommendations+="Рекомендуется: внести сульфат магния (MgSO4)\n";} } else if(cropName=="pepper"||cropName=="перец") { if(npk.phosphorus > 100.0F) { recommendations+="🌶️ Высокий фосфор может блокировать цинк у перца. ";recommendations+="Рекомендуется: внести хелатный цинк (Zn-EDTA)\n";} if(pH< 6.5F) { recommendations+="🌶️ Перец требует кальций для качества плодов. ";recommendations+="Рекомендуется: внести кальциевую селитру\n";} if(pH > 7.0F||npk.potassium > 300.0F) { recommendations+="🌶️ Перец требует бор для завязывания плодов. ";recommendations+="Рекомендуется: внести борную кислоту (H3BO3)\n";} } else if(cropName=="lettuce"||cropName=="салат") { if(npk.nitrogen > 250.0F) { recommendations+="🥬 Высокий азот требует серу для синтеза белка у салата. ";recommendations+="Рекомендуется: внести сульфат аммония ((NH4)2SO4)\n";} if(pH > | recommendations = "Рекомендуется: внести хелатное железо (Fe-EDTA)\n" |
|
Реализация движка рекомендаций по культурам
Вычисляет агрономические рекомендации на основе типа культуры и условий