
Serg
02.07.2017
19:38:30
И я бы стал, черт ео знает
и тут надо смотреть на производительность - если у вас апи для поиска магазинов в радиусе 3 км, то формула на сфере против обычной при сотке другой запросов в секунду.... тут заставляет подумать на счет нагрузки

Magic
02.07.2017
19:38:34
и в цикле сравнивай расстояние
и вытаскивай то у которого разница в 3км
формула:
function geoDistance($latitudeFrom, $longitudeFrom, $latitudeTo, $longitudeTo, $earthRadius = 6371000)
{
$latFrom = deg2rad($latitudeFrom);
$lonFrom = deg2rad($longitudeFrom);
$latTo = deg2rad($latitudeTo);
$lonTo = deg2rad($longitudeTo);
$latDelta = $latTo - $latFrom;
$lonDelta = $lonTo - $lonFrom;
$angle = 2 * asin(sqrt(pow(sin($latDelta / 2) , 2) + cos($latFrom) * cos($latTo) * pow(sin($lonDelta / 2) , 2)));
return $angle * $earthRadius;
}

Google

Карабанов
02.07.2017
19:39:46
и в цикле сравнивай расстояние
Понятно, генератором. Но вопрос - я правильно понимаю, что копать по ссылке, что я привел или где почитать про математику?
Ололо

Magic
02.07.2017
19:40:02
читать про математику, либо взять функцию выше

Карабанов
02.07.2017
19:40:08
Спасибо, пошел в питон колдовать

Magic
02.07.2017
19:40:19
вернет расстояние в метрах кажется. Это на пхп если
На питоне формула та же, синтаксис только чуть другой
а вообще
подобные вопросы в духе "geo distance phyton" легко гуглятся

Карабанов
02.07.2017
19:42:14

Magic
02.07.2017
19:42:25

Serg
02.07.2017
19:47:05

Google

Magic
02.07.2017
19:48:00
мизерная все равно

Serg
02.07.2017
19:48:12
а если это помножить на 300 магазинов....
на 286 бы вас посадить комп....

Magic
02.07.2017
19:49:16
у меня в базе тысяч 10+ адресов клиентов одной компании. по запросу в боте он выдает ближайших. использую формулу выше, задержек нет
математические функции типа умножить поделить возвести в квадрат или sin/cos не требуют много

Serg
02.07.2017
19:52:01
вот и винда.... с каждым годом в ней ничего лучше не добавляется, а оперативы и процессора жрет все больше, т.к. программисты думают, что пользователь поставит проц пожирнее и все расчеты без задержек сделаются

Magic
02.07.2017
19:53:15

Quarx2k ?
02.07.2017
19:54:08
7 тупой тормоз в сравнении с 10

Serg
02.07.2017
19:55:07

M
02.07.2017
19:55:11
Божечки кошечки, в 2К17 велосипедят. Есть же PostGIS, при условии что вы прекрасной PostgreSQL пользуетесь)

Serg
02.07.2017
19:55:24
и вин 95\98 летали

M
02.07.2017
19:55:43
DOS

Magic
02.07.2017
19:56:26

Serg
02.07.2017
19:56:29

Quarx2k ?
02.07.2017
19:56:42

Magic
02.07.2017
19:56:44

Serg
02.07.2017
19:56:57
там гис, там либа, там еще какая хрень

Bohdan
02.07.2017
19:57:03

Magic
02.07.2017
19:57:04

Google

Quarx2k ?
02.07.2017
19:57:19

Magic
02.07.2017
19:58:15

Bohdan
02.07.2017
19:58:17
Это же универсальные ЭВМ

M
02.07.2017
19:58:25

Magic
02.07.2017
19:58:53

Quarx2k ?
02.07.2017
19:59:06

Bohdan
02.07.2017
19:59:29

Serg
02.07.2017
19:59:39

Bohdan
02.07.2017
19:59:39
Я в виме писал под Android

M
02.07.2017
19:59:46
@temamagic Я с тобой не разговариваю, ты вызываешь дикое желание холливарить. Либо ты дурак, либо тролль. С такими типами собеседников мне не интересно дискутировать. Спасибо.

Bohdan
02.07.2017
19:59:53
Довольно крупный проект допиливал

Quarx2k ?
02.07.2017
20:00:24

Bohdan
02.07.2017
20:00:34
Плюс идею можно пускать на удалённом хосте и подключаться через RDP/VNC

Magic
02.07.2017
20:00:51

Bohdan
02.07.2017
20:01:04

Magic
02.07.2017
20:01:08
детский сад ромашка "я с тобой не разговариваю" ))
Никто не спорит, как выше сказали, что можно решать всякими гисами и прочим. Но ты обязан это уметь делать руками.
Иначе найдешь проблему под которую нет готового решения и встанешь на месте как баран

Google

Serg
02.07.2017
20:02:33

M
02.07.2017
20:02:42

Magic
02.07.2017
20:02:43
О чем и ведем речь с @SergAHell

M
02.07.2017
20:03:06
Просто окей если 300 записей, но когда из 3000000, ты что, на клиент их будешь тянуть?

Magic
02.07.2017
20:03:10

M
02.07.2017
20:03:11
Это же не рационально.

Карабанов
02.07.2017
20:03:53

Magic
02.07.2017
20:03:56
Никто не говорит о 300000000000 записей. Человеку нужно решение. Пусть сначала научится так. а потом применяет еще методы. Никто не говори что это плохо. Тебе говорят что ты должен понимать как это работает

Serg
02.07.2017
20:04:04

M
02.07.2017
20:04:34
лол, работать в PostGIS

Magic
02.07.2017
20:05:24

Serg
02.07.2017
20:05:30

Magic
02.07.2017
20:05:37

Карабанов
02.07.2017
20:05:44

M
02.07.2017
20:05:56

Magic
02.07.2017
20:06:15
Они делают все формулами, что бы такой упрямый как ты сидел и доказывал что постгис тру, а формулы нет!

M
02.07.2017
20:06:33

Magic
02.07.2017
20:06:51
ты узко мыслишь походу

Google

M
02.07.2017
20:07:23

Magic
02.07.2017
20:07:42

M
02.07.2017
20:08:17
А где он считать будет, в СУБД, прям вот так и вставит в SQL:
from math import radians, cos, sin, asin, sqrt
def haversine(lon1, lat1, lon2, lat2):
"""
Calculate the great circle distance between two points
on the earth (specified in decimal degrees)
"""
# convert decimal degrees to radians
lon1, lat1, lon2, lat2 = map(radians, [lon1, lat1, lon2, lat2])
# haversine formula
dlon = lon2 - lon1
dlat = lat2 - lat1
a = sin(dlat/2)**2 + cos(lat1) * cos(lat2) * sin(dlon/2)**2
c = 2 * asin(sqrt(a))
km = 6367 * c
return km
?))


Serg
02.07.2017
20:09:08
С удовольствием, Open Source это кайф!
так вот тебя подводят к мысли - если ты нормальный программист то ты можешь без либ сам сделать то, что надо, а можешь и с либами .... И как минимум понимаешь разницу в использовании и понимаешь риски, т.к. можешь представить как сделана либа и что в ней хорошего и не хорошего
а вот мы говорим про "недо" - которы ТОЛЬКО с либами могут писать и не понимают как это все работает в реальности, т.е. те, кого готовили в универе под одну задачу, которые на проекте не смогут работать тимлидами никогда, которые только могут из пазлов наковырять проект. А если пазл не подходит - ищут другой.

Карабанов
02.07.2017
20:09:46
Прогнал на расстоянии фактическом (яндекс) 1.2, получил скриптом 1.6
При расстоянии 3 км (яндкс), скриптом - 2.4.
В целом - посмотрел, уже больше 1км ни кто не пойдёт, если это не магазины с водкой 24

Magic
02.07.2017
20:10:11
А где он считать будет, в СУБД, прям вот так и вставит в SQL:
from math import radians, cos, sin, asin, sqrt
def haversine(lon1, lat1, lon2, lat2):
"""
Calculate the great circle distance between two points
on the earth (specified in decimal degrees)
"""
# convert decimal degrees to radians
lon1, lat1, lon2, lat2 = map(radians, [lon1, lat1, lon2, lat2])
# haversine formula
dlon = lon2 - lon1
dlat = lat2 - lat1
a = sin(dlat/2)**2 + cos(lat1) * cos(lat2) * sin(dlon/2)**2
c = 2 * asin(sqrt(a))
km = 6367 * c
return km
это питон, исполняется на сервере а не на клиенте

M
02.07.2017
20:10:13

Magic
02.07.2017
20:10:15
ты что то путаешь
Поверь сможет

M
02.07.2017
20:10:25

Карабанов
02.07.2017
20:10:25
А где он считать будет, в СУБД, прям вот так и вставит в SQL:
from math import radians, cos, sin, asin, sqrt
def haversine(lon1, lat1, lon2, lat2):
"""
Calculate the great circle distance between two points
on the earth (specified in decimal degrees)
"""
# convert decimal degrees to radians
lon1, lat1, lon2, lat2 = map(radians, [lon1, lat1, lon2, lat2])
# haversine formula
dlon = lon2 - lon1
dlat = lat2 - lat1
a = sin(dlat/2)**2 + cos(lat1) * cos(lat2) * sin(dlon/2)**2
c = 2 * asin(sqrt(a))
km = 6367 * c
return km
на сервере?

Magic
02.07.2017
20:10:26
увы полно таких
в контексте этой задачи ему даром не сдались левые модули

M
02.07.2017
20:11:47

Magic
02.07.2017
20:12:24
и как скзано ранее мы говорим о тех кто не умеют делать сами ничего а не про то что использовать готовые инструменты - плохо
перечитай если интересно переписку чата
@SergAHell и я тебе не однократно говорим одно а ты другое

Sergey
02.07.2017
20:13:01

Magic
02.07.2017
20:13:15
и пожалуй я ливну отдыхать)