Комментарии 47
К моему несчастью, я нередко сталкиваюсь с тем, что поле индекса является обязательным.
Я довольно часто переезжаю. Вот и сейчас — что бы узнать свой индекс мне надо тратить время на поиски сайта с необходимой информацией, а потом и на нём искать свой индекс.
Было бы намного удобнее, если бы, в случае отсутствия заполненного индекса, он заполнялся бы автоматически по данным остальной части адреса.
Что-то мне подсказывает, что я не один такой =)
Я довольно часто переезжаю. Вот и сейчас — что бы узнать свой индекс мне надо тратить время на поиски сайта с необходимой информацией, а потом и на нём искать свой индекс.
Было бы намного удобнее, если бы, в случае отсутствия заполненного индекса, он заполнялся бы автоматически по данным остальной части адреса.
Что-то мне подсказывает, что я не один такой =)
Теоретически можно эту информацию «выдирать» из этой базы сконструировав запрос вида
Но чтобы избежать опечаток, названия областей, районов, городов пользователю нужно подсказывать при вводе, тем более, что в этой базе все республики, например, названы со словом «республика» на конце, отчего звучат непривычно (Адыгея республика, блинский блин).
SELECT index FROM post_indices WHERE region ILIKE 'Ваш регион' AND city ILIKE 'Ваш город' AND ops_type = 'П';
Но чтобы избежать опечаток, названия областей, районов, городов пользователю нужно подсказывать при вводе, тем более, что в этой базе все республики, например, названы со словом «республика» на конце, отчего звучат непривычно (Адыгея республика, блинский блин).
Но практически в крупных городах даже на одной небольшой улице могут быть разные индексы. То есть с помощью этой базы можно лишь проверить, что нет грубых ошибок, что указав индекс
/190.../
, я указал на Петербург, но 190000 или 190999 сервису всё равно.Ух-ты. Ребята по ссылкам молодцы!
Сколько времени было убито на войну сначала с КЛАДРом, а потом и с ФИАС. Разбор структуры, конвертация в нормальный формат, оптимизация, построение индексов… Теперь все это сидит где-то в темных глубинах одной малоизвестной облачно ERP. Эх, и видимо вместе с ней тихо помрет…
Сколько времени было убито на войну сначала с КЛАДРом, а потом и с ФИАС. Разбор структуры, конвертация в нормальный формат, оптимизация, построение индексов… Теперь все это сидит где-то в темных глубинах одной малоизвестной облачно ERP. Эх, и видимо вместе с ней тихо помрет…
В 2GIS можно узнать индекс по адресу, просто кликнув по зданию…
Еще дополню. В прицнипе, неправильно, если Интернет-магазин требует жестко индекс. Он должен требовать заведения либо индекса, либо адреса. И во втором варианте уже менеджер должен через Интернет или по телефону позвонить в почтовое отделение и выяснить этот индекс. клиента эта проблема касаться не должна. По моему опыту, свой индекс не знают примерно 30% клиентов, это не так много.
Я привык при заполнении адресов писать только цифры, отвечающие за город (3-4 первые), остальное дополняю нулями. Нули — это почтамт, почта через него и так проходит.
Почему так делаю: последние цифры — это номер отделения уже внутри города (вообще, адресуемой единицы), и ошибка в номере отделения затягивает доставку просто очень сильно. Пока в не том отделении посылку отложат, пока решат, что делать (иногда пересылают в правильное, иногда отправляют телеграмму получателю, что зайдите в такое-то отделение), пока отправят телеграмму, а ее пока доставят — ой много воды утечет. Грубо, с ошибкой в номере отделения надо отправлять, если вместо персиков действительно хочется получить курагу :)
Почему так делаю: последние цифры — это номер отделения уже внутри города (вообще, адресуемой единицы), и ошибка в номере отделения затягивает доставку просто очень сильно. Пока в не том отделении посылку отложат, пока решат, что делать (иногда пересылают в правильное, иногда отправляют телеграмму получателю, что зайдите в такое-то отделение), пока отправят телеграмму, а ее пока доставят — ой много воды утечет. Грубо, с ошибкой в номере отделения надо отправлять, если вместо персиков действительно хочется получить курагу :)
Вообще, идея отличная, но, как сказал товарищ выше, куда лучше после выбора региона подставлять основной индекс. Если человек захочет — исправит на более точный. Все равно основного индекса предостаточно — досылают в отделение по адресу.
И да, что делать с этим DBF-то? Мне бы в MySQL базу загрузить это дело — дальше сам уже сделаю.
P. S.: Нет, меня не забанили в гугле :-)
И да, что делать с этим DBF-то? Мне бы в MySQL базу загрузить это дело — дальше сам уже сделаю.
P. S.: Нет, меня не забанили в гугле :-)
в самой же статье указано. и для мускула тоже. O_O
В смысле, что конвертировать можно?
Ну, конвертер в убунтовских репозиториях есть: dbf2mysql. Попробуйте его. Есть ли под винду — не знаю.
Я не очень хорошо пользуюсь шелом и совсем никогда не пользовался репозиториями. Но у меня есть сервер на линуксе и доступ к шелу, соответственно. Я в нем какие-то простейшие задачи только делал всегда.
Не подскажете подробнее, как мне этот конвертер скачать/поставить? Буду спасибо.
Не подскажете подробнее, как мне этот конвертер скачать/поставить? Буду спасибо.
Если у вас Debian или Ubuntu:
На форуме sql.ru её вызывют так:
SQL-код при этом пойдёт на стандартный вывод (на монитор), добавьте перенаправление после команды для вывода в файл:
apt-get install dbf2mysql
(предварить sudo для Ubuntu). Как пользоваться — сможете почитать по команде man dbf2mysql
.На форуме sql.ru её вызывют так:
dbf2mysql -d test -t dbftable -h localhost -U root -P pass -vv DOMA.DBF
SQL-код при этом пойдёт на стандартный вывод (на монитор), добавьте перенаправление после команды для вывода в файл:
dbf2mysql -d test -t dbftable -h localhost -U root -P pass -vv DOMA.DBF > file.sql
У меня просто линукс (по край ней мере, так сообщает команда uname -a). Как я понимаю, в этом случае репозиторий для дебиана/убунты мне не очень подходит.
Ладно, я попробую, наверное, под винду найти конвертер, а то вопросами замучаю :-)
Ладно, я попробую, наверное, под винду найти конвертер, а то вопросами замучаю :-)
Если вы работаете с MySQL, то наверняка используете и PHP, для него существует расширение dBase для работы с dbf: http://php.net/manual/ru/ref.dbase.php
Если указывать индекс почтового хаба или города (с тремя нулями на конце), то посылка дойдет, но чуть позже. Для Интернет-магазинов это может быть критичным, поэтому они стараются указывать как-можно более точный индекс.
Чаще просто извещение никто не доставит, где посылка не знает, и она через 30 дней отправится обратно. Инфа 146%, проверено на большом количестве.
Да, такой риск есть. В целом, обсуждая вопрос доставки товара, корректность заполнения адреса многие знакомые магазины называют критически важным. Некоторые вообще считают, что нормальной практикой может являться запрос только телефона, обратный звонок, и детальное уточнение адреса доставки. В противном случае — расходы на обслуживание возврата товара могут быть существенны.
Эти индексы, будь они не ладны. Я, как человек довольно молодой, отправлял обычные письма всего несколько раз (и то — документы). Всегда приходится гуглить свой индекс. А вот в последний раз, несколько дней назад, я загуглил неверный индекс. Так что, идея с автоматическим проставлением индекса выглядит крайне круто. Надеюсь, когда-нибудь это станет обыденным делом.
Обычно, когда приходишь в почтовое отделение, его индекс где-нибудь написан крупными буквами. Можно прямо в отделении и заполнить.
Не, я товар заказывал в интернет магазине. Там нужно было ввести индекс.
В 2GIS можно узнать индекс по адресу, просто кликнув по зданию…
В США zip коды повсеместно используются и это очень удобно. Zip код написан в ID (=> всегда можно посмотреть), По нему легко найти ближайшие магазины, примерно оценить как далеко находится тот или иной район, получить предложение о скидках и прочих услугах, google maps рисует район и прочее прочее. Жаль что в России с этим большая беда.
А что такое ID?
Есть 2 термина: DL и ID.
DL — driver's license, по-нашему водительское удостоверение. Удостоверяет личность и даёт право управления транспортным средством.
ID — identification card. Это карточка, которая выглядит как DL и используется только для удостоверения личности.
DL и ID являются полноценными удостоверениями личности, с ними и в банк можно прийти, и на самолёте полететь. Паспорт при этом лежит дома и отдыхает.
В обоих прописан полный адрес проживания, включая zip код.
DL — driver's license, по-нашему водительское удостоверение. Удостоверяет личность и даёт право управления транспортным средством.
ID — identification card. Это карточка, которая выглядит как DL и используется только для удостоверения личности.
DL и ID являются полноценными удостоверениями личности, с ними и в банк можно прийти, и на самолёте полететь. Паспорт при этом лежит дома и отдыхает.
В обоих прописан полный адрес проживания, включая zip код.
У «Триколор-ТВ» на техподдержке используется определение нас.пункта по индексу.
Привет, народ. Мне для одного проекта потребовалось прикрутить эту базу, но ВСЕ НАЗВАНИЯ КАПСОМ!
Делюсь функцией на php, которая принимает строку (хоть капсом, хоть как) и делает каждое слово с большой буквы, кроме слов исключений, типа «район», «область» и т.д.
Особенности: первая буква слова в скобках тоже будет увеличена, слова могут быть разделены пробелом или тире.
Примеры работы, первая строка до обработки, вторая после обработки
Делюсь функцией на php, которая принимает строку (хоть капсом, хоть как) и делает каждое слово с большой буквы, кроме слов исключений, типа «район», «область» и т.д.
Особенности: первая буква слова в скобках тоже будет увеличена, слова могут быть разделены пробелом или тире.
Примеры работы, первая строка до обработки, вторая после обработки
- МОСКОВСКАЯ ОБЛАСТЬ, ОДИНЦОВО
- Московская область, Одинцово
- САРАТОВСКАЯ ОБЛАСТЬ, КРАСНОАРМЕЙСКИЙ РАЙОН, САДОВОЕ
- Саратовская область, Красноармейский район, Садовое
- ТЮМЕНСКАЯ ОБЛАСТЬ, ХАНТЫ-МАНСИЙСКИЙ-ЮГРА АВТОНОМНЫЙ ОКРУГ
- Тюменская область, Ханты-Мансийский-Югра автономный округ
- САХА (ЯКУТИЯ) РЕСПУБЛИКА, ЯКУТСК
- Саха (Якутия) Республика, Якутск
Код
/*
Функция предназначена для нормализации написания названий населенных пунктов из базы индексов Почты России,
http://info.russianpost.ru/database/ops.html
Функция возвращает строку, где каждое слово пишется с большой буквы, кроме слов исключений
Пример:
МОСКОВСКАЯ ОБЛАСТЬ, ОДИНЦОВО -> Московская область, Одинцово
САРАТОВСКАЯ ОБЛАСТЬ, КРАСНОАРМЕЙСКИЙ РАЙОН, САДОВОЕ -> Саратовская область, Красноармейский район, Садовое
ТЮМЕНСКАЯ ОБЛАСТЬ, ХАНТЫ-МАНСИЙСКИЙ-ЮГРА АВТОНОМНЫЙ ОКРУГ -> Тюменская область, Ханты-Мансийский-Югра автономный округ
САХА (ЯКУТИЯ) РЕСПУБЛИКА, ЯКУТСК -> Саха (Якутия) Республика, Якутск
*/
function RussianPost_NormalizeWords($string, $encoding='utf-8') {
//Слова исключения, они не будут написаны с большой буквы
$exceptions = array('автономный','автономная','округ','район','область','край','немецкий','национальный');
$string = mb_strtolower(trim($string), $encoding); //перевод всех букв в нижний регистр
$word = preg_split('/[\s-]+/', $string, -1, PREG_SPLIT_OFFSET_CAPTURE); //Разделяем строку на отдельные слова (разделители: пробел, тире)
$resultstring = ''; //Результирующая строка
for($i=0; $i<count($word); $i++) {
$substr = $word[$i][0]; //Отдельное слово из строки
$substr_nothooks = str_replace(array(')','(',',','.'),'',$substr); //Удаляем скобки, запятые, точки (для проверки слова на исключение)
if(!in_array($substr_nothooks, $exceptions)) { //Если слова нет в исключениях,
$offset1 = ($substr[0]=='(') ? 2 : 1; //Смещение первой буквы, нужно для того, чтобы правило применялось к словам в скобках
$first = mb_substr($substr, 0, $offset1, $encoding); //первая буква
$rest = mb_substr($substr, $offset1, mb_strlen($substr, $encoding), $encoding); //все кроме первой буквы
$first = mb_strtoupper($first, $encoding); //Переводим первую букву в верхний регистр
$substr = $first.$rest;
}
$splitter = (isset($word[$i+1])) ? substr($string, $word[$i+1][1]-1, 1) : ''; //Определяем разделитель между словами (пробел или тире)
$resultstring .= $substr.$splitter; //Склеиваем строку из отдельных слов, устанавливаем разделители между словами (пробел или тире)
}
return $resultstring; //Возвращаем строку.
}
Спасибо!
Я промазал и поставил вашему комментарию минус вместо плюса. Извините.
Я промазал и поставил вашему комментарию минус вместо плюса. Извините.
Если кто-то это читает, совсем не обязательно всё это преобразование регистра слов делать вручную, как выше в комментарии. Вполне можно использовать штатный mb_convert_case
. Например, как здесь.
Кроме того, есть ещё проблема аббревиатур вида ММПО, которые правильно было бы сохранить как есть. Код в комментарии выше этот момент не учитывает.
Подключил свой магазинчик к вам года с полтора назад. Даже чего-то донатил и багтречил помнится :)
Однако все чаще сталкиваюсь с тем, что юзер не знает своего индекса. А вот свой адрес — сюрприз! — знает всегда. То есть назревает вопрос: а можно ли как-то «повернуть процесс вспять»?
Однако все чаще сталкиваюсь с тем, что юзер не знает своего индекса. А вот свой адрес — сюрприз! — знает всегда. То есть назревает вопрос: а можно ли как-то «повернуть процесс вспять»?
Посмотрите в сторону сервисов «Кладр в облаке» и «Дадата», они клёвые. Я на них наткнулся уже после создания этого приложения.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Используем почтовые индексы в своём приложении во благо