worthwhileindustries/geojson-rewind

PHP 辅助类,用于强制执行 GeoJSON 中 RFC7946 多边形缠绕顺序

1.0.2 2022-07-12 02:31 UTC

This package is not auto-updated.

Last update: 2024-10-01 13:03:03 UTC


README

Build Status

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-rewindBSD-3-Clause 许可证下发布。有关更多信息,请参阅 许可证文件