Create spatial entities¶
It is a good practice to use the most adapted column to store you geometric or geographic data. If your entity have only to store points, do not use a “geometry” type, but a “point” type. Use a geometry column only if your entity can store different types (points and lines as example)
Example1: Entity with a spatial point¶
Below, you will find an example to declare an entity with a point
. Before you need to declare the point type as
described in the configuration section.
<?php
// We declare the class of the type we want to use.
use CrEOF\Spatial\PHP\Types\Geometry\Point;
// We declare the Mapping as usual
use Doctrine\ORM\Mapping as ORM;
/**
* Point entity example.
*
* As you can see we do not change anything in Entity and Table annotations. Feel free to use them as usual.
*
* @ORM\Entity
* @ORM\Table
*/
class PointEntity
{
/**
* @var int The usual Doctrine Identifier
*
* As you can see we do not change anything in Entity and Table annotations. Feel free to use it as usual.
*
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
* @ORM\Column(type="integer")
*/
protected $id;
/**
* @var Point
*
* As you can see we declare a point property of type point.
* point shall be declared in the doctrine.yaml as a custom type.
* Feel free to use options as usual. As example, I declared that point is not nullable. But you can
* set it to nullable=true if you want.
*
* @ORM\Column(type="point", nullable=false)
*/
protected $point;
/**
* Get id.
* This is the usual Id getter.
*
* @return int
*/
public function getId()
{
return $this->id;
}
/**
* Get point.
* This is a standard getter.
*
* @return Point
*/
public function getPoint(): Point
{
return $this->point;
}
/**
* Set point.
* This is a fluent setter.
*
* @param Point $point point to set
*
* @return self
*/
public function setPoint(Point $point): self
{
$this->point = $point;
return $this;
}
}
Seven examples with each geometric spatial types¶
The Fixtures directory creates some spatial entities for our tests. Inside this directory, you will find a lot of entities which are implementing geometric properties:
- Entity with a geometric type,
download
- Entity with a geometric linestring type,
download
- Entity with a geometric multilinestring type,
download
- Entity with a geometric multipoint type,
download
- Entity with a geometric multipolygon type,
download
- Entity with a geometric point type,
download
- Entity with a geometric polygon type.
download
Four examples with each geographic spatial types¶
The Fixtures directory creates some spatial entities for our tests. Inside this directory, you will find a lot of entities which are implementing geographic properties:
- Entity with a geographic type,
download
- Entity with a geographic linestring type,
download
- Entity with a geographic point type,
download
- Entity with a geographic polygon type,
download