きた。
用意できたのは
水系網
地質
地形図2種類
地質年代図
と谷密度の5種類である。
谷密度は絵を描くのに時間がかかりすぎたから今回は省略。
あれっと,よく見ると地質年代図の岐阜県あたりにかなり大きな欠側値がある。
これはデータ処理中のエラーなので修正せねば!
あと残りは
気候図と土地利用図,道路密度図,斜面方位図,斜面傾斜図ぐらいかな〜。
地質図まわりはさらに修正する必要があるけど,それはまた今度で!
ではでは明日からモニ1000調査に行ってきま〜す!
用意できたのは
水系網
地質
地形図2種類
地質年代図
と谷密度の5種類である。
谷密度は絵を描くのに時間がかかりすぎたから今回は省略。
あれっと,よく見ると地質年代図の岐阜県あたりにかなり大きな欠側値がある。
これはデータ処理中のエラーなので修正せねば!
あと残りは
気候図と土地利用図,道路密度図,斜面方位図,斜面傾斜図ぐらいかな〜。
地質図まわりはさらに修正する必要があるけど,それはまた今度で!
ではでは明日からモニ1000調査に行ってきま〜す!
しかしシェープファイルってぇやつはとても扱いにくいもんなんやね〜
半日ほどシェープファイルにもてあそばれてしまったよ...
dbfまわりで終わりかと思ったら,まだ壁があるなんて...
有名なGISソフトを使っている方々には無縁の障壁かもしれないけれど,GRASS
ユーザーにとってはやっぱりシェープの壁ってあるのかなぁ...
おそらく,ただ単純に自分の知識と技術が乏しいだけだろうけど...
でも今日の収穫もあった(よし前向きに行こう)!
シェープファイルからラスタへの変換が成功した!
まぁその機能があるんだから当たり前だけど...
その他に問題はというと,"r.watershed"がうまく動かない!
いろいろとググってはみるけれど,よくわからん...
ただ単純に6.3を使っているからいけないのかもしれないけれど,でもよくわか
らん...
まぁこれも宿題ですね〜
無事解決したら報告しま〜す
今日はこの前から引き続き流路のラインデータをいじっていたんだけど,この
データはもともと値のおかしいところがあるらしい。
なのでおーくを使って単純に整形しただけでは,GRASSにインポートすることが
できない。これは,データに記載されているノード数と実際の数が違っているた
め...
そのままでは,インポートするときにデータ形式が違うと怒られてしまう
なので,今日は半日かけて,エラーの値を確認しながら実際のノード数と記載さ
れているノード数を確認する作業をしていた。
データの数が膨大なのでエディタの動きも遅いし,つまらないし,ねむたくなる
し...
いろいろと耐えながら進めるとようやく終わった。
もしかしたらおーくのスクリプトを書くよりも時間がかかったかも。
データの値がおかしいところは10カ所ぐらいだったのでまだよかったような気
がする。
できあがりはこんな感じ!
また,明日も悪戦苦闘してみよう!
というか確実にトラップしている!
なんのことかというと,今年の4月から所属が変わったのだが,その職場は駅か
ら離れたところにある。
バスで10分ぐらいかかるのだが,それが田舎なので運賃がかなり高い(ような
気がする)。だから,健康のために自転車で通っているわけだけど,その道中
で,特に夕方に猛スピード(そんなに早くないけど)で走っているとどうしても
むしを捕まえてしまう。
まぁ服装にも問題があるんだけど...
最近は白シャツを愛用している。なので,これってつまり,自転車で自分からラ
イトトラップしているようなもの。
おかげさまで,せっかくの白シャツが昨日は一部黄色くなっていた...
いやいやシミじゃなくて,明らかに液体っぽいものの色...
いや〜これってたまにはやっぱりトラップしてるんだろうね〜
こんなこと,体験しなきゃわからないこと(いままで自転車通勤したことがない
から)だけど,まあでも楽しいかも...
新たな発見を喜んでいる今日この頃です...
今日やりたいことは,国土数値情報統一フォーマットのラインデータからシェー
プファイルを作成するといもの。
こちらは前回よりも少し楽だったような気がする(まだ終わってないけれど)
おおまかな手順はここから
まずいつものとおり国土数値情報の統一フォーマットから目的のデータ,今回は
流路データ(W15-52L-48-01.0a)をダウンロードする。
これを解凍すると,htmファイルが2つとテキストファイルが1つ出てくる。
使うのはもちろんこのテキストファイル。
このテキストファイルには,頭から"ヘッダデータ","ノードデータ(行のはじ
めがN)","リンクデータ(行のはじめがL)","ラインデータ(行のはじめが
S)","台帳データ(行のはじめがDS)"の順に各1行単位でデータが格納されて
いる。
ここから必要なデータをとってきて加工すればよいのだ。
今回の場合,流路の線を書くだけならリンクデータ(行のはじめがL)の部分だ
けでできる。
ほかのデータの場合には必要に応じて,ラインデータも加工する必要があるかも...
というわけで,エディタでこのテキストファイルからリンクデータのみを切り出
して保存する。
データは次のような形で格納されている。
******************************
L 362336000003362336000004000002 0 000030
4455281 876147 4455207 875966 4455236 875914 4455287 875883 4455426
875933
4455441 875920 4455374 875862 4455377 875841 4455528 875856 4455570
875813
(中略)
4456704 875335 4456802 875215 4456826 875177 4456899 875134 4456924
875084
L 362336000005362337000006000003 0 000045
4459446 874186 4459352 874280 4459217 874364 4459208 874398 4459133
874428
4459020 874393 4458889 874369 4458641 874366 4458602 874405 4458658
874464
(以下省略)
******************************
どこに何が書かれているかは,データの中のhtmファイルを確認してください。
あとは,これをGRASSの
ベクトル型データのスタンダードフォーマットに変換すればよいだけ。
いつものように力業でやってもよいのだが,前からおーく(awk)に興味があっ
たので,今回はこれを勉強してみることに!
おーくの取り扱いについては,web上にいろいろと出ているので,ここでは割愛
するけど,かなりいろいろできそうな気がする。
参考になったのはこちらのサイト
とりあえず試行錯誤をしながらスクリプトを書いていくと,次のような内容で無
事に変換することができた。
以下おーくファイル(link_awk)の内容
{
if($0 ~ /L /)
{
printf(FS);
printf("%d",1);
printf(FS);
printf("%d\n",1);
printf($1);
printf(FS);
printf("%d",$4);
printf(FS);
printf("%d\n",1)
}
else
{
printf(FS);
printf("%4.8f",$1/10/60/60);
printf(FS);
printf("%4.8f\n",$2/10/60/60);
printf(FS);
printf("%4.8f",$3/10/60/60);
printf(FS);
printf("%4.8f\n",$4/10/60/60);
printf(FS);
printf("%4.8f",$5/10/60/60);
printf(FS);
printf("%4.8f\n",$6/10/60/60);
printf(FS);
printf("%4.8f",$7/10/60/60);
printf(FS);
printf("%4.8f\n",$8/10/60/60);
printf(FS);
printf("%4.8f",$9/10/60/60);
printf(FS);
printf("%4.8f\n",$10/10/60/60)
}
}
あとは次のコマンドを実行すればよい
awk -f link_awk link_all.txt | awk '!/0.00000000/' > result.txt
ちなみに"linl_awk"は上のスクリプトを書いたファイル,"link_all.txt"はデー
タファイルからリンクデータだけを切り出したファイル。
結果は"result.txt"ファイルに格納される。
実行した結果がこちら
*************************************
L 6 1
123.74916667 24.35216667
123.75330556 24.34763889
123.75830556 24.34677778
123.76108333 24.34375000
123.76058333 24.34113889
123.75816667 24.33741667
1 1
L 6 1
123.87350000 24.35269444
123.87419444 24.35313889
123.87577778 24.35419444
123.87600000 24.35475000
123.87730556 24.35597222
123.87891667 24.35680556
1 1
(以下省略)
*************************************
実際の処理は1分ぐらいでおわる!
おぉ〜感動!!
世の中には便利なものがいっぱいあるね〜
次はもっとややこしいことに挑戦しよう。
昨日と今日で第1回目の実習。
内容はおきまりで特に問題はなかった。
実習中は時折雨・風が強く,散歩(調査)ができなくはないけど,あまり気が進
まないような天気だった。
肝心の植物はというと,開花している種数は例年とたいして変わらないと思うけ
ど,量は明らかに少ない気がする。やっぱり昨年は当たり年だったのかな〜
咲いていた花はこんな感じ
ズミ
ウワミズザクラ
ミヤマザクラ
コマユミ
ツリバナ
カマツカ
オオツクバネウツギ
ツクバネウツギ
ムラサキケマン
フタリシズカ
タチツボスミレ
エゾノタチツボスミレ?
ヤマツツジ
ホソエカエデ
ムラサキサギゴケ
カキドオシ
オドリコソウ
シバヤナギ
バッコヤナギ
....
今度は写真を撮ってこよう!
何につまずいたかというと,シェープファイルの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まであるの
で,順次ずらしていく。
参考までにマクロもここに置いておく。
あとはマクロを走らせればいい
振り返ってみると,メッシュデータは割と簡単だったかも!
次は流域のラインデータが待っているのでちょっと戦ってみよう
ここまでの手順は次のサイトを参考にしました。
これまで使っていたブログを閉鎖して,こちらへ移す作業をしていました。
あまり数がないから,そんなに時間がかからなかったのが寂しい...
まあこれからですね〜!
今日はこれから大学です