ngtfkx / laradeck-address-generator
Generating real addresses to create test data
Requires
- php: ~7.0
- illuminate/support: ~5.1
Requires (Dev)
- phpunit/phpunit: >=5.4.3
- squizlabs/php_codesniffer: ^2.3
README
Генерация реальных адресов для нужд разработки.
В отличии от Faker адреса реальныe для каждого города и их можно выводить на карту. Теперь у тестировщика не будет вопросов - почему маркер на карте не совпадает с адресом и как это объяснить клиенту/заказчику.
Install
Via Composer
$ composer require ngtfkx/laradeck-address-generator
Если необходимы консольные команды или подключение своих источников данных, то добавьте в файл config/app.php
(для версий <=5.4.*)
сервис-провайдер
Ngtfkx\Laradeck\AddressGenerator\LaradeckAddressGeneratorServiceProvider::class,
Usage
Получение случайного адреса для любого из городов, который есть в пакете
$generator = new \Ngtfkx\Laradeck\AddressGenerator\Generator(); $address = $generator->getRandomAddress();
Получение случайного адреса для любого из указанных городов
$generator = new \Ngtfkx\Laradeck\AddressGenerator\Generator(); $generator->setCities('Tomsk', 'nsk', 'Омск'); // можно передавать массив $generator->addCity('новосибирск'); // добавит город к ранее установленным $address = $generator->getRandomAddress(); // адрес будет для какого-то из вышеуказанных 4-х горолдов
Documentation
Получение адреса
Для получения адреса существуют следующие методы
getRandomAddress($forCity = null): Address
- получить один адресgetRandomAddresses(int $count, $forCity = null): Collection
- получить коллекцию с указанным кол-ом адресов
По умолчанию случайный адрес может быть сгенерирован для любого из поддерживаемых городов (если алиас города не указан параметром)
Установка города
Если надо сгенерировать адрес для конкретного города(ов), то надо принудительно указать эти города. Для этого есть следующие методы
addCity(string $city): Generator
- добавить город по его алиасу в список использованныхaddCities(...$cities): Generator
- добавить несколько городов (можно через запятую, можно массивом)setCities(...$cities): Generator
- добавить несколько городов, обнулись ранее добавленные
Объект типа Address
Содержить следующие методы
getFull(): string
- получить полный адрес (с городом, улицей и номером дома)getInsideLocality(): string
- получить адрес нутри населенного пункта (только улица и номер дома)getLocality(): string
- получить наименование населенного пунктаgetStreet(): string
- получить наименование улицыgetBuilding(): string
- получить номер дома
Структура хранения данных
Данные для генерации адресов по городам храняться в папке data/ru
в файле {cityId}.php
в
виде массива, где {cityId}
- id города в системе http://nominatim.openstreetmap.org/
return [ "1 Восточный спуск" => ["100", "101", "102"], "1-й квартал" => ["13", "2a", "3/1", "4", "5", "6"], ];
Информация о списке поддерживаемых городов и их алиасах хранится в файле data/ru/cities.php
виде массива
return [ '173343488' => [ 'Омск', 'Omsk', ], '173436661' => [ 'Новосибирск', 'Nsk', 'Novo-sibirsk', 'Нск', ], ];
Подключение пользовательских данных
Для подключения пользовательских данных положите файл аналогичной структуры (см. Структура хранения данных) в любое место и укажите абсолютный путь до него от корня диска. Далее подключаете данные следующим образом
$generator = new Generator(); $generator->loadCustomData(111, 'Нефтебаза', storage_path('app/111.php'));
Теперь адреса населенного пункта Нефтебаза доступны для генерации.
Статистика
Для получения информации о доступных городах и адресах есть консольная команда
php artisan address:stat
Генерация своих файлов данных
Для генерации файла данных есть консольная команда
php artisan address:city-address-ru {city} {url} {--limit=0}
- {city} - id города в системе http://nominatim.openstreetmap.org/
- {url} - первая страница города со списком улиц на сайте http://www.city-address.ru/, например вот такая
- {--limit=0} - кол-во обрабатываемых страниц (0 - все)
Поддерживаемые города
- Омск. Адресов: 27 297
- Новосибирск. Адресов: 41 052
- Красноярск. Адресов: 14 628
- Барнаул. Адресов: 16 668
- Томск. Адресов: 17 859
- Сургут. Адресов: 2 649
- Белгород. Адресов: 13 524
- Брянск. Адресов: 14 844
- Иваново. Адресов: 18 333
- Сочи. Адресов: 6 885
- Магнитогорск. Адресов: 7 846
- Тверь. Адресов: 12 494
- Улан-Удэ. Адресов: 14 229
- Ставрополь. Адресов: 8 204
- Курск. Адресов: 2 327
- Калининград. Адресов: 13 618
- Тула. Адресов: 12 081
- Чебоксары. Адресов: 7 315
- Киров. Адресов: 8 966
- Липецк. Адресов: 14 182
- Пенза. Адресов: 18 877
- Набережные Челны. Адресов: 4 947
- Астрахань. Адресов: 35 539
- Рязань. Адресов: 10 751
- Новокузнецк. Адресов: 22 101
- Кемерово. Адресов: 20 679
- Оренбург. Адресов: 17 617
- Махачкала. Адресов: 1 100
- Владивосток. Адресов: 7 739
- Ярославль. Адресов: 14 571
- Хабаровск. Адресов: 16 990
- Иркутск. Адресов: 15 746
- Ульяновск. Адресов: 12 533
- Ижевск. Адресов: 13 636
- Тольятти. Адресов: 8 107
- Тюмень. Адресов: 18 074
- Саратов. Адресов: 16 236
- Краснодар. Адресов: 6 143
- Волгоград. Адресов: 37 421
- Воронеж. Адресов: 22 383
- Пермь. Адресов: 4 495
- Уфа. Адресов: 19 805
- Ростов-на-Дону. Адресов: 37 131
- Самара. Адресов: 19 083
- Челябинск. Адресов: 23 013
- Казань. Адресов: 30 572
- Нижний Новгород. Адресов: 22 949
- Екатеринбург. Адресов: 4 936
- Санкт-Петербург. Адресов: 20 138
- Москва. Адресов: 34 015
Change log
Please see CHANGELOG for more information on what has changed recently.
Credits
Milestones
- Version 1: базовая функциональность
- Version 2: подключение стран, локализация, геокординаты, перевод на английский
- Version 3: отвязка от фреймворка
License
The MIT License (MIT). Please see License File for more information.