QGISでSextante+Orfeo Toolboxを利用する方法(Windows環境)

フリーの衛生画像解析ソフトOrfeoQGIS+Sextanteで動かす方法を紹介します。

その後、まだこれだけでは正常に動かないことが分かりました。Orfeoの問題なのかQGISの問題なのか、設定の問題なのかよく分かりません。一応動作する機能もありますが、必ず落ちる機能もあります。(追記:2012/11/14)

1.

OSGeo4Wで最新のQGISとotbtool-bin otb-pythonをインストールします。

2.

※この作業はWindowsXPだけ関係あるかもです。vista,7は必要ないかも。

C:\Documents and Settings\mizutani\.qgis\python\plugins\sextante\core\SextanteUtils.py をテキストエディタで開いて、以下のように変更します。

qgis-devの場合は、こちらC:\OSGeo4W\apps\qgis-dev\python\plugins\sextante\core)

    def userFolder():
#        userfolder = os.path.expanduser("~") + os.sep + "sextante"
	userfolder = "C:\sextante"
        mkdir(userfolder)

        return userfolder
    def tempFolder():
#        tempfolder = os.path.expanduser("~") + os.sep + "sextante" + os.sep + "tempdata"
	tempfolder = "C:\sextante" + os.sep + "tempdata"
        mkdir(tempfolder)

        return tempfolder

WindowsXP環境だと、os.path.expanduser は環境変数のHOMEまたはUSERPROFILEを参照するため、"C:\Document and Settings\mizutani"のようにパスに空白が入ってしまいます。すると、その後の実行コマンドの際に引数の数があわなくなってエラーになります。

ということで、エラーログやtempフォルダの格納場所を"C:\sextante"に決め打ちしときます。

3.

QGISを起動してSEXTANTEプラグインをインストールします。

4.

ツールバーのAnalysis→SEXTANTE options and configurationを開きます。

  1. Orfeo ToolboxのActivateにチェックを入れます。
  2. OTB applications folderをC:\OSGeo4W\apps\orfeotoolbox\applicationsにします。
  3. OTB command line tools folderをC:\OSGeo4W\binにします。

5.

ツールバーのAnalysis→SEXTANTE Toolbox を選びます。
あとは、好きな解析をするだけ!めでたし、めでだし

qgis-devの場合

qgis-dev(1.9)では、最初からSEXTANTE(1.0.8)がロードされるようになっているので、
qgis(1.8)でSEXTANTE(1.0.7)のプラグインを入れるとコンフリクトしてしまいます。
なので、qgis-devでは、SEXTANTE(1.0.7)を一旦アンインストールしてから、起動しなおす必要があります。

SEXTANTEの日本語まわりのバグについて(自分メモ)

  • 最初4.の手順でOTB applications folderを設定しないで、実行したところエラーになったのですが、その際にどうやら日本語でエラーを吐く部分があるようです。しかし、それを上手く処理していないため、次回、そのログを表示しようとする際に、ログを読み込めないという新たなエラーが出て、最初は出来たはずなのに、次は出来ないという現象が起きます。

C:\Documents and Settings\mizutani\.qgis\python\plugins\sextante\core\SextanteLog.py

def addToLog(msgtype, msg):
        if isinstance(msg, list):
            a = "|".join(m.strip("\n")  for m in msg)
            text = unicode(a) #<----------------この部分
        else:
            text = unicode(msg).replace("\n", "|")
        line = msgtype + "|" + datetime.datetime.now().strftime("%a %b %d %Y %H:%M:%S") + "|" + text + "\n"
        logfile = codecs.open(SextanteLog.logFilename(), "a", encoding='utf-8')
        logfile.write(line)
        logfile.close()
        if msgtype==SextanteLog.LOG_ALGORITHM:
           algname = text[len("Sextante.runalg(\""):]
           algname = algname[:algname.index("\"")]
           if algname not in SextanteLog.recentAlgs:
               SextanteLog.recentAlgs.append(algname)

text = unicode(a)  を unicode(a,"Shift_JIS")にするとログに日本語が書き出されてエラーが起きなくなるけど、今度はSEXTANTE History and logでは、そのエラーは表示されない。

SEXTANTE+Orfeoが起動しなくなった原因もおそらく、その辺で、↓この記事に書かれている対応をしたら起動するようになったのも、この問題に関係していそう。
http://ivis-mynikki.blogspot.jp/2011/08/pythonunicodeencodeerror-ascii-codec.html

これをしなくても、ひとまず問題なくなったけど、またいずれ日本語のエラーを吐き出す操作をすると同じ問題が再発するはずと思っていたら、qgis-devでは、コードが変更になってたから、解決されたのかも?