public function calculateWaterDemand($geom = null)
 {
     $zone = $this->zone_name;
     while ($zone != null) {
         $formula = WaterRequestFormulas::model()->find('zone=:zone', array(':zone' => $zone));
         if ($formula) {
             break;
         }
         $zone = Zones::parentZone($zone);
     }
     //Yii::log('ctype_digit='.print_r(ctype_digit($geom_id),true).' geom_id='.$geom_id , CLogger::LEVEL_INFO, 'calculateWaterDemand');  // DEBUG
     if ($geom == null) {
         $comuni = Geometry::Get_City_State($this->wr_geometry_id);
     } else {
         $comuni = Geometry::Get_City_State_ByWKT($geom);
     }
     /*
     		if(!ctype_digit($geom_id)){
     			$comuni = Geometry::Get_City_State_ByWKT($geom_id);
     		}else{
     			$comuni = Geometry::Get_City_State($this->wr_geometry_id);
     		}*/
     if (count($comuni)) {
         $city_state = $comuni[0]['nome'];
     } else {
         Yii::log('non trovo il comune. geom_id=' . $geom, CLogger::LEVEL_INFO, 'calculateWaterDemand');
         // DEBUG
         $city_state = 'Pisa';
     }
     $water_supply = WaterSupply::model()->find('lower(city_state)=:city_state', array(':city_state' => strtolower($city_state)));
     if (!$water_supply) {
         Yii::log('Manca la WaterSupply. $city_state=' . $city_state, CLogger::LEVEL_INFO, 'calculateWaterDemand');
         // DEBUG
         return -1;
     }
     $dg = $water_supply->daily_maximum_water_supply;
     $da = $water_supply->yearly_average_water_supply;
     $fformula = str_ireplace(array('ae', 'dg', 'da'), array($this->pe, $dg, $da), $formula->formula);
     //TODO: mettere nel config il valore delle stringe ae, dg e da
     $ret = Math::safe_eval($fformula);
     if (is_numeric($ret)) {
         return $ret;
     }
     return -1;
 }
Exemple #2
0
 /**
  * Calcola il comune in cui cade la geometria passata come id o wkt.
  * @param object $id_or_wkt ID as integer or WKT as string 
  * @return string The name of the CityState, NULL if none is found.
  */
 public static function Get_City_State($id_or_wkt)
 {
     if (!is_numeric($id_or_wkt)) {
         $comuni = Geometry::Get_City_State_ByWKT($id_or_wkt);
     } else {
         $comuni = Geometry::Get_City_State_ByID($id_or_wkt);
     }
     if (count($comuni)) {
         return $comuni[0]['nome'];
     } else {
         return null;
     }
 }