0
是我知道这个问题有史以来问充足的时间,但似乎从2012年,这个问题/ ansewers的基础, 我试图执行经典搜索距离列点 ,但我有一些麻烦无法解决..Mysql POINT专栏为距离搜索
是否正常我的POINT列看起来像这样?
0x00000000010100000085B1852007052040C0B2D2A414684840
这里是我的脚步,我不能够看到什么错, 我并基于从最后一个堆问题/解答。
我使用mariadb 10和Heideisql gui。
我有2个colums纬度和经度, 我创建了一个geopoints点一栏, 填入的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