SPINEN's Laravel Geometry

Latest Stable Version Total Downloads Latest Unstable Version Dependency Status License

Wrapper over the geoPHP Class to make it integrate with Laravel better.

Build Status

Branch Status Coverage Code Quality
Develop Build Status Coverage Status Scrutinizer Code Quality
Master Build Status Coverage Status Scrutinizer Code Quality

Prerequisite

Install

Install Geometry:

    $ composer require spinen/laravel-geometry

For >= Laravel 5.5, you are done with the Install

The package uses the auto registration feature

For < Laravel 5.5, you have to register the Service Provider

Add the Service Provider to config/app.php:

    'providers' => [
        // ...
        Spinen\Geometry\GeometryServiceProvider::class,
    ];

[Optional] Add the Facade to config/app.php:

    'aliases' => [
        // ...
        'Geo' => Spinen\Geometry\GeometryFacade::class,
    ];

Using the package

The Geometry Class exposes parseType methods where "Type" is StudlyCase of the geometry type that geoPHP supports. Here is a full list...

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

The geometries are wrapped in a Spinen\Geometry\Geometries namespace with a little sugar to be able to do

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

In addition to the above export methods, we have added a toArray that gives an array from the toJson method. For convenience, we have exposed all of the properties of the geometry through a getter, so you have direct access to the property without having ask for the keys in the array.

Area of the polygon

We are estimating the area in meters squared & acres. We expect the estimation to be within 1%, so it is not very accurate. We essentially refactored a js method that Mapbox has in their geojson-area package . You get the area by calling the getAcres or getSquareMeters. There is a shortcut to them as properties, so you can read the "acres" or "square_meters" property.