yaroslawww/laravel-geonames

Import and manipulate geonames data in your project.

2.0.1 2022-09-12 14:58 UTC

This package is auto-updated.

Last update: 2024-10-12 19:08:59 UTC


README

Packagist License Packagist Version Total Downloads Build Status Code Coverage Scrutinizer Code Quality

Import and manipulate geonames data in your project.

Installation

Install the package via composer:

composer require yaroslawww/laravel-geonames
# or
composer require yaroslawww/laravel-geonames --dev

Optionally you can publish the config file with:

php artisan vendor:publish --provider="LaraGeoData\ServiceProvider" --tag="config"

Allow import local infile:

[
    'mysql_geo' => [
        // ....
        'options'    => [PDO::MYSQL_ATTR_LOCAL_INFILE=>true],
     ],
]

Usage

Commands

Manipulate dump files

Download dump files:

php artisan geonames:download GB.zip FR.zip --postal=GB.zip --postal=GB_full.csv.zip --postal=FR.zip --extract --force

Clear all downloaded files:

php artisan geonames:download:truncate

Make migrations

php artisan geonames:make:migration geonames
# or
php artisan geonames:make:migration geonames --suffix=gb

php artisan geonames:make:migration postalcodes --suffix=gb
php artisan geonames:make:migration admin_areas_view --suffix=gb --replaces=level:1
php artisan geonames:make:migration admin_areas_view --suffix=gb --replaces=level:2
php artisan geonames:make:migration admin_areas_view --suffix=gb --replaces=level:3

Import dump data to tables

php artisan geonames:import:file-to-db geonames
# or
php artisan geonames:import:file-to-db geonames --suffix=gb
# or
php artisan geonames:import:file-to-db geonames path/to/my/file.csv --suffix=gb

php artisan geonames:import:file-to-db postalcodes --suffix=gb
php artisan geonames:import:file-to-db postalcodes postal_codes/GB_full.txt --suffix=gb

Models

Geocodes

Initialise table:

$model = new Geoname();
# or
$model = Geoname::makeUsingSuffix('gb');
# or
# .env:  GEONAMES_DEFAULT_SUFFIX=gb
$model = new Geoname();

Use table:

Geoname::nearestInMiles(24.76778, 56.16306, 1.5)->orderByNearest()->get()
// or
$model = Geoname::makeUsingSuffix('gb');
$nearestLocation = $model->newQuery()->nearestInMiles(24.76778, 56.16306, 1.5)->orderByNearest()->firstOrFail();
echo $nearestLocation->distance;

Credits

  • Think Studio