worthwhileindustries / geojson-rewind
PHP 辅助类,用于强制执行 GeoJSON 中 RFC7946 多边形缠绕顺序
1.0.2
2022-07-12 02:31 UTC
Requires
- php: ^7.1||^8.0
Requires (Dev)
- phpunit/phpunit: ^7
This package is not auto-updated.
Last update: 2024-10-01 13:03:03 UTC
README
geojson-rewind
一组 PHP 辅助类,用于生成符合 GeoJSON 规范的 GeoJSON 几何形状。
在原始 GeoJSON 规范中,多边形环的顺序未定义,但自 RFC7946 以来,右手定则是强制性的。
线性环必须遵循相对于它所包围的区域的右手定则,即外部环是逆时针的,洞是顺时针的。
(如果你知道英国英语而不是美国英语,只需将 anticlockwise 替换为 counterclockwise。)
致谢
geojson-rewind
是由 Tom McWright 等人将 Mapbox 的 Node.JS geojson-rewind
模块移植到 PHP 的。对 Tom 以及 Mapbox 团队其他成员的全额信用、赞誉和致谢应予以感谢。
安装
安装 geojson-rewind
最简单的方法是使用 composer
$> composer require vicchi/geojson-rewind
使用方法
<?php include "vendor/autoload.php"; $source = [ 'type' => 'Polygon', 'coordinates' => [ [ [100.0, 0.0], [101.0, 0.0], [101.0, 1.0], [100.0, 1.0], [100.0, 0.0] ], [ [100.2, 0.2], [100.8, 0.2], [100.8, 0.8], [100.2, 0.8], [100.2, 0.2] ] ] ]; $enforce_rfc7946=true; $output = Vicchi\GeoJson\Rewind::rewind($source, $enforce_rfc7946); // show output for demonstration purposes var_dump($output); ?>
输出可能看起来像这样($>
是命令行提示符)。
$> php test.php
array(2) {
["type"]=>
string(7) "Polygon"
["coordinates"]=>
array(2) {
[0]=>
array(5) {
[0]=>
array(2) {
[0]=>
float(100)
[1]=>
float(0)
}
[1]=>
array(2) {
[0]=>
float(101)
[1]=>
float(0)
}
[2]=>
array(2) {
[0]=>
float(101)
[1]=>
float(1)
}
[3]=>
array(2) {
[0]=>
float(100)
[1]=>
float(1)
}
[4]=>
array(2) {
[0]=>
float(100)
[1]=>
float(0)
}
}
[1]=>
array(5) {
[0]=>
array(2) {
[0]=>
float(100.2)
[1]=>
float(0.2)
}
[1]=>
array(2) {
[0]=>
float(100.2)
[1]=>
float(0.8)
}
[2]=>
array(2) {
[0]=>
float(100.8)
[1]=>
float(0.8)
}
[3]=>
array(2) {
[0]=>
float(100.8)
[1]=>
float(0.2)
}
[4]=>
array(2) {
[0]=>
float(100.2)
[1]=>
float(0.2)
}
}
}
}
许可证
geojson-rewind
在 BSD-3-Clause 许可证下发布。有关更多信息,请参阅 许可证文件。