前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >程序员教你两点之间如何找到合适的房源

程序员教你两点之间如何找到合适的房源

作者头像
naget
发布2022-04-11 20:56:12
2.3K0
发布2022-04-11 20:56:12
举报
文章被收录于专栏:VegoutVegout

现在很多找房软件都提供便捷的功能,输入公司地址,就可以查询30分钟以内通勤的房源。比如某如:

公司地址就是我们找房的中心点,30分钟通勤时间就是中心点的辐射半径。但是这些软件无法解决的是,当你和你女友公司处在不同的相隔较远的位置时,如何找一个对于你俩都比较合适的地点来租房呢?也就是说当中心点有两个的时候,如何兼顾这两个地点,找一个合适的房源位置。

“合适”这个词对于不同的人来说不一定相同。“合适”可能是:“通勤时间较短”、“通勤时间对某一中心点较短”、“通勤时间对于两个中心点差不多”等等。今天的例子以第三种为准:如何在两个工作地点之间找一个相对于这两个地点通勤时间差不多同时又相对较短的小区。

首先第一步,确定能够接受的通勤时间上限。比如1小时。

代码语言:javascript
复制
far_most = 60 * 60 * 1000

第二步,列出可能租房范围的所有小区。

代码语言:javascript
复制
    while flag:
        url = 'https://restapi.amap.com/v5/place/text?key=' + key + '&types=120300|120302&region=010&page_num=' + str(
            page_num) + '&page_size=' + str(page_size)
        r = request.urlopen(url).read()
        res = json.loads(r)
        if res['status'] != '1':
            raise ValueError(
                "get_location error "
                "cadefault"
            )
        pois = res['pois']
        for poi in pois:
            print(poi['name'], poi['location'], poi['adname'])
            sheet.append([poi['name'], poi['location'], poi['adname']])

        if len(pois) < page_size:
            flag = False
            wb.save(path)
        page_num = page_num + 1

这里是使用了高德地图提供的API,可以直接查询出北京市所有的小区信息。为了复用数据,也为了减少API的重复调用(每日免费调用次数是有限的),将这些数据,包括小区名称,所在行政区和经纬度坐标地址存储到了excel里

第三步,计算每个小区到两个中心点的通勤时间,筛选出在可接受范围内的小区。

代码语言:javascript
复制
    for part in parts:
        if part.adname == '海淀区' or part.adname == '石景山区' or part.adname == '西城区':
            f_dur = get_path_duration(part.location, f, '010')
            m_dur = get_path_duration(part.location, m, '010')
            std2 = np.std([f_dur, m_dur])
            sum_dur = f_dur + m_dur
            if sum_dur > far_most * 2:
                continue
            part.set_far(sum_dur)
            part.set_score(std2)
            sheet.append([part.location, part.adname, part.name, part.square, part.far])
            print("写入结果:", part.location, part.adname, part.name, part.far, part.square)
            selected_part.append(part)

    wb.save(result_path)

get_path_duration()这一步就是查询通勤时间(使用的还是高德地图的API),f_dur是到第一个点的通勤时间,m_dur是到第二个点的通勤时间,如果大于我们能够接受的通勤时间上限,那么就过滤掉,最终留下可接受范围内的小区列表。

第四步,计算每个小区到两个中心点的通勤时间的标准差,按标准差从小到大排序。

其实上边那一个代码块里,已经把第四步要做的计算工作做完了。part.set_score()记录了小区到两个中心点位置通勤时间的标准差。我们只需要根据这个标准差做一个排序就好了。

这样就筛选出了小区啦,之后的步骤就跟普通找房一样了,OK大功告成😄

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-04-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Vegout 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 首先第一步,确定能够接受的通勤时间上限。比如1小时。
  • 第二步,列出可能租房范围的所有小区。
  • 第三步,计算每个小区到两个中心点的通勤时间,筛选出在可接受范围内的小区。
  • 第四步,计算每个小区到两个中心点的通勤时间的标准差,按标准差从小到大排序。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档