Example #1
0
 /**
  * @param string $name
  * @throws Exception
  * @return OrtGeo|null
  */
 public static function getOrCreate($name)
 {
     /** @var null|OrtGeo */
     $ort = OrtGeo::model()->findByAttributes(["ort" => $name]);
     if ($ort) {
         return $ort;
     }
     $data = RISGeo::addressToGeo("Deutschland", "", "München", $name);
     if (($data === false || $data["lat"] == 0) && mb_strpos($name, "-") !== false) {
         $data = RISGeo::addressToGeo("Deutschland", "", "München", str_replace("-", "", $name));
     }
     if (($data === false || $data["lat"] == 0) && mb_stripos($name, "Str.") !== false) {
         $data = RISGeo::addressToGeo("Deutschland", "", "München", str_ireplace("Str.", "Straße", $name));
     }
     if ($data["lat"] <= 0 || $data["lon"] <= 0) {
         return null;
     }
     $ort = new OrtGeo();
     $ort->ort = $name;
     $ort->lat = $data["lat"];
     $ort->lon = $data["lon"];
     $ort->setzeBA();
     $ort->source = "auto";
     $ort->to_hide = 0;
     $ort->to_hide_kommentar = "";
     $ort->datum = new CDbExpression('NOW()');
     if (!$ort->save()) {
         RISTools::send_email(Yii::app()->params['adminEmail'], "OrtGeo:getOrCreate Error", print_r($ort->getErrors(), true), null, "system");
         throw new Exception("Fehler beim Speichern: Geo");
     }
     return $ort;
 }
 public function run($args)
 {
     if (count($args) == 0) {
         die("./yii recalc_ort2ba [Orts-ID|alle]\n");
     }
     if ($args[0] == "alle") {
         /** @var OrtGeo[] $orte */
         $orte = OrtGeo::model()->findAll(["order" => "id"]);
     } else {
         /** @var OrtGeo[] $orte */
         $orte = OrtGeo::model()->findAll(["condition" => "id = " . IntVal($args[0])]);
     }
     /** @var Bezirksausschuss[] $bas */
     $bas = Bezirksausschuss::model()->findAll();
     foreach ($orte as $ort) {
         $found_ba = null;
         foreach ($bas as $ba) {
             if ($ba->pointInBA($ort->lon, $ort->lat)) {
                 echo $ort->id . " - " . $ort->ort . ": " . $ba->ba_nr . "\n";
                 $found_ba = $ba->ba_nr;
             }
         }
         if ($found_ba) {
             $ort->ba_nr = $found_ba;
             $ort->save();
         }
     }
 }