0

使用 Postgres 和扩展cubeearthdistance我对 50 英里半径范围内的邮政编码 78705 执行此查询:

  WITH query1 AS(SELECT * FROM listings
    WHERE earth_box(ll_to_earth(30.2961708, -97.73895429999999), 80467.2)
    @> ll_to_earth(listings.lat, listings.lng)

我得到了结果 foo 列表,这很棒。

如果我查询半径为 50 英里的邮政编码 78232:

 WITH query1 AS(SELECT * FROM listings
    WHERE earth_box(ll_to_earth(29.59442259999999, -98.4568128), 80467.2)
    @> ll_to_earth(listings.lat, listings.lng)

我得到了预期的结果,包括列表 foo。

我的问题...... ?

4

1 回答 1

0

两个 50 英里的缓冲区彼此部分重叠。位于公共区域的条目(例如您的示例中的 Foo)位于两个邮政编码的 50 英里范围内。在其他地方,条目距离一个邮政编码不到 50 英里,但距离另一个邮政编码超过 50 英里。

在下图中,只有绿色区域位于两个邮政编码的 50 英里范围内,因此两个查询都将返回位于该区域的条目。

在此处输入图像描述

于 2019-02-24T22:32:38.700 回答