longitude-one/geo-parser

地理坐标字符串解析器

3.0.1 2024-05-23 05:41 UTC

This package is auto-updated.

Last update: 2024-09-23 06:31:58 UTC


README

longitude-one/geo-parser Stable release Packagist License

地理点字符串值的词法分析和解析库。

PHP CI Maintainability Test Coverage Coverage Status Minimum PHP Version Tested on PHP 8.1 to 8.3

Downloads

注意

此包是现在已废弃的 creof/geo-parser 包的延续。

安装

composer require longitude-one/geo-parser

使用

解析器有两种使用模式。要解析的值可以传递给构造函数,然后在返回的 Parser 对象上调用 parse() 方法。

$input  = '79°56′55″W, 40°26′46″N';

$parser = new Parser($input);

$value = $parser->parse(); // [-79.948611111111, 40.446111111111]

如果需要解析许多值,可以使用单个 Parser 实例。

$input1 = '56.242 E';
$input2 = '40:26:46 S';

$parser = new Parser();

$value1 = $parser->parse($input1); //56.242
$value2 = $parser->parse($input2); //-40.446111111111

支持的格式

支持单个值和成对值。以下是一些支持的格式示例,尽管并非所有可能的迭代都明确指定。

  1. 简单的单个带符号值
  • 40
  • -40
  • -8.543
  • +132
  • +77.2
  1. 简单的单个带符号值,带有度符号
  • 40°
  • -40°
  • -5.234°
  • +43°
  • +38.43°
  1. 单个无符号值,带或不带度符号,以及方位
  • 40° N
  • 40 S
  • 56.242 E
  1. 带符号整数度值的单个值,带度符号,以及带有撇号的十进制度分
  • 40° 26.222'
  • -65° 32.22'
  • +165° 52.22'
  1. 无符号整数度值的单个值,带度符号,带有撇号的十进制度分,以及方位
  • 40° 26.222' E
  • 65° 32.22' S
  1. 带符号整数度值的单个值,带度符号,带有撇号的整数分钟,以及可选的带有引号的整数或十进制秒
  • 40° 26' 46"
  • -79° 58' 56"
  • 93° 19' 25.8"
  • +120° 19' 25.8"
  1. 带符号整数度值的单个值,带冒号符号,整数分钟,以及可选的冒号和整数或十进制秒
  • +40:26:46
  • -79:58:56
  • 93:19:25.8
  1. 无符号整数度值的单个值,带度符号,带有撇号的整数分钟,可选的带有引号的整数或十进制秒,以及方位
  • 40° 26' 46" S
  • 99° 58' 56" W
  • 44° 58' 53.9" N
  1. 无符号整数度值的单个值,带冒号符号,整数分钟,可选的冒号和整数或十进制秒,以及方位
  • 40:26:46 S
  • 99:58:56 W
  • 44:58:53.9 N
  1. 任何一种格式中的两个值,由空格分隔

  2. 任何一种格式中的两个值,由逗号分隔

返回

解析器将返回整数/浮点数或包含这些值的数对的数组。

异常

LexerParser 将抛出实现接口 LongitudeOne\Geo\String\Exception\ExceptionInterface 的异常。