Python 使用 Geopandas 绘制全国快递网点分布地图(带热力层)
随着电子商务的快速发展,快递行业在我国经济中扮演着越来越重要的角色。为了更好地了解快递网点的分布情况,本文将使用 Python 和 Geopandas 库绘制全国快递网点分布地图,并添加热力层以展示网点的密集程度。
准备工作
在开始编写代码之前,我们需要准备以下工具和库:
1. Python 3.x
2. Jupyter Notebook 或其他 Python 编辑器
3. Geopandas 库:`pip install geopandas`
4. Matplotlib 库:`pip install matplotlib`
5. Folium 库:`pip install folium`
数据获取
我们需要获取全国快递网点的地理坐标数据。这里我们可以从一些公开的数据源获取,例如国家邮政局官网、地图服务商等。以下是一个示例数据集的 URL:
python
data_url = "https://example.com/expressage_points.geojson"
代码实现
1. 导入库
python
import geopandas as gpd
import folium
import matplotlib.pyplot as plt
2. 读取数据
python
读取 GeoJSON 数据
gdf = gpd.read_file(data_url)
3. 地图初始化
python
创建地图对象,设置中心点和缩放级别
m = folium.Map(location=[35.86166, 104.195397], zoom_start=5)
4. 绘制网点
python
遍历 GeoDataFrame,为每个网点添加标记
for index, row in gdf.iterrows():
folium.Marker(
location=[row['latitude'], row['longitude']],
popup=row['name'],
icon=folium.Icon(color='blue')
).add_to(m)
5. 添加热力层
python
计算每个网点的权重,这里以网点数量为例
gdf['weight'] = 1
创建热力图图层
heatmap = folium HeatMap(
data=gdf[['latitude', 'longitude', 'weight']],
max_zoom=15,
radius=15
).add_to(m)
6. 显示地图
python
将地图渲染到 HTML 页面
m.save("expressage_map.html")
结果展示
运行上述代码后,将在当前目录下生成一个名为 `expressage_map.html` 的文件。双击打开该文件,即可在浏览器中查看全国快递网点分布地图,并带有热力层展示网点的密集程度。
总结
本文介绍了如何使用 Python 和 Geopandas 库绘制全国快递网点分布地图,并添加热力层以展示网点的密集程度。通过以上步骤,我们可以快速、方便地了解快递网点的分布情况,为相关决策提供数据支持。
扩展
1. 可以根据实际需求,调整地图的中心点和缩放级别。
2. 可以通过修改 `radius` 参数,调整热力图的半径大小。
3. 可以根据实际数据,计算不同类型的权重,例如网点数量、业务量等。
4. 可以将地图与 Web 应用程序集成,实现更丰富的交互功能。
希望本文对您有所帮助,祝您在 Python 和 Geopandas 领域取得更好的成果!
Comments NOTHING