将经度和纬度数据存储在数据库中,并查询附近的记录
Posted
技术标签:
【中文标题】将经度和纬度数据存储在数据库中,并查询附近的记录【英文标题】:Storing longitude and latitude data in a database, and query for nearby records 【发布时间】:2010-07-28 10:18:59 【问题描述】:我正在创建一个使用地理定位的 Rails 应用程序。可以为记录添加经度和纬度。如果有多个带有地理位置的记录,您可以看到带有附近记录的 Google 地图,就像 Twitter 地理位置一样。
如何存储坐标(我不介意计算)并找到附近的记录?我的数据库是 mysql。
谢谢。
【问题讨论】:
见***.com/questions/951923/… 支持梅萨的建议。 MySQL 唯一的真正选择是将坐标存储在两个字段中作为小数并进行大量手动计算。 【参考方案1】:根据您的要求,您可以采用两种方法:
您自己存储坐标(按照您的计划)。您应该查看Geokit gem,它支持 MySQL 后端并为查找附近位置提供帮助。 使用Simplegeo 存储您的坐标,您可以使用此gem。同样,这会照顾您的存储和附近的查找。【讨论】:
【参考方案2】:Geokit 适用于从数据库中提取数据后的数据,但如果您希望使用空间数据从数据库构建查询,则不能。如果你只使用 mysql,那么你会在做很多计算时遇到困难。由于您使用的是 Rails,因此您至少有这个选项:http://freelancing-god.github.com/ts/en/geosearching.html,它应该为您处理大量计算。
【讨论】:
【参考方案3】:您可以使用acts_as_solr_reloaded 来索引和查询您的空间数据,您不需要在主表中存储纬度和经度信息,而是创建一个迁移,创建一个本地表,在其中存储纬度和经度信息。并且您也可以使用它来查询 solr 索引,包括纬度、经度和半径。
【讨论】:
【参考方案4】:看看Geokit。它广泛用于基于地图的应用程序中。
【讨论】:
以上是关于将经度和纬度数据存储在数据库中,并查询附近的记录的主要内容,如果未能解决你的问题,请参考以下文章