Ruby Gem Geokit и: в пределах максимума или терпимости? - PullRequest
0 голосов
/ 19 февраля 2011

Только что начал играть с geokit и пробовать кое-что ...

Все работает довольно хорошо, как и ожидалось, учитывая точку, находя вещи поблизости.

Однако, если я установлю: в пределах большое значение, скажем, 100 000, используя: мили, я бы ожидал получить большинство (если не все) возвращаемых объектов в БД - но, похоже, остановится в определенной точке -как будто есть встроенный максимум для: в пределах.

Я попробовал формулы: квартира и: сфера.

Заранее спасибо, Крис

1 Ответ

1 голос
/ 20 февраля 2011

Ваша проблема не является встроенным максимумом для :within, но отсутствует предел (и проверка работоспособности внутри геокита).

Похоже, что запрос :within заканчивается выполнениемдо Geokit::Bounds.from_point_and_radius, чтобы создать ограничивающую рамку.from_point_and_radius выполнит небольшую тригонометрию (см. endpoint в mappable.rb), и результатом будет Geokit::Bounds экземпляр.

Я подозреваю, что в тригонометрии у вас что-то не так;тригонометрические функции являются периодическими, поэтому ваш радиус 100 000 в конечном итоге будет охватывать что-то между 0 и ~ 40 000 км (окружность Земли, ~ 25 000 миль), и ограничивающий прямоугольник не будет ограничивать 100 000 миль.Если вы играете со своими 100 000 битами, вы, вероятно, можете получить геокит, чтобы получить ограничивающий прямоугольник, который составляет всего пару сантиметров на сторону (или нулевой радиус, если вы можете разобраться с обычными проблемами с плавающей запятой).

Резюме: если вы хотите их всех, вообще не используйте :within;если вы хотите использовать :within, тогда дайте ему разумное расстояние (то есть достаточно маленькое, чтобы поместиться на поверхности планеты без обтекания).

...