![]() 地図画像を版ごとに分解する方法 作成日 2001年10月01日 Question: 地図画像を版ごとに分解する方法 Answer: 国土地理院発行の数値地図「地図画像」は8枚の版を別々にスキャニングし、一つのTIFFファイルにしたものです。 IMAGINEでこれを表示すると1レイヤのデータになりますが、Spatial Modelerを 使うことにより、別々のレイヤに分解することができます。 地図画像は以下のような構造になっています。 ----------Readmeの記述より抜粋---------- つまり、地図画像上でそのクラス(色)として現れていなくても、データとしては ビット位置として各レイヤの情報を格納しているのです。IMAGINEで地図 画像を表示し、その属性を表示しますと一つのクラスに対しても複数の値が 割り振られていますが、実はこの複数の値がビット位置による各レイヤの存在 を示しています。
ビット位置によるピクセルの選択は、SML関数のBitwise:&演算子を使用する ことで可能です。 この演算子は、たとえば01&10であれば00、01&01であれば01を返します。 つまり、二つの2進数を比較し、同じ位置(桁)に1が入っていればその位置のみ に1を入れた数値を返します。ある数値のあるビットに1が入っているかどうか の判定は、その数に対してそのビット位置のみに1を入れた8ビット数を適用し、 それと同じ値が返って来るかどうかで行うことができます。 例えば、Xという8ビットの数値の右から4番目のビットに値が入っているか どうかを調べるには、4番目のビットのみに1を入れた00001000(つまり10進法 の8)を適用して同じ8という値が返ってこれば良い、ということになります。 ゆえに「4番目のビットに値が入っている」ための条件は X & 8 == 8 であり、これを満たすピクセルをConditional:EITHER~IF~OR~OTHERWISE関数 で取り出せば、茶色の版のみの画像が出来上がります。 サンプルモデル(2.0KB) : jmc_mapimage_extract.gmd(右クリックでダウンロードして下さい。) ESRIジャパン株式会社 |