Lexer and parser library for geographic point string values.
Note
This package is the continuation of the now abandoned creof/geo-parser package.
composer require longitude-one/geo-parser
There are two use patterns for the parser. The value to be parsed can be passed into the constructor, then parse()
called on the returned Parser
object:
$input = '79°56′55″W, 40°26′46″N';
$parser = new Parser($input);
$value = $parser->parse(); // [-79.948611111111, 40.446111111111]
If many values need to be parsed, a single Parser
instance can be used:
$input1 = '56.242 E';
$input2 = '40:26:46 S';
$parser = new Parser();
$value1 = $parser->parse($input1); //56.242
$value2 = $parser->parse($input2); //-40.446111111111
Both single values and pairs are supported. Some samples of supported formats are below, though not every possible iteration may be explicitly specified:
- Simple single-signed values
- 40
- -40
- -8.543
- +132
- +77.2
- Simple single signed values with degree symbol
- 40°
- -40°
- -5.234°
- +43°
- +38.43°
- Single unsigned values with or without degree symbol, and cardinal direction
- 40° N
- 40 S
- 56.242 E
- Single values of signed integer degrees with degree symbol, and decimal minutes with apostrophe
- 40° 26.222'
- -65° 32.22'
- +165° 52.22'
- Single values of unsigned integer degrees with degree symbol, decimal minutes with apostrophe, and cardinal direction
- 40° 26.222' E
- 65° 32.22' S
- Single values of signed integer degrees with degree symbol, integer minutes with apostrophe, and optional integer or decimal seconds with quote
- 40° 26' 46"
- -79° 58' 56"
- 93° 19' 25.8"
- +120° 19' 25.8"
- Single values of signed integer degrees with colon symbol, integer minutes, and optional colon and integer or decimal seconds
- +40:26:46
- -79:58:56
- 93:19:25.8
- Single values of unsigned integer degrees with degree symbol, integer minutes with apostrophe, optional integer or decimal seconds with quote, and cardinal direction
- 40° 26' 46" S
- 99° 58' 56" W
- 44° 58' 53.9" N
- Single values of unsigned integer degrees with colon symbol, integer minutes with, optional colon and integer or decimal seconds, and cardinal direction
- 40:26:46 S
- 99:58:56 W
- 44:58:53.9 N
-
Two of any one format separated by whitespace
-
Two of any one format separated by a comma
The parser will return an integer/float or an array containing a pair of these values.
The Lexer
and Parser
will throw exceptions implementing interface LongitudeOne\Geo\String\Exception\ExceptionInterface
.