【发布时间】:2014-11-26 18:49:27
【问题描述】:
假设我有一个数据库,存储了一个城市中不同用户的 1000000 个地理位置。如果我使用列表或数组来保存所有地理位置并一一比较距离,那么服务器执行命令SearchNearbyUsers(myLocation, 50) 会很痛苦。
服务器使用 C# 和 Web API 2 编码。是否有任何库设计用于使用地理位置进行此类计算?
如果没有可用的库,应该使用什么数据结构来简化计算?之前看过R-tree,但是说实话,逻辑我也不是很明白,而且好像挺复杂的。
这是地理定位类的样子:
public class GeoLocation
{
public float latitude { get; set; }
public float longitude { get; set; }
}
纬度和经度都是客户端发送的。值通过navigator.geolocation.getCurrentPosition()获取。
【问题讨论】:
-
如果您使用的是 MongoDB 或 MySQL 等数据库系统,它可以为您完成工作,您只需先进行设置。对于 MySQL,请仔细阅读本章:dev.mysql.com/doc/refman/5.0/en/spatial-extensions.html。否则(我希望你有充分的理由不这样做),R-trees 是要走的路,你必须研究它们!
标签: c# algorithm data-structures geolocation