10/26 コーヒーは
お砂糖は入れないのがすき,牛乳はあったら入れたい(研究室にはおいてない).
今日は,ついにある地物とプロットとの距離が出せるようになりました.わーいわーい!
きのうまでQGISでやっていたんだけど,ArcGISの方が機能が多いので,ここからArcGISにくら替えすることにしました.Pythonが使えるのがとてもよい.パッケージだいすき.簡単にいろいろできそう.作ってくれた皆さんに本当に感謝したい.
ArcGISの近接解析
ある地点やある線分(入力フィーチャ)がデータとしてあって,もう一個なにか線分とかエリアとか(近接フィーチャ)があって,その間の最短距離を出したいときに使えるというもの.
どういうことができるかでわかりやすいのは
これ.「近接解析」.
今回使うのは[近接]ツールセット.
「[近接] ツールセットの概要」
ここの「最近接」というところを使う.
具体的にどんなのの最短距離算出ができるかという例はここに図つきで載っている.
「最近接(Near)(解析)」
ポイント→ポイント,ポイント→ライン,ポイント→ポリゴンetc. 要するにフィーチャならなんでもOK.
今回はあるデータで出発地として記録されている点がたくさんあるとき,そのそれぞれが,海岸線から直線距離でどれくらい離れているか,という計算をする.
二つの県の間くらいのエリアでのデータで,海岸線のデータが県ごとにしか取れなかった(きのうの日記参照)ので合成して一つにしなきゃいけないのかな…とか思っていたけれど,この近接ツールを使えば近接フィーチャに複数のものを指定できるのでそのまんまで問題なし.すばらしい!
複数のものの属性はちょっと違ってもよくて,点&線との距離とか,点&エリアとの距離とかもできるみたい.
Pythonが使えれば簡単だと思う.
さっきのもArcGIS Desktopのヘルプページだけど,個人的には引数の解説がこちらのほうが詳しくてすき.
まずPythonウィンドウを開く.
>>> となっているので,ここに以下を一行ずつ書き込んでenterキーを押していく.#はコメントアウトなので,書かない(解説なだけ).
引数は変えたいときは上のページを見ながらちょこちょこ変えればOK.
# hownear_forArcGis.py
# モジュールを読み込む
import arcpy
# ワークスペースの指定.たぶん誰でもこのままでOK
arcpy.env.workspace = "C:/data/input/gnt.gdb"
# ここから使用データに合わせて変えていく.これらの指定は必須
# out_tableは上書きはできなくて,既に存在する名前は指定できないので注意
in_features = "入力フィーチャ名(コンテンツウィンドウに出ている名前,日本語OK)"
near_features = ["近接フィーチャ名①", "近接フィーチャ名②(コンテンツウィンドウに出ている名前,ここで指定するのは二つでなくてよい)"]
out_table = "出力テーブル名(この名前でArcGISの表になる)"
# 変えても変えなくてもいいパラメタはたくさんあるけれど
# こうしておくと最近点の座標が表に入る(わたしはあとの操作に必要だった)
location = 'LOCATION'
# 計算してもらう
# もちろん個々の引数に直接上の名前をいれてもいい
arcpy.GenerateNearTable_analysis(in_features, near_features, out_table, search_radius, location, angle, closest, closest_count)
ヘルプはここからもみられる.なんか同じことを書いているページがいくつもある(みんな表現とか詳しさとかが微妙に違う).
近接情報テーブルの生成 (Generate Near Table)—ヘルプ | ArcGIS Desktop
「テーブルのエクスポート」のページ.
手順:
- コンテンツ ウィンドウでテーブルかレイヤを右クリックし、[属性テーブルを開く] を選択します。
- [テーブル オプション] ボタン をクリックします。
- [エクスポート] をクリックします。
- [データのエクスポート] ダイアログ ボックスで [エクスポート] 矢印をクリックし、[選択レコード] または [すべてのレコード] オプションを選択します。
[選択レコード] オプションは、エクスポートするテーブル内のレコードが選択されている場合にのみ利用できます。
- [参照] ボタンをクリックして、エクスポートしたデータを格納するフォルダまたはジオデータベースに移動します。
- [ファイルの種類] 矢印をクリックし、エクスポートするデータの形式をクリックします。
- エクスポートしたテーブルの名前を入力します。
- [上書き保存] をクリックします。
- [OK] をクリックします。
この方法でできる(わたしの画面では8. は[上書き保存]ではなかったけど)んだけど,選択できる[ファイルの種類]にcsvはない.
csvで読み込める形にするには,6. でテキスト ファイルを選択して保存.そうするとセルがコンマ区切り&行が改行区切りになって出てくるので,このファイルをエクスプローラから右クリック選択で名前の変更をして,拡張子を.csvに変えれば問題なく読めるはず.
ArcGISの距離
ArcGISの距離単位のデフォルトが謎.これを一般的なメートルとかに直す方法を考えたので.
まず,最近距離を出すときに,上のように引数を指定しておけば最近点座標もつけて表を出してくれる.この座標を用いて
でメートルorキロメートル表示で距離を求める.
ArcGISの距離単位は謎だけど比率は一定なので,この求めた距離との比率を出して,すべてについて適用すればOK.操作はcsvとかエクセルとかでやれば簡単.
※ほんとは
ArcGIS Explorer - マップの座標単位と距離単位の設定
ここに書いてある方法で単位設定ができそうだけど,ちょっとよくわからなかったので(笑),ほっておく.というかこの通りなら,メートルじゃないのならフィートかマイルかくらいしか単位の案がないけど,そういう比率にはなっていなかった…謎…
おまけ
何らかのレイヤーが表示されない問題
- 組み合わせて試してみて,どれかひとつがおかしいとかじゃないか確かめる
今回でいうと,宮城の海岸線とOのデータは同じ空間座標系に乗っていたみたいだけど,なぜか岩手の海岸線は途方もないところにふっとんでいたのか見えなかった.
なので岩手の海岸線についてもう一回データをダウンロードして,そちらを選択したらきちんと表示された(どうしてかはわからないけど,QGISで昨日悪戦苦闘していたので,そのときになにか変えてしまったのかもしれない).
- 参照フォルダがうまくいっていない可能性
先輩談.こういうことがある,らしい(未経験).こういうときはとりあえずdocument内のArc GISフォルダ直下に置いてみるといい(らしい).
Rのデータ編集
苦戦している.時間データが時間データとして出ない.
読み込みはできていそうで,そのあとの処理もできていそうなので,たぶん文字列型に変換できれば行けると思うんだけどそれができない. 15:00が17になる…
ということで
オブジェクトの内容を情報付きで簡潔に表示する場合は関数 str() を用いる.型+中身が表示される.
時刻 : Factor w/ 49 levels "14:45","14:46",..: 13 17 29 37 41 5 29 5 29 34 ...
このコンマの後ろのようになんらかの基準で変換されてしまっているらしく,変換後の値でしか出ない.
参考にするのはこの辺り?
http://cse.naro.affrc.go.jp/takezawa/r-tips/r/10.html
http://cse.naro.affrc.go.jp/takezawa/r-tips/r/25.html