QGIS 根据点位批量出图

背景

在工作中,当有大量项目点位需要结合地图介绍时,则需要批量截图。于是有了今天的教程。

一 工具及材料准备

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)

运行后效果如下:

效果比之前好多了。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
您好!要使用Python批量处理QGIS,您可以使用QGISPython API来完成。下面是一些基本步骤: 1. 安装QGIS软件:首先,您需要安装QGIS软件,确保您已经安装了适当的版本。 2. 导入必要的模块:在Python脚本中,您需要导入必要的QGIS模块,例如`qgis.core`和`qgis.utils`。可以使用以下代码进行导入: ```python from qgis.core import * from qgis.utils import * ``` 3. 初始化QGIS应用程序:在使用QGIS API之前,需要初始化QGIS应用程序。可以使用以下代码进行初始化: ```python QgsApplication.setPrefixPath("/path/to/qgis/installation", True) qgs = QgsApplication([], False) qgs.initQgis() ``` 确保将`/path/to/qgis/installation`替换为您的QGIS安装路径。 4. 加载矢量图层:使用`QgsVectorLayer`类加载矢量图层。例如,要加载一个Shapefile,可以使用以下代码: ```python layer = QgsVectorLayer('/path/to/shapefile.shp', 'layer_name', 'ogr') if not layer.isValid(): print('图层加载失败!') ``` 确保将`/path/to/shapefile.shp`替换为您的Shapefile路径。 5. 批量处理:一旦加载了图层,您可以使用QGIS API执行各种批量处理操作。例如,您可以遍历图层的要素,并对每个要素执行某些操作。以下是一个示例代码: ```python for feature in layer.getFeatures(): # 执行某些操作 pass ``` 您可以根据需要编写自己的操作代码。 6. 清理工作:在脚本结束时,确保进行适当的清理工作。可以使用以下代码进行清理: ```python qgs.exitQgis() ``` 以上是一个基本的框架,您可以根据具体需求来编写自己的代码。希望这对您有所帮助!如有任何问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

细节处有神明

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值