ixnode / php-coordinate
PHP Coordinate - This library offers a collection of various PHP coordinate classes like Coordinate, etc.
1.0.1
2024-12-07 11:56 UTC
Requires
- php: ^8.2
- ext-curl: *
- ext-gd: *
- adhocore/cli: ^v1.0.0
- ixnode/php-cli-image: ^1.0
- ixnode/php-exception: ^0.1.21
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.13
- ixnode/bash-version-manager: ^0.1.3
- jetbrains/phpstorm-attributes: ^1.0
- phpmd/phpmd: ^2.13
- phpstan/phpstan: ^1.9
- phpunit/phpunit: ^9.5
- povils/phpmnd: ^3.0
- rector/rector: ^0.15.1
README
This library offers a collection of various PHP coordinate classes like Coordinate, etc. It converts various coordinate strings and values into a unique format.
1. Usage
use Ixnode\PhpCoordinate\Coordinate;
1.1 Converter example
$coordinate = new Coordinate(51.0504, 13.7373); print $coordinate->getLatitudeDMS(); // (string) 51°3′1.44″N print $coordinate->getLongitudeDMS(); // (string) 13°44′14.28″E
1.2 Parser example
$coordinate = new Coordinate('51°3′1.44″N 13°44′14.28″E'); print $coordinate->getLatitude(); // (float) 51.0504 print $coordinate->getLongitude(); // (float) 13.7373
1.3 Distance example
$coordinateDresden = new Coordinate('51°3′1.44″N 13°44′14.28″E'); $coordinateCordoba = new Coordinate(-31.425299, -64.201743); /* Distance between Dresden, Germany and Córdoba, Argentina */ print $coordinate->getDistance($coordinateCordoba, Coordinate::RETURN_KILOMETERS); // (float) 11904.668
1.4 Direction example (degree)
$coordinateDresden = new Coordinate('51°3′1.44″N 13°44′14.28″E'); $coordinateCordoba = new Coordinate(-31.425299, -64.201743); /* Direction in degrees from Dresden, Germany to Córdoba, Argentina */ print $coordinateDresden->getDegree($coordinateCordoba); // (float) -136.62°
1.5 Direction example (cardinal direction)
$coordinateDresden = new Coordinate('51°3′1.44″N 13°44′14.28″E'); $coordinateCordoba = new Coordinate(-31.425299, -64.201743); /* Direction in degrees from Dresden, Germany to Córdoba, Argentina */ print $coordinateDresden->getDirection($coordinateCordoba); // (string) SW
2. Parser
2.1 Basic decimal degree parser
2.1.1 Parser formats
2.1.2 Code example
$coordinate = new Coordinate('51.0504 13.7373'); print $coordinate->getLatitude(); // (float) 51.0504 print $coordinate->getLongitude(); // (float) 13.7373
2.2 Basic DMS Parser
2.2.1 Parser formats
2.2.2 Code example
$coordinate = new Coordinate('51°3′1.44″N 13°44′14.28″E'); print $coordinate->getLatitude(); // (float) 51.0504 print $coordinate->getLongitude(); // (float) 13.7373
2.3 Google Url Parser Parser
2.3.1 Parser formats
2.3.2 Code example
$coordinate = new Coordinate('https://maps.app.goo.gl/PHq5axBaDdgRWj4T6'); print $coordinate->getLatitude(); // (float) 54.07304830 print $coordinate->getLongitude(); // (float) 18.992402
3. Converter
3.1 Methods of class Coordinate
3.2 Code example
$coordinate = new Coordinate('-31.425299, -64.201743'); print $coordinate->getLatitudeDMS(); // (string) "31°25′31.0764″S" print $coordinate->getLongitudeDMS(); // (string) "64°12′6.2748″W"
4. Installation
composer require ixnode/php-coordinate
vendor/bin/php-coordinate -V
php-coordinate 0.1.0 (03-07-2023 01:17:26) - Björn Hempel <bjoern@hempel.li>
5. Command line tool
Used to quickly check two given coordinates.
Check Dresden, Germany and New York, United States:
bin/console pc "51°3′1.44″N, 13°44′14.28″E" "40.712784, -74.005941"
or within your composer project:
vendor/bin/php-coordinate pc "51°3′1.44″N, 13°44′14.28″E" "40.712784, -74.005941"
Source coordinate (51°3′1.44″N, 13°44′14.28″E): +---------+------------------+--------------------+ | Value | Latitude | Longitude | +---------+------------------+--------------------+ | Decimal | 51.0504 | 13.7373 | | DMS | 51°3′1.44″N | 13°44′14.28″E | +---------+------------------+--------------------+ Target coordinate (40.712784, -74.005941): +---------+----------------------+---------------------+ | Value | Latitude | Longitude | +---------+----------------------+---------------------+ | Decimal | 40.712784 | -74.005941 | | DMS | 40°42′46.0224″N | 74°0′21.3876″W | +---------+----------------------+---------------------+ Distance: +-----------+-------------+ | Key | Value | +-----------+-------------+ | Distance | 6478.472 km | | Degree | -96.720° | | Direction | W | +-----------+-------------+ +--------------------------------------------------------------------------------+ | World map | +--------------------------------------------------------------------------------+ | | | ▄▄▄▄▀▄▄▄▄▄▄▄▄▄▄ | | ▄▄ ▄▄▄▄▄▄▄▄▀▀▀▀▀▀▀▀▀▀▀▀▀▀ ▄▄▄▄▀▀▀▀▀▄▄▄▄▄▄▄▄▄▄ | | ▄▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀ ▀▀▀▀▀▀▀▀ ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀ | | ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀ ▀▀▀▀ ▀▀ ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀ | | ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀ ▄▄▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▄ ▀▀ | | ▄▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀ ▄▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀ | | ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀ ▀▀▀▀▄▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▄ | | ▀▀▀▀▀▀▀▀▀▀▀▀ ▀▀▀▀▀▀▀▀▀▀▄▄▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀ | | ▀▀▀▀▀▀▄▄ ▀ ▄▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀ | | ▀▀▀▀▀▀ ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀ ▀▀▀▀▀▀▀▀▀▀▀▀▀ | | ▀▀▀▄▄▀▀▄▄▄ ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀ ▀▀ ▀▀▀▀ | | ▀▀▀▀▀▀▀▀▀▄ ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀ ▀▄ ▄▀▀ | | ▀▀▀▀▀▀▀▀▀▀▀▄▄▄ ▀▀▀▀▀▀▀▀▀▀▀ ▀▀▀▀▀▀▀ ▀▄▄▄▄ | | ▀▀▀▀▀▀▀▀▀▀▀▀▀▀ ▀▀▀▀▀▀▀▀▀ ▀ ▀▀▀▀▄| | ▀▀▀▀▀▀▀▀▀▀▀▀ ▀▀▀▀▀▀▀▀▀▄▀▀ ▄▀▀▀▀▀▀ | | ▀▀▀▀▀▀▀▀▀ ▀▀▀▀▀▀▀▀ ▀▀ ▀▀▀▀▀▀▀▀▀▀▀ | | ▀▀▀▀▀▀▀ ▀▀▀▀▀▀ ▀ ▀▀▀▀▀▀▀▀▀▀▀ | | ▀▀▀▀▀▀ ▀▀▀ ▀▀▀▀▀▀▀▀▀▀▀ | | ▀▀▀▀ ▀ | | ▀▀▀ | +--------------------------------------------------------------------------------+ +------------------------------------+ +---------------------------------------+ | Cardinal direction | | Longitude / Langitude | +------------------------------------| +---------------------------------------| | | | lat | | 0° | | | | | | 90° ⯅ | | ___ | | | | | -45° ─── 45° | | | | | // N \\ | | | • Oslo (59.91°, 10.75°) | | NW NE | | | • London (51.51°, -0.13°) | | | | | • New York (40.71°, -74.01°) | | -90° || W --+-- E || 90° | | | | | | | | | | | SW SE | | | | | \\ S // | | | • Null Island (0°, 0°) | | -135° ─── 135° | | ⯇-------+-------------------⯈ lon | | ‾‾‾ | | -180° | 180° | | | | | | | 180° | | | • Cape Agulhas | | | | -90° ⯆ (-34.82°, 20.02°) | +------------------------------------+ +---------------------------------------+
6. Library development
git clone git@github.com:ixnode/php-coordinate.git && cd php-coordinate
composer install
composer test
7. License
This library is licensed under the MIT License - see the LICENSE file for details.