假设您有用户的纬度和经度,并且您想在附近找到……比如说餐馆,您如何查询您的关系数据库?对于诸如“25 英里半径内的餐厅”之类的东西?
您是否只需查询长和纬度大于/小于用户的 loc +/- 25 英里(我猜转换为度数)的广场中的餐厅,然后以您使用的任何语言过滤掉“角落”?还是可以/应该直接在 SQL 中执行?
假设您有用户的纬度和经度,并且您想在附近找到……比如说餐馆,您如何查询您的关系数据库?对于诸如“25 英里半径内的餐厅”之类的东西?
您是否只需查询长和纬度大于/小于用户的 loc +/- 25 英里(我猜转换为度数)的广场中的餐厅,然后以您使用的任何语言过滤掉“角落”?还是可以/应该直接在 SQL 中执行?
例如,看看 oracle 中可用的空间功能 - 这是维基百科条目http://en.wikipedia.org/wiki/Spatial_query,以及来自 noaa 示例的链接https://www.ngdc.noaa.gov /wiki/index.php?title=Sample_Oracle_Spatial_Queries
在这里找到了一个非常好的指南:http ://code.google.com/apis/maps/articles/phpsqlsearch.html
比许多其他解释简单得多......
如果您将纬度/经度视为距赤道任何显着距离的直线网格(例如,在纽约、伦敦或莫斯科),您的“圆”已经非常变形。修剪“正方形”的角落并没有太大改善。
我知道您特别提到了关系数据库,但我认为您至少要研究一个具有空间查询本机实现的系统。
就个人而言,我发现 MongoDB 非常优雅:http ://www.mongodb.org/display/DOCS/Geospatial+Indexing