vicchi / geojson-rewind
PHP 辅助类,用于强制执行 GeoJSON 中 RFC7946 多边形环绕顺序
1.0.1
2024-05-02 11:02 UTC
Requires
- php: ^7.1|^8.0
Requires (Dev)
- phpunit/phpunit: ^7|^8
This package is not auto-updated.
Last update: 2024-09-24 20:45:12 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 许可证发布。有关更多信息,请参阅 许可证文件。