0

我正在使用 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 的解决方案...

谢谢!

4

1 回答 1

0

考虑使用geography类型而不是geometry类型。

于 2014-05-20T05:29:21.397 回答