| Top Page |
プログラミング |
ARC/INFO ASCII Grid データを扱う Perl モジュール
Alpha version uploaded on 2011-09-16
Revised on 2011-11-04
概要
GIS で使うファイル形式のひとつに、ARC/NFO ASCII Grid があります。
テキストエディタで開けば人間がそのまま読めるテキストデータです。
(
参考ページ)。
特に地図化する必要はない、ないしはそれは別のソフトでやる、
それよりもデータ処理をプログラムを書いててきぱきやりたい、
という意図で Perl のモジュールを作成しました。
自分で使うためのものですが、
ひょっとして参考にしていただけることもあるかと思い、公開します。
本プログラムの利用・改変・再配布は自由です。ただしソースを転載する際には、
作者表示および URL 表示 (http://takenaka-akio.org/etc/arcinfo_ascii/)
はそのまま残してください。
作成した関数群(ユーザーが直接利用するもの)
本モジュールは、new でオブジェクトを作成し、これを介してメソッド
(サブルーチン)を呼び出して使います。
-
new
-
オブジェクトを作成するサブルーチン(いわゆるコンストラクタ)。
引数として、データファイル名を与える。
(例) $ref = new ArcInfoAscii $file; # $file はデータファイル名
-
get_value
-
x, y 座標を受けとり、その位置を囲む4点の値から内挿(線形)で計算する。
データセットがカバーするエリア外であるか、 囲む4点中に NODATA が
あれば、NODATA を返す。
(例) $val = $ref->get_value(70, 130); # (70, 130) の地点での値
-
get_value_at_nearest
-
x, y 座標を受けとり、その位置にもっとも近い点の値を返す。
中間点の場合は、原点に近い点を優先する。
データセットがカバーするエリア外であるか、 もっとも近い点の値が NODATA で
あれば、NODATA を返す。
$val = $ref->get_value_at_nearest(70, 130); # (70, 130) の最近地点での値
-
get_values_in_buffer
-
x, y 座標と、これを中心とする円形のバッファ領域の半径を受けとり、
領域内の点(円周上も含む)のデータの配列を返す。
@vals = $ref->get_values_in_buffer(70, 130, 50);
# (70, 130) から半径 50以内の地点の値の配列
-
get_resolution
-
解像度(点の間隔)を返す。
$resol = $ref->get_resolution();
-
get_x_range
-
x 座標の最小値、最大値を返す。
($x_min, $x_max) = $ref->get_x_range();
-
get_y_range
-
y 座標の最小値、最大値を返す。
($y_min, $y_max) = $ref->get_y_range();
-
get_NODATA_value
-
データが未定義の場合に割り当てられる値を返す。
$no_data = $ref->get_NODATA_value();
ダウンロード
- ArcInfoAscii.pm
-
モジュール。これを呼び出して使うプログラムと同じディレクトリに入れるか、
Perl/lib に入れる、ないしは use lib で指定したディレクトリに入れる。
(参考:
サーバにインストールされていないPerlモジュールを使うには)
- test_arc.pl
-
テストプログラム
- test.asc
-
上のテストプログラムで使用するテストデータ
変更履歴
- 2011-11-04 get_values_in_buffer のバグを修正した版を掲載
- 2011-09-16 初版を掲載
| Top Page |
プログラミング |