【发布时间】:2011-03-12 01:38:54
【问题描述】:
我需要过滤地理编码以接近某个位置。例如,我想过滤餐厅地理编码列表,以识别我当前位置 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
注意:我使用的是最高标准来表示距离。
【问题讨论】:
-
对不起,我不明白。您是否希望 inverse_havesine 返回一个采用“其他”参数并返回 True 或 False 的可调用对象?还是您打算以其他方式传递“其他”?
-
(1) “有人能指点我吗”:someone == google (2) “提供 dlat, dlng 这样”的东西没有提到 dlat, dlng -- 请编辑你的问题。 (3) 什么是“距离度量的最高范数”?
-
@约翰·马钦。当然,谷歌也是你了解最高标准的朋友。
-
@Ranieri 抱歉,编辑了函数以澄清 dlat、dlng。逆半正弦应该给出相对于参考地理编码的最大 lat/lng 增量,以定义参考地理编码周围的 max_distance 正方形区域。
-
@AndrewB:我知道什么是“最高标准”。我问“什么是“距离度量的最高范数”。此外,“逆haversine”是一个与haversine函数相反的函数(@ 987654321@);您滥用该术语来描述您的问题,这在某些感觉更容易的 (point1, point2) -> 距离问题的反面(可以使用 hasrsines 或其他方法计算)。