Список регионов у связистов
Недавно столкнулся по работе с такой штукой как — определение региона и времени по DEF коду (по номеру телефона). Очень полезная штука при смс рассылке, что бы клиенты вас не ненавидели. К сожалению, точно определить время абонента по базам не представляется возможным, люди перемещаются и путешествуют. Но региональное распределение телефонных емкостей в большинстве соответствует текущему положению абонентов.
Базы DEF кодов доступны бесплатно в публичном доступе у ЦНИИС и Россвязи. Но оказывается, что по этим спискам какие-то странные номера регионов — Крым 84, Воронеж 39, Липецк 50. Единственное упоминание почему это так я нашел в статье на хабре
Забегая вперед, скажу, что краеугольным камнем всей логики обработки вызовов является роутинговый номер RN, который имеет следующий формат: DXXYY, где: D – всегда символ «D» XX – код региона согласно Конституции. Похож на код ГИБДД, но для многих регионов он не совпадает. Например, для RN код 55 – относится к Новгородской области, хотя у ГИБДД в Новгороде код 53.
Но вот проблема, коды регионов согласно конституции сейчас другие — какие-то области объединялись, приняли в свой состав Крым и т.д. и номера сместились. Перестроить же маршрутизацию из-за юридических движняков не возможно. Весь мир не будет перенастраивать оборудование из-за того, что в Крыму произошел референдум, а одна область перестала существовать.
Решил я получить обновленный список временных зон и кодов из имеющихся файлов и данных. Для этого потребуется еще 2 источника: список таймзон tzdata и Часовые пояса России. Еще скрипт и день или два времени, что бы ручками проставить пояса. Часовые пояса проставлены по большей части верно (TZ менее верно), UTC более. Чукотский автономный округ например имеет 3 пояса, у меня 1 (я адаптировал список для своей системы под свои нужды). Результат перед вами (актуален на начало мая 2016 года):
Наименование субъекта | Идентификатор региона | Номер субъекта согласно конституции | Код ОКАТО | Гост | TZ | UTC |
---|---|---|---|---|---|---|
Республика Адыгея | 1 | 01 | 79 | RU-AD | Europe/Moscow | +4 |
Республика Алтай | 2 | 04 | 84 | RU-AL | Asia/Krasnoyarsk | +7 |
Республика Башкортостан | 3 | 02 | 80 | RU-BA | Asia/Yekaterinburg | +5 |
Республика Бурятия | 4 | 03 | 81 | RU-BU | Asia/Irkutsk | +8 |
Республика Дагестан | 5 | 05 | 82 | RU-DA | Europe/Moscow | +3 |
Республика Ингушетия | 6 | 06 | 26 | RU-IN | Europe/Moscow | +3 |
Кабардино-Балкарская Республика | 7 | 07 | 83 | RU-KB | Europe/Moscow | +3 |
Республика Калмыкия | 8 | 08 | 85 | RU-KL | Europe/Moscow | +3 |
Карачаево-Черкесская Республика | 9 | 09 | 91 | RU-KC | Europe/Moscow | +3 |
Республика Карелия | 10 | 10 | 86 | RU-KR | Europe/Moscow | +3 |
Республика Коми | 11 | 11 | 87 | RU-KO | Europe/Moscow | +3 |
Республика Марий Эл | 12 | 12 | 88 | RU-ME | Europe/Moscow | +3 |
Республика Мордовия | 13 | 13 | 89 | RU-MO | Europe/Moscow | +3 |
Республика Саха (Якутия) | 14 | 14 | 98 | RU-SA | Asia/Yakutsk | +10 |
Республика Северная Осетия — Алания | 15 | 15 | 90 | RU-SE | Europe/Moscow | +3 |
Республика Татарстан | 16 | 16 | 92 | RU-TA | Europe/Moscow | +3 |
Республика Тыва | 17 | 17 | 93 | RU-TY | Asia/Krasnoyarsk | +7 |
Республика Удмуртская | 18 | 18 | 94 | RU-UD | Europe/Samara | +4 |
Республика Хакасия | 19 | 19 | 95 | RU-KK | Asia/Krasnoyarsk | +7 |
Республика Чеченская | 20 | 20 | 96 | RU-CE | Europe/Moscow | +3 |
Чувашская Республика | 21 | 21 | 97 | RU-CU | Europe/Moscow | +3 |
Алтайский край | 22 | 22 | 01 | RU-ALT | Asia/Krasnoyarsk | +7 |
Забайкальский край | 23 | 75 | 76 | RU-ZAB | Asia/Yakutsk | +8 |
Камчатский край | 24 | 41 | 30 | RU-KAM | Asia/Kamchatka | +12 |
Краснодарский край | 25 | 23 | 03 | RU-KDA | Europe/Moscow | +3 |
Красноярский край | 26 | 24 | 04 | RU-KYA | Asia/Krasnoyarsk | +7 |
Пермский край | 27 | 59 | 57 | RU-PER | Asia/Yekaterinburg | +5 |
Приморский край | 28 | 25 | 05 | RU-PRI | Asia/Vladivostok | +10 |
Ставропольский край | 29 | 26 | 07 | RU-STA | Europe/Moscow | +3 |
Хабаровский край | 30 | 27 | 08 | RU-KHA | Asia/Vladivostok | +10 |
Амурская область | 31 | 28 | 10 | RU-AMU | Asia/Yakutsk | +9 |
Архангельская область и Ненецкий автономный округ | 32 | 29 | 11 | RU-ARK | Europe/Moscow | +3 |
Астраханская область | 33 | 30 | 12 | RU-AST | Europe/Samara | +4 |
Белгородская область | 34 | 31 | 14 | RU-BEL | Europe/Moscow | +3 |
Брянская область | 35 | 32 | 15 | RU-BRY | Europe/Moscow | +3 |
Владимирская область | 36 | 33 | 17 | RU-VLA | Europe/Moscow | +3 |
Волгоградская область | 37 | 34 | 18 | RU-VGG | Europe/Moscow | +3 |
Вологодская область | 38 | 35 | 19 | RU-VLG | Europe/Moscow | +3 |
Воронежская область | 39 | 36 | 20 | RU-VOR | Europe/Moscow | +3 |
Ивановская область | 40 | 37 | 24 | RU-IVA | Europe/Moscow | +3 |
Иркутская область | 41 | 38 | 25 | RU-IRK | Asia/Irkutsk | +8 |
Калининградская область | 42 | 39 | 27 | RU-KGD | Europe/Kaliningrad | +2 |
Калужская область | 43 | 40 | 29 | RU-KLU | Europe/Moscow | +3 |
Кемеровская область | 44 | 42 | 32 | RU-KEM | Asia/Krasnoyarsk | +7 |
Кировская область | 45 | 43 | 33 | RU-KIR | Europe/Moscow | +3 |
Костромская область | 46 | 44 | 34 | RU-KOS | Europe/Moscow | +3 |
Курганская область | 47 | 45 | 37 | RU-KGN | Asia/Yekaterinburg | +5 |
Курская область | 48 | 46 | 38 | RU-KRS | Europe/Moscow | +3 |
Липецкая область | 50 | 48 | 42 | RU-LIP | Europe/Moscow | +3 |
Магаданская область | 51 | 49 | 44 | RU-MAG | Asia/Srednekolymsk | +11 |
Мурманская область | 53 | 51 | 47 | RU-MUR | Europe/Moscow | +3 |
Нижегородская область | 54 | 52 | 22 | RU-NIZ | Europe/Moscow | +3 |
Новгородская область | 55 | 53 | 49 | RU-NGR | Europe/Moscow | +3 |
Новосибирская область | 56 | 54 | 50 | RU-NVS | Asia/Omsk | +6 |
Омская область | 57 | 55 | 52 | RU-OMS | Asia/Omsk | +6 |
Оренбургская область | 58 | 56 | 53 | RU-ORE | Asia/Yekaterinburg | +5 |
Орловская область | 59 | 57 | 54 | RU-ORL | Europe/Moscow | +3 |
Пензенская область | 60 | 58 | 56 | RU-PNZ | Europe/Moscow | +3 |
Псковская область | 61 | 60 | 58 | RU-PSK | Europe/Moscow | +3 |
Ростовская область | 62 | 61 | 60 | RU-ROS | Europe/Moscow | +3 |
Рязанская область | 63 | 62 | 61 | RU-RYA | Europe/Moscow | +3 |
Самарская область | 64 | 63 | 36 | RU-SAM | Europe/Samara | +4 |
Саратовская область | 65 | 64 | 63 | RU-SAR | Europe/Moscow | +3 |
Сахалинская область | 66 | 65 | 64 | RU-SAK | Asia/Srednekolymsk | +11 |
Свердловская область | 67 | 66 | 65 | RU-SVE | Asia/Yekaterinburg | +3 |
Смоленская область | 68 | 67 | 66 | RU-SMO | Europe/Moscow | +3 |
Тамбовская область | 69 | 68 | 68 | RU-TAM | Europe/Moscow | +3 |
Тверская область | 70 | 69 | 28 | RU-TVE | Europe/Moscow | +3 |
Томская область | 71 | 70 | 69 | RU-TOM | Asia/Omsk | +6 |
Тульская область | 72 | 71 | 70 | RU-TUL | Europe/Moscow | +3 |
Тюменская область | 73 | 72 | 71 | RU-TYU | Asia/Yekaterinburg | +5 |
Ульяновская область | 74 | 73 | 73 | RU-ULY | Europe/Samara | +4 |
Челябинская область | 75 | 74 | 75 | RU-CHE | Asia/Yekaterinburg | +5 |
Ярославская область | 76 | 76 | 78 | RU-YAR | Europe/Moscow | +3 |
г. Москва | 77 | 77 | 45 | RU-MOW | Europe/Moscow | +3 |
г. Москва и Московская область | 77 | 50 | 46 | RU-MOS | Europe/Moscow | +3 |
г. Санкт — Петербург | 78 | 78 | 40 | RU-SPB | Europe/Moscow | +3 |
г. Санкт — Петербург и Ленинградская область | 78 | 47 | 41 | RU-LEN | Europe/Moscow | +3 |
Еврейская автономная область | 79 | 79 | 99 | RU-YEV | Asia/Vladivostok | +10 |
Ханты — Мансийский — Югра АО | 81 | 86 | 7110 | RU-KHM | Asia/Yekaterinburg | +5 |
Чукотский АО | 82 | 87 | 77 | RU-CHU | Asia/Kamchatka | +12 |
Ямало — Ненецкий АО | 83 | 89 | 7114 | RU-YAN | Asia/Yekaterinburg | +5 |
Севастополь | 84 | 92 | 67 | RU-SEV | Europe/Moscow | +3 |
Республика Крым | 84 | 91 | 35 | RU-CR | Europe/Moscow | +3 |