Skip to main content
 首页 » 编程设计

python之如何根据该地区的人口密度计算 map 搜索的动态默认半径

2025年05月04日21lvdongjie

我希望为社区转租广告网站执行此操作,但理论上该算法对于任何本地搜索都是相似的。

搜索的区域人口越少,搜索的默认半径应该越大。 另一方面,人口密度高的地区应具有较小的默认半径,以保持本地相关性。

这可能更像是一个数学问题而不是编程问题,但非常欢迎编写代码。到目前为止,我已经计算出每个城镇或村庄 15 英里范围内的转租数量,并将其作为密度的近似值保存在数据库中。当有人搜索城镇或村庄时,我打算使用这个数字来计算搜索的距离。

为了测试任何提议的解决方案,我提取了一些我希望算法得出的近似数字。如果在一个点的 15 英里范围内有很多转租,比如 30k,我希望搜索的默认半径在 3 英里左右。如果很少说 1 或 2,则默认半径应增加到 25 英里,如果周围没有地方,则更大。具有 ~1k 转租的中等范围区域的默认半径为 15 英里。这些只是示例,密度当然会随着数据库中事物的数量而增加或减少。

Population -> Default search radius 
0          -> very high (~60 miles or more) 
1          -> 25 miles 
1k         -> 15 miles 
30k        -> 3 miles 

我的方向是否正确?以代码为中心的答案首选 Python 或 PHP。

谢谢

请您参考如下方法:

一个合理的方法是定义区域,使它们包含相同数量的人,然后每个区域的可用公寓数量大致相同。

用数学方法写这个:

N = total number of people within a region 
d = population density of the region (taken to be what you list as population) 
A = Area of region 
R = Radius of the region A 

所以,N = d*A = d*pi*R*R,我们希望 N 是常量,所以 R = K*sqrt (1/D),其中 K 是为匹配您的数字而选择的常数,或大约 500 英里。然后,

30K    ->   2.9  miles 
 1K    ->   16   miles 
  1    ->   500  miles 

所以它适用于前两个,虽然不是人口为 1 的极端情况(但不清楚 1 是否真的是一个需要考虑的重要情况,而不是它自己的特例)。不管怎样,我认为这种方法有一定的道理,至少可以提供一些考虑因素。