在Radius postgresql中查找记录

时间:2013-05-06 08:50:52

标签: postgresql

我不确定以下查询有什么问题:

SELECT id,  earth_distance(ll_to_earth( 41.273147, -75.896858 ), 
ll_to_earth(business_address_latitude, business_address_longitude)) as distance_from_current_location FROM events 
WHERE earth_box( ll_to_earth(41.273147, -75.896858), 20000.00) @> ll_to_earth(business_address_latitude, business_address_longitude);

尝试搜索半径为20000的记录但是当我检查结果时,它给我的记录超过20000 mtr距离,如24286米距离。 我不确定上述查询有什么问题。 任何建议PLZ。

1 个答案:

答案 0 :(得分:1)

没有错,你只是使用盒子而不是圆圈所以这是正常的。 The manual明确指出:

  

此框中的某些点比指定的大圆圈更远   距离位置的距离,所以使用earth_distance进行第二次检查   应该包含在查询中。

因此,只需在外部查询中选择距离