2011年12月27日火曜日

[Python]lxmlのインストール

通常通りにインストールできなかったのでMacPortsを使ってのインストール。
lxmlをインストール - YAMAGUCHI::weblog:
http://d.hatena.ne.jp/ymotongpoo/20090203/1233674446

上記どおり。

MacPortsのインストール

SnowLeopardのときにXcodeをインストールしてLion似した人はXcodeの再インストール。今のところ4.2.1。MacAppStoreでンストールできない!と思ってたけど多分インストーラーのダウンロードで止まってた。
MacPortsのインストールはLion用のMacPorts2.0.3をインストールしようとすると先に1.7.1をインストールしてくれと言われるので1.7.1を探してきてダウンロード。拡張子が.tar.gzのものを解凍してターミナルでそのフォルダに移動。
$ ./configure
$ make
$ sudo make install
でMacPorts1.7.1インストール完了。
再びLion用のMacPorts2.0.3を起動すればインストールできるはず。

2011年12月21日水曜日

VHubからTitan2D

VHubでエラーの質問をしたら、GRASSデータが圧縮されているのかも。という回答をいただきました。

ということでGRASSで

$ r.compress -u < map name >

を実行。



VHubにアップロードしなおして再計算。



成功?

TitanViewerでみてみる。/vhub/ユーザー名/titan2dで作成したフォルダ名/結果のタイムスタンプ を開いて、Standard Titan Viewだったかな?でRun Tool。そしたらResultのドロップダウンからMap of maximum flow depthを選んで地図を表示。



うーん。いじってたら地図も出なくなってしまった。

AvalancheStartingZone①―植生と斜度の合計





植生データ作成⑤―ラスタ変換

ラスタ変換の前に座標系をWGS84UTM54に変換。Image

ラスタ変換。

入力フィーチャ→植生shpデータ、値フィールド→point、出力ラスタデータセット→適当な名前、セルの割り当て方法→CELL_CENTER、優先フィールド→NONE、セルサイズ→傾斜ラスタデータかDEMにしてOK。Image

結果はssとってない!

2011年12月4日日曜日

植生データ作成④

Pythonでも辞書型内に改行があっても大丈夫じゃないの?と思って以下のようにしました。

[sourcecode language="python"]
import csv

def csv2dic(readed):
for row in readed:
print ','.join(row)+','

test = csv.reader(open('csvファイル', 'rb'))
csv2dic(test)
[/sourcecode]

結果↓


出力結果をターミナル上でコピーしてテキストエディタかなんかに貼付け。前と後を編集。

[sourcecode language="python"]
dic={1001:9,
1002:9,
1003:9,
(中略)
9998:10,
9999:10}
[/sourcecode]

最後にprint dic[9925]とかなんとかつけて.pyで保存すれば実行した時に10とか返ってきます。

ArcMapを起動してフィールド演算をします。
フィールド演算ウィンドウはレイヤウィンドウでshpファイルを右クリックして「属性テーブル」を開き、「新規フィールド」(だったかな?)を選択、型をshort、名前はpointとかの任意の名前してOK。作成されたフィールドの上の名前を右クリックして「フィールド演算」

形式で"Python"にチェックを入れて、"コードブロックを表示"にもチェック。上のテキストボックスに先ほど作った辞書型をコピペ、下のテキストボックスにはdic [!MAJOR1!]を入力して「OK」
計算が始まります。

できた。

色をつけてみました。




12/7 追記
入門 Unix for Mac OS X 第4版読んでて知ったんですが、別にターミナルの出力をコピペなんてことしなくても
python csv2dic.py > XXXX.txt
とかすればいいんですね。

2011年12月3日土曜日

植生データ作成③

csvファイルをPythonの辞書型にするモジュールなんてなかった。ので自分で作る。こんなに手間なら手動でフィールド演算した方が早いよねなんて言わない。

まずcsvファイルの区切りを:に変える。xlsxファイルをLibreOfficeでcsvファイルで保存する際に区切り文字をコロンにして保存。


Pythonモジュールはとりあえずこうなった。
[sourcecode language="python"]
import csv

def csv2dic(readed):
for row in readed:
print ','.join(row)

test = csv.reader(open('csvファイル', 'rb'))
csv2dic(test)
[/sourcecode]

結果↓


文字型同士でも辞書型にできるそうです。
[sourcecode language="bash"]
>>> testdic={9999:10,9953:4}
>>> testdic
{9953: 4, 9999: 10}
>>> testdic[9999]
10
[/sourcecode]

あとは一行にしてそれぞれカンマで区切りたいわけなんだけど。また明日。

2011年12月2日金曜日

植生データ作成②

ArcGIS10でフィールド演算をPythonコードでできるようになったというので、そのための下ごしらえ。

ダウンロードした植生フォルダにどの番号が何の植生かが書かれているcsvファイルがあるので、これをLibreOfficeで開いて.xlsxで保存(←あとあと考えたら.csvのままで良かった)。辞書で調べながら点数付けをしていく。



余計な列を削除して.csvで保存。



vimで開いてみる。あら。



余計な列をさらに削除して再度vimで開く。



なぜか;になってましたがこれはすぐに直せるでしょう。

次は.csvをpythonの辞書型にしようと思う。