ページ

2009年5月17日日曜日

山梨のとある山の中

ついに実習のシーズンが始まった!
今年は回数が減って年6回しかない。
今年は,教室での講義がないから気は楽だけど,その分学生との距離も遠くなっ
たので,うまく盛り上げられるかが心配...

昨日と今日で第1回目の実習。
内容はおきまりで特に問題はなかった。

実習中は時折雨・風が強く,散歩(調査)ができなくはないけど,あまり気が進
まないような天気だった。

肝心の植物はというと,開花している種数は例年とたいして変わらないと思うけ
ど,量は明らかに少ない気がする。やっぱり昨年は当たり年だったのかな〜

咲いていた花はこんな感じ
ズミ
ウワミズザクラ
ミヤマザクラ
コマユミ
ツリバナ
カマツカ
オオツクバネウツギ
ツクバネウツギ
ムラサキケマン
フタリシズカ
タチツボスミレ
エゾノタチツボスミレ?
ヤマツツジ
ホソエカエデ
ムラサキサギゴケ
カキドオシ
オドリコソウ
シバヤナギ
バッコヤナギ
....

今度は写真を撮ってこよう!

2009年5月15日金曜日

DBFふぁいる

またまたはまってしまった
今回は,丸丸2日間も...
GISってやつは難しいのね〜

何につまずいたかというと,シェープファイルのdbfの取り扱いについてである。
こいつがなかなかくせ者で,いろんなところに落とし穴がある...
まあGIS初心者&なるべくフリーソフト(i.e. GRASS & QGIS)で解析しようとし
てるんだからしょうがないか...

まあぼちぼち勉強するとして,ここ2日間の記録を書いておこう。

やりたいことは国土数値情報の統一フォーマット(ふるいでーた)をシェープ
ファイルに変換すること!!

国土数値情報の統一フォーマットはただのテキストファイルだから,それを(ち
からわざで)加工すればシェープファイルに変換することができる。

ちなみにMANDARAを利用すると,いくつかのメッシュデータ(斜面方位・傾斜,
土地利用 etc.)については変換することができるらしい。それ以外には,MMTM.TVの2種類のコンバーターを利用すれば変
換できるらしい。ただしこちらは有償(各5,000円)! 評価版あり!

実際,ちからわざで変換してみた感想だけど,ちからわざではそれなりに時間が
かかるから,時間をとるかお金を取るかは難しいところ...

でもなるべくお金は使いたくないし!
まぁ数こなせば,少しは処理手順もこなれて早くなるでしょ


ということでここから実際の手順

まず,国土数値情報統一フォーマットのメッシュデータをダウンロード
今回の場合(土地分類メッシュ G05-54M-48-010.zip)解答すると,htmlファイ
ルが2つとデータファイル(txt)が出てくる。
データはすべてテキストファイルに入っているので,これを加工すればよい!

まずエディタでデータファイルのヘッダデータ(1行目)を削除して保存

次にデータファイルをエクセルで読み込むのだが,エクセル(2003以前)は最大
行数(約63000行)が決まっているので,行数が多いと全部読み込んでくれな
い。2007を使うともっと多くの行数を扱うことができる(たしか100万行ぐら
い)のだが,残念なことにdbf形式で保存することができない...

そこでデータファイルをエクセル2003に取り込むために,いくつかに分割する

コマンドラインから

split -l 50000 "データファイル名" #50000行づつに分割

分割されたファイルをエクセルで読みこむ。
データが1列に読み込まれるので,データの区切り位置(ウィザード)でコード
ごとに分割する
マニュアルによると土地分類メッシュは1行が31文字で記述されていて,

文字数 内容
1-3 レイヤーコード
4-5 メッシュの大きさ
6-9 1次メッシュコード
10-11 2次メッシュコード
12-13 3次メッシュコード
14-16 地形分類(主分類2桁+副分類1桁)
17-21 表層地質(岩石区分2桁+かたさ1桁+時代1桁+断層1桁)
22-24 土壌(土壌統計2桁+付加記号1桁)
25-27 図葉コード(都道府県コード2桁+年紀区分1桁) ※年紀区分は北海道の
み,その他はブランク
28-30 資料年紀
31 縮尺

となっている。

今回,メッシュコードを3次で区分するから,分割は3,2,8,2,1,2,
1,1,1,2,1,2,1,3,1桁になる。
ファイル名をdb.xlsとして保存!ちなみにデータシート名はdb,db(1)〜db(7)ま
での8枚!dbが南でdb(7)にかけて北の順で並ぶ!

そしたら次は,シェープファイルの素材となるファイルを入手する!
都道府県別の3次メッシュコードのシェープファイル素材は,地域地盤環境研究所 村上貴志氏のページで入手するこ
とができる。

適当なところに解答して,でてきたdbfファイルを加工する。

まずdbfファイルをエクセル2003などで開き,名前の定義を必要な範囲に変更す
る(詳しくはこちら)。

そしたらあとはエクセルのif & vlookup関数で,データベースからdbfファイル
にデータを書き込む。今回は,北海道以外の都道府県のdbfファイルにデータを
書き込むので,ついでにマクロも組んだ。

ちなみにif & vlookup関数は次のように書いた

=if($A2>65431720,vlookup($A2,'[db.xls]db
(7)'!$C$1:$O$50001,2,FALSE),if($A2>63396678,vlookup($A2,'[db.xls]db
(6)'!$C$1:$O$50001,2,FALSE),if($A2>57406784,vlookup($A2,'[db.xls]db
(5)'!$C$1:$O$50001,2,FALSE),if($A2>54403127,vlookup($A2,'[db.xls]db
(4)'!$C$1:$O$50001,2,FALSE),if($A2>53365634,vlookup($A2,'[db.xls]db
(3)'!$C$1:$O$50001,2,FALSE),if($A2>52330567,vlookup($A2,'[db.xls]db
(2)'!$C$1:$O$50001,2,FALSE),if($A2>50321146,vlookup($A2,'[db.xls]db
(1)'!$C$1:$O$50001,2,FALSE),vlookup($A2,'[db.xls]db'!$C$1:$O$50001,2,FALSE))))))))

ちなみにA2のセルにはdbf元ファイルの3次メッシュコードが入っている。
vlookupの参照桁数(?:2と書いてあるところ)は,データ要素が2〜9まであるの
で,順次ずらしていく。

参考までにマクロもここに置いておく。

あとはマクロを走らせればいい

振り返ってみると,メッシュデータは割と簡単だったかも!

次は流域のラインデータが待っているのでちょっと戦ってみよう

ここまでの手順は次のサイトを参考にしました。

2009年5月13日水曜日

お引っ越し

今日は朝からブログのお引っ越し作業!

これまで使っていたブログを閉鎖して,こちらへ移す作業をしていました。
あまり数がないから,そんなに時間がかからなかったのが寂しい...

まあこれからですね〜!

今日はこれから大学です

2009年5月12日火曜日

久々の投稿

久々にブログを更新。なかなか続かないのは性格のせいだけれども...
ランニングもまたしかり...


最近取り組んでいることは,論文のためのデータ解析!!と新しい仕事のためのデータ整備!!
でもって今日もその続き!!

今日はGRASSのGISDBに,産総研の20万分の1の地質図(シェープファイル,ラスタファイル),国土地理院の国土数値情報の土地利用細分メッシュ(シェープファイル),道路密度(シェープファイル)をインポート!


以下,シェープファイルをインポートするおまじない!!

v.external --o dsn="データのあるディレクトリ" layer="インポートするファイル名" output="その後のファイル名"

ここでちょっとはまる!
上書き指定は"--o"とのこと。最初"-o"としていたので,怒られました!

こちらはラスタファイルのおまじない!!

r.in.gdal input="インポートするファイル名" output="その後のファイル名"

まあこちらは今更問題もなく!

おきまりのことだけど画像をインポートすると,R,G,Bに分解される!
そのため必要に応じて画像を結合しないといけない!

ここはつぎのおまじないで

r.composite --o red="赤色ファイル(ファイル末尾に.red)" green="緑色ファイル(ファイル末尾に.green)" blue="青色ファイル(ファイル末尾に.blue)" level=32 output="その後のファイル名"

時間がかかるけど,何事もなく終わる。


とりあえずシェルスクリプトなどのメモを置いておく
地質図シェープファイル
地質図ラスタファイル
国土数値情報土地利用細分メッシュ
国土数値情報道路密度
RGBの結合作業



でも最近,GRASSにおけるベクターファイルの扱いに苦労している!!
特に,dbfファイルまわりで!!
実によくわからん!
QGIS経由では簡単なのに,直接GRASSからではうまくいかない...
この辺は早急に勉強しなければ...

あともう一点困っていること(悩んでいることは),DEMデータの取り扱いについて。
なにやら演算をしないといけないのだけど,その下準備をどうするか...
もう少しない知恵を絞ろう!

2009年5月4日月曜日

投影法の変換

投影法にはいろいろな種類がある。
web上にもフリーのデータが多く配信されているが,これらを使うには自分の投影法に変換しなければならない。
そこでGRASSでの投影法の変換方法について。
コマンドは,ラスターデータなら"r.proj",ベクターデータなら"v.proj"
マニュアルはこちらこちら

まずはラスターデータの変換方法から

以下マニュアルより引用
r.proj [-ln] [input=name] location=string [mapset=string] [dbase=string] [output=name] [method=string] [memory=integer] [resolution=float] [--overwrite] [--verbose] [--quiet]

パラメータの指定方法
input: インポートするファイル名
location: インポートするファイルがあるロケーション名
mapset: 同じくインポートするファイルがあるマップセット名
dbase: ロケーションのあるディレクトリ
output: 変換後のファイル名。省略すると元のファイル名が使用される。
method: 補完法。nearestかbilinear,cubicを選択。デフォルトはnearest。


そしてベクターデータの変換方法。こちらはラスターよりパラメータが少ない。

以下マニュアルより引用
v.proj [-lz] [input=name] location=string [mapset=string] [dbase=string] [output=name] [--overwrite] [--verbose] [--quiet]

パラメータの指定方法
input: インポートするファイル名
location: インポートするファイルがあるロケーション名
mapset: 同じくインポートするファイルがあるマップセット名
dbase: ロケーションのあるディレクトリ
output: 変換後のファイル名。省略すると元のファイル名が使用される。

以上

実際には,input,location,mapsetだけを指定すればたいてい変換できる。

グリッドをつくる

GRASSでグリッドを作ってみる。
コマンドは"v.mkgrid"
マニュアルはこちら

以下GRASSマニュアルより
v.mkgrid [-q] map=name grid=rows,columns [position=string] [coor=x,y] [box=width,height] [angle=float] [--overwrite] [--verbose] [--quiet]


パラメーターの指定方法:
map: 新しいファイル名
grid: 縦・横のグリッドの数を指定。ちなみに"rows"は南北,"colums"は東西方向のこと。
position: regionかcoorを選択。デフォルトはregion。regionではregion全体にグリッドを作成。coorはregion内の一部にグリッドを作成。
coor: positionでcoorを指定した場合には原点(左下)の座標(x,y)を指定。
box: グリッドのサイズ(幅と高さ)
angle: グリッドの角度を時計回りで指定。デフォルトは0度。

これで完成

2008年11月18日火曜日

HDDクラッシュ...そして復元

先日HDDがクラッシュしました...

それもよりによって大事な大事なデータの入ったやつ...

それ以前(今年の6月以前)のデータはHDDごと複製があるので,やく3か月分のデータが吹っ飛んだことに...

この中には,学位審査のときの発表資料やアメリカでの学会発表のデータも含まれていて...



そもそもの原因は,大学から持ち帰ったメインマシンを再構築するときに,ubuntuのインストール途中につまずいたこと。なにやらプログレスバーが進まないな〜と思って再起動したら,そのままマウントすらできなくなってしまいました。

驚きのあまりしばらく呆然としていましたが,なんとか立ち直り修復作業へ!!



WindowsやMacにはいろいろとデータ復旧のためのソフト(有償)があるけれど,Linuxにはそんなものはないので,情報探しから。



するとやはりいろいろ出てくる出てくる



やっぱりLinuxはすごいな〜と感心しつつ作業へ取り掛かる。



はじめに,ddして複製を作ってからfsckをせろとのこと



しかし残念なことに,このハードディスクはなんと500GBもあってこれより大きなサイズのHDDなんて持ってない。

ddしても容量が足りない(コピー先も500GB)ので途中で怒られてしまう。

仕方がないので,しぶしぶそのままHDDに対してfsck.ext3(ほんとはやってはいけないことみたいだけど)!



そうするとなんと復活!!マウントできるようになりました!!よかった〜!!管理者権限でlost+foundを開くとそのなかにファイルがざくざく!!

ファイル名が日本語のやつもそのままの状態で無事に取り出すことができました。

あとからいろいろ調べてみると,どうやら原因はパーティションンテーブルかなにかが壊れたことみたい。

ファイルやハードディスク自体には問題がなかったから,無事に復元できました。



やっぱりバックアップは必要だと実感しました。