Skip to content

Commit

Permalink
Фикс в загрузчике
Browse files Browse the repository at this point in the history
  • Loading branch information
Iliya Garakh committed Apr 1, 2016
1 parent e9ff0d9 commit 508f488
Show file tree
Hide file tree
Showing 3 changed files with 126 additions and 118 deletions.
4 changes: 4 additions & 0 deletions loader/loaders/DomaLoader.php
Expand Up @@ -126,6 +126,10 @@ public function Load() {
array(Loader::CodeRegionField => 1, Loader::CodeStreetField => 1, Loader::CodeDistrictField => 1, Loader::CodeLocalityField => 1),
array('background' => true)
);
$buildings->ensureIndex(
array(Loader::ZipCodeField => 1, Loader::IdField => 1),
array('background' => true)
);

$this->Close();
return true;
Expand Down
177 changes: 83 additions & 94 deletions loader/loaders/KladrLoader.php
Expand Up @@ -3,12 +3,14 @@
/**
* Загрузчик файла KLADR.csv
*/
class KladrLoader extends Loader{
class KladrLoader extends Loader
{

public function __construct($db, $strFilePath) {
public function __construct($db, $strFilePath)
{
parent::__construct($db, $strFilePath);

$this->arCodeMap = array(2,3,6);
$this->arCodeMap = array(2, 3, 6);
$this->arCodeConformity = array(
Loader::CodeRegionField => 0,
Loader::CodeDistrictField => 1,
Expand All @@ -25,7 +27,8 @@ public function __construct($db, $strFilePath) {
);
}

public function Load() {
public function Load()
{
parent::Load();

$altnames = $this->db->altnames;
Expand All @@ -37,35 +40,41 @@ public function Load() {

$first = true;
$i = 0;
while (($data = $this->ReadLine()) !== FALSE) {
if($first){
while (($data = $this->ReadLine()) !== FALSE)
{
if ($first)
{
$first = false;
continue;
}

$arData = array();

if($i++ % 10000 == 0)
echo $i.'; ';
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) {
foreach ($cursor as $el)
{
$data[$id_key] = $el[Loader::NewIdField];
break;
}

foreach($this->arFieldConformity as $key => $conform){
foreach ($this->arFieldConformity as $key => $conform)
{
$arData[$key] = $data[$conform] ? $data[$conform] : null;
if($key == Loader::NameField){
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) {
foreach ($cursor as $type)
{
$arData[$typeField] = $type[$typeField];
break;
}
Expand All @@ -74,13 +83,14 @@ public function Load() {
$arCode = $this->ReadCode($code);
$arCodeField = $this->GetCodeField($arCode);

foreach($arCodeField as $field => $value){
foreach ($arCodeField as $field => $value)
{
$arData[$field] = $value;
}

$sort = 100000;
$typeCode = 0;
switch($arData[Loader::TypeShortField])
switch ($arData[Loader::TypeShortField])
{
case 'г':
$sort = 1000;
Expand Down Expand Up @@ -133,53 +143,55 @@ public function Load() {
$type = $this->GetType($arCode);

// поднимаем выше те города, у которых есть ссылка на район
if($arData[Loader::CodeDistrictField])
if ($arData[Loader::CodeDistrictField])
$arData[Loader::SortField] = $arData[Loader::SortField] - 10;

$arData[Loader::Bad] = substr($arData[Loader::IdField], -2) != '00';

switch($type)
switch ($type)
{
case 1:
switch($arData[Loader::IdField]){
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::CodeDistrictField] = 0;
$arData[Loader::CodeLocalityField] = 0;
$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::CodeDistrictField] = 0;
$arData[Loader::CodeLocalityField] = 0;
$arData[Loader::SortField] = 500;
$cities->insert($arData);
break;
default:
//$arData = array_slice($arData, 0, 8);
$regions->insert($arData);
break;
break;
}
break;
case 2:
//$arData = array_slice($arData, 0, 9);
$district->insert($arData);
break;
default:
switch($arData[Loader::IdField]){
default:
switch ($arData[Loader::IdField])
{
default:
//$arData = array_slice($arData, 0, 10);
$arData[Loader::SortField] = $sort;
$cities->insert($arData);
break;
break;
}
break;
}
Expand All @@ -188,126 +200,103 @@ public function Load() {
echo " creating indecies ";

$regions->ensureIndex(
array(Loader::IdField => 1),
array('background' => true, "unique" => true, "dropDups" => true)
array(Loader::IdField => 1), array('background' => true, "unique" => true, "dropDups" => true)
);
$regions->ensureIndex(
array(Loader::NormalizedNameField => 1),
array('background' => true)
array(Loader::NormalizedNameField => 1), array('background' => true)
);
$regions->ensureIndex(
array(Loader::NameField => 1),
array('background' => true)
array(Loader::NameField => 1), array('background' => true)
);
$regions->ensureIndex(
array(Loader::CodeRegionField => 1),
array('background' => true)
array(Loader::CodeRegionField => 1), array('background' => true)
);

$regions->ensureIndex(
array(Loader::Bad => 1),
array('background' => true)
array(Loader::Bad => 1), array('background' => true)
);


$district->ensureIndex(
array(Loader::IdField => 1, "unique" => true, "dropDups" => true),
array('background' => true)
array(Loader::IdField => 1, "unique" => true, "dropDups" => true), array('background' => true)
);
$district->ensureIndex(
array(Loader::NormalizedNameField => 1),
array('background' => true)
array(Loader::NormalizedNameField => 1), array('background' => true)
);
$district->ensureIndex(
array(Loader::NameField => 1),
array('background' => true)
array(Loader::NameField => 1), array('background' => true)
);
$district->ensureIndex(
array(Loader::CodeRegionField => 1),
array('background' => true)
array(Loader::CodeRegionField => 1), array('background' => true)
);
$district->ensureIndex(
array(Loader::SortField => 1),
array('background' => true)
array(Loader::SortField => 1), array('background' => true)
);
$district->ensureIndex(
array(Loader::CodeRegionField => 1, Loader::CodeDistrictField => 1),
array('background' => true)
array(Loader::CodeRegionField => 1, Loader::CodeDistrictField => 1), array('background' => true)
);

$district->ensureIndex(
array(Loader::Bad => 1),
array('background' => true)
array(Loader::Bad => 1), array('background' => true)
);

$cities->ensureIndex(
array(Loader::IdField => 1, "unique" => true, "dropDups" => true),
array('background' => true)
array(Loader::IdField => 1, "unique" => true, "dropDups" => true), array('background' => true)
);
$cities->ensureIndex(
array(Loader::NormalizedNameField => 1),
array('background' => true)
array(Loader::NormalizedNameField => 1), array('background' => true)
);
$cities->ensureIndex(
array(Loader::CodeRegionField => 1),
array('background' => true)
array(Loader::CodeRegionField => 1), array('background' => true)
);
$cities->ensureIndex(
array(Loader::CodeDistrictField => 1),
array('background' => true)
array(Loader::CodeDistrictField => 1), array('background' => true)
);
$cities->ensureIndex(
array(Loader::SortField => 1),
array('background' => true)
array(Loader::SortField => 1), array('background' => true)
);
$cities->ensureIndex(
array(Loader::NameField => 1),
array('background' => true)
array(Loader::NameField => 1), array('background' => true)
);

$cities->ensureIndex(
array(Loader::TypeCode => 1),
array('background' => true)
array(Loader::TypeCode => 1), array('background' => true)
);

$cities->ensureIndex(
array(Loader::Bad => 1),
array('background' => true)
array(Loader::Bad => 1), array('background' => true)
);

$cities->ensureIndex(
array(Loader::CodeDistrictField => 1, Loader::CodeRegionField => 1, Loader::CodeLocalityField => 1),
array('background' => true)
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' => 'Республика'
)
)
);


// Фиксы странных вещей

//Убираем левую Чувашию

$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;
}

}

0 comments on commit 508f488

Please sign in to comment.