前言
Fragstats是一个景观分析软件,最近在使用这个软件的时候发现:虽然有很多关于其批处理的教程,但是并没有提及批处理所需的fbt文件是怎么生成的,所以我觉得有必要在这里记录一下,也希望可以帮助到有同样疑问的小伙伴们。
一、Fragstats批处理的流程
关于Fragstats这个软件的使用,某呼上面有一个博主将英文的使用手册进行了翻译,使用教程也很详细,有疑问的小伙伴点一点 → Fragstats官方入门教程3 批处理多个栅格
二、关于批处理所需的fbt文件生成
1.先来瞅一瞅这个文件长啥样
可以看到fbt文件中每一行包含八个字段,这些字段代表的含义如下(这部分摘自某呼博主GT地学志):
1. Input grid 输入栅格:第一个字段包含输入栅格的完整路径和名称。注意,如果我们使用arcgrid格式,我们将把栅格文件夹的名字放在栅格名称的位置,因为栅格实际上是一个包含几个文件的文件夹。
2. Cell size 像元大小:第二个字段包含一个与像元大小相对应的整数值(单位为米)。
3. Background value 背景值:第三个字段是一个整数值,对应于指定的背景值。注意,在类型描述文件(参见教程#2)中指定为背景的任何类型都将被重新分类为这个类型值并被当作背景处理。
4. Number of rows 行数:第四个字段包含一个整数值,对应于输入图像的行数。
5. Number of columns 列数:第五个字段包含一个整数值,对应于输入图像中的列数。
6. Band number 通道序号:第六个字段包含一个与输入图像中的通道序号相对应的整数值,默认情况下是#1,但可以根据一些输入数据格式而变化。
7. Nodata value:第7个字段是与Nodata值对应的整数值。
8. Input data format输入数据格式:最后一个字段包含一个标识输入数据格式的字符。
2.fbt文件生成步骤
(1)先生成只包含一个文件的fbt文件:
①打开Fragstats软件,点击Add Layer会弹出Select dataset input对话框
②按照下图所示的步骤,先选择输入数据的类型(本教程以GeoTiff数据为例),再点击选择文件的按钮,将需要添加的数据添加进来。
③点击Export Batch,将文件保存在能找到的位置。
④做完前面的几步,你会得到类似与下面的这个结果(只包含一个数据的fbt文件)
(2)在只有一个数据的fbt基础上,生成包含多个数据的fbt文件
①使用Python进行文件路径的读取,并把读取结果写入txt文本,代码无偿分享一波
# -*- coding: UTF-8 -*-
import os
import codecs
import glob
#将inws路径下的所有tif类型文件读取到filenames中
inws = 'E:\test'
filenames = glob.glob(os.path.join(inws, "*.tif"))
# 将文件路径+文件名写入 txt 文件
txt_file = "//file.txt"
with codecs.open(txt_file, 'w', 'utf-8') as f:
for filename in filenames:
print(filename)
f.write(filename + '\n')
②经过上一步你会得到一个像下面这样的txt文件
③用Excel打开上面的这个文件(将文件后缀由txt改为csv),然后将前面生成的fbt文件中的后七个字段在Excel中粘贴到每一行后面,如下图
然后往下一拉(dddd奥!,Excel基础操作),就会搞成下面这样:
④有了上面的这个小东西,剩下的应该都知道咋弄了,如果不知道那就继续往下看吧
⑤把上面的这个csv文件保存,然后后缀改回txt,打开后会发现自动添加的有引号
别担心,这样做:
按住Ctrl+H(或者点击编辑→替换),将需要去掉的引号和四个逗号替换为空白就行了
最后的最后,把上面处理好的txt文件中的内容,粘贴到前面生成的fbt文件中,保存后就可以使用了。
(3)验证一波方法可不可行
打开软件后,点击Import Batch,将我们生成的fbt文件读取进来
可以看到我这里是可以成功读取的
总结
本文只是简要介绍了一下如何生成Fragstats批处理中所需的fbt文件,批处理完整的流程可以在网上看看其他博主的教程,相关教程有很多