我正在使用以下本机 sql 查询来获取多边形内的站点。它给了我一些站点ID。
SELECT s.siteID from Sites s where st_contains( (SELECT polygon from Region where RegionId=9 ) , point( s.latitude,s.longitude ) )=1 ;
但是当我对教义做同样的事情时,它给了我一个空数组。
$queryBuilder = $this->createQueryBuilder('s');
$queryBuilder
->where('ST_Contains( :polygon, point(s.latitude, s.longitude) ) = 1')
->setParameter('polygon', $region->getPolygon());
print_r($queryBuilder->getQuery()->getResult());
$region->getPolygon() 给我以下输出
CrEOF\Spatial\PHP\Types\Geometry\Polygon Object
(
[rings:protected] => Array
(
[0] => Array
(
[0] => Array
(
[0] => 48.806863
[1] => 17.050781
)
[1] => Array
(
[0] => 47.813155
[1] => 17.116699
)
[2] => Array
(
[0] => 47.457809
[1] => 16.765137
)
[3] => Array
(
[0] => 46.920255
[1] => 16.237793
)
[4] => Array
(
[0] => 46.664517
[1] => 15.666504
)
[5] => Array
(
[0] => 46.589069
[1] => 14.47998
)
[6] => Array
(
[0] => 47.249407
[1] => 14.282227
)
[7] => Array
(
[0] => 47.635784
[1] => 14.677734
)
[8] => Array
(
[0] => 48.210032
[1] => 15.578613
)
[9] => Array
(
[0] => 48.618385
[1] => 15.864258
)
[10] => Array
(
[0] => 48.748945
[1] => 16.721191
)
[11] => Array
(
[0] => 48.806863
[1] => 17.050781
)
)
)
[srid:protected] =>
)