да, я знаю, что этот вопрос когда-либо задавался много времени, но все кажется устаревшим с 2012 года, основа вопроса thoses/ansewers, Я попытался выполнить классическое расстояние поиска с помощью столбца POINT , но у меня есть некоторые проблема неразрешимая ..Mysql POINT column для поиска расстояний
нормально мой столб POINT выглядит так?
0x00000000010100000085B1852007052040C0B2D2A414684840
Вот все мои шаги, я не в состоянии увидеть, что случилось, я сделал на основе из последних стека вопросов/ответов.
Я использую mariadb 10 с Heideisql gui.
У меня есть 2 colums широты и долготы, я создал столбец geopoints POINT, Заселите GeoPoint так:
UPDATE geoFRA
SET geopoints = GeomFromText(CONCAT('POINT (', lon, ' ', lat, ')'))
После этого моя колонка geopoints выглядит следующим образом:
0x00000000010100000085B1852007052040C0B2D2A414684840
Тогда я пытаюсь выполнить запрос в 2-х манипуляторах, сначала попробуйте:
[email protected] = 48.88;
[email protected] = 2.34;
SELECT *
FROM geoFRA
WHERE MBRContains(LineFromText(CONCAT(
'('
, @lon + 700/(111.1/cos(RADIANS(@lon)))
, ' '
, @lat + 700/111.1
, ','
, @lon - 700/(111.1/cos(RADIANS(@lat)))
, ' '
, @lat - 700/111.1
, ')')
,geopoints)
и вторая попытка:
[email protected] = 48.88;
[email protected] = 2.34;
SET @kmRange = 172; -- = 50 Miles
SELECT *, (3956 * 2 * ASIN(SQRT(POWER(SIN((@lat - abs(`lat`)) * pi()/180/2),2) + COS(@lat * pi()/180) * COS(abs(`lat`) * pi()/180) * POWER(SIN((lon - `lon`) * pi()/180/2), 2)))) as distance
FROM `geoFRA`
WHERE MBRContains(LineString(Point(@lat + @kmRange/111.1, @lon + @kmRange/(111.1/COS(RADIANS(@lat)))), Point(@lat - @kmRange/111.1, @lon - @kmRange/(111.1/COS(RADIANS(@lat))))), `geopoints`)
Order By distance
Я начинаю думать, что есть некоторая MariaDB несовместимость?! или я что-то пропустил?
спасибо за любую помощь .., Flau