@rubylang

Страница 1239 из 1684
No
11.10.2017
10:22:48
Никак по другому не хочу

Просто стоит это учитывать )

Вот и всё )

biert
11.10.2017
11:57:59
есть идеи как заменить near в geocoder?

Google
No
11.10.2017
12:08:34
biert
11.10.2017
12:12:51
задача найти в базе близайшие координаты к указаным

но с условием не больше N километров

near вроде то что надо, но как-то не работает, пустой результат выдет, хотя не должен

не понимаю почему

No
11.10.2017
12:14:39
ммм, нужно подробнее

был тот же кейс

что и у тебя

всё на ура воркало

попробуй увеличить радиус, который передаешь в near

если на огроном радиусе ближайших не найдет

biert
11.10.2017
12:15:19
пытался

No
11.10.2017
12:15:22
значит проблема не в near-е

Google
biert
11.10.2017
12:15:51
координаты еспользуя левые калькуляторы с дистанцией 1 км

а оно не хочет и считает как-то не адекватно

```

SELECT drivers.*, 6371.0 * 2 * ASIN(SQRT(POWER(SIN((49.836389 - drivers.longitude) * PI() / 180 / 2), 2) + COS(49.836389 * PI() / 180) * COS(drivers.longitude * PI() / 180) * POWER(SIN((24.034877 - drivers.latitude) * PI() / 180 / 2), 2))) AS distance, MOD(CAST((ATAN2( ((drivers.latitude - 24.034877) / 57.2957795), ((drivers.longitude - 49.836389) / 57.2957795)) * 57.2957795) + 360 AS decimal), 360) AS bearing FROM "drivers" WHERE "drivers"."available" = $1 AND (drivers.longitude BETWEEN 49.746456839408125 AND 49.92632116059187 AND drivers.latitude BETWEEN 23.895441341097502 AND 24.1743126589025 AND (6371.0 * 2 * ASIN(SQRT(POWER(SIN((49.836389 - drivers.longitude) * PI() / 180 / 2), 2) + COS(49.836389 * PI() / 180) * COS(drivers.longitude * PI() / 180) * POWER(SIN((24.034877 - drivers.latitude) * PI() / 180 / 2), 2)))) BETWEEN 0.0 AND 10) ORDER BY distance ASC LIMIT $2

ох шит

No
11.10.2017
12:17:35
ну да ) в этом особо не разберешься )

biert
11.10.2017
12:17:55
49.829617;24.032388 это координаты в базе

No
11.10.2017
12:17:58
формулу он точно правильно генерит

biert
11.10.2017
12:18:10
да

No
11.10.2017
12:18:13
по теореме Гаверсинуса кажись так называется

biert
11.10.2017
12:18:14
"pickup_place_latitude": 49.836389, "pickup_place_longitude": 24.034877,

это те которые в near закидаю

''' drivers = Driver.available.near(location, MAX_DISTANCE_FOR_NOW, :units => :km).includes(:car).limit(MAX_DRIVERS_AMOUNT) '''

и пёс его знает почему оно так

Anna
11.10.2017
12:19:54
по теореме Гаверсинуса кажись так называется
не теорема, а название тригонометрической функции

No
11.10.2017
12:20:15
ошибся

Anna
11.10.2017
12:20:35
для радиусов в 5-10 км не имеет смысла только

No
11.10.2017
12:20:55
для радиусов 5-10 км земля плоская прост )

Anna
11.10.2017
12:21:02
ну а я о чём

Google
No
11.10.2017
12:21:42
''' drivers = Driver.available.near(location, MAX_DISTANCE_FOR_NOW, :units => :km).includes(:car).limit(MAX_DRIVERS_AMOUNT) '''
есть варик, что дальнейшие includes и limit портят запрос

ведь там итак запрос не маленький, может что-то криво нагенерить

попробуй без и проверь результат

так же пустое будет?

biert
11.10.2017
12:22:11
да

только что затестил

No
11.10.2017
12:22:21
@cleaners = Cleaner.where.not(id: @order.declined_cleaners_ids).near(@order, 50)

Evegeniy
11.10.2017
12:22:38
ты в Qlean работаешь?

Не удержался ?

спросить

No
11.10.2017
12:23:04
нет, это проект вообще некоммерческий )

точнее - диплом бакалавра )

biert
11.10.2017
12:23:38
бесовщина

кстати

если запрос к базе подшаманить

и убрать рамки between

то работает ))

No
11.10.2017
12:25:17
хм

убрать - всмысле заменить на равенство?

biert
11.10.2017
12:25:25
FROM "drivers" WHERE "drivers"."available" = TRUE AND (drivers.longitude BETWEEN 49.746456839408125 AND 49.92632116059187 AND drivers.latitude BETWEEN 23.895441341097502 AND 24.1743126589025 ) ORDER BY distance ASC LIMIT 3

Google
biert
11.10.2017
12:25:40
убрать и оставить FROM "drivers" WHERE "drivers"."available" = TRUE

есть подозрения что дело может быть в точности float

24.1743126589025 че-т слишком точно

No
11.10.2017
12:27:44
не совсем понял, что ты убрал из запроса

Anna
11.10.2017
12:27:56
всё

biert
11.10.2017
12:28:12
по факту само условия поиска по близости

Anna
11.10.2017
12:28:15
теперь он проверяет квадрат на наличие водителей в нём

No
11.10.2017
12:28:43
сейчас, может ещё чё вспомню, может были какие-то проблемы

Admin
ERROR: S client not available

biert
11.10.2017
12:28:46
мне почти подходит

но хз как это сказать модели

No
11.10.2017
12:29:08
но моё впечатление было тогда: near? скорее всего сразу не заведется. но завелось сразу отлично

biert
11.10.2017
12:29:10
не использовать все эти шаманства

поищу может можно отключить некоторые параметры

No
11.10.2017
12:30:48
вот твоя проблема кажись

biert
11.10.2017
12:30:48
You cannot use the near scope with another scope that provides an includes option because the SELECT clause generated by near will overwrite it (or vice versa).

No
11.10.2017
12:30:58
ахах

biert
11.10.2017
12:30:59
мысли читаешь

No
11.10.2017
12:31:01
одновременно )

я просто всомнил, что на гитхабе был раздел по near отдельно )))

Google
biert
11.10.2017
12:31:43
тогда как жить

No
11.10.2017
12:32:02
там же ниже вариант

с комбой joins и preload

не подходит?

biert
11.10.2017
12:37:29
ничерта не понимаю

оно делает 2 поля с дистанцией и направлением от одной точки к другой

и потом после where ищет координаты через between

но не находит

хотя должно

есть мысль что в модели написав reverse_geocoded_by :longitude, :latitude

это не правильно

точняк

надо наоборот

заработало

ппц баг тупой

точнее я

спасибо ребята)

Artem
11.10.2017
13:27:48
ты в Qlean работаешь?
Я тут работаю и вот только что ахерел с нашей системы мониторинга упоминаний...

Evegeniy
11.10.2017
13:27:59
?

Она даже сюда забралась?

Страница 1239 из 1684