【发布时间】:2011-09-05 15:07:54
【问题描述】:
我目前有一个数据库查询,用于计算数据库中每个商店从那里到“家”位置的距离。我正在使用这个公式计算飞行距离。
http://www.movable-type.co.uk/scripts/latlong.html
然后我订购它们并展示它们。我发现了一个更好的方法是只搜索纬度/经度在一个范围内的商店。
例如,不是计算数据库中每个商店之间的距离(超过 30000 个),而是仅将经纬度在一定范围内的商店分组并计算它们之间的距离。
现在我正在尝试找出如何计算实际界限。距离必须低于 5 公里。所以我将 5 除以 100,然后将纬度和经度除以这些数量。
SELECT storeid, storedescription, address, city, storebannerdescription, lat, lon,
ROUND (gc_dist (lat, lon, 43.758152, -79.746639), 1) AS distance
FROM storelatlon
WHERE ((lat-43.758152) < 0.05 AND (lat -43.758152) > -0.05) AND ( (lon-(-79.746639)) < 0.05 AND (lon-(-79.746639)) > -0.05)
ORDER BY Distance
【问题讨论】:
-
你的问题是什么?
-
我不确定你在问什么,但我会注意到减去角度测量值并不能告诉你任何关于距离的信息。
-
有什么问题?我认为它是“这是一个有效或好的实现吗?”另外,你用的是什么数据库?一些数据库支持纬度/经度计算(例如 Oracle Locator),但这并不是必要免费的(Oracle Spatial 不是免费的,而且很难判断行以 Locator 结尾和开头空间)。其他数据库也提供基本支持,包括 MySQL。
标签: c# database math optimization