ラスタのバッファ解析用Rスクリプトを公開してみます。

昨日、仕込んでおいた計算は、無事に終了。ArcGISに頼らずにすみました。とりあえず初志貫徹。
というわけで、調子こいて関数化してみました。
まあ、わざわざGISでできる仕事をRで処理させるっつー人なんて相当マイノリティーじゃあるでしょうが、自学のためにもってことで。
ソースは↓においときます。拡張子はtxtになってますが、rに変えて使ってください。
関数名:fun.buffer()
説明
入力ラスタの全セルにおいて、円形バッファを想定して、バッファ内にある特定のセル値の個数で表されるラスタデータを返す。返すファイルの名前は”output_raster.txt”
バッファの範囲は直交方向のセルの個数で表される。
引数
name:ファイル名
header.length:入力ラスターのヘッダーの行数。整数値。
buffer.length:円形バッファにおける半径のセル個数。整数値。
cell.1stvalue:入力ラスタにおいて、対象とするセル値。
cell.2ndvalue:入力ラスタにおいて、対象とするセル値。複数ない場合は、cell.1stvalueの値と同じ値を入れます。
使用例
#ワーキングディレクトリにcircle_buffer.rとラスタデータを置く。
source(”circle_buffer.r”)
fun.buffer(name=”hogohoge.txt”,header.length=6,buffer.length=40,cell.1stvalue=3,cell.2ndvalue=4)
#fun.buffer(”hogohoge.txt”,6,40,3,4)のように書いても良い。
使用上の注意
メモリを贅沢に使っていますので、超大容量のファイル処理には向きません。ちなみに当方のメモリ2GのPCだと8439*7490、つまり6千3百万セルくらいの計算はできましたが、メモリによって処理可能なサイズは変わると思います。
元ファイルのセパレータは半角空白を前提としています。返すファイルも同様です。
セパレータが異なる場合は、ソースをいぢってください。
一応、引数にヘッダ行数とか入れましたが、多分ArcGISが吐き出すラスタテキストでないと、うまく回りません。他のGISにも対応したいな~とは思ったものの、手元にはそんなにたくさんGISがあるわけでもないし。
複雑なスクリプトでもないので、適当にいぢれば、それなりに使えそうな気がします。
んで、これできた後に気づいたんですが、こゆー処理ってpythonでArcGIS使役しながらできるみたいですな。てことはあれですか、
pythonでArcGISからデータぶっこ抜いて、Rpy使ってRでいぢってさらにはr2winbugsでwinbugsに流すなんてこともできるんだ
ろか。む~夢のような話だが、勉強する価値はありそうですな。
-
前の記事
ArcGISに勝てない 2008.10.01
-
次の記事
調査シーズン突入 2008.10.08