data-values / geo
地理值对象、解析器和格式化工具
4.4.0
2022-10-21 14:19 UTC
Requires
- php: >=7.3
- data-values/data-values: ^3.0|^2.0|^1.0|~0.1
- data-values/interfaces: ^1.0.0|^0.2.0
- symfony/polyfill-php80: ^1.18.1
Requires (Dev)
- maglnet/composer-require-checker: ^3.0|^2.0
- mediawiki/mediawiki-codesniffer: ^34 || ^35 || ^36 || ^38
- ockcyp/covers-validator: ^1.3.3
- phpmd/phpmd: ^2.9.1
- phpstan/phpstan: ^0.12.68 || ^1.0.0
- phpunit/phpunit: ^9.4.1
- vimeo/psalm: ^4.4.1
This package is auto-updated.
Last update: 2024-09-14 19:58:38 UTC
README
一个小型库,用于解析、格式化和表示坐标。此库支持多种坐标格式,经过良好测试,并由维基百科和维基数据的软件使用。
在Packagist上:
用法
要解析字符串到LatLongValue
对象,请使用坐标解析器之一。
$parser = new LatLongParser(); $latLongValue = $parser->parse('55.7557860 N, 37.6176330 W'); var_dump($latLongValue->getLongitude()); // float: -37.6176330
以下提供了解析器
LatLongParser
- 针对特定格式的解析器外观。在大多数情况下,您将使用此解析器DdCoordinateParser
- 解析十进制度坐标DmCoordinateParser
- 解析十分之一度坐标DmsCoordinateParser
- 解析度分秒坐标FloatCoordinateParser
- 解析浮点坐标GlobeCoordinateParser
- 解析坐标到GlobeCoordinateValue
对象
要将坐标对象转换为字符串,请使用坐标格式化器之一。
$formatter = new LatLongFormatter(); $coordinateString = $formatter->format(new LatLongValue(42.23, 13.37));
以下提供了解析器
LatLongFormatter
- 将LatLongValue
格式化为支持的所有格式之一GlobeCoordinateFormatter
- 格式化GlobeCoordinateValue
要表示一组坐标,请使用值对象之一。
LatLongValue
具有浮点纬度和经度。 GlobeCoordinateValue
包装LatLongValue
并添加精度和地球标识符。
支持的坐标格式有:
- 度分秒(
55° 45' 20.8296", -37° 37' 3.4788"
或55° 45' 20.8296" N, 37° 37' 3.4788" W
) - 十分之一度(
55° 30', -37° 30'
或55° 30' N, 37° 30' W
) - 十进制度(
55.7557860°, -37.6176330°
或55.7557860° N, 37.6176330° W
) - 浮点(
55.7557860, -37.6176330
或55.7557860 N, 37.6176330 W
)
解析器和格式化器允许您自定义用于度、分和秒的符号,并更改表示方向的字母(N、E、S、W)。
要求
Geo 4.x: PHP 7.1或更高版本(已测试PHP 7.1至PHP 7.4)
Geo 3.x: PHP 5.5或更高版本(已测试PHP 5.5至PHP 7.4和HHVM)
安装
要将此包作为本地、针对项目的依赖项添加到您的项目中,只需将data-values/geo
依赖项添加到项目中的composer.json
文件。以下是一个仅定义对此包4.x版本依赖项的composer.json
文件的示例
{ "require": { "data-values/geo": "^4.0.0" } }
运行测试
仅测试
composer test
仅样式检查
composer cs
完整CI运行
composer ci
作者
Geo 数据值基于并包含由 Jeroen De Dauw 为 Maps 和 Semantic MediaWiki 项目编写的许多代码。
维基数据团队做出了重大贡献,这些贡献是由 Wikimedia Germany 的员工为 Wikidata 项目 所做的。
发布说明
4.4.0 (2022-10-21)
- 在
LatLongValue
和GlobeCoordinateValue
中实现了__serialize
和__unserialize
,提高了与 PHP 8.1 的兼容性 - 添加了
LatLongValue::getSerializationForHash
;使用LatLongValue
的 PHP 序列化作为散列的类应调用此方法
4.3.0 (2021-04-21)
- 将最低 PHP 版本从 7.1 提高到 7.3
4.2.3 (2021-04-23)
GlobeCoordinateValue::newFromArray
现在支持数字字符串(感谢 @Silvan-WMDE)
4.2.2 (2021-01-20)
- 添加了对
data-values/data-values
3.x 的兼容性 - 添加了对
data-values/interfaces
1.x 的兼容性
4.2.1 (2019-12-18)
- 修复了
GlobeCoordinateParser
无法解析多个值(4.2.0 回归)的问题
4.2.0 (2019-09-20)
- 添加了
GlobeCoordinateValue::withPrecision
4.1.0 (2018-10-29)
- 将所有文件中的 "PHP 严格类型" 添加
LatLongValue
不再扩展DataValueObject
GlobeCoordinateValue
不再扩展DataValueObject
- 重新排序了
LatLongValue
和GlobeCoordinateValue
中的方法以提高可读性 - 取消弃用
LatLongValue::newFromArray
- 取消弃用
GlobeCoordinateValue::newFromArray
4.0.1 (2018-08-10)
- 修复了解析 S/W 方向的小写字母坐标的问题
- 修复了解析省略单个分钟数的 DMS 坐标的问题
3.0.1 (2018-08-01)
- 修复了解析 S/W 方向的小写字母坐标的问题
2.1.2 (2018-08-01)
- 修复了解析 S/W 方向的小写字母坐标的问题
4.0.0 (2018-07-13)
- 将最低要求的 PHP 版本从 5.5.9 更新到 7.1
- 添加了标量类型提示
- 添加了返回类型提示
- 添加了可空类型提示
- 使常量可见性明确
- 现在无效的
LatLongValue
构造会导致抛出InvalidArgumentException
而不是OutOfRangeException
3.0.0 (2018-03-20)
- 删除了
DATAVALUES_GEO_VERSION
常量 - 解析器不再扩展
StringValueParser
- 它们不再有公共方法
setOptions
和getOptions
- 它们不再有受保护的字段
options
- 它们不再有受保护的
requireOption
、defaultOption
和stringParse
方法 GlobeCoordinateParser
和LatLongParser
不再有受保护的getOption
方法
- 它们不再有公共方法
- 将多个受保护的字段和方法改为私有
LatLongValue
的所有字段GlobeCoordinateParser
中的detect…Precision
方法LatLongParser::getParsers
- 删除了公共静态方法
LatLongParser::areCoordinates
- 放弃了对 DataValues Common 库的依赖
- 删除了长时间弃用的类别名
DataValues\GlobeCoordinateValue
(现在在DataValues\Geo\Values
中)DataValues\LatLongValue
(现在在DataValues\Geo\Values
中)DataValues\Geo\Formatters\GeoCoordinateFormatter
(现在为LatLongFormatter
)DataValues\Geo\Parsers\GeoCoordinateParser
(现在为LatLongParser
)
2.1.1 (2017-08-09)
- 允许与 ~0.4.0 的 DataValues/Common 一起使用
2.1.0 (2017-08-09)
- 删除 MediaWiki 集成
- 使用 …::class 功能
- 添加 .gitattributes 以排除 git 导出中不需要的文件
- 使用 Wikibase CodeSniffer 而不是 Mediawiki 的
- 移至短数组语法
2.0.1 (2017-06-26)
- 修复了
GlobeCoordinateValue::newFromArray
和LatLongValue::newFromArray
不接受混合值的问题。 - 弃用
GlobeCoordinateValue::newFromArray
和LatLongValue::newFromArray
。 - 将最低要求的 PHP 版本从 5.3 更新到 5.5.9。
2.0.0 (2017-05-09)
GlobeCoordinateValue
不再接受空字符串作为地球GlobeCoordinateValue
不再接受 [-360..+360] 区间之外的精度- 以不兼容的方式更改了
GlobeCoordinateValue
的哈希计算。 - 将
GeoCoordinateFormatter
重命名为LatLongFormatter
,保留了一个废弃的别名。 - 将
GeoCoordinateParser
重命名为LatLongParser
,保留了一个废弃的别名。 - 将
GeoCoordinateParserBase
重命名为LatLongParserBase
。 - 废弃了
LatLongParser::areCoordinates
。
1.2.2 (2017-03-14)
- 修复了
GeoCoordinateFormatter
中的多个舍入问题。
1.2.1 (2016-12-16)
- 修复了
GeoCoordinateFormatter
中的另一个 IEEE 问题。
1.2.0 (2016-11-11)
- 添加了公共方法和常量的缺失的内置文档。
- 添加了一个基本的 PHPCS 规则集,可以通过
composer phpcs
运行。
1.1.8 (2016-10-12)
- 修复了
GeoCoordinateFormatter
中的另一个 IEEE 问题。 - 修复了测试中的一个 PHP 7.1 兼容性问题。
1.1.7 (2016-05-25)
- 对文档进行了小的改进。
1.1.6 (2016-04-02)
- 添加了对 DataValues Common 0.3.x 的兼容性。
1.1.5 (2015-12-28)
- 该组件现在可以与 DataValues Interfaces 0.2.x 一起安装。
1.1.4 (2014-11-25)
- 在更多地方回退到默认值以处理无效精度。
1.1.3 (2014-11-19)
- 在无效精度的情况下回退到默认值,而不是除以零。
1.1.2 (2014-11-18)
GlobeCoordinateParser
中的精度检测现在有一个下限为 0.00000001°。
1.1.1 (2014-10-21)
- 从消息和注释中移除了类别名的剩余使用。
- 修复了文档中的一些类型。
1.1.0 (2014-10-09)
- 使组件可以通过 DataValues 1.x 安装。
GeoCoordinateFormatter
现在支持以度为单位进行精度设置。GlobeCoordinateFormatter
现在将球面精度传递给其使用的GeoCoordinateFormatter
。- 在 ValueParsers 中引入了
FORMAT_NAME
类常量,以便按预期使用它们作为 expectedFormat。 - ValueParsers 现在在构造
ParseException
时传递 rawValue 和 expectedFormat 参数。
1.0.0 (2014-07-31)
- 所有类和接口都已移动到
DataValues\Geo
命名空间中。DataValues\LatLongValue
保留为废弃的别名。DataValues\GlobeCoordinateValue
保留为废弃的别名。
GlobeCoordinateValue
中的 Globe 现在默认为http://www.wikidata.org/entity/Q2
。
0.2.0 (2014-07-07)
- 移除了废弃的
GeoCoordinateValue
。 - 添加了
GlobeMath
。
0.1.2 (2014-01-22)
- 添加了对 GeoCoordinateFormatter 中不同间距级别的支持。
0.1.1 (2013-11-30)
- 添加了对 GeoCoordinateFormatter 中的方向记法的支持。
- 降低了 GeoCoordinateFormatter 的复杂性。
- 降低了 GeoCoordinateFormatterTest 的复杂性和耦合度。
0.1.0 (2013-11-17)
这是具有这些功能的初始版本。
- LatLongValue
- GlobeCoordinateValue
- GeoCoordinateFormatter
- GlobeCoordinateFormatter
- DdCoordinateParser
- DmCoordinateParser
- DmsCoordinateParser
- FloatCoordinateParser
- GeoCoordinateParser
- GlobeCoordinateParser