加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

在SQLite中查询获取基于Radius的记录?

发布时间:2020-12-12 19:16:57 所属栏目:百科 来源:网络整理
导读:我有这个查询在MySQL中工作正常 SELECT ((ACOS(SIN(12.345 * PI() / 180) * SIN(lat * PI() / 180) + COS(12.345 * PI() / 180) * COS(lat * PI() / 180) * COS((67.89 - lon) * PI() / 180)) * 180 / PI()) * 60 * 1.1515 * 1.609344) AS distance,poi.* FR
我有这个查询在MySQL中工作正常
SELECT ((ACOS(SIN(12.345 * PI() / 180) * SIN(lat * PI() / 180) +
         COS(12.345 * PI() / 180) * COS(lat * PI() / 180) * COS((67.89 - lon) * 
         PI() / 180)) * 180 / PI()) * 60 * 1.1515 * 1.609344) AS distance,poi.* 
FROM poi
WHERE lang='eng' 
HAVING distance<='30'

距离为公里,输入为lat = 12.345和lon = 67.89

SQLite是3,我不能运行自定义函数与它在Android上。我也没有acos()等…因为这不是标准SQLite的一部分。

如何在SQLite中上面的查询?

您可以创建4个新列,即lat和lon的sin和cos。由于在运行查询之前可以在程序中计算cos(ab)= cos a cos b-sin a sin b,并且可以计算sin和cos的其他外观SIN(12.345 * PI()/ 180)表达式简化为可以由SQLite3处理的形式P * SIN_LAT Q * COS_LAT …。

BTW,也见Sqlite on Android: How to create a sqlite dist db function – to be used in the app for distance calculation using lat,long。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读