Postgres zipcode - 相同英里半径的列表未显示

问题描述 投票:0回答:1

使用Postgres和扩展cubeearthdistance我这样查询邮政编码78705,半径范围为50英里:

  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。

我的问题是....如果foo(这是邮政编码78705)返回50英里半径78232与其他列表78232,为什么不是所有的邮政编码78232被列入5070英里半径78705 ?

postgresql zipcode earthdistance
1个回答
0
投票

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

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

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.