spinen/laravel-geometry

geoPHP 类的包装器,以便更好地与 Laravel 集成。

2.9.1 2024-04-08 20:47 UTC

README

Latest Stable Version Total Downloads Latest Unstable Version License

geoPHP 类的包装器,以便更好地与 Laravel 集成。

构建状态

先决条件

注意

1) 如果您需要使用 < php7.2,请继续使用 1.x 版本

2) 除了 Laravel >= 5.5,以下包也是必需的

安装

安装 Geometry

    $ composer require spinen/laravel-geometry

该包使用自动注册功能。

使用包

Geometry 类公开了 parseType 方法,其中 "Type" 是 geoPHP 支持的几何类型的 StudlyCase。以下是完整列表...

  • parseEwkb($geometry)
  • parseEwkt($geometry)
  • parseGeoHash($geometry)
  • parseGeoJson($geometry)
  • parseGeoRss($geometry)
  • parseGoogleGeocode($geometry)
  • parseGpx($geometry)
  • parseJson($geometry)
  • parseKml($geometry)
  • parseWkb($geometry)
  • parseWkt($geometry)

几何体被包装在 Spinen\Geometry\Geometries 命名空间中,并提供了一些糖,以便能够执行

  • toEwkb()
  • toEwkt()
  • toGeoHash()
  • toGeoJson()
  • toGeoRss()
  • toGoogleGeocode()
  • toGpx()
  • toJson()
  • toKml()
  • toWkb()
  • toWkt()

除了上述导出方法之外,我们还添加了一个 toArray 方法,它从 toJson 方法中返回一个数组。为了方便起见,我们通过 getter 公开了几何体的所有属性,因此您可以直接访问属性,而无需询问数组中的键。

多边形的面积

我们估计的面积单位是平方米和英亩。我们预计估计误差在 1% 以内,因此它不是非常准确。我们基本上重构了 Mapbox 在他们的 geojson-area 包 中的一个 js 方法。您可以通过调用 getAcresgetSquareMeters 来获取面积。它们作为属性有快捷方式,因此您可以直接读取 "acres" 或 "square_meters" 属性。

示例

// Area of Polygon
$points = [[1,1], [2,2], [3,2], [3,4]];

$geoJson = '{"type":"Polygon", "coordinates":[' . json_encode($points) . ']}';

$geo = new geoPHP();
$mapper = new Spinen\Geometry\Support\TypeMapper();
$geometry = new Spinen\Geometry\Geometry($geo, $mapper);

$collection = $geometry->parseGeoJson($geoJson); // see above for more parse options

$squareMeters = $collection->getSquareMeters();
$acres = $collection->getAcres();