フリーの衛生画像解析ソフトOrfeoをQGIS+Sextanteで動かす方法を紹介します。
その後、まだこれだけでは正常に動かないことが分かりました。Orfeoの問題なのかQGISの問題なのか、設定の問題なのかよく分かりません。一応動作する機能もありますが、必ず落ちる機能もあります。(追記:2012/11/14)
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"に決め打ちしときます。
4.
ツールバーのAnalysis→SEXTANTE options and configurationを開きます。
- Orfeo ToolboxのActivateにチェックを入れます。
- OTB applications folderをC:\OSGeo4W\apps\orfeotoolbox\applicationsにします。
- 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では、コードが変更になってたから、解決されたのかも?