/ / gdal_calc.pyがsbtで動作しない - python、scala、sbt、gdal

gdal_calc.pyはsbtで動作しません - python、scala、sbt、gdal

私はスカラスクリプトでコマンドラインgdal_calc.pyを実行します。ターミナルで "sbt run"というスクリプトを実行します。私はこのエラーがある:

Traceback (most recent call last):
File "/usr/local/bin/gdal_calc.py", line 329, in <module>
main()
File "/usr/local/bin/gdal_calc.py", line 326, in main
doit(opts, args)
File "/usr/local/bin/gdal_calc.py", line 282, in doit
myResult = ((1*(myNDVs==0))*myResult) + (myOutNDV*myNDVs)
TypeError: only integer arrays with one element can be converted to an index

私の端末でコマンドgdal_calc.pyを実行するとうまくいきます。 私の端末でまったく同じコマンドラインを直接実行することはできません。環境は同じです:使用するgdalライブラリは同じです

実行されたコマンドラインは次のとおりです。

gdal_calc.py --outfile=outfile.tiff -A infile.tiff --overwrite --calc="3*(A==2)"

誰か説明できますか?ありがとう!

回答:

回答№1は0

私は最終的に私の問題の解決策を見つけました: 私は自分のgdal_calc.pyコマンドラインをシェルスクリプトに書き込んだ後、シェルを実行することを考えました。 それは問題を解決するのではなくバイパスすることです)


回答№2の場合は0

私はScalaを手助けすることはできませんが、Samuelのように、 "subprocess.call()"というPythonスクリプトからgdal_calc.pyを呼び出す問題を経験しました。

引数が "subprocess.call()"によって "gdal_calc.py"に引き渡されるときに、何か問題があるはずと思われます。

解決策は、 "subprocess.call"引数 "shell = True"を使用して、シェルを介して単一の文字列として呼び出しを実行することでした。

subprocess.call("gdal_calc.py --outfile=outfile.tiff -A rasterA.tiff
-B rasterB.tiff --calc="A+B"", shell = True)

Scalaの "sbt run"にも同様のオプションがありますか?