-
-
Save tomac4t/9dfaee7f9761d2eb13d6c2388d4f991e to your computer and use it in GitHub Desktop.
使用高德API搜索满足条件的两个POI
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| import requests | |
| import time | |
| import json | |
| # 高德API密钥(请替换为您自己的密钥) | |
| AMAP_KEY = "YOUR_API_KEY_HERE" | |
| def search_poi_by_keyword(city, keyword): | |
| """使用关键字搜索POI""" | |
| base_url = "https://restapi.amap.com/v3/place/text" | |
| all_pois = [] | |
| page = 1 | |
| while True: | |
| params = { | |
| "key": AMAP_KEY, | |
| "output": "JSON", | |
| "city": city, | |
| "keywords": keyword, | |
| "page": page, | |
| "offset": 20 # 每页20条结果 | |
| } | |
| try: | |
| response = requests.get(base_url, params=params) | |
| data = response.json() | |
| if data["status"] != "1": | |
| print(f"API请求失败: {data.get('info', '未知错误')}") | |
| break | |
| pois = data.get("pois", []) | |
| all_pois.extend(pois) | |
| # 检查是否还有更多结果 | |
| total_count = int(data.get("count", 0)) | |
| if len(all_pois) >= total_count: | |
| break | |
| page += 1 | |
| time.sleep(0.34) # 控制请求频率(每秒不超过3次) | |
| except Exception as e: | |
| print(f"请求过程中发生错误: {e}") | |
| break | |
| return all_pois | |
| def search_around_poi(location, radius, poi2_keyword): | |
| """搜索指定位置周围的POI""" | |
| base_url = "https://restapi.amap.com/v3/place/around" | |
| results = [] | |
| page = 1 | |
| while True: | |
| params = { | |
| "key": AMAP_KEY, | |
| "output": "JSON", | |
| "location": location, | |
| "radius": radius, | |
| "page": page, | |
| "offset": 20 # 每页20条结果 | |
| } | |
| try: | |
| response = requests.get(base_url, params=params) | |
| data = response.json() | |
| if data["status"] != "1": | |
| print(f"周边搜索API请求失败: {data.get('info', '未知错误')}") | |
| break | |
| pois = data.get("pois", []) | |
| # 筛选包含POI2关键词的结果 | |
| for poi in pois: | |
| if poi2_keyword in poi.get("name", ""): | |
| results.append(poi) | |
| # 检查是否还有更多结果 | |
| total_count = int(data.get("count", 0)) | |
| if page * 20 >= total_count: | |
| break | |
| page += 1 | |
| time.sleep(0.34) # 控制请求频率(每秒不超过3次) | |
| except Exception as e: | |
| print(f"周边搜索过程中发生错误: {e}") | |
| break | |
| return results | |
| def main(): | |
| # 用户输入 | |
| poi1_name = input("请输入POI1名称: ") | |
| poi2_name = input("请输入POI2名称: ") | |
| radius = input("请输入搜索半径(米): ") | |
| city = input("请输入搜索城市/代码: ") | |
| print(f"\n正在搜索{city}的{poi1_name}...") | |
| # 第一步:搜索POI1 | |
| poi1_list = search_poi_by_keyword(city, poi1_name) | |
| if not poi1_list: | |
| print(f"在{city}未找到{poi1_name}") | |
| return | |
| print(f"找到{len(poi1_list)}个{poi1_name}地点") | |
| # 存储匹配结果 | |
| matched_results = [] | |
| # 第二步:对每个POI1进行周边搜索 | |
| for idx, poi1 in enumerate(poi1_list, 1): | |
| print(f"正在处理第{idx}个地点: {poi1.get('name')}") | |
| location = poi1.get("location") | |
| if not location: | |
| continue | |
| # 周边搜索 | |
| around_pois = search_around_poi(location, radius, poi2_name) | |
| # 第三步:记录匹配结果 | |
| for poi2 in around_pois: | |
| result = { | |
| "poi1_name": poi1.get("name"), | |
| "poi1_address": poi1.get("address"), | |
| "poi1_location": poi1.get("location"), | |
| "poi2_name": poi2.get("name"), | |
| "poi2_address": poi2.get("address"), | |
| "poi2_location": poi2.get("location"), | |
| "distance": poi2.get("distance", "未知") | |
| } | |
| matched_results.append(result) | |
| # 输出结果 | |
| if not matched_results: | |
| print(f"\n在{poi1_name}周围{radius}米内未找到{poi2_name}") | |
| return | |
| print(f"\n找到{len(matched_results)}个匹配结果:") | |
| for i, result in enumerate(matched_results, 1): | |
| print(f"\n[#{i}]") | |
| print(f"POI1名称: {result['poi1_name']}") | |
| print(f"POI1地址: {result['poi1_address']}") | |
| print(f"POI1经纬度: {result['poi1_location']}") | |
| print(f"POI2名称: {result['poi2_name']}") | |
| print(f"POI2地址: {result['poi2_address']}") | |
| print(f"POI2经纬度: {result['poi2_location']}") | |
| print(f"两者距离: {result['distance']}米") | |
| if __name__ == "__main__": | |
| # 替换为您的高德API密钥 | |
| AMAP_KEY = "YOUR_API_KEY_HERE" | |
| if AMAP_KEY == "YOUR_API_KEY_HERE": | |
| print("请先在代码中设置您的高德API密钥") | |
| else: | |
| main() |
Author
tomac4t
commented
Aug 29, 2025
Author
请输入POI1名称: 鸭头
请输入POI2名称: 霸王茶姬
请输入搜索半径(米): 20
请输入搜索城市/代码: 杭州
正在搜索杭州的鸭头...
找到200个鸭头地点
正在处理第1个地点: 阿军饭店(景杉路店)
正在处理第2个地点: 阿柜鸭头(崇化路)
正在处理第3个地点: 美蛙四季(庆春路店)
正在处理第4个地点: 衢家渔火(世茂江滨商业中心店)
正在处理第5个地点: 衢记鸭头(北干店)
正在处理第6个地点: 老贵鸭头(滨康二苑店)
正在处理第7个地点: 阿柜鸭头(明怡花苑店)
正在处理第8个地点: 辣心计·衢州鸭头(上沙路店)
正在处理第9个地点: 衢记鸭头(中赢金城里店)
正在处理第10个地点: 辣丫鸭衢州鸭头(南萧埠小区金兰池公寓北区店)
正在处理第11个地点: 衢锦记私房菜
正在处理第12个地点: 阿柜鸭头(星灿街店)
正在处理第13个地点: Yoyo的鸭头店(滨江宝龙城)
正在处理第14个地点: 春嬢嬢卤鸭头总店(龙湖·紫金上城店)
正在处理第15个地点: 衢记鸭头(徐家河店)
正在处理第16个地点: 绝味鸭脖(浙大玉泉校区店)
正在处理第17个地点: 衢州鸭头(都会艺境店)
正在处理第18个地点: 阿柜鸭头砂锅
正在处理第19个地点: 阿贵鸭头(振兴路店)
正在处理第20个地点: 衢邹记鸭头(建设四路店)
正在处理第21个地点: 衢记鸭头(桐庐江南店)
正在处理第22个地点: 柳鸭记衢州鸭头(梦想小镇店)
正在处理第23个地点: 衢州鸭头
正在处理第24个地点: 柳鸭记衢州鸭头(滨江迎春店)
正在处理第25个地点: 衢州鸭头馆(西园·凤兴花园一区店)
正在处理第26个地点: 衢州鸭头(巨化)麻辣烫
正在处理第27个地点: 柳鸭记衢州鸭头(五联店)
正在处理第28个地点: 柳丫鸭
正在处理第29个地点: 绝对现卤复兴店
正在处理第30个地点: 小贵鸭头(南江公园店)
正在处理第31个地点: 鸭先知衢州鸭头(萧山万象汇店)
正在处理第32个地点: 衢州鸭头(十五奎巷历史文化街区店)
正在处理第33个地点: 柳鸭记衢州鸭头(西溪北苑北区店)
正在处理第34个地点: YOYO的鸭头店(中赢国际店)
正在处理第35个地点: 鲜卤记衢州鸭头(延安路店)
正在处理第36个地点: 卤鲜说衢州鸭头(龙湖杭州西溪天街店)
正在处理第37个地点: 衢州鸭头(丁兰广场餐车店)
正在处理第38个地点: 衢州鸭头
正在处理第39个地点: 衢州鸭头(中泰路店)
正在处理第40个地点: 辣心计衢州鸭头(嘉绿景苑小区东园店)
正在处理第41个地点: 衢州鸭头砂锅
正在处理第42个地点: 胡姐卤味
正在处理第43个地点: 吖里个鸭衢州鸭头(新安江店)
正在处理第44个地点: 衢州鸭头(财通中心店)
正在处理第45个地点: 阿长鸭头(崇化分店)
正在处理第46个地点: 衢夫人衢州鸭头(新华路154号小区店)
正在处理第47个地点: 衢州柳峰鸭头(复地店)
正在处理第48个地点: 衢小浪 烤饼·芋饺
正在处理第49个地点: 点点鸭衢州鸭头
正在处理第50个地点: 鸭牌立衢州鸭头(西斗门店)
正在处理第51个地点: 非丫寻味衢州鸭头
正在处理第52个地点: 衢州柳峰鸭头(高沙店)
正在处理第53个地点: 丫三丫四衢州鸭头
正在处理第54个地点: 太香鸭衢州鸭头
正在处理第55个地点: 衢州小吃(方家花苑店)
正在处理第56个地点: 欧克鸭衢州鸭头
正在处理第57个地点: 柳鸭记衢州鸭头(双菱路店)
正在处理第58个地点: 衢州鸭头(湘云雅苑店)
正在处理第59个地点: 衢州小吃胖子鸭头(瑷颐湾店)
正在处理第60个地点: 衢香鸭头
正在处理第61个地点: 卤鲜说·衢州鸭头(迎春小区店)
正在处理第62个地点: 鸭德利衢州鸭头(晴川街直营一店)
正在处理第63个地点: 衢州鸭头
正在处理第64个地点: 特色砂锅鸭头店(杭州恒创公寓店)
正在处理第65个地点: 衢州鸭头(运河上街店)
正在处理第66个地点: 嗨卤嗨卤衢州鸭头(桂语朝阳店)
正在处理第67个地点: 鸭牌立衢州鸭头(诚信物业蒋村花园店)
正在处理第68个地点: 衢州鸭头砂锅(红山店)
正在处理第69个地点: 柳鸭记衢州鸭头(西湖文化广场店)
正在处理第70个地点: 衢州你来鸭衢州鸭头
正在处理第71个地点: 衢州鸭头
正在处理第72个地点: 衢州鸭头(金隅·江平观澜商业中心店)
正在处理第73个地点: 阿印记鸭头(临江农贸市场店)
正在处理第74个地点: 吴记小菜
正在处理第75个地点: 衢州鸭头欢乐城店
正在处理第76个地点: 特色鸭头砂锅
正在处理第77个地点: 余阿姨酸辣粉玉山鸭头
正在处理第78个地点: 老鸭头土菜馆
正在处理第79个地点: 康存记衢州鸭头
正在处理第80个地点: 苒丫鸭衢州鸭头(方家花苑东区店)
正在处理第81个地点: 嗨卤嗨卤衢州鸭头(原卤班旺建设三路店)
正在处理第82个地点: 辣心计衢州鸭头(啦嘻街)
正在处理第83个地点: 春嬢嬢卤鸭头(城西银泰店)
正在处理第84个地点: 辣心计衢州鸭头(留下店)
正在处理第85个地点: 衢州柳丫鸭(桐君路店)
正在处理第86个地点: 特色砂锅鸭头店(北景芳洲苑店)
正在处理第87个地点: 九0徐记衢州鸭头
正在处理第88个地点: 小艺衢州鸭头(北沙西路店)
正在处理第89个地点: 仟毅鸭头(汇锦名店广场店)
正在处理第90个地点: 衢州鸭头(桂语朝阳苑店)
正在处理第91个地点: 柳丫鸭(银湖店)
正在处理第92个地点: 柳鸭记衢州鸭头(松乔店)
正在处理第93个地点: 渝小小卤鸭头
正在处理第94个地点: 李小鸭衢州鸭头(多蓝水岸店)
正在处理第95个地点: 卤鲜源衢州鸭头
正在处理第96个地点: 缙云烧饼店.衢州鸭头(万达店)
正在处理第97个地点: 来吃鸭·衢州鸭头(智格店)
正在处理第98个地点: 衢州鸭头店
正在处理第99个地点: 吖里个鸭衢州鸭头(更楼店)
正在处理第100个地点: 鸭喔衢州鸭头
正在处理第101个地点: 特色砂锅鸭头店(七格小区店)
正在处理第102个地点: 吖卤堂·衢州鸭头(高桥路店)
正在处理第103个地点: 衢州鸭头(佳丰北苑店)
正在处理第104个地点: 鸭食代衢州鸭头
正在处理第105个地点: 柳鴨記衢州鸭头(保利像素店)水云街
正在处理第106个地点: 衢州鸭头(盈一佳苑店)
正在处理第107个地点: 鸭头大王
正在处理第108个地点: 柳鸭记
正在处理第109个地点: 衢州鸭头(伊萨卡国际城店)
正在处理第110个地点: 卤鲜说·衢州鸭头(滨兴东苑店)
正在处理第111个地点: 衢州鸭头(滨江开元广场店)
正在处理第112个地点: 衢州鸭头(义府名苑店)
正在处理第113个地点: 柳丫鸭衢州鸭头(西斗门店)
正在处理第114个地点: 衢州老张鸭头
正在处理第115个地点: 鸭牌立·衢州鸭头(清雅苑店)
正在处理第116个地点: 鸭源谷衢州鸭头(望月店)
正在处理第117个地点: 旭昇鸭头砂锅店
正在处理第118个地点: 衢州鸭头
正在处理第119个地点: 柳鸭记衢州鸭头(临平银泰店)
正在处理第120个地点: 卤小森衢州鸭头(春波小区店)
正在处理第121个地点: 卤小森衢州鸭头(春波小区店)
正在处理第122个地点: 柳鸭记衢州鸭头(大关店)
正在处理第123个地点: 衢州鸭头
正在处理第124个地点: 鸭喔衢州鸭头
正在处理第125个地点: 衢州鸭头
正在处理第126个地点: 衢鸭记衢州鸭头(融创·东南海店)
正在处理第127个地点: 卤先生衢州鸭头
正在处理第128个地点: 衢州鸭头(空港德信之翼店)
正在处理第129个地点: 衢州鸭头(茗香庭店)
正在处理第130个地点: 衢州鸭头
正在处理第131个地点: 临安广场衢州鸭头
正在处理第132个地点: 衢州鸭头(金珺澜庭二区店)
正在处理第133个地点: 香岸鸭衢州鸭头(欢乐城尚峰轩店)
正在处理第134个地点: 衢州鸭头(牟小鸭瓜山东苑店)
正在处理第135个地点: 特色砂锅鸭头店(七贤山居店)
正在处理第136个地点: 慕小鸭衢州鸭头(拱墅宝龙店)
正在处理第137个地点: 都兴记(保亿丽光城店)
正在处理第138个地点: 特色砂锅鸭头店(吉鸿家园西区临秀苑店)
正在处理第139个地点: 衢鸭记衢州鸭头(杭行荟Mo Mall店)
正在处理第140个地点: 柳鸭记衢州鸭头(老余杭店)
正在处理第141个地点: 柳鸭记衢州鸭头(老余杭店)
正在处理第142个地点: 衢州鸭头
正在处理第143个地点: 108酱·衢州鸭头(福鼎家园店)
正在处理第144个地点: 徐记衢州鸭头
正在处理第145个地点: 亲亲丫衢州鸭头
正在处理第146个地点: 衢润堂衢州鸭头(元成东盛家园店)
正在处理第147个地点: 卤鲜说·衢州鸭头(九堡家苑三区店)
正在处理第148个地点: 衢州鸭头(严村里店)
正在处理第149个地点: 嘴嘴鸭衢州鸭头(融创·东南海店)
正在处理第150个地点: 鸭草集衢州鸭头
正在处理第151个地点: 衢州鸭头(丁兰广场店)
正在处理第152个地点: 衢记砂锅鸭头
正在处理第153个地点: 卤喜儿·衢州鸭头(七堡花园店)
正在处理第154个地点: 衢州鸭头
正在处理第155个地点: 常山土菜馆(西文街店)
正在处理第156个地点: 就他佳·现卤鸭头(萧山银隆店)
正在处理第157个地点: 周大卤
正在处理第158个地点: 鸭牌立衢州鸭头
正在处理第159个地点: 发财鸭衢州鸭头
正在处理第160个地点: 特色砂锅鸭头店(行宫塘新苑西区店)
正在处理第161个地点: 卤鲜说衢州鸭头(五联西苑店)
正在处理第162个地点: 荟烧吖衢州鸭头
正在处理第163个地点: 鸭佬五卤鸭头
正在处理第164个地点: 衢州鸭头(金堡街店)
正在处理第165个地点: 鸭牌立·衢州鸭头(下沙宝龙店)
正在处理第166个地点: 衢州鸭头(众安广场店)
正在处理第167个地点: 鸭畔衢州鸭头
正在处理第168个地点: 衢州鸭头
正在处理第169个地点: 吉丫丫衢州鸭头
正在处理第170个地点: 绝对现卤(紫金天街店)
正在处理第171个地点: 衢州鸭头(三角丰收湖嘉园五区店)
正在处理第172个地点: 鸭小怪衢州鸭头(九堡店)
正在处理第173个地点: 卤小森衢州鸭头(九堡一区店)
正在处理第174个地点: 卤鲜说衢州鸭头(五常店)
正在处理第175个地点: 衢州鸭头鸭脚卤葵银泰店
正在处理第176个地点: 鸭牌立衢州鸭头
正在处理第177个地点: 辣心计衢州鸭头(余官巷店)
正在处理第178个地点: 衢州鸭头(万科中心店)
正在处理第179个地点: 衢州鸭头
正在处理第180个地点: 衢州鸭头(鸭伙计)
正在处理第181个地点: 辣心计衢州鸭头(龙湖天街店)
正在处理第182个地点: 不一吖衢州鸭头
正在处理第183个地点: 衢州鸭头
正在处理第184个地点: 衢州鸭头(滨江紫金府店)
正在处理第185个地点: 精武鸭头(霞江店)
正在处理第186个地点: 双婷记卤鸭头(望宸名邸C区店)
正在处理第187个地点: 衢州鸭头
正在处理第188个地点: 嗨卤嗨卤衢州鸭头(顺发·和美家店)
正在处理第189个地点: 鸭源谷衢州鸭头(华荣城店)
正在处理第190个地点: 小白杨东北碳火烧烤
正在处理第191个地点: 鸭鲜笙衢州鸭头
正在处理第192个地点: 辣小卤衢州鸭头(七格小区店)
正在处理第193个地点: 就他佳·现卤鸭头(萧山银泰店)
正在处理第194个地点: 衢州鸭头(义蓬购物中心东区店)
正在处理第195个地点: 衢润堂衢州鸭头(乔司店)
正在处理第196个地点: 爱旺丫衢州鸭头
正在处理第197个地点: 衢州鸭头(西兴店)
正在处理第198个地点: 衢州鸭头
正在处理第199个地点: 衢州鸭头卤味(紫金生活广场店)
正在处理第200个地点: 柳丫鸭衢州鸭头(余杭店)
找到2个匹配结果:
[#1]
POI1名称: 衢鸭记衢州鸭头(融创·东南海店)
POI1地址: 新街街道钱塘东南家园8-1号
POI1经纬度: 120.333796,30.196652
POI2名称: CHAGEE霸王茶姬(浙江杭州萧山新街融创乐融荟店)
POI2地址: 新街街道融创乐融荟1楼101-102号铺
POI2经纬度: 120.333749,30.196585
两者距离: 8米
[#2]
POI1名称: 慕小鸭衢州鸭头(拱墅宝龙店)
POI1地址: 春蓝路288号杭州拱墅宝龙广场F1层
POI1经纬度: 120.178514,30.341138
POI2名称: CHAGEE霸王茶姬(浙江杭州拱墅宝龙店)
POI2地址: 半山街道宝龙广场一楼2号门M1-L1-036号
POI2经纬度: 120.178467,30.341135
两者距离: 4米
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment