我正在使用 postgis 9.1 和 rgeo 来开发地图应用程序。
其中一个特征意味着我找到了距离当前点 XXX 公里的所有点,并且也在该点的右侧。
我尝试了以下查询:
Environment.where{ st_dwithin(location, factory.point(170.0, 0), 300000 ) }.where('ST_X(location::geometry) > 170')
查询的相应 SQL:[已编辑]
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 的解决方案...
谢谢!