
Anton
23.10.2018
14:39:12
а точнее SQL

Artur
23.10.2018
14:39:16

Anton
23.10.2018
14:39:26

Artur
23.10.2018
14:39:29
условные 100 км

Google

Artur
23.10.2018
14:39:52
ну я на всякий ибо там чем больше км тем больше погрешность

Bohdan
23.10.2018
14:40:50

Artur
23.10.2018
14:40:59
дык

Bohdan
23.10.2018
14:41:13
в дипломе таким парился
но было лень считать, а в постгрю боялся идти
потому взял монгу :D

Artur
23.10.2018
14:41:47
а точнее SQL
$a = sin(deg2rad($alpha)) * sin(deg2rad($alpha)) + cos(deg2rad($this->lat_a)) * cos(deg2rad($this->lat_b)) * sin(deg2rad($beta)) * sin(deg2rad($beta)) ;
эту?

Anton
23.10.2018
14:43:02
это неточная

Artur
23.10.2018
14:43:06
или вот с хабры
create or replace function gc_dist(_lat1 float8, _lon1 float8, _lat2 float8, _lon2 float8) returns float8 as
$$
DECLARE
radian CONSTANT float8 := PI()/360;
BEGIN
return ACOS(SIN($1*radian) * SIN($3*radian) + COS($1*radian) * COS($3*radian) * COS($4*radian-$2*radian)) * 6371;
END;
$$ LANGUAGE plpgsql;

Anton
23.10.2018
14:43:09
я использова постгис

Artur
23.10.2018
14:43:27

Zhenya
23.10.2018
14:44:01
Всем привет, А кто знает какой регистратор имен у нас в России официальный? reg.ru же - это посредник же?

Google

Alexey
23.10.2018
14:44:25

Anton
23.10.2018
14:45:49
Там суть сводится к ( Point(%s,%s) <@> Point(%s,%s) )
В один поинт подставляй входную точку, а второй поинт используй для поиска

Artur
23.10.2018
14:46:40

Anton
23.10.2018
14:47:11
ну а с индексами нужно поработать

Artur
23.10.2018
14:47:19
а как

Anton
23.10.2018
14:47:21
в доке вроде я видел

Artur
23.10.2018
14:47:23
точка от юзера
я уже думал
можно на полигоны и перекрывать радиусом полигоны и только пограничные обмчитывать
и то ими можно пренебречь

Anton
23.10.2018
14:48:09
А сколько у тебя там записей?
и насколько нужно быстро отдавать результат?

Artur
23.10.2018
14:48:24
сегодня мало :)

Anton
23.10.2018
14:48:44
если там миллионы точек, то тогда нужно будет пилить поиск посложнее

Artur
23.10.2018
14:48:44

Anton
23.10.2018
14:48:49
и скорее всего не на постргесе

Artur
23.10.2018
14:48:51
тупо 2 between

Zhenya
23.10.2018
14:49:20

Google

Artur
23.10.2018
14:49:25
обычного индекса цифрового будет достаточно

Anton
23.10.2018
14:50:02
ну опять же. я бы так не делал

Artur
23.10.2018
14:50:05
и прямо сейчас я решаю проблему не менее очевидную - чем ближе к полюсу тем короче градус по долготе

Anton
23.10.2018
14:50:13
я бы поискал в гугле что-нить на тему fast geo search
https://github.com/arjunmehta/node-georedis

Artur
23.10.2018
14:50:36
я ж говорю мне нужно временное решение а обсуждаем мы его дольше чем его делать :)

Anton
23.10.2018
14:51:02
ну вот если потом, то я бы просто запилил как поиск по всем точкам

Artur
23.10.2018
14:51:15

Anton
23.10.2018
14:51:33
в крайнем случае. создал бы каскад контрольных точек

Artur
23.10.2018
14:51:40
никого радиусы реальные не волнуют
примерный поиск заказов
тем более в масштабах страны а не города
а обсчитывать маршруты по каждой точке вот уж точно ойвсе

Anton
23.10.2018
14:54:01
сейчас расскажу как.
1. создаешь например 4 точки на глобусе. индексируешь расстояние между всеми точками к этим 4-м
2. в областях образованными 4 -мя точками, создаешь такой же ряд точек и снова индексируешь все расстояния к ним.
3. когда твой пользователь вбивает свою точку, проходи по тем 4-м точкам и найди необходимую область. и затем в той области так же пройдись по индексам.
и т.д.
сложно описать текстом
но я думаю идею ты понимаешь

Artur
23.10.2018
14:54:37

Google

Artur
23.10.2018
14:54:46
реальное местоположение
если его округлить до ближайшей посчитанной то мой способ еще и точнее и быстрее окажется :)

Anton
23.10.2018
14:55:13
ты не понял. не нужно округлять
а нужно каскадом (как бинарным поиском) найти нужные точки

Artur
23.10.2018
14:55:31
у тебя 4 пункт

Anton
23.10.2018
14:56:27
идея в том, чтобы ты индексировал расстояния к контрольным точкам.
а когда ты ищешь с какой-нибудь рандомной точкой ты таким сужаешь поиск вместо всех, до log(n)

Artur
23.10.2018
14:56:47
хмммммм

Anton
23.10.2018
14:56:54
но я думаю проще запилить готовое решение
чем ебаться с такой математикой на постгресе

Artur
23.10.2018
14:57:08
такое решение наверное ок для картографических сервисов :)

Anton
23.10.2018
14:57:39
Конкретное по твоему вопросу +-50 км.
тебе нужно найти формулу преобразования растояния в градусы от конкретной точки
и затем прибавлять градусы

Artur
23.10.2018
14:57:57
так я уже нашел :)

Anton
23.10.2018
14:57:58
к широте и долготе

Artur
23.10.2018
14:58:15
более того оно уже работает тупо закархкожены градусы на км

Anton
23.10.2018
14:58:17
ну так ты говорил что у тебя неправильно считает

Artur
23.10.2018
14:58:33
нееее
в 1 вопросе возникло много тредов
+ мне еще тупо интересно как это работает
я даже задачу описал

Google

Anton
23.10.2018
14:59:34
ну тупо как это работает -- это геометрия на сфере, а потом геометрия на геоиде.
это сложно рассказать в пхп чате

Artur
23.10.2018
14:59:46
и если уж говорить про бизне повторю: водителю все равно сколько км между точками особенно если между ними река
реально его волнует либо км либо минуты по реальной дороге

Anton
23.10.2018
15:00:15
ну а есть карта дорог? с координатами
тогда строишь граф

Artur
23.10.2018
15:00:24
гугл мапс? :)

Anton
23.10.2018
15:00:34
и как здоровый человек считаешь по графу

dypa
23.10.2018
15:00:35

Artur
23.10.2018
15:00:37

Anton
23.10.2018
15:00:48
не гугл мапс. если у тебя россия, то я уверен есть БД с дорогами
короче если сейчас не нужно, то мой вариант самый ок
а потом подключить гео поиск какой

Alexey
23.10.2018
15:01:17

Anton
23.10.2018
15:01:19
а потом уже перейти на графы

Artur
23.10.2018
15:02:42
или надо искать только пограничные точки а не все
те ребра

Maksim
23.10.2018
15:04:57
превратили пхп чатик в хер знает что) где обсуждение сеттеров, сонаты и т.д.?)

Sergey
23.10.2018
15:05:34

Maksim
23.10.2018
15:05:55

Sergey
23.10.2018
15:06:06
если тебя успокоит