给定具有纬度+经度位置的地点的数据库,例如40.8120390,-73.4889650,如何在特定位置的给定距离内找到所有位置?
从DB中选择所有位置然后逐个浏览它们似乎并不是非常有效,从起始位置获取距离以查看它们是否在指定距离内.有没有一种很好的方法来缩小DB中最初选择的位置?一旦我(或没有?)一组缩小的位置,我是否仍然逐个检查距离,或者有更好的方法吗?
我这样做的语言并不重要.谢谢!
我需要过滤近地点的地理编码到一个位置.例如,我想过滤餐馆地理编码列表,以识别距离我当前位置10英里范围内的餐馆.
有人能指出我将一个距离转换为纬度和经度增量的函数吗?例如:
class GeoCode(object):
"""Simple class to store geocode as lat, lng attributes."""
def __init__(self, lat=0, lng=0, tag=None):
self.lat = lat
self.lng = lng
self.tag = None
def distance_to_deltas(geocode, max_distance):
"""Given a geocode and a distance, provides dlat, dlng
such that
|geocode.lat - dlat| <= max_distance
|geocode.lng - dlng| <= max_distance
"""
# implementation
# uses inverse Haversine, or other function?
return dlat, dlng
Run Code Online (Sandbox Code Playgroud)
注意:我使用的是supremum规范的距离.