Почтовый индекс 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 миль от обоих почтовых индексов, поэтому записи, расположенные в этой области, будут возвращаться обоими запросами.