Почтовый индекс Postgres - списки для того же радиуса мили не отображаются

Использование Postgres и расширений cube а также earthdistance Я делаю этот запрос для почтового индекса 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 list, и это здорово.

Если я сделаю запрос для почтового индекса 78232 с радиусом действия 50 миль:

 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 включены в радиус 50 миль 78705??

1 ответ

Два 50 миль буфера частично перекрывают друг друга. Записи, расположенные в общей зоне (например, Foo в вашем примере), находятся в пределах 50 миль от двух почтовых индексов. В других местах записи находятся менее чем в 50 милях от одного почтового индекса, но дальше, чем 50 миль от другого почтового индекса.

На изображении ниже только зеленая область находится в пределах 50 миль от обоих почтовых индексов, поэтому записи, расположенные в этой области, будут возвращаться обоими запросами.

Другие вопросы по тегам