
Darafei
15.02.2017
18:02:21
Максимум в меркатор перепроецировать, чтобы высота с шириной на экране бились
u.point::geography

Dmitrii
15.02.2017
18:12:00
Спасибо, вроде прокатило
?

Google

Dmitrii
15.02.2017
18:45:33
Меркатор по горизонтали не правильно работает почему то )
Будем копать дальше короче ?

Darafei
15.02.2017
18:50:00
В смысле неправильно работает?
Какой именно меркатор?
В кугисе глазами посмотри

Dmitrii
15.02.2017
18:51:21
Ну чел мне там говорит что по вертикали ок все сходится а вот по горизонтали расходится

Артур
15.02.2017
18:51:55

Darafei
15.02.2017
18:52:29

Vadim
15.02.2017
18:52:39

Dmitrii
15.02.2017
18:52:58

Darafei
15.02.2017
19:38:48
Привет, Денис

Denis
15.02.2017
19:39:36
Привет

Google

Darafei
15.02.2017
19:40:04
В меня вкололи обезболивающего на ночь, так что я скоро пойду спать :)
Где что в меркаторе не работает?
В каком именно, для начала?

Denis
15.02.2017
19:48:31
PostGIS srid 3785 показывает неверное расстояние по горизонтали

Darafei
15.02.2017
19:49:09
На cos(lat) корректировал?

Denis
15.02.2017
19:50:01
st_transform(st_setsrid(st_point(А), 4326), 3785) <-> st_transform(st_setsrid(st_point(Б), 4326), 3785)
Очень сильно не равно
st_distancespheroid(st_point(А), st_point(Б), 'SPHEROID["WGS 84",6378137,298.257223563]'),

Darafei
15.02.2017
19:50:06
Во-первых SRID 3785 отозван из-за ошибки в дефинишене, он нынче 3857

Denis
15.02.2017
19:50:48
Да, я уже накопал что он депрекейтед

Darafei
15.02.2017
19:51:37
Во-вторых, меркатор вносит нелинейное искажение, которое на коротких расстояниях можно поправить умножением на cos(lat)
Обычно его и править не надо, оно вполне по нему неплохо сортируется для knn

Denis
15.02.2017
19:52:47
умножать надо расстояние полученное?

Darafei
15.02.2017
19:52:59
Да

Denis
15.02.2017
19:53:11
В этом случае индекс не пойдет

Darafei
15.02.2017
19:53:34
Тогда какую задачу ты решаешь?

Denis
15.02.2017
19:53:42
Потому что точки а и б в разных таблицах

Darafei
15.02.2017
19:54:55
Пахнет как knn

Denis
15.02.2017
19:54:59
Упрощенно нужно найти точку из одной таблицы, которая ближе всех к точке из другой. Точнее даже несколько ближайших

Darafei
15.02.2017
19:55:16
Расстояние цифрой надо?
Какого порядка расстояния?

Denis
15.02.2017
19:56:18
расстояния порядка километров-десятков километров

Google

Denis
15.02.2017
19:56:59
По расстоянию нужно сортировать и делать это по индексу

Darafei
15.02.2017
19:57:07
Юзай стрелку и не загоняйся

Denis
15.02.2017
19:57:31
Погрешность +/- 50% не воодушевляет
В базе постгиса 5к разных проекций

Darafei
15.02.2017
19:57:52
Погрешность?
Она не погрешность, она прогнозируемое искажение

Denis
15.02.2017
19:58:53
Ну точнее можно так сказать. Но я не могу просто так скорректировать искажение

Darafei
15.02.2017
19:59:08
Тебе не надо его корректировать
У тебя есть расстояние в юнитах

Denis
15.02.2017
19:59:34
искажение зависит от направления

Darafei
15.02.2017
19:59:37
Забудь про метры, их нет, когда надо быстро

Denis
15.02.2017
20:00:10
Я тут кое-что накопал

Evgeniy
15.02.2017
20:00:45
в чем проблема получить knn в попугаях и показать реальное расстояние для них дорогой функцией?
и где врут здесь http://postgis.net/docs/geometry_distance_knn.html

Darafei
15.02.2017
20:01:25
Это надо делать после сортировки и лимита

Denis
15.02.2017
20:01:50
Что такое knn?

Evgeniy
15.02.2017
20:02:03
ближайшие соседи

Darafei
15.02.2017
20:03:33

Denis
15.02.2017
20:04:16
Если делать трансформ с lat_ts = широта то в принципе получается приемлимая точность

Darafei
15.02.2017
20:04:46

Google

Denis
15.02.2017
20:05:00
Только не врублюсь какую проекцию брать?
http://proj4.org/projections/index.html

Darafei
15.02.2017
20:05:50
Тебе туда не надо
Тебе надо найти в интернете картинку про то, что такое проекция меркатора и помедитировать на неё
После чего взять 3857 и сортировать по нему :)
3857 - это суть экранные пиксели гуглмапса
Есть ещё большое подозрение, что у тебя lon и lat перепутаны
Именно для этого нужно смотреть глазами в qgis :)

Denis
15.02.2017
20:18:35
были перепутаны, исправил
Прорыва не получилось

Darafei
15.02.2017
20:19:51
Покажь

Denis
15.02.2017
20:26:39
SELECT st_transform(st_setsrid(st_point(37.501735, 55.443835), 4326), '+proj=hammer') <-> st_transform(st_setsrid(st_point(37.193101, 55.751178), 4326), '+proj=hammer') - пока добился этого
На требуемых данных и в принципе далеко за их пределами искажения в пределах 25%

Dmitrii
15.02.2017
20:28:15
Первый геопоинт в Иране. За вами уже выехали ?

Darafei
15.02.2017
20:28:28
Москва ж

Denis
15.02.2017
20:28:37
тут координаты наоборот

Dmitrii
15.02.2017
20:29:11
А )

Darafei
15.02.2017
20:29:50
Теперь сделай в 3857 и умножь на cosd(55.5)

Denis
15.02.2017
20:29:57
Кажется тут отклонение растет при приближении направления к диагонали)

Dmitrii
15.02.2017
20:30:43

Google

Darafei
15.02.2017
20:31:36
Это мой хлеб :)
Постгрес так, побочное
Для чтения на досуге https://github.com/gojuno/lostgis/blob/master/sql/functions/ST_Fast_Real_Length.sql
А я пошёл отходить от операции дальше

Denis
15.02.2017
20:35:51
умножил, получилось true
Но про индексы можно забыть

Darafei
15.02.2017
20:36:34
Так умножать только для визуализации надо
Впрочем, что-то я делаю не так
Я перепишу этот запрос, чтобы он работал быстро, всего за $999.99
:)
Доброй ночи

Alexey
15.02.2017
20:38:43
Сделаю быстрее и качественнее за всего за €950!

Dmitrii
15.02.2017
20:38:52
Над маркетингом стоит еще поработать )

Lev
15.02.2017
20:39:50
SELECT st_setsrid(st_point(37.501735, 55.443835), 4326)::geography <-> st_setsrid(st_point(37.193101, 55.751178), 4326)::geography;

Denis
15.02.2017
20:40:41
Мне не столь визуализщация нужна, сколько не должна система выводить вверх тех кто от заданной точки в два раза дальше
У меня же сортировка по этому выражению

Lev
15.02.2017
20:42:31
cosd искажает только по одной координате. В общем случае dist не понятно по какой

Darafei
15.02.2017
20:43:38
Это тупое домножение на константу
Оно не влияет на сортировку