Получить запись в течение 10 км по широте в MySQL

Извините, что раньше не обрабатывал данные GPS. может быть вопрос новичка

Итак, я создал таблицу, в которой хранятся данные GPS следующим образом:

table name : request
id
lat decimal(10,8)
lng decimal(11,8)

Недавно я хотел бы получить данные, которые находятся в 10 км в пределах заданной точки GPS.

e.g. Given GPS lat: 22, lng: 114 , found all data within 10km

И я обнаружил, что есть тип данных под названием «точка». И SQL-запрос, связанный

SELECT *
FROM request
WHERE MBRContains
(
LineString
(
Point (
@lng + 10 / ( 111.1 / COS(RADIANS(@lat))),
@lat + 10 / 111.1
),
Point (
@lng - 10 / ( 111.1 / COS(RADIANS(@lat))),
@lat - 10 / 111.1
)
),
POINTFROMTEXT('POINT(22 114)')
)

Он возвращает 0 результата, даже если должен быть какой-то результат, например. У меня есть запись, что lat это 22.1, 114.1. Как это исправить? Благодарю.

3

Решение

Я бы сослался на этот вопрос, он был закрыт как дубликат, но список дубликатов дает вам довольно хороший обзор набора проблем и решений.

Радиус 40 километров с использованием широты и долготы

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]