Postgis ST_DWithin匹配一定的半径AND点在右边

时间:2014-05-20 00:20:55

标签: sql postgresql postgis rgeo

我使用postgis 9.1和rgeo开发地图应用程序。

其中一项功能意味着我找到了距离当前点XXX kms的所有点,并且也位于Point的右侧。

我尝试了以下查询:

Environment.where{ st_dwithin(location, factory.point(170.0, 0), 300000 ) }.where('ST_X(location::geometry) > 170')

查询的相应SQL: [EDITED] SELECT "environments".* FROM "environments" WHERE (st_dwithin("environments"."location", ST_PointFromText('POINT(170 0)', 4326), 300000)) AND (ST_X(location::geometry) > 170 );

在这里,我将这一点硬编码为170经度。

这个问题是我无法匹配[-170,-180]经度中的点数。

有没有办法只使用postgis函数解决这个问题?

[编辑]这是postgis的全球问题。在这个应用程序中,我只允许找到右边和某个范围内的点。我无法找到纯SQL的解决方案...

谢谢!

1 个答案:

答案 0 :(得分:0)