GDAL:提取与统计图像元数据

可以使用-json参数运行gdalinfo命令,该参数将信息作为json字符串返回,允许我们以编程方式访问信息并对其进行解析。

假设我们想提取在合并切片实验中创建的merged.vrt的最大值。通过提供-JSON选项,我们可以获得JSON格式的命令输出。

gdalinfo -stats -json merged.vrt
(1)jq解析JSON

我们需要一种方法来解析JSON并提取我们感兴趣的字段。这里我们使用流行的JSON处理工具jqjq 是一个强大的命令行工具,用于处理JSON格式的数据,可以查询、过滤、修改和处理 JSON 数据,使得在命令行环境下处理 JSON 变得非常方便。

首先需要在Windows下安装jq。最新下载地址:https://github.com/jqlang/jq/releases,下载jq-win64.exe后将其重命名为jq.exe,然后在C盘等新建一个文件夹放置jq.exe,并将该路径添加进系统环境变量中。使用 jq --version查看jq版本,如果输出版本号,则安装成功。

然后,我们可以使用下面的jq查询提取所需的数据。

gdalinfo -stats -json merged.vrt | jq ".bands[0].maximum"

(2)json模块解析

我们也可以通过 Python 运行命令,并使用json模块来解析和提取结果。代码 如下,显示了如何提取每个 SRTM 切片的最小值和最大值。我是通过Pycharm调用的创建的conda环境gdal。

import os
import json
import subprocess

input_dir =  r'D:\GDALLearn\gdal-tools\srtm'

command = 'gdalinfo -stats -json {input}'
for file in os.listdir(input_dir):
  if file.endswith('.hgt'):
    input = os.path.join(input_dir, file)
    filename = os.path.splitext(os.path.basename(file))[0]
    output = subprocess.check_output(command.format(input=input), shell=True)
    info_dict = json.loads(output)
    bands = info_dict['bands']
    for band in bands:
      band_id = band['band']
      min = band['minimum']
      max = band['maximum']
      print('{},{},{},{}'.format(filename, band_id, min, max))

本文由mdnice多平台发布

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值