地図画像を版ごとに分解する方法

作成日 2001年10月01日


Question:

地図画像を版ごとに分解する方法


Answer:
国土地理院発行の数値地図「地図画像」は8枚の版を別々にスキャニングし、一つのTIFFファイルにしたものです。 IMAGINEでこれを表示すると1レイヤのデータになりますが、Spatial Modelerを 使うことにより、別々のレイヤに分解することができます。

地図画像は以下のような構造になっています。

----------Readmeの記述より抜粋----------
(2)TIFFファイルの構造
・図葉ファイルは、PackBits圧縮されたTIFF(Revision5.0以上)ファイルである。
・1ピクセル8ビットで表現されたパレットカラー画像であり、各ビットが2万5千 分1地形図の各版(通常は、全部で8版)に対応している。各ピクセルにおいて、 その版に画線があれば1、なければ0である。
版とビット位置の関係は、次のようになっている。

・各版の内容は、標準的には、次のとおりです。
注記版・・・・・・居住地名や人工物、自然物等の名称、または、建物記号等
注記マスク版・・・注記文字を含む範囲をマスク
墨版・・・・・・・道路、鉄道、建物、境界等
藍版・・・・・・・水涯線、水田
褐版・・・・・・・等高線、がけ、土堤、地下鉄
墨マスク版・・・・樹木に囲まれた居住地
藍マスク版・・・・河川水面、海水面、湖水面
褐マスク版・・・・国道
-----------------------------------------

つまり、地図画像上でそのクラス(色)として現れていなくても、データとしては ビット位置として各レイヤの情報を格納しているのです。IMAGINEで地図 画像を表示し、その属性を表示しますと一つのクラスに対しても複数の値が 割り振られていますが、実はこの複数の値がビット位置による各レイヤの存在 を示しています。

ビット位置でピクセルを選択する条件式を立てることが出来れば、特定のレイ ヤのみを取り出すことが可能です。例えば等高線などを含む茶色の版のみを取 り出したい場合は、右から4番目のビットに1が入ったピクセルのみを条件式 により選択して2値化してやれば良いことになります。

ビット位置によるピクセルの選択は、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(右クリックでダウンロードして下さい。)


ホーム > サポート > ERDASサポート

ESRIジャパン株式会社