Skip to content

Repository files navigation

PHP Coordinate

ReleasePHPPHPStanPHPUnitPHPCSPHPMDRector - Instant Upgrades and Automated RefactoringLICENSE

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

useIxnode\PhpCoordinate\Coordinate;

1.1 Converter example

$coordinate = newCoordinate(51.0504, 13.7373);
print$coordinate->getLatitudeDMS();
// (string) 51°3′1.44″Nprint$coordinate->getLongitudeDMS();
// (string) 13°44′14.28″E

1.2 Parser example

$coordinate = newCoordinate('51°3′1.44″N 13°44′14.28″E');
print$coordinate->getLatitude();
// (float) 51.0504print$coordinate->getLongitude();
// (float) 13.7373

1.3 Distance example

$coordinateDresden = newCoordinate('51°3′1.44″N 13°44′14.28″E');
$coordinateCordoba = newCoordinate(-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 = newCoordinate('51°3′1.44″N 13°44′14.28″E');
$coordinateCordoba = newCoordinate(-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 = newCoordinate('51°3′1.44″N 13°44′14.28″E');
$coordinateCordoba = newCoordinate(-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.050413.7373Dresden, Germany
"51.0504, 13.7373"51.050413.7373Dresden, Germany
"51.0504 13.7373"51.050413.7373Dresden, Germany
"POINT(-31.425299, -64.201743)"-31.425299-64.201743Córdoba, Argentina
"POINT(-31.425299 -64.201743)"-31.425299-64.201743Córdoba, Argentina

2.1.2 Code example

$coordinate = newCoordinate('51.0504 13.7373');
print$coordinate->getLatitude();
// (float) 51.0504print$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.050413.7373Dresden, Germany
"51°3′1.44″N, 13°44′14.28″E"51.050413.7373Dresden, Germany
"51°3′1.44″N 13°44′14.28″E"51.050413.7373Dresden, Germany
"POINT(31°25′31.0764″S, 64°12′6.2748″W)"-31.425299-64.201743Córdoba, Argentina
"POINT(31°25′31.0764″S 64°12′6.2748″W)"-31.425299-64.201743Córdoba, Argentina

2.2.2 Code example

$coordinate = newCoordinate('51°3′1.44″N 13°44′14.28″E');
print$coordinate->getLatitude();
// (float) 51.0504print$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.0730483018.992402Malbork, Poland
Copied Google Maps Link2)51.3123712.4132924Leipzig, Germany

2.3.2 Code example

$coordinate = newCoordinate('https://maps.app.goo.gl/PHq5axBaDdgRWj4T6');
print$coordinate->getLatitude();
// (float) 54.07304830print$coordinate->getLongitude();
// (float) 18.992402

3. Converter

3.1 Methods of class Coordinate

MethodTypeParameter(s)DescriptionExample
getLatitudefloat---Returns the decimal degree presentation of latitude value.-31.425299
getLongitudefloat---Returns the decimal degree presentation of longitude value.-64.201743
getLatitudeDDfloat---Alias of getLatitude.-31.425299
getLongitudeDDfloat---Alias of getLongitude.-64.201743
getLatitudeDMSstring---Returns the dms representation of the latitude value."31°25′31.0764″S"
getLongitudeDMSstring---Returns the dms representation of the longitude value."64°12′6.2748″W"
getLatitudeDMSstringCoordinateValue::FORMAT_DMS_SHORT_2Returns the dms representation of the latitude value (v2)."S31°25′31.0764″"
getLongitudeDMSstringCoordinateValue::FORMAT_DMS_SHORT_2Returns the dms representation of the longitude value (v2)."W64°12′6.2748″"
getDistancefloatnew Coordinate(), meters (default) or kilometersReturns the distance to given second Coordinate instance.11904.668
getDegreefloatnew Coordinate()Returns the direction (degree) to given second Coordinate instance (0° - North, 90° - East, etc.).-136.62
getDirectionstringnew Coordinate()Returns the cardinal direction to given second Coordinate instance (N, NE, E, SE, S, SW, W, NW)."SW"
getLinkGooglestringfalse (default - as decimal) or true (as DMS)Returns the link to Google.Google
getLinkOpenStreetMapstring---Returns the link to OpenStreetMap.OpenStreetMap

3.2 Code example

$coordinate = newCoordinate('-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 |||||||| 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°) |
+------------------------------------+ +---------------------------------------+

Services

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.

About

This library offers a collection of various PHP coordinate classes like Coordinate, etc. It converts various coordinate strings and values into a unique format.

Resources

Stars

3 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages