Ejemplo n.º 1
0
 public function Load()
 {
     parent::Load();
     $altnames = $this->db->altnames;
     $first = true;
     while (($data = $this->ReadLine()) !== FALSE) {
         if ($first) {
             $first = false;
             continue;
         }
         $item = array(Loader::OldIdField => $data[0], Loader::NewIdField => $data[1]);
         $altnames->insert($item);
     }
     $altnames->ensureIndex(array(Loader::OldIdField => 1), array('background' => true, 'unique' => true, 'dropDups' => true));
     $this->Close();
     return true;
 }
Ejemplo n.º 2
0
 public function Load()
 {
     parent::Load();
     $socrbase = $this->db->socrbase;
     $socrbase->ensureIndex(array(Loader::TypeShortField => 1), array('background' => true));
     $first = true;
     while (($data = $this->ReadLine()) !== FALSE) {
         if ($first) {
             $first = false;
             continue;
         }
         $item = array(Loader::TypeShortField => $data[1], Loader::TypeField => $data[2]);
         $socrbase->insert($item);
     }
     $this->Close();
     return true;
 }
Ejemplo n.º 3
0
 public function Load()
 {
     parent::Load();
     $altnames = $this->db->altnames;
     $socrbase = $this->db->socrbase;
     $regions = $this->db->regions;
     $district = $this->db->district;
     $cities = $this->db->cities;
     $first = true;
     $i = 0;
     while (($data = $this->ReadLine()) !== FALSE) {
         if ($first) {
             $first = false;
             continue;
         }
         $arData = array();
         if ($i++ % 10000 == 0) {
             echo $i . '; ';
         }
         $id_key = $this->arFieldConformity[Loader::IdField];
         $cursor = $altnames->find(array(Loader::OldIdField => $data[$id_key]));
         foreach ($cursor as $el) {
             $data[$id_key] = $el[Loader::NewIdField];
             break;
         }
         foreach ($this->arFieldConformity as $key => $conform) {
             $arData[$key] = $data[$conform] ? $data[$conform] : null;
             if ($key == Loader::NameField) {
                 $arData[Loader::NormalizedNameField] = __normalize($arData[$key]);
             }
         }
         $typeShortField = Loader::TypeShortField;
         $typeField = Loader::TypeField;
         $cursor = $socrbase->find(array($typeShortField => $arData[$typeShortField]));
         foreach ($cursor as $type) {
             $arData[$typeField] = $type[$typeField];
             break;
         }
         $code = $arData[Loader::IdField];
         $arCode = $this->ReadCode($code);
         $arCodeField = $this->GetCodeField($arCode);
         foreach ($arCodeField as $field => $value) {
             $arData[$field] = $value;
         }
         $sort = 100000;
         $typeCode = 0;
         switch ($arData[Loader::TypeShortField]) {
             case 'г':
                 $sort = 1000;
                 $typeCode = 1;
                 break;
             case 'городок':
                 $sort = 2000;
                 $typeCode = 1;
                 break;
             case 'пгт':
                 $sort = 3000;
                 $typeCode = 2;
                 break;
             case 'п':
                 $sort = 4000;
                 $typeCode = 2;
                 break;
             case 'дп':
                 $sort = 5000;
                 $typeCode = 2;
                 break;
             case 'кп':
                 $sort = 6000;
                 $typeCode = 2;
                 break;
             case 'рп':
                 $sort = 7000;
                 $typeCode = 2;
                 break;
             case 'с':
                 $sort = 8000;
                 $typeCode = 4;
                 break;
             case 'д':
                 $sort = 9000;
                 $typeCode = 4;
                 break;
             case 'ст':
                 $sort = 10000;
                 $typeCode = 4;
                 break;
             default:
                 $sort = 100000;
                 $typeCode = 4;
                 break;
         }
         $arData[Loader::SortField] = $sort;
         $arData[Loader::TypeCode] = $typeCode;
         $type = $this->GetType($arCode);
         // поднимаем выше те города, у которых есть ссылка на район
         if ($arData[Loader::CodeDistrictField]) {
             $arData[Loader::SortField] = $arData[Loader::SortField] - 10;
         }
         $arData[Loader::Bad] = substr($arData[Loader::IdField], -2) != '00';
         switch ($type) {
             case 1:
                 switch ($arData[Loader::IdField]) {
                     case '7700000000000':
                         // Москва
                     // Москва
                     case '7800000000000':
                         // Санкт-Петербург
                     // Санкт-Петербург
                     case '9900000000000':
                         // Байконур
                     // Байконур
                     case '9200000000000':
                         // Севастополь
                         //$arData = array_slice($arData, 0, 8);
                         $regions->insert($arData);
                         $arData[Loader::CodeDistrictField] = null;
                         $arData[Loader::CodeLocalityField] = null;
                         $arData[Loader::SortField] = 100;
                         $cities->insert($arData);
                         break;
                     case '7800000000001':
                         // Ленинград
                         //$arData = array_slice($arData, 0, 8);
                         $regions->insert($arData);
                         $arData[Loader::CodeDistrictField] = null;
                         $arData[Loader::CodeLocalityField] = null;
                         $arData[Loader::SortField] = 500;
                         $cities->insert($arData);
                         break;
                     default:
                         //$arData = array_slice($arData, 0, 8);
                         $regions->insert($arData);
                         break;
                 }
                 break;
             case 2:
                 //$arData = array_slice($arData, 0, 9);
                 $district->insert($arData);
                 break;
             default:
                 switch ($arData[Loader::IdField]) {
                     default:
                         //$arData = array_slice($arData, 0, 10);
                         $arData[Loader::SortField] = $sort;
                         $cities->insert($arData);
                         break;
                 }
                 break;
         }
     }
     echo " creating indecies ";
     $regions->ensureIndex(array(Loader::IdField => 1), array('background' => true, "unique" => true, "dropDups" => true));
     $regions->ensureIndex(array(Loader::NormalizedNameField => 1), array('background' => true));
     $regions->ensureIndex(array(Loader::NameField => 1), array('background' => true));
     $regions->ensureIndex(array(Loader::CodeRegionField => 1), array('background' => true));
     $regions->ensureIndex(array(Loader::Bad => 1), array('background' => true));
     $district->ensureIndex(array(Loader::IdField => 1, "unique" => true, "dropDups" => true), array('background' => true));
     $district->ensureIndex(array(Loader::NormalizedNameField => 1), array('background' => true));
     $district->ensureIndex(array(Loader::NameField => 1), array('background' => true));
     $district->ensureIndex(array(Loader::CodeRegionField => 1), array('background' => true));
     $district->ensureIndex(array(Loader::SortField => 1), array('background' => true));
     $district->ensureIndex(array(Loader::CodeRegionField => 1, Loader::CodeDistrictField => 1), array('background' => true));
     $district->ensureIndex(array(Loader::Bad => 1), array('background' => true));
     $cities->ensureIndex(array(Loader::IdField => 1, "unique" => true, "dropDups" => true), array('background' => true));
     $cities->ensureIndex(array(Loader::NormalizedNameField => 1), array('background' => true));
     $cities->ensureIndex(array(Loader::CodeRegionField => 1), array('background' => true));
     $cities->ensureIndex(array(Loader::CodeDistrictField => 1), array('background' => true));
     $cities->ensureIndex(array(Loader::SortField => 1), array('background' => true));
     $cities->ensureIndex(array(Loader::NameField => 1), array('background' => true));
     $cities->ensureIndex(array(Loader::TypeCode => 1), array('background' => true));
     $cities->ensureIndex(array(Loader::Bad => 1), array('background' => true));
     $cities->ensureIndex(array(Loader::CodeDistrictField => 1, Loader::CodeRegionField => 1, Loader::CodeLocalityField => 1), array('background' => true));
     // Фиксы странных вещей
     //Убираем левую Чувашию
     $regions->update(array('Id' => '2100000000000'), array('$set' => array('CodeRegion' => 21)));
     // Правим названия у верной Чувашии
     $regions->update(array('Id' => '2100000000000'), array('$set' => array('Name' => 'Чувашская', 'TypeShort' => 'Респ', 'Type' => 'Республика')));
     $this->Close();
     return true;
 }
Ejemplo n.º 4
0
 public function Load()
 {
     parent::Load();
     $altnames = $this->db->altnames;
     $socrbase = $this->db->socrbase;
     $streets = $this->db->streets;
     /*
      */
     $first = true;
     $i = 0;
     while (($data = $this->ReadLine()) !== FALSE) {
         if ($first) {
             $first = false;
             continue;
         }
         $arData = array();
         if ($i++ % 10000 == 0) {
             echo $i . '; ';
         }
         $id_key = $this->arFieldConformity[Loader::IdField];
         $cursor = $altnames->find(array(Loader::OldIdField => $data[$id_key]));
         foreach ($cursor as $el) {
             $data[$id_key] = $el[Loader::NewIdField];
             break;
         }
         foreach ($this->arFieldConformity as $key => $conform) {
             $arData[$key] = $data[$conform] ? $data[$conform] : null;
             if ($key == Loader::NameField) {
                 $arData[Loader::NormalizedNameField] = __normalize($arData[$key]);
             }
         }
         $typeShortField = Loader::TypeShortField;
         $typeField = Loader::TypeField;
         $cursor = $socrbase->find(array($typeShortField => $arData[$typeShortField]));
         foreach ($cursor as $type) {
             $arData[$typeField] = $type[$typeField];
             break;
         }
         $code = $arData[Loader::IdField];
         $arCode = $this->ReadCode($code);
         $arCodeField = $this->GetCodeField($arCode);
         $arData[Loader::Bad] = substr($arData[Loader::IdField], -2) != '00';
         foreach ($arCodeField as $field => $value) {
             $arData[$field] = $value;
         }
         //$arData = array_slice($arData, 0, 11);
         $streets->insert($arData);
     }
     echo " creating indecies ";
     $streets->ensureIndex(array(Loader::IdField => 1, "unique" => true, "dropDups" => true), array('background' => true));
     $streets->ensureIndex(array(Loader::NormalizedNameField => 1), array('background' => true));
     $streets->ensureIndex(array(Loader::CodeRegionField => 1), array('background' => true));
     $streets->ensureIndex(array(Loader::CodeDistrictField => 1), array('background' => true));
     $streets->ensureIndex(array(Loader::CodeLocalityField => 1), array('background' => true));
     $streets->ensureIndex(array(Loader::SortField => 1), array('background' => true));
     $streets->ensureIndex(array(Loader::Bad => 1), array('background' => true));
     $streets->ensureIndex(array(Loader::NameField => 1), array('background' => true));
     $streets->ensureIndex(array(Loader::CodeLocalityField => 1, Loader::CodeRegionField => 1, Loader::CodeDistrictField => 1, Loader::CodeStreetField => 1), array('background' => true));
     $streets->ensureIndex(array(Loader::CodeLocalityField => 1, Loader::CodeRegionField => 1, Loader::CodeDistrictField => 1, Loader::Bad => 1, Loader::NormalizedNameField => 1), array('background' => true));
     $this->Close();
     return true;
 }
Ejemplo n.º 5
0
 public function Load()
 {
     parent::Load();
     $altnames = $this->db->altnames;
     $buildings = $this->db->buildings;
     $first = true;
     $i = 0;
     while (($data = $this->ReadLine()) !== FALSE) {
         if ($first) {
             $first = false;
             continue;
         }
         $arData = array();
         if ($i++ % 10000 == 0) {
             echo $i . '; ';
         }
         $id_key = $this->arFieldConformity[Loader::IdField];
         $cursor = $altnames->find(array(Loader::OldIdField => $data[$id_key]));
         foreach ($cursor as $el) {
             $data[$id_key] = $el[Loader::NewIdField];
             break;
         }
         foreach ($this->arFieldConformity as $key => $conform) {
             $arData[$key] = $data[$conform] ? $data[$conform] : null;
             if ($key == Loader::NameField) {
                 $arData[Loader::NormalizedNameField] = __normalize($arData[$key]);
             }
             if ($key == Loader::TypeField) {
                 if ($arData[$key] == 'ДОМ') {
                     $arData[$key] = 'дом';
                 }
             }
             if ($key == Loader::TypeShortField) {
                 if ($arData[$key] == 'ДОМ') {
                     $arData[$key] = 'д';
                 }
             }
         }
         $code = $arData[Loader::IdField];
         $arCode = $this->ReadCode($code);
         $arCodeField = $this->GetCodeField($arCode);
         foreach ($arCodeField as $field => $value) {
             $arData[$field] = $value;
         }
         $arData[Loader::ZipCodeField] = intval($arData[Loader::ZipCodeField]);
         $arData = $this->fixData($arData);
         $buildings->insert($arData);
     }
     echo " Creating indecies ";
     $buildings->ensureIndex(array(Loader::NormalizedNameField => 1), array('background' => true));
     $buildings->ensureIndex(array(Loader::CodeRegionField => 1), array('background' => true));
     $buildings->ensureIndex(array(Loader::CodeDistrictField => 1), array('background' => true));
     $buildings->ensureIndex(array(Loader::CodeLocalityField => 1), array('background' => true));
     $buildings->ensureIndex(array(Loader::CodeStreetField => 1), array('background' => true));
     $buildings->ensureIndex(array(Loader::SortField => 1), array('background' => true));
     $buildings->ensureIndex(array(Loader::ZipCodeField => 1), array('background' => true));
     $buildings->ensureIndex(array(Loader::IdField => 1), array('background' => true, "unique" => true, "dropDups" => true));
     $buildings->ensureIndex(array(Loader::NormalizedNameField => 1, Loader::CodeRegionField => 1, Loader::CodeStreetField => 1, Loader::CodeDistrictField => 1, Loader::CodeLocalityField => 1), array('background' => true));
     $buildings->ensureIndex(array(Loader::CodeRegionField => 1, Loader::CodeStreetField => 1, Loader::CodeDistrictField => 1, Loader::CodeLocalityField => 1), array('background' => true));
     $this->Close();
     return true;
 }
Ejemplo n.º 6
0
<?php 
//Reporte de errores habilitado
error_reporting(E_ALL ^ E_DEPRECATED);
//Inicio de sesiones
session_start();
//Inclusión del archivo de configuración
require 'config/config.inc.php';
//Inclusión de módulo de carga
require 'modules/load/load.class.php';
//Iniciación de la carga del sistema
$Loader = new Loader();
$Loader->Load();
//test