能否使用Folium地图基于经纬度坐标获取地点类型或描述信息?
问题描述
我正在编写代码循环遍历包含经度、纬度坐标的记录,期望获取对应的地点类型、地点分类或同类属性信息。下方示例代码暂无法运行,但实现思路接近目标。
import folium import requests from xml.etree import ElementTree from folium import plugins m = folium.Map(location=[40.7368436,-74.1524242], zoom_start=10) for lat,lon in zip(df_cellgroups['latitude'], df_cellgroups['latitude']): marker = folium.Marker(location=[lat,lon], tooltip = tip, popup = name) marker.add_to(m) m
我最终想要获取类似“Red Bull Arena”、“Upstate University Hospital”、“San Francisco International Airport”等地点的正式名称。请问是否可以使用Folium地图基于经纬度坐标获取地点描述信息?不确定这类信息是否对应Folium中的tooltip或popup组件。


回答
Folium本身仅负责地图可视化渲染,不具备通过经纬度查询地点属性的能力。你想要的经纬度转地点正式名称、分类的功能属于逆地理编码能力,需要先调用对应的服务接口拿到数据后,再填充到Folium的tooltip或popup组件中展示。
实现逻辑
- 可以选用公开的逆地理编码服务批量查询每个经纬度对应的地点信息
- 你给出的示例代码存在明显错误:遍历坐标时zip传入了两个
df_cellgroups['latitude'],取不到正确的经度值,需要替换为经度列 - 查询到的正式地名、地点类型等信息,可以直接赋值给Marker的
tooltip参数(鼠标悬停时展示),或者popup参数(点击标记点时展示)
可运行参考代码
import folium import requests import pandas as pd # 逆地理编码查询函数 def get_location_info(lat, lon): url = f"https://nominatim.openstreetmap.org/reverse?lat={lat}&lon={lon}&format=json" headers = {"User-Agent": "location-query/1.0"} resp = requests.get(url, headers=headers) if resp.status_code == 200: data = resp.json() # 提取正式名称和地点类型,可根据需要调整字段 return { "name": data.get("display_name", "未知地点"), "type": data.get("type", "未知类型") } return {"name": "查询失败", "type": "查询失败"} # 模拟坐标数据集,替换为你自己的df_cellgroups即可 df_cellgroups = pd.DataFrame({ "latitude": [40.7368436, 40.7505, 37.6213], "longitude": [-74.1524242, -73.9934, -122.3790] }) m = folium.Map(location=[40.7368436,-74.1524242], zoom_start=10) for lat, lon in zip(df_cellgroups['latitude'], df_cellgroups['longitude']): # 先查地点信息 loc_info = get_location_info(lat, lon) # 把信息放到tooltip和popup里 folium.Marker( location=[lat, lon], tooltip = loc_info["name"], popup = f"地点类型:{loc_info['type']}" ).add_to(m) # 保存为本地HTML文件打开查看,Jupyter环境可直接输出m m.save("location_map.html")
补充说明
你截图里的标注点名称,就是通过上述逻辑先拿到逆地理编码结果后,再填充到Folium组件里展示的,Folium本身不会自动生成这些信息。
内容的提问来源于stack exchange,提问作者ASH
相关产品推荐
相关产品推荐

