从草地 gis 导出多个栅格

标签 export gis tile grass

我使用 r.tile ( http://grass.osgeo.org/grass71/manuals/r.tile.html ) 从一个巨大的 geotiff 创建图 block 。现在我想将每个图 block 导出到文件中,但还没有找到简单的方法: 使用 r.out.gdal 我一次只能导出一个图 block ,这使得它无法使用,因为我有 100 个图 block ...

我还没有找到任何其他解决方案...有人有什么想法吗?

最佳答案

您只需在某种脚本语言的 for 循环中调用 r.out.gdal 即可。

这是 Bash 的示例。这是一个简单但完整的脚本。它期望栅格 map 名称作为命令行参数,如果参数不存在,则会失败并显示使用建议。

#!/usr/bin/env bash

if [ $# -eq 0 ]
then
    >&2 echo "No arguments supplied"
    >&2 echo "Usage: $0 raster1 raster2 ..."
fi

for RASTER in "$@"
do
    r.out.gdal input=$RASTER output=$RASTER.tiff format=GTiff
done

要运行它,您必须首先将其设置为可执行文件(chmod u+x export.sh),然后您可以在命令行中运行它:

./export.sh tile1 tile2

这是一个 Python 示例,它更适合处理更大的任务。该代码的功能与 Bash 脚本完全相同。此外,它使用 GRASS Python Scripting Library调用r.in.gdal模块和print函数以向前兼容Python 3。

#!/usr/bin/env python

from __future__ import print_function
import sys
import grass.script as gscript

if len(sys.argv) == 1:
    print("No arguments supplied", file=sys.stderr)
    print("Usage: {} raster1 raster2 ...".format(sys.argv[0]), file=sys.stderr)

for raster in sys.argv[1:]:
    gscript.run_command('r.out.gdal', input=raster,
                        output=raster + '.tiff', format='GTiff')

同样,要运行它,您必须首先将其设置为可执行文件(chmod u+x export.py),然后您可以在命令行中运行它:

./export.py tile1 tile2

这两个示例都假设您使用的是 Linux、Mac OS X 或类似的系统,并在 GRASS GIS 的系统命令行中运行脚本。在 MS Windows 上,您可能应该使用 Python 版本并运行它,例如从 GRASS GIS GUI 通过 文件 菜单中的 启动脚本 项图层管理器​​。

关于从草地 gis 导出多个栅格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31933361/

相关文章:

c - 找出铺设给定尺寸的地板所需的部分瓷砖数量

php - 在 PHP 中导出、修改和导入数据库数据的最佳方法

python - 如何从 LineString 未排序列表创建多边形

ios - 有没有办法通过 Apple 后端的一些 API 导出应用商店应用内支付?

php - 如何在生成 PDF 时将 Google map (或其他 GIS map )输出嵌入到 PDF 中?

r - R 中传单 map 上的 3D 条形图可视化

基于 iOS Tile 的 View 导航 Controller

javascript - Tilemap 与玩家碰撞并作为一个实体移动(Phaser 3)

php - 使用 Codeigniter 生成包含 2 个表的 CSV

javascript - Highcharts 服务器端渲染绘制一个神秘的半圆形 donut 形状