Насколько я могу судить, это не то, что поддерживается YQL. Наиболее близким может быть метод возврата соседей данного WOEID .
.
Проблема с поиском пользователей в пределах x миль от заданного WOEID заключается в том, что WOEID могут иметь произвольные размеры с разными центрами и ограничительными рамками. Несмотря на то, что это более сложно, сохранение широты и долготы позволит вам получить результаты, которые вы ищете. Есть как минимум два способа сделать это.
Первый - это запрос непосредственно по широте и долготе путем вычисления расстояния Хаверсин до начальной точки. Это может быть очень медленным, особенно при работе с тысячами строк. В любом случае вы должны увидеть, поддерживает ли ваша база данных геопространственные данные. MySQL и PostgreSQL оба имеют геопространственные расширения.
Второй популярный метод - использовать геохэш . Это создает набор строк, которые вы можете использовать для запроса ближайших точек. Например, возьмите координаты Lat: 40.7571397, Lon: -73.9891705
для Рокфеллер-центра в Нью-Йорке. Одна реализация geohash (для Google AppEngine) для этих координат выдает следующее:
- 9
- 9а
- 9ac
- 9ac7
- 9ac7b
- 9ac7be
- 9ac7be2
- 9ac7be2e
- 9ac7be2e4
- 9ac7be2e4e
- 9ac7be2e4ed
- 9ac7be2e4ed4
- 9ac7be2e4ed4e
Так что, если вы хотите найти точки, которые действительно близки, вы можете найти другие точки, которые соответствуют 9ac7be2e4ed4e
; если вам нужен общий регион, вы можете попробовать 9ac7be2e4e
и так далее. Если у вас есть подмножество точек, вы можете рассчитать расстояние для набора данных намного меньшего размера.