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
Given value (string) | Latitude (float) | Longitude (float) | Place |
---|---|---|---|
"51.0504,13.7373" |
51.0504 | 13.7373 | Dresden, Germany |
"51.0504, 13.7373" |
51.0504 | 13.7373 | Dresden, Germany |
"51.0504 13.7373" |
51.0504 | 13.7373 | Dresden, Germany |
"POINT(-31.425299, -64.201743)" |
-31.425299 | -64.201743 | Córdoba, Argentina |
"POINT(-31.425299 -64.201743)" |
-31.425299 | -64.201743 | Córdoba, Argentina |
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
Given value (string) | Latitude (float) | Longitude (float) | Place |
---|---|---|---|
"51°3′1.44″N,13°44′14.28″E" |
51.0504 | 13.7373 | Dresden, Germany |
"51°3′1.44″N, 13°44′14.28″E" |
51.0504 | 13.7373 | Dresden, Germany |
"51°3′1.44″N 13°44′14.28″E" |
51.0504 | 13.7373 | Dresden, Germany |
"POINT(31°25′31.0764″S, 64°12′6.2748″W)" |
-31.425299 | -64.201743 | Córdoba, Argentina |
"POINT(31°25′31.0764″S 64°12′6.2748″W)" |
-31.425299 | -64.201743 | Córdoba, Argentina |
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
Given value (string) | Latitude (float) | Longitude (float) | Place |
---|---|---|---|
Copied Google Maps Short Url1) |
54.07304830 | 18.992402 | Malbork, Poland |
Copied Google Maps Link2) |
51.31237 | 12.4132924 | Leipzig, Germany |
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
Method | Type | Parameter(s) | Description | Example |
---|---|---|---|---|
getLatitude |
float | --- | Returns the decimal degree presentation of latitude value. | -31.425299 |
getLongitude |
float | --- | Returns the decimal degree presentation of longitude value. | -64.201743 |
getLatitudeDD |
float | --- | Alias of getLatitude . |
-31.425299 |
getLongitudeDD |
float | --- | Alias of getLongitude . |
-64.201743 |
getLatitudeDMS |
string | --- | Returns the dms representation of the latitude value. | "31°25′31.0764″S" |
getLongitudeDMS |
string | --- | Returns the dms representation of the longitude value. | "64°12′6.2748″W" |
getLatitudeDMS |
string | CoordinateValue::FORMAT_DMS_SHORT_2 |
Returns the dms representation of the latitude value (v2). | "S31°25′31.0764″" |
getLongitudeDMS |
string | CoordinateValue::FORMAT_DMS_SHORT_2 |
Returns the dms representation of the longitude value (v2). | "W64°12′6.2748″" |
getDistance |
float | new Coordinate() , meters (default) or kilometers |
Returns the distance to given second Coordinate instance. | 11904.668 |
getDegree |
float | new Coordinate() |
Returns the direction (degree) to given second Coordinate instance (0° - North, 90° - East, etc.). | -136.62 |
getDirection |
string | new Coordinate() |
Returns the cardinal direction to given second Coordinate instance (N , NE , E , SE , S , SW , W , NW ). |
"SW" |
getLinkGoogle |
string | false (default - as decimal) or true (as DMS) |
Returns the link to Google. | |
getLinkOpenStreetMap |
string | --- | Returns the link to OpenStreetMap. | OpenStreetMap |
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.