背景
在工作中,当有大量项目点位需要结合地图介绍时,则需要批量截图。于是有了今天的教程。
一 工具及材料准备
QGIS
插件 QuickMapServices
点位集合 CSV文件
其他图层文件
二 导入图层
这里根据实际需要导入自己对应格式的就好。
图层-添加图层-添加分割文本


同时也导入你想要配置的其他图层,比如水系等。
三 添加底图
添加底图的方式有很多,XYZ tile,或者插件都可以。
我这里用插件QuickMapServices介绍。
选择Google satellite-谷歌卫星底图。如果显示不了,估计是没有用科学。也可以用天地图等图源。谷歌卫星图更新一点。

样式设置略过,如果是水环境相关出图建议参考《地表水环境质量评价技术规范》相关设置。
效果还可以。

四 出图
工程-布局管理器,新建一个布局

地图集-地图集设置 
选择你想要批量截图的图层,以及排序的字段,以及文件的字段等。

添加地图-绘制一个你想要的底图

在项属性下调整
比例选择自己合适的,勾选受控于地图集

设置好后可在上方预览栏点击预览,看是否达到想要的效果。


最后导出地图集
dpi 选择300的话需要等待一会儿。

成功,不得不说效果是真的棒!


五 后续完善
后面遇到痛点
问题1.点位可能需要修改 如何单独出图

问题2.如果全部显示点的名称和位置,有的距离较近出图会比较乱
使用python在图片中心批量添加红点和名称
import os
from PIL import Image, ImageDraw, ImageFont
def add_text_and_dot(image_path, output_dir):
# 打开图片
image = Image.open(image_path)
draw = ImageDraw.Draw(image)
# 获取图片名称
image_name = os.path.splitext(os.path.basename(image_path))[0]
# 设置字体和颜色
font = ImageFont.truetype(r"D:\000入河排污口共享文件\入河排污口_卫星图\字体\MiSans Semibold.ttf", 40)
text_color = (255, 255, 255)
# 计算文字尺寸
text_width, text_height = draw.textsize(image_name, font=font)
# 在图片中心添加红点和文字
center_x = image.width // 2
center_y = image.height // 2
# 控制图形大小
size=15
draw.ellipse((center_x - size, center_y - size, center_x + size, center_y + size), fill=(255, 0, 0))
draw.text((center_x - text_width // 2, center_y - text_height // 2+50), image_name, fill=text_color, font=font)
# 保存修改后的图片
output_path = os.path.join(output_dir, os.path.basename(image_path))
image.save(output_path)
# 替换以下路径为你的图片文件夹路径
input_dir = r"D:\000入河排污口共享文件\入河排污口_卫星图\images"
# 替换以下路径为你想要保存修改后图片的文件夹路径
output_dir = r"D:\000入河排污口共享文件\入河排污口_卫星图\output"
for file in os.listdir(input_dir):
if file.endswith(".png"):
add_text_and_dot(os.path.join(input_dir, file), output_dir)
运行后效果如下:

效果比之前好多了。

该教程介绍了如何利用QGIS和QuickMapServices插件进行地图截图,并通过CSV文件导入点位数据。在设置好底图和布局后,使用地图集功能批量生成截图。针对点位修改和密集显示的问题,文章还展示了如何用Python在图片上添加红点和文字信息,优化图片效果。
3942

被折叠的 条评论
为什么被折叠?



