如何在Folium中裁剪指定矩形区域并保存为PNG?
在Folium中裁剪并保存指定矩形区域为PNG
Folium本身没有直接裁剪地图区域的功能,因为它本质是生成Web地图页面。要实现仅保存目标矩形区域,需要先渲染地图页面,再精准截取对应区域,以下是可行方案:
步骤1:生成并配置Folium地图
先确保地图聚焦到目标矩形区域,保存为HTML文件:
import folium import pandas as pd # 从数据框获取经纬度边界 xlim = (df['longitude'].min(), df['longitude'].max()) ylim = (df['latitude'].min(), df['latitude'].max()) min_lon, max_lon = xlim min_lat, max_lat = ylim # 创建地图,隐藏多余控件,限制边界 m = folium.Map( zoom_control=False, control_scale=False, max_bounds=True ) # 添加目标矩形边界(可选,仅用于可视化) folium.Rectangle( bounds=[[min_lat, min_lon], [max_lat, max_lon]], color='red', fill=False ).add_to(m) # 让地图自动适配矩形边界 m.fit_bounds([[min_lat, min_lon], [max_lat, max_lon]]) # 保存为本地HTML文件 m.save('target_map.html')
步骤2:用Selenium渲染并裁剪地图
借助Selenium控制浏览器渲染HTML,截取地图容器区域(无需识别红色矩形,避免干扰):
- 先安装依赖:
pip install selenium pillow,并下载对应浏览器的驱动(如ChromeDriver) - 执行以下代码:
from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.chrome.options import Options import time from PIL import Image import io # 配置Chrome无头模式(后台运行) chrome_options = Options() chrome_options.add_argument('--headless=new') chrome_options.add_argument('--disable-gpu') chrome_options.add_argument('--window-size=1200,800') # 调整窗口大小确保地图完整显示 # 初始化浏览器 driver = webdriver.Chrome(options=chrome_options) # 打开本地地图HTML(替换为你的文件绝对路径) driver.get('file:///Users/xxx/target_map.html') # 等待地图瓦片加载完成(根据网络情况调整等待时间) time.sleep(3) # 获取Folium地图的容器元素 map_container = driver.find_element(By.CLASS_NAME, 'folium-map') # 获取容器的位置和尺寸信息 pos = map_container.location size = map_container.size # 截取整个页面,再裁剪出地图区域 full_screenshot = driver.get_screenshot_as_png() img = Image.open(io.BytesIO(full_screenshot)) # 计算裁剪坐标:左、上、右、下 crop_area = ( pos['x'], pos['y'], pos['x'] + size['width'], pos['y'] + size['height'] ) cropped_map = img.crop(crop_area) # 保存裁剪后的PNG cropped_map.save('cropped_target_map.png') # 关闭浏览器 driver.quit()
注意事项
- 如果地图加载缓慢,可延长
time.sleep()的时长,确保所有瓦片加载完毕 - 窗口大小可根据地图区域的实际比例调整,避免出现滚动条导致截取不完整
- 此方法直接基于地图容器的位置截取,完全匹配你设置的经纬度边界,不受地图中其他颜色元素干扰
内容的提问来源于stack exchange,提问作者joon
相关产品推荐
相关产品推荐

