每次野外工作会拍摄大量的考察照片,对这些考察照片进行分类和整理就是一个比较麻烦的工作。在这给大家介绍一下如何使用QGIS和R语言来分类整理这些照片。
本文主要涉及的是
带有定位信息
的手机或无人机照片。
在整理之前,要先将手机或无人机照片原图,注意,一定是原图!有位置信息的原图!导入到电脑中,放到一个文件夹中。
有位置信息的原图
将照片导入QGIS
使用QGIS的Import geotagged photos工具可以将照片导入,建议导入到gpkg数据库中。具体可以看以前的推文:
导入后的照片就会以点要素的形式存储在数据库中,在QGIS中就可以查看照片点位和属性表。
照片点位
照片导入后的属性表
查看照片
为了方便在QGIS中查看考察照片,在这提供三种查看方法:
-
-
-
平铺缩略图形式查看
这个方法就是把简单的点符号变成了图片符号,图片符号来源路径为photo字段,这样符号来源就是一个变量,不同点位就可以显示对应的照片。
-
在QGIS图层属性,符号化选项卡中将默认的Simple Maker符号改为Raster Image Maker符号
-
Image File路径编辑为变量,使用photo变量
-
Image File路径设置为变量
编辑变量,photo字段
平铺显示照片
HTML弹窗查看
-
符号使用Simple Maker的红点即可,切换到Display选项卡,设置HTML Map Tip
QGIS中设置HTML弹窗提示
上图填入如下代码:
"file:///[% photo %]" width="350" height="250">
-
打开Show Map Tips,使用识别或要素选择工具,将鼠标移动到考察照片点位上即可自动显示考察照片
弹窗查看照片
考察照片属性表编辑
考察照片分类
使用字段计算或者手动编辑属性表的方法,新建照片分类字段,备注信息字段等,可以对照片进一步描述和分类。
属性表操作还不会的看以前推文,这里不赘述了。
修改目录地址
由于我把照片放到了移动硬盘里,换了个插口盘符变了,QGIS中照片使用的是绝对路径,就需要对路径进行一些修改,下面是一个示例代码:
replace("photo", substr("photo",1,1), 'I')
使用R语言复制照片
上面在属性表里面对照片进行了分类,创建了一个points字段,存储照片分类信息,虽然在属性表中照片分类完了,但是照片并没有分类存在不同的文件夹中,怎么倒腾一下呢?用下面的代码就行。
-
在照片和gpkg数据库所在文件夹创建一个R工程,这样工作目录就是这里了
-
-
运行下面的代码,这样不同的照片就会按照points字段中的分类自动复制到对应类别的文件夹中。
代码和解释
-
normalizePath
将windows的文件目录转换为R的
-
循环第一行,
dir.exists
判断文件目录并根据points中的类别
dir.create
创建文件夹
-
循环第二行,
file.copy
函数用于复制文件