Create test controller for st_distance functionality in database
This commit is contained in:
parent
20756296e6
commit
6737099278
3 changed files with 133 additions and 7 deletions
|
|
@ -31,11 +31,107 @@ doctrine:
|
||||||
prefix: 'App\Entity'
|
prefix: 'App\Entity'
|
||||||
alias: App
|
alias: App
|
||||||
dql:
|
dql:
|
||||||
|
string_functions:
|
||||||
|
# for postgresql
|
||||||
|
geometry: CrEOF\Spatial\ORM\Query\AST\Functions\PostgreSql\Geometry
|
||||||
|
stbuffer: CrEOF\Spatial\ORM\Query\AST\Functions\PostgreSql\STBuffer
|
||||||
|
stcollect: CrEOF\Spatial\ORM\Query\AST\Functions\PostgreSql\STCollect
|
||||||
|
stsnaptogrid: CrEOF\Spatial\ORM\Query\AST\Functions\PostgreSql\STSnapToGrid
|
||||||
|
stoverlaps: CrEOF\Spatial\ORM\Query\AST\Functions\PostgreSql\STOverlaps
|
||||||
numeric_functions:
|
numeric_functions:
|
||||||
st_contains: CrEOF\Spatial\ORM\Query\AST\Functions\MySql\STContains
|
# for postgresql
|
||||||
contains: CrEOF\Spatial\ORM\Query\AST\Functions\MySql\Contains
|
starea: CrEOF\Spatial\ORM\Query\AST\Functions\PostgreSql\STArea
|
||||||
st_area: CrEOF\Spatial\ORM\Query\AST\Functions\MySql\Area
|
stasbinary: CrEOF\Spatial\ORM\Query\AST\Functions\PostgreSql\STAsBinary
|
||||||
st_geomfromtext: CrEOF\Spatial\ORM\Query\AST\Functions\MySql\GeomFromText
|
stasgeojson: CrEOF\Spatial\ORM\Query\AST\Functions\PostgreSql\STAsGeoJson
|
||||||
st_intersects: CrEOF\Spatial\ORM\Query\AST\Functions\MySql\STIntersects
|
stastext: CrEOF\Spatial\ORM\Query\AST\Functions\PostgreSql\STAsText
|
||||||
st_buffer: CrEOF\Spatial\ORM\Query\AST\Functions\MySql\STBuffer
|
stazimuth: CrEOF\Spatial\ORM\Query\AST\Functions\PostgreSql\STAzimuth
|
||||||
point: CrEOF\Spatial\ORM\Query\AST\Functions\MySql\Point
|
stboundary: CrEOF\Spatial\ORM\Query\AST\Functions\PostgreSql\STBoundary
|
||||||
|
stcentroid: CrEOF\Spatial\ORM\Query\AST\Functions\PostgreSql\STCentroid
|
||||||
|
stclosestpoint: CrEOF\Spatial\ORM\Query\AST\Functions\PostgreSql\STClosestPoint
|
||||||
|
stcontains: CrEOF\Spatial\ORM\Query\AST\Functions\PostgreSql\STContains
|
||||||
|
stcontainsproperly: CrEOF\Spatial\ORM\Query\AST\Functions\PostgreSql\STContainsProperly
|
||||||
|
stcoveredby: CrEOF\Spatial\ORM\Query\AST\Functions\PostgreSql\STCoveredBy
|
||||||
|
stcovers: CrEOF\Spatial\ORM\Query\AST\Functions\PostgreSql\STCovers
|
||||||
|
stcrosses: CrEOF\Spatial\ORM\Query\AST\Functions\PostgreSql\STCrosses
|
||||||
|
stdisjoint: CrEOF\Spatial\ORM\Query\AST\Functions\PostgreSql\STDisjoint
|
||||||
|
stdistance: CrEOF\Spatial\ORM\Query\AST\Functions\PostgreSql\STDistance
|
||||||
|
stdistancesphere: CrEOF\Spatial\ORM\Query\AST\Functions\PostgreSql\STDistanceSphere
|
||||||
|
stdwithin: CrEOF\Spatial\ORM\Query\AST\Functions\PostgreSql\STDWithin
|
||||||
|
stenvelope: CrEOF\Spatial\ORM\Query\AST\Functions\PostgreSql\STEnvelope
|
||||||
|
stexpand: CrEOF\Spatial\ORM\Query\AST\Functions\PostgreSql\STExpand
|
||||||
|
stextent: CrEOF\Spatial\ORM\Query\AST\Functions\PostgreSql\STExtent
|
||||||
|
stgeomfromtext: CrEOF\Spatial\ORM\Query\AST\Functions\PostgreSql\STGeomFromText
|
||||||
|
stintersection: CrEOF\Spatial\ORM\Query\AST\Functions\PostgreSql\STIntersection
|
||||||
|
stintersects: CrEOF\Spatial\ORM\Query\AST\Functions\PostgreSql\STIntersects
|
||||||
|
stlength: CrEOF\Spatial\ORM\Query\AST\Functions\PostgreSql\STLength
|
||||||
|
stlinecrossingdirection: CrEOF\Spatial\ORM\Query\AST\Functions\PostgreSql\STLineCrossingDirection
|
||||||
|
stlineinterpolatepoint: CrEOF\Spatial\ORM\Query\AST\Functions\PostgreSql\STLineInterpolatePoint
|
||||||
|
stmakebox2d: CrEOF\Spatial\ORM\Query\AST\Functions\PostgreSql\STMakeBox2D
|
||||||
|
stmakeline: CrEOF\Spatial\ORM\Query\AST\Functions\PostgreSql\STMakeLine
|
||||||
|
stmakepoint: CrEOF\Spatial\ORM\Query\AST\Functions\PostgreSql\STMakePoint
|
||||||
|
stperimeter: CrEOF\Spatial\ORM\Query\AST\Functions\PostgreSql\STPerimeter
|
||||||
|
stpoint: CrEOF\Spatial\ORM\Query\AST\Functions\PostgreSql\STPoint
|
||||||
|
stscale: CrEOF\Spatial\ORM\Query\AST\Functions\PostgreSql\STScale
|
||||||
|
stsetsrid: CrEOF\Spatial\ORM\Query\AST\Functions\PostgreSql\STSetSRID
|
||||||
|
stsimplify: CrEOF\Spatial\ORM\Query\AST\Functions\PostgreSql\STSimplify
|
||||||
|
ststartpoint: CrEOF\Spatial\ORM\Query\AST\Functions\PostgreSql\STStartPoint
|
||||||
|
stsummary: CrEOF\Spatial\ORM\Query\AST\Functions\PostgreSql\STSummary
|
||||||
|
sttouches: CrEOF\Spatial\ORM\Query\AST\Functions\PostgreSql\STTouches
|
||||||
|
sttransform: CrEOF\Spatial\ORM\Query\AST\Functions\PostgreSql\STTransform
|
||||||
|
|
||||||
|
# for mysql
|
||||||
|
area: CrEOF\Spatial\ORM\Query\AST\Functions\MySql\Area
|
||||||
|
asbinary: CrEOF\Spatial\ORM\Query\AST\Functions\MySql\AsBinary
|
||||||
|
astext: CrEOF\Spatial\ORM\Query\AST\Functions\MySql\AsText
|
||||||
|
buffer: CrEOF\Spatial\ORM\Query\AST\Functions\MySql\Buffer
|
||||||
|
centroid: CrEOF\Spatial\ORM\Query\AST\Functions\MySql\Centroid
|
||||||
|
contains: CrEOF\Spatial\ORM\Query\AST\Functions\MySql\Contains
|
||||||
|
crosses: CrEOF\Spatial\ORM\Query\AST\Functions\MySql\Crosses
|
||||||
|
dimension: CrEOF\Spatial\ORM\Query\AST\Functions\MySql\Dimension
|
||||||
|
distance: CrEOF\Spatial\ORM\Query\AST\Functions\MySql\Distance
|
||||||
|
disjoint: CrEOF\Spatial\ORM\Query\AST\Functions\MySql\Disjoint
|
||||||
|
distancefrommultyLine: CrEOF\Spatial\ORM\Query\AST\Functions\MySql\DistanceFromMultyLine
|
||||||
|
endpoint: CrEOF\Spatial\ORM\Query\AST\Functions\MySql\EndPoint
|
||||||
|
envelope: CrEOF\Spatial\ORM\Query\AST\Functions\MySql\Envelope
|
||||||
|
equals: CrEOF\Spatial\ORM\Query\AST\Functions\MySql\Equals
|
||||||
|
exteriorring: CrEOF\Spatial\ORM\Query\AST\Functions\MySql\ExteriorRing
|
||||||
|
geodistpt: CrEOF\Spatial\ORM\Query\AST\Functions\MySql\GeodistPt
|
||||||
|
geometrytype: CrEOF\Spatial\ORM\Query\AST\Functions\MySql\GeometryType
|
||||||
|
geomfromtext: CrEOF\Spatial\ORM\Query\AST\Functions\MySql\GeomFromText
|
||||||
|
glength: CrEOF\Spatial\ORM\Query\AST\Functions\MySql\GLength
|
||||||
|
interiorringn: CrEOF\Spatial\ORM\Query\AST\Functions\MySql\InteriorRingN
|
||||||
|
intersects: CrEOF\Spatial\ORM\Query\AST\Functions\MySql\Intersects
|
||||||
|
isclosed: CrEOF\Spatial\ORM\Query\AST\Functions\MySql\IsClosed
|
||||||
|
isempty: CrEOF\Spatial\ORM\Query\AST\Functions\MySql\IsEmpty
|
||||||
|
issimple: CrEOF\Spatial\ORM\Query\AST\Functions\MySql\IsSimple
|
||||||
|
linestringfromwkb: CrEOF\Spatial\ORM\Query\AST\Functions\MySql\LineStringFromWKB
|
||||||
|
linestring: CrEOF\Spatial\ORM\Query\AST\Functions\MySql\LineString
|
||||||
|
mbrcontains: CrEOF\Spatial\ORM\Query\AST\Functions\MySql\MBRContains
|
||||||
|
mbrdisjoint: CrEOF\Spatial\ORM\Query\AST\Functions\MySql\MBRDisjoint
|
||||||
|
mbrequal: CrEOF\Spatial\ORM\Query\AST\Functions\MySql\MBREqual
|
||||||
|
mbrintersects: CrEOF\Spatial\ORM\Query\AST\Functions\MySql\MBRIntersects
|
||||||
|
mbroverlaps: CrEOF\Spatial\ORM\Query\AST\Functions\MySql\MBROverlaps
|
||||||
|
mbrtouches: CrEOF\Spatial\ORM\Query\AST\Functions\MySql\MBRTouches
|
||||||
|
mbrwithin: CrEOF\Spatial\ORM\Query\AST\Functions\MySql\MBRWithin
|
||||||
|
numinteriorrings: CrEOF\Spatial\ORM\Query\AST\Functions\MySql\NumInteriorRings
|
||||||
|
numpoints: CrEOF\Spatial\ORM\Query\AST\Functions\MySql\NumPoints
|
||||||
|
overlaps: CrEOF\Spatial\ORM\Query\AST\Functions\MySql\Overlaps
|
||||||
|
pointfromwkb: CrEOF\Spatial\ORM\Query\AST\Functions\MySql\PointFromWKB
|
||||||
|
pointn: CrEOF\Spatial\ORM\Query\AST\Functions\MySql\PointN
|
||||||
|
point: CrEOF\Spatial\ORM\Query\AST\Functions\MySql\Point
|
||||||
|
srid: CrEOF\Spatial\ORM\Query\AST\Functions\MySql\SRID
|
||||||
|
startpoint: CrEOF\Spatial\ORM\Query\AST\Functions\MySql\StartPoint
|
||||||
|
st_buffer: CrEOF\Spatial\ORM\Query\AST\Functions\MySql\STBuffer
|
||||||
|
st_contains: CrEOF\Spatial\ORM\Query\AST\Functions\MySql\STContains
|
||||||
|
st_crosses: CrEOF\Spatial\ORM\Query\AST\Functions\MySql\STCrosses
|
||||||
|
st_disjoint: CrEOF\Spatial\ORM\Query\AST\Functions\MySql\STDisjoint
|
||||||
|
st_distance: CrEOF\Spatial\ORM\Query\AST\Functions\MySql\STDistance
|
||||||
|
st_equals: CrEOF\Spatial\ORM\Query\AST\Functions\MySql\STEquals
|
||||||
|
st_intersects: CrEOF\Spatial\ORM\Query\AST\Functions\MySql\STIntersects
|
||||||
|
st_overlaps: CrEOF\Spatial\ORM\Query\AST\Functions\MySql\STOverlaps
|
||||||
|
st_touches: CrEOF\Spatial\ORM\Query\AST\Functions\MySql\STTouches
|
||||||
|
st_within: CrEOF\Spatial\ORM\Query\AST\Functions\MySql\STWithin
|
||||||
|
touches: CrEOF\Spatial\ORM\Query\AST\Functions\MySql\Touches
|
||||||
|
within: CrEOF\Spatial\ORM\Query\AST\Functions\MySql\Within
|
||||||
|
x: CrEOF\Spatial\ORM\Query\AST\Functions\MySql\X
|
||||||
|
y: CrEOF\Spatial\ORM\Query\AST\Functions\MySql\Y
|
||||||
|
|
|
||||||
|
|
@ -8,3 +8,6 @@ test_gmap:
|
||||||
path: /test/gmap
|
path: /test/gmap
|
||||||
controller: App\Controller\TestController::gmap
|
controller: App\Controller\TestController::gmap
|
||||||
|
|
||||||
|
test_distance:
|
||||||
|
path: /test/distance
|
||||||
|
controller: App\Controller\TestController::distance
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,10 @@ namespace App\Controller;
|
||||||
use App\Ramcar\BaseController;
|
use App\Ramcar\BaseController;
|
||||||
use App\Access\Generator;
|
use App\Access\Generator;
|
||||||
|
|
||||||
|
use CrEOF\Spatial\PHP\Types\Geometry\Point;
|
||||||
|
|
||||||
|
use App\Entity\Outlet;
|
||||||
|
|
||||||
class TestController extends BaseController
|
class TestController extends BaseController
|
||||||
{
|
{
|
||||||
public function index(Generator $acl_gen)
|
public function index(Generator $acl_gen)
|
||||||
|
|
@ -32,4 +36,27 @@ class TestController extends BaseController
|
||||||
|
|
||||||
return $this->render('test/map.html.twig', $params);
|
return $this->render('test/map.html.twig', $params);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function distance()
|
||||||
|
{
|
||||||
|
$params = $this->initParameters('home');
|
||||||
|
|
||||||
|
$point = new Point(121.0495453, 14.6042567);
|
||||||
|
|
||||||
|
// test if we can get the top 5 closest outlets to a point
|
||||||
|
$em = $this->getDoctrine()->getManager();
|
||||||
|
$query = $em->createQuery('SELECT o, st_distance(o.coordinates, point(:lng, :lat)) as dist FROM App\Entity\Outlet o ORDER BY dist')
|
||||||
|
->setParameter('lat', $point->getLatitude())
|
||||||
|
->setParameter('lng', $point->getLongitude())
|
||||||
|
->setMaxResults(5);
|
||||||
|
error_log($query->getSql());
|
||||||
|
$result = $query->getResult();
|
||||||
|
|
||||||
|
foreach ($result as $row)
|
||||||
|
{
|
||||||
|
error_log($row[0]->getName() . ' - ' . $row['dist']);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->render('home.html.twig', $params);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue