0

特定の GIS コマンドを実行する Gdal というライブラリがインストールされています。

このコマンドは、単一のファイルに対して実行されます

gdal_translate -a_srs EPSG:25832 INPUT_FILE OUTPUT_FILE

しかし、すべての *.tif ファイルを反復処理するバッチ コマンドを実行したいので、それぞれの名前を書き込む必要はありません (1300 個のファイルがあります!)

これを .sh ファイルで試しましたが、うまくいきませんでした

#!/bin/bash

for FILE in *.tif
do
  BASE=$FILE .tif
  NEWFILE=test/${BASE}.tif
  gdal_translate -s_srs EPSG:25832 $FILE $NEWFILE
done

誰かがこれを行う方法を教えてもらえますか?

あなたの、

ロバート

4

2 に答える 2

1

$FILE には.tif拡張子が含まれます。またBASE=$FILE .tif、あなたが考えていることはしません(.tifコマンドの実行中は $BASE を $FILE に設定して実行します)。

と の間にも違いが-a_srsあり-s_srsます。あなたがどちらを意図したのかわかりません。

test/$FILE最終結果は、出力ファイル名として使用したいと思います。

#!/bin/bash

for FILE in *.tif; do
  gdal_translate -s_srs EPSG:25832 "$FILE" "test/$FILE"
done

for(引用符は、スペースを含むパスで動作するようにします。同じ行にandを置くことdoは、スペースを節約するための一般的な書き方です。)

于 2012-01-30T11:27:34.663 に答える
0

FILE 変数の末尾には既に .ti​​f があるため、.tif を再度追加しています。代わりにこれを試してください:

#!/bin/bash

for FILE in *.tif 
do 
  NEWFILE=test/${FILE}
  gdal_translate -s_srs EPSG:25832 $FILE $NEWFILE
done
于 2012-01-30T11:25:31.757 に答える