|
Вычисление дистанции по координатам GPS
|
|||
---|---|---|---|
#18+
Есть СУБД MariaDB 10.0.38. Функции st_distance_sphere в ней нет (она появилась в 10.2.38). Но есть st_distance. Можно ли с ее помощью вычислить дистанцию между двумя точками? Расстояния невелики (менее сотни километров), сферическими искажениями можно пренебречь. То есть результат SELECT ST_Distance(POINT(1,1),POINT(2,2)) меня вполне устраивает. Вопрос только в том, как перевести широту и долготу в километровую сетку. Пробовал просто умножить на 111 и 111*cos(широта), но видимо что-то не то, потому что погрешность получается чудовищная (вместо 175 метров получилось 132). ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2022, 16:43 |
|
Вычисление дистанции по координатам GPS
|
|||
---|---|---|---|
#18+
Alibek B., отчаиваться не надо, гуглопоиск часто врет (111 вообще непричем) результат уже в МЕТРАХ -- ОСЛО 59.871615914096544, 10.732875010123138 -- Стокгольм 59.28192441905507, 18.082728206254334 418.7 км по гугл карте проверяем https://dbfiddle.uk/?rdbms=mariadb_10.3&fiddle=502b166cd89538410451b8ba3fdf295b Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2022, 20:54 |
|
Вычисление дистанции по координатам GPS
|
|||
---|---|---|---|
#18+
Alex_Ustinov отчаиваться не надо, гуглопоиск часто врет Надо, надо. Официальная документация не врёт. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2022, 21:03 |
|
Вычисление дистанции по координатам GPS
|
|||
---|---|---|---|
#18+
Akina, совсем не обратил внимания ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2022, 21:16 |
|
Вычисление дистанции по координатам GPS
|
|||
---|---|---|---|
#18+
на Хабре статья для 5.х https://habr.com/ru/post/179157/ ------- я подумал что у ТС беда с тем что долгота-широта перевернута ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2022, 21:27 |
|
Вычисление дистанции по координатам GPS
|
|||
---|---|---|---|
#18+
на Хабре статья для 5.х https://habr.com/ru/post/179157/ отлично работает, спасибо автору https://dbfiddle.uk/?rdbms=mysql_5.5&fiddle=5d9d0f8647005ce1b26cf8db1e543a1d [SRC sql ]CREATE FUNCTION geodist_sphere ( src_lat DECIMAL(9,6), src_lon DECIMAL(9,6), dst_lat DECIMAL(9,6), dst_lon DECIMAL(9,6) ) RETURNS DECIMAL(6,2) DETERMINISTIC BEGIN SET @dist := 6371 * 2 * ASIN(SQRT( POWER(SIN((src_lat - ABS(dst_lat)) * PI()/180 / 2), 2) + COS(src_lat * PI()/180) * COS(ABS(dst_lat) * PI()/180) * POWER(SIN((src_lon - dst_lon) * PI()/180 / 2), 2) )); RETURN @dist; END; -- широта-долгота в гугл кординтатах -- ОСЛО 59.871615914096544, 10.732875010123138 -- стокгольм 59.28192441905507, 18.082728206254334 select Geodist_sphere(59.871615914096544, 10.732875010123138, 59.28192441905507, 18.082728206254334)as IsOsloVstolgolm; -- 418 km[/SRC] ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2022, 22:03 |
|
Вычисление дистанции по координатам GPS
|
|||
---|---|---|---|
#18+
В одном градусе широты примерно 111 километров, поэтому и пробовал просто умножить градусы на масштаб. Но что-то не то, результаты слишком неточные. Вычисление гаверсинусов на PHP у меня есть, на клиенте расстояния считаются правильно. Но я хотел получить расстояния сразу в результатах запроса. На небольших расстояниях st_distance по идее должен работать. Но почему-то неправильно работает. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2022, 22:03 |
|
Вычисление дистанции по координатам GPS
|
|||
---|---|---|---|
#18+
Попробую добавить функцию в БД. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2022, 22:04 |
|
Вычисление дистанции по координатам GPS
|
|||
---|---|---|---|
#18+
Alibek B. В одном градусе широты примерно 111 километров ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2022, 09:29 |
|
Вычисление дистанции по координатам GPS
|
|||
---|---|---|---|
#18+
miksoft Alibek B. В одном градусе широты примерно 111 километров Ты с долготой попутал ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2022, 11:22 |
|
Вычисление дистанции по координатам GPS
|
|||
---|---|---|---|
#18+
порассуждаем https://dbfiddle.uk/?rdbms=mariadb_10.3&fiddle=1be5bcd16c5820bda264a91c42b48717 Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
широта 0-90 от экватора к полюсам долгота 0-180 от гринвича на восток-запад получаем не квадрат а прямоугольник 111 км на 143 км (?) ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2022, 12:25 |
|
Вычисление дистанции по координатам GPS
|
|||
---|---|---|---|
#18+
ради хохмы можно применить коэф. для некритичных измерений. +Погрешность 1,94% https://dbfiddle.uk/?rdbms=mariadb_10.3&fiddle=fb95d857bc52ad6deddbcfd6175324fe подогнали ST_Distance() к ST_Distance_Sphere() Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
так сдаются большие проекты ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2022, 14:10 |
|
|
start [/forum/topic.php?fid=47&msg=40132101&tid=1827786]: |
0ms |
get settings: |
23ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
47ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
307ms |
get tp. blocked users: |
3ms |
others: | 2535ms |
total: | 2953ms |
0 / 0 |