Merge branch 'master' of code.fronk.at:fronk/thetool
This commit is contained in:
@@ -50,7 +50,13 @@ class ADBHausnummer extends mfBaseModel {
|
||||
}
|
||||
|
||||
if($name == "plz") {
|
||||
$this->plz = new ADBPlz($this->plz_id);
|
||||
$this->plz = mfValuecache::singleton()->get("adbplz-".$this->plz_id);
|
||||
if($this->plz === null) {
|
||||
$this->plz = new ADBPlz($this->plz_id);
|
||||
if($this->plz->id) {
|
||||
mfValuecache::singleton()->set("adplz-".$this->plz_id, $this->plz);
|
||||
}
|
||||
}
|
||||
return $this->plz;
|
||||
}
|
||||
|
||||
|
||||
@@ -47,7 +47,7 @@ class ADBHausnummerModel {
|
||||
$db = FronkDB::singleton(ADDRESSDB_DBHOST, ADDRESSDB_DBUSER, ADDRESSDB_DBPASS, ADDRESSDB_DBNAME);
|
||||
|
||||
$where = self::getSqlFilter($filter);
|
||||
mfLoghandler::singleton()->debug($where);
|
||||
//mfLoghandler::singleton()->debug($where);
|
||||
$res = $db->select("Hausnummer", "*", "$where ORDER BY strasse_id,hausnummer LIMIT 1");
|
||||
if($db->num_rows($res)) {
|
||||
$data = $db->fetch_object($res);
|
||||
@@ -102,7 +102,7 @@ class ADBHausnummerModel {
|
||||
WHERE $where
|
||||
ORDER BY strasse_id,hausnummer";
|
||||
|
||||
mfLoghandler::singleton()->debug($sql);
|
||||
//mfLoghandler::singleton()->debug($sql);
|
||||
if(is_array($limit) && count($limit)) {
|
||||
if(is_numeric($limit['start']) && is_numeric($limit['count'])) {
|
||||
$sql .= " LIMIT ".$limit['start'].", ".$limit['count'];
|
||||
|
||||
@@ -14,6 +14,9 @@ require_once(LIBDIR."/mvcfronk/mfBase/mfBaseController.php");
|
||||
$me = new User(1);
|
||||
|
||||
$gemeinden_cache = [];
|
||||
$ortschaft_cache = [];
|
||||
$strasse_cache = [];
|
||||
$plz_cache = [];
|
||||
|
||||
$folder = BASEDIR."/scripts/addressdb/import/bev";
|
||||
$db = FronkDB::singleton(ADDRESSDB_DBHOST, ADDRESSDB_DBUSER, ADDRESSDB_DBPASS, ADDRESSDB_DBNAME);
|
||||
@@ -25,7 +28,7 @@ $log = mfLoghandler::singleton();
|
||||
|
||||
$filename = "$folder/GEMEINDE.csv";
|
||||
$input = fopen($filename, "r");
|
||||
|
||||
/*
|
||||
$i = 0;
|
||||
while($csv = fgetcsv($input, 0, ";")) {
|
||||
$i++;
|
||||
@@ -56,11 +59,11 @@ while($csv = fgetcsv($input, 0, ";")) {
|
||||
}
|
||||
|
||||
echo ($i-1)." Gemeinden importiert\n";
|
||||
|
||||
*/
|
||||
/*
|
||||
* Import Ortschaften
|
||||
*/
|
||||
|
||||
/*
|
||||
$filename = "$folder/ORTSCHAFT.csv";
|
||||
$input = fopen($filename, "r");
|
||||
|
||||
@@ -98,11 +101,11 @@ while($csv = fgetcsv($input, 0, ";")) {
|
||||
}
|
||||
|
||||
echo ($i-1)." Ortschaften importiert\n";
|
||||
|
||||
*/
|
||||
/*
|
||||
* Import Strassen
|
||||
*/
|
||||
|
||||
/*
|
||||
$filename = "$folder/STRASSE.csv";
|
||||
$input = fopen($filename, "r");
|
||||
|
||||
@@ -223,9 +226,9 @@ while($csv = fgetcsv($input, 0, ";")) {
|
||||
}
|
||||
|
||||
echo "\n".($i-1)." Straßen importiert\n";
|
||||
*/
|
||||
|
||||
|
||||
$filename = "$folder/STRASSE.csv";
|
||||
$filename = "$folder/ADRESSE.csv";
|
||||
$input = fopen($filename, "r");
|
||||
|
||||
$i = 0;
|
||||
@@ -236,23 +239,118 @@ while($csv = fgetcsv($input, 0, ";")) {
|
||||
if($i % 1000 == 0) {
|
||||
echo ".";
|
||||
}
|
||||
if($i % 10000 == 0) {
|
||||
echo "$i";
|
||||
}
|
||||
|
||||
|
||||
if(!trim($csv[0])) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$skz = trim($csv[0]);
|
||||
$strasse_name = trim($csv[1]);
|
||||
$gkz = trim($csv[4]);
|
||||
$adrcd = trim($csv[0]);
|
||||
$gkz = trim($csv[1]);
|
||||
$okz = trim($csv[2]);
|
||||
$plz_string = trim($csv[3]);
|
||||
$skz = trim($csv[4]);
|
||||
|
||||
$hnz1 = trim($csv[7]);
|
||||
$hnb1 = trim($csv[8]);
|
||||
$hnv = trim($csv[9]);
|
||||
$hnz2 = trim($csv[10]);
|
||||
$hnb2 = trim($csv[11]);
|
||||
|
||||
if(!$skz) continue;
|
||||
|
||||
$gemeinde = getGemeinde($gkz);
|
||||
if(!$gemeinde) {
|
||||
die("Kann Strasse nicht importieren: Gemeinde nicht gefunden ($gkz)\n");
|
||||
die("Kann Adresse nicht importieren: Gemeinde nicht gefunden ($gkz)\n");
|
||||
}
|
||||
|
||||
|
||||
$ortschaft = getOrtschaft($okz);
|
||||
if(!$ortschaft) {
|
||||
die("Kann Adresse nicht importieren: Ortschaft nicht gefunden ($okz)\n");
|
||||
}
|
||||
|
||||
$strasse = getStrasse($skz);
|
||||
if(!$strasse) {
|
||||
die("Kann Adresse nicht importieren: Strasse nicht gefunden ($okz)\n");
|
||||
}
|
||||
|
||||
|
||||
//$plz = ADBPlzModel::getFirst(['gemeinde_id' => $gemeinde->id, "plz" => $plz_string]);
|
||||
$plz = getPlz($plz_string, $gemeinde->id);
|
||||
if(!$plz) {
|
||||
$plz = ADBPlzModel::create([
|
||||
"gemeinde_id" => $gemeinde->id,
|
||||
"plz" => $plz_string,
|
||||
"plzstring" => $plz_string
|
||||
]);
|
||||
if(!$plz->save()) {
|
||||
die("Cannot create PLZ $plz_string (gemeinde ".$gemeinde->id.")\n");
|
||||
}
|
||||
}
|
||||
|
||||
$hausnummer_string = makeHausnummer($hnz1, $hnz2, $hnv, $hnb1, $hnb2);
|
||||
if(!$hausnummer_string) {
|
||||
continue;
|
||||
//die("Keine Hausnummer: adrcd $adrcd, gkz $gkz, okz $okz, skz $skz, $hnz1, $hnb1, $hnv, $hnz2, $hnb2\n");
|
||||
}
|
||||
|
||||
$hausnummer = ADBHausnummerModel::getFirst([
|
||||
'ortschaft_id' => $ortschaft->id,
|
||||
//'plz_id' => $plz->id,
|
||||
'strasse_id' => $strasse->id,
|
||||
'hausnummer' => $hausnummer_string
|
||||
]);
|
||||
|
||||
if($hausnummer) {
|
||||
// update plz if necessary
|
||||
//var_dump($hausnummer->plz);exit;
|
||||
if($hausnummer->plz->plz != $plz->plz ) {
|
||||
echo "Updating PLZ from ".$hausnummer->plz->plz." to ".$plz->plz."\n";
|
||||
$hausnummer->plz_id = $plz->id;
|
||||
$hausnummer->save();
|
||||
}
|
||||
|
||||
} else {
|
||||
// create new Hausnummer
|
||||
$hausnummer = ADBHausnummerModel::create([
|
||||
"netzgebiet_id" => 0,
|
||||
"ortschaft_id" => $ortschaft->id,
|
||||
"plz_id" => $plz->id,
|
||||
"strasse_id" => $strasse->id,
|
||||
"hausnummer" => $hausnummer_string
|
||||
]);
|
||||
if(!$hausnummer->save()) {
|
||||
die("Error creating Hausnummer: ".print_r($hausnummer, true));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
function makeHausnummer($z1 = false, $z2 = false, $v = false, $b1 = false, $b2 = false) {
|
||||
$h = "";
|
||||
|
||||
if($z1) {
|
||||
$h .= $z1;
|
||||
}
|
||||
if($b1) {
|
||||
$h .= $b1;
|
||||
}
|
||||
if($v) {
|
||||
$h .= $v;
|
||||
if($z2) {
|
||||
$h .= $z2;
|
||||
}
|
||||
if($b2) {
|
||||
$h .= $b2;
|
||||
}
|
||||
}
|
||||
|
||||
return $h;
|
||||
}
|
||||
|
||||
function getGemeinde($kz) {
|
||||
@@ -268,4 +366,49 @@ function getGemeinde($kz) {
|
||||
}
|
||||
$gemeinden_cache[$kz] = $gemeinde;
|
||||
return $gemeinde;
|
||||
}
|
||||
|
||||
function getOrtschaft($kz) {
|
||||
global $ortschaft_cache;
|
||||
|
||||
if(array_key_exists($kz, $ortschaft_cache)) {
|
||||
return $ortschaft_cache[$kz];
|
||||
}
|
||||
|
||||
$ortschaft = ADBOrtschaftModel::getFirst(['kennziffer' => $kz]);
|
||||
if(!$ortschaft) {
|
||||
return false;
|
||||
}
|
||||
$ortschaft_cache[$kz] = $ortschaft;
|
||||
return $ortschaft;
|
||||
}
|
||||
|
||||
function getStrasse($kz) {
|
||||
global $strasse_cache;
|
||||
|
||||
if(array_key_exists($kz, $strasse_cache)) {
|
||||
return $strasse_cache[$kz];
|
||||
}
|
||||
|
||||
$strasse = ADBStrasseModel::getFirst(['kennziffer' => $kz]);
|
||||
if(!$strasse) {
|
||||
return false;
|
||||
}
|
||||
$strasse_cache[$kz] = $strasse;
|
||||
return $strasse;
|
||||
}
|
||||
|
||||
function getPlz($plz_search, $gemeinde_id) {
|
||||
global $plz_cache;
|
||||
|
||||
if(array_key_exists("$plz_search.$gemeinde_id", $plz_cache)) {
|
||||
return $plz_cache["$plz_search.$gemeinde_id"];
|
||||
}
|
||||
|
||||
$plz = ADBPlzModel::getFirst(['plz' => $plz_search, "gemeinde_id" => $gemeinde_id]);
|
||||
if(!$plz) {
|
||||
return false;
|
||||
}
|
||||
$plz_cache[$plz_search] = $plz;
|
||||
return $plz;
|
||||
}
|
||||
Reference in New Issue
Block a user