Gis and r 002
※Wiki記法の書き方については http://ja.wikipedia.org/wiki/Help:%E6%97%A9%E8%A6%8B%E8%A1%A8 を参照。
目次
第2回GIS+R勉強会
参加者
- 瀬戸(リアル)
- 清野(リアル)
- 渡邉(リアル)
テーマ・作業内容
瀬戸
- Fink版のQGIS+manageRの環境構築
清野
- MacOS10.5バイナリ版でのQGIS+manageRの環境構築
渡邉
- Windows Vista 32bit スタンドアローン版でのQGIS+manageRの環境構築
作業結果
清野
- バイナリ版でmanageR0.8を使う。自分でMacOS用バイナリのR本体、Rpy2(Rpyのバージョン2で大丈夫)、Numpyをインストールする。
- manageRをftoolsのサイトのrepositoryのページ http://www.ftools.ca/cfarmerQgisRepo.xml からzipファイルをダウンロードし解凍。解凍して出来たフォルダを /Users/自分のアカウント名/.qgis/python/plugins/ にコピー(頭に.が付いたファイル/フォルダはFinderからは見えないため、ターミナルを立ち上げ、ls -aなどをすると見える。また、フォルダごとコピーするにはcp -Rを使用。具体的には、以下の通り。この例では、ダウンロードしたフォルダが自分のアカウント名直下のダウンロードフォルダ、解凍も同じダウンロードフォルダ内で「manageR」というフォルダ名)。
cp -R /Users/自分のアカウント名/Downloads/manageR /Users/自分のアカウント名/.qgis/python/plugins/
- ところがどっこい、これでは立ち上がらない。MacだとWinのようにRpy2のインストールにインストーラーが用意されておらず、自分でソースコードからビルドするか、pythonのパッケージインストーラであるeasy installを使うかしかない。どちらも嫌だったので、MacportsからRpy2をインストールしようとした。するとgcc44のビルドが始まってしまい、全然終わらず、本日はタイムアップ。帰宅後、一晩放置でビルドしようと思う。
渡邉
作業内容
日本語環境を示すエラーメッセージを改善した。
- まずテストファイルの保存場所を変える。D:\Temp\Rなど。この保存場所の変更は結果的に正しく、Pythonpathの問題はこれで解消された。半角のみで構成される、単純明快なファイルパスにすることが肝要。
- 次に、Windows環境でencode処理を行うため、Terapadをインストール。http://www5f.biglobe.ne.jp/~t-susumu/library/tpad.html
- Terapad上で、テストファイルを作成する。テストファイルは前回と同様、「Rによる統計処理 連続変数データをカテゴリーデータに変換」ページを引用。http://aoki2.si.gunma-u.ac.jp/R/recode.html
この処理にあたって、テストファイルは2種類用意した。
- 日本語の説明を含む(上記HPのプログラム部分をそのまま引用しています)
Recode <- function( x, # 連続変数データベクトル arg1, arg2) # 二通りの意味を持つ { if (length(arg1) == 1 && length(arg2) == 1) { # arg1: 最小値が含まれる区間の左限界値 return(factor(floor((x-arg1)/arg2)*arg2+arg1)) # arg2: 区間幅 } else if (length(arg1) == length(arg2)-1) { # arg1: カッティングポイント cut(x, breaks=c(-Inf, arg1, Inf), right=FALSE, labels=arg2) # arg2: 区切られた区間のラベル } else { stop("区切り値の個数は,ラベルの数よりちょうど 1 だけ小さいはずです") } }
- 日本語の説明を省く
Recode <- function( x, arg1, arg2) { if (length(arg1) == 1 && length(arg2) == 1) { return(factor(floor((x-arg1)/arg2)*arg2+arg1)) } else if (length(arg1) == length(arg2)-1) { cut(x, breaks=c(-Inf, arg1, Inf), right=FALSE, labels=arg2) } else { stop("") } }
各環境下での処理結果を、以下に示す。
なお、文字コードについては、Terapadの[ウィンドウ]-[オプション]の文字コードタブで設定を行う。
EUC
日本語なしのテストファイル:成功
日本語付きのテストファイル:プログラム表示時に日本語部分が文字化けするが、処理そのものに影響はない
UTF-8
日本語なしのテストファイル:失敗。'ascii' codec can't decode byte 0x88 in position 1: ordinal not in range(128)
日本語付きのテストファイル:失敗。'ascii' codec can't decode byte 0x88 in position 1: ordinal not in range(128)
この結果から、プログラム作成にはEUCが適当かと思われるが、これはR自体の環境がそうさせているものと思われる。
「Rのベクターデータを弄る人へ」
「何故標準がEUC-JPなのかと言えば, 作った本人の環境がEUC-JPだったからと言うそれだけの理由です.」
「R-2.1.1(Windows)のインストール方法」
「IEならブラウザ上から文字コ-ドをEUCにして変換してしまえば、保存すればうまくいくかもしれません」「私はIE+EUCの状態でのコピペで上手く行きました。」
結論
Windows Vista 32bit スタンドアローン版でQGIS+manageRの環境を構築するには、
- manageR0.8を使用する。Pythonプラグインインストーラでサードパーティーのリポジトリを追加する際、アップデートをしないままにしておく。なおmanageR0.8のダウンロードは、http://www.ftools.ca/cfarmerQgisRepo.xml
- R本体、Rpy、Numpyを一通りインストールする。参考サイトとして、「月の杜工房 -QGISからRに接続-」 http://mf-atelier.sakura.ne.jp/mf-atelier/modules/tips/index.php/software/qgis/qgis_r.html
- プログラムファイルはEUC環境で作成する。その際、日本語はなるべく省くようにする
- プログラムファイルは、半角で構成された明快なファイルパスの下で保存する
瀬戸
ひたすらFinkと格闘。 manageRを立ち上げた際のエラーメッセージは以下のとおり。
Traceback (most recent call last): File "/Users/tos/.qgis/python/plugins/manageR/manageR.py", line 3181, in updateWidgets self.emit(SIGNAL("updateDisplays(PyQt_PyObject)"),currentRObjects()) File "/Users/tos/.qgis/python/plugins/manageR/manageR.py", line 209, in currentRObjects robjects.rinterface.globalEnv.get('ls',wantFun=True)) AttributeError: 'module' object has no attribute 'globalEnv'
ここで、finkのpython2.6にパスを通すと治るかと思い export PYTHONPATH=/sw/bin/python2.6 としてみたものの、うまく通っていない。
ちなみに、r-baseの問題かと思い、ターミナルで立ち上げてlibrary(sp)をQGISとは関係なく立ち上げようとすると パッケージがインストールされていないメッセージがでて、install.packages("sp")を叩くと
** testing if installed package can be loaded Error in dyn.load(file, DLLpath = DLLpath, ...) : 共有ライブラリ '/Users/tos/Library/R/2.11/library/sp/libs/sp.so' を読み込めません dlopen(/Users/tos/Library/R/2.11/library/sp/libs/sp.so, 6): no suitable image found. Did find: /Users/tos/Library/R/2.11/library/sp/libs/sp.so: mach-o, but wrong architecture エラー: loading failed * removing ‘/Users/tos/Library/R/2.11/library/sp’
というように、パッケージのインストールすらこけてしまう。
課題と次回までにやること
達成できたこと
- 作業環境は、Windows Vista 32bitについてはOK。
次回の予定
- 日時:10月25日(月)18:30~ 場所:未定
- 環境構築は一端ストップして、Rの操作に移行する。
- Rjpwikiを読み込む作業。地理空間関係のテストプログラムを試してみる。
- Rのバイナリでパッケージを次回までに各自インストールしておくこと。
後日追記
10/5清野
- MacOS10.5の環境において、MacportsでもFinkでもeasy_installでも、rpy2のインストールがうまくいかない。どうも、http://www.okada.jp.org/RWiki/?Python%20%A4%C7%A1%A1R#nb4e7b5b ここの参照リンク先を見ると書いてあるが、Rのパッケージをソースコードからコンパイルし直さなければいけないかもしれない。コンパイルに際して--enable-R-shlibオプションが必要なようだ。時間があるときに再チャレンジしてみることにする。