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

Использование 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, который великолепен.

Если я сделаю запрос для почтового индекса 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 Ответ

0 голосов
/ 25 февраля 2019

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

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

enter image description here

...