Yii2 Postgis

Alternatives To Yii2 Postgis
Project NameStarsDownloadsRepos Using ThisPackages Using ThisMost Recent CommitTotal ReleasesLatest ReleaseOpen IssuesLicenseLanguage
Geophp709129233 years ago1December 02, 201475otherPHP
Advanced geometry operations in PHP
Laravel Postgis347362a day ago47August 11, 202221mitPHP
Postgis extensions for laravel. Aims to make it easy to work with geometries from laravel models.
Doctrine Postgis1931912 months ago14April 21, 20222mitPHP
Spatial and Geographic Data with PostGIS and Doctrine.
Pg2b3dm191
2 days ago19February 16, 20232mitJavaScript
Tool for converting from PostGIS to b3dm tiles
Go.geojson16021982 years ago3May 22, 2019mitGo
Encoding and decoding GeoJSON <-> Go
Geospatial1443716 days ago18December 07, 202181agpl-3.0JavaScript
Odoo and GIS
Postgis_adapter871113 years ago17March 18, 20111otherRuby
RIP : Fork of spatial_adapter to give postgis more love
Simplefeatures78
5 days ago65June 10, 202248mitGo
Simple Features is a pure Go Implementation of the OpenGIS Simple Feature Access Specification
Pgh376
a year ago1apache-2.0C
PostgreSQL extension for the H3 hierarchical geospatial indexing system
Python Postgis63
a year ago4Python
PostGIS helpers for psycopg2 and asyncpg
Alternatives To Yii2 Postgis
Select To Compare


Alternative Project Comparisons
Readme

Yii2 Postgis

Extension for working with Postgis. As intermediate format used Geo Json.

Installing

The preferred way to install this extension is through Composer.

{
  "require": {
    "nanson/yii2-postgis": "*"
  }
}

GeometryBehavior

Converts coordinates array to SQL expression for saving in postgis binary format before insert/update and from postgis binary to array after find.

<?php

use yii\db\ActiveRecord;
use nanson\postgis\behaviors\GeometryBehavior;

class MyModel extends ActiveRecord
{

    // ...
    
    public function behaviors()
    {
        return [
            [
                'class' => GeometryBehavior::className(),
                'type' => GeometryBehavior::GEOMETRY_POINT,
                'attribute' => 'point',
                // explicitly set custom db connection if you do not want to use
                // static::getDb() or Yii::$app->getDb() connections
                'db' => 'db_custom'
            ],
            [
                'class' => GeometryBehavior::className(),
                'type' => GeometryBehavior::GEOMETRY_LINESTRING,
                'attribute' => 'line',
                // skip attribute if it was not selected as Geo Json (by PostgisQueryTrait), because it requires a separate query.
                'skipAfterFindPostgis' => true,
            ],
        ];
    }

    // ...

}

// ...

$model = new MyModel;

$model->point = [39.234, 54.456];
$model->line = [[102.0, 0.0], [103.0, 1.0], [104.0, 0.0], [105.0, 1.0]];

$model->save();

?>
Option Type Default Description
attribute string attribute that will be automatically handled
type string geometry type: Point, LineString, Polygon, MultiPoint, MultiLineString, MultiPolygon
skipAfterFindPostgis boolean false skip convertion after find, if data in postgis binary (it requires a separate query, look PostgisQueryTrait)

StBufferBehavior

Generate SQL expression before insert/update based on geometry and radius

<?php

use yii\db\ActiveRecord;
use nanson\postgis\behaviors\GeometryBehavior;
use nanson\postgis\behaviors\StBufferBehavior;

class MyModel extends ActiveRecord
{

    // ...
    
    public function behaviors()
    {
        return [
            [
                'class' => GeometryBehavior::className(),
                'attribute' => 'point',
                'type' => GeometryBehavior::GEOMETRY_POINT,
            ],
            [
                'class' => StBufferBehavior::className(),
                'attribute' => 'buffer',
                'attributeGeometry' => 'point',
                'attributeRadius' => 'radius',
            ],
        ];
    }

    // ...

}

// ...

$model = new MyModel;

$model->point = [39.234, 54.456];
$model->radius = 5;

// It will be save St_Buffer for `$model->point` with `$model->radius` in `$model->buffer`
$model->save();

?>
Option Type Default Description
attribute string attribute for saving buffer
attributeGeometry string attribute with geometry
attributeRadius string attribute with radius
geography boolean false build buffer as geography
radiusUnit string deg for geomtery or m for geography units of buffer radius: deg, m, km
options array [] additional options for St_Buffer function

PostgisQueryTrait

Extends ActiveQuery for working with Postgis data.

<?php

class MyQuery extends \yii\db\ActiveQuery
{
    use \nanson\postgis\db\PostgisQueryTrait;
    
    // ...
}

// ...

class MyModel extends \yii\db\ActiveRecord
{
    public static function find(){
        return \Yii::createObject([
            'class' => MyQuery::className(),
        ], [get_called_class()]);
    }
}
?>
Option Type Default Description
autoGeoJson boolean true select all geo columns as GeoJson automatically
geoFields array all table columns with data type geometry or geography table columns, that must be selected as Geo Json
exceptGeoFields boolean false exclude all geo columns from select statement
exceptFields array [] columns, which must be excluded from select statement
Method Description
withGeoFields($fields=null) Add columns, that must be selected as Geo Json. Accepts null, string, array. If fields is null - all geoFileds will be added.
excludeFields($fields=null) Exclude columns from select statement. Accepts null, string, array. If fields is null - all exceptFields will be excluded from select statement.

GeoJsonHelper

Helper for working with Geo Json

Method Returns Description
toArray($geoJson) array returns coordinates array by Geo Json
toGeoJson($type, $coordinates, $srid=4326) string (geo json) returns Geo Json by geometry type, coordinates array and SRID
toGeometry($type, $coordinates, $srid=4326) string (sql expression) the same, that toGeoJson, but wraps result by "ST_GeomFromGeoJSON('$geoJson')"
Popular Postgis Projects
Popular Geometry Projects
Popular Data Processing Categories

Get A Weekly Email With Trending Projects For These Categories
No Spam. Unsubscribe easily at any time.
Php
Geometry
Postgis
Geography