FME 2015.1.0.3 build 15485
=====
国土数値情報の土地利用細分メッシュ(平成21年度, JGD2000)データをラスターに変換し、1次メッシュ区画単位のGeotiff形式ファイルに出力する。
ラスターは1バイト符号なし整数1バンドとし、カラーパレットによって土地利用種別ごとのRGBカラーを設定する。
出力ファイル名は1次メッシュコード (4桁の数字) とする。
ソースデータ
国土数値情報ダウンロードサービスサイトからダウンロードした土地利用細分メッシュ(平成21年度, JGD2000, Shape形式)データ。1次メッシュ区画単位のファイルで提供されており、全国175区画(ファイル)がある。
ダウンロードファイル名: L03-b-09_****.shp (****は1次メッシュコード)
=====
FMEワークスペース例
[SHAPE] リーダー: ソースデータから全ての細分メッシュ(矩形ポリゴン)を読み込む。
Joiner: 土地利用種別コードと画素値の対応表 (CSV形式) に基づき画素値を与える。
SubstringExtractor: 「メッシュ」属性値 (1/10細分メッシュコード) から1次メッシュコード (先頭4桁) を抽出する。
3DForcer: Z値 = 画素値とする3Dポリゴンに変換する。
NumericRasterizer: 1次メッシュ区画ごとに3Dポリゴンのグループをラスターに変換する。
AttributeFileReader: テキストファイルに記述したカラーパレットの定義を属性として追加する。
RasterPaletteAdder: ラスターにカラーパレットを設定する。
[GEOTIFF] ライター: ラスターをGeotiffファイルに出力する (ファイル名 = 1次メッシュコード)。
結果: 1次メッシュコード 5339, 5340, 5439, 5440 のエリア (FME Data Inspector による表示)
国土数値情報 土地利用細分メッシュ (平成21年) に基づき作成
Joiner は、データフローの途中で外部テーブルで定義した属性を読み込んでフィーチャーに結合するのに便利です。
ここでは、次のように定義したCSVテーブルにより、土地利用種別コード(「土地利用種」属性)に対応させる画素値を結合しました。カラーパレットのキー値とするため、画素値は 0 からはじまる連番としています。
土地利用種別コードとその意味は国土数値情報 (土地利用細分メッシュ) 製品仕様書 第2.3版に記載されています。
このCSV対応表は、画素値から元のコードを復元したりコードの意味(土地利用種別文字列)を取得したりすることにも使用できます。
-----
コード,土地利用種別,画素値
0100,田,1
0200,その他の農用地,2
0500,森林,3
0600,荒地,4
0700,建物用地,5
0901,道路,6
0902,鉄道,7
1000,その他の用地,8
1100,河川地及び湖沼,9
1400,海浜,10
1500,海水域,11
1600,ゴルフ場,12
0000,解析範囲外,0
-----
Joiner の他、[CSV] リーダーでこのテーブルを読み込み、FeatureMerger などで結合することもできます。それについては「属性結合の基本的な方法」を参照してください。
SubstringExtractor によって1/10細分メッシュコードから1次メッシュコード (先頭4桁) を抽出して "_primaryMesh" 属性に格納し、3DForcer によって画素値をメッシュ区画ポリゴンの Z 座標値とします。
NumericRasterizer は、入力フィーチャーのジオメトリに基づいて1バンドのラスターを作成します。セルサイズ、画素数などのラスターのプロパティはパラメーターの設定に基づいて決定され、各セルの画素値は、その地点におけるジオメトリのZ座標値に基づいて求められます。
NumericRasterizer パラメーター設定例
主なパラメーター
Group By: _primaryMesh (1次メッシュコードでメッシュをグループ化し、グループごとにラスターを作成する)
Input is Ordered by Group: Yes (メッシュはグループの順番で入力される)
Size Specification: CellSize (セルサイズを指定する)
X Cell Spacing: 4.5/3600 (セルの幅 = 1/10細分メッシュ区画の幅: 4.5秒)
Y Cell Spacing: 3.0/3600 (セルの高さ = 1/10細分メッシュ区画の高さ: 3.0秒)
Interpretation Type: UInt8 (画素値のデータ型を1バイト符号なし整数にする)
Ground Extents: Use input data ground extents (入力データの範囲をラスターの範囲とする)
-----
注: "Input is Ordered by Group" パラメーターを Yes に設定したときに、"Group By" パラメーターに設定した属性名中の日本語文字が正しく認識されないという不具合が確認されています。そのため、1次メッシュコードを格納する属性の名前 "_primaryMesh" は英文字だけにしました。
[2017-04-06] この不具合は FME 2017.0 で解消されました。
-----
AttributeFileReader は、データフローの途中で外部ファイルからデータを読み込み、その値を格納した属性をフィーチャーに与えます。ここでは、テキストファイルに記述した次のRGB24カラーパレット定義を読み込み、「パレット」属性に格納しました。RasterPaletteAdder はこれに基づいてラスターにパレットを設定します。
パレット定義の記述方法及びサンプルは RasterPaletteExtractor のヘルプを参照してください。
-----
RGB24
0 255,255,255
1 85,170,0
2 255,255,0
3 0,100,0
4 170,85,0
5 255,170,0
6 170,170,170
7 170,0,170
8 170,170,0
9 0,170,255
10 255,170,127
11 0,0,255
12 170,255,127
-----
GEOTIFF ライターフィーチャータイププロパティ設定画面で、出力先フィーチャータイプ名 (Raster File Name) として "_primaryMesh" を選択することにより、1次メッシュコードが出力先のファイル名になります。
GEOTIFF ライターフィーチャータイププロパティ設定画面
全てのデータを変換して全国分のファイルをひとつのフォルダに保存しておけば、メッシュ区画ごとに使用するだけでなく、任意の地域のデータを抽出することも迅速にできるようになります。
例えば、次のワークスペースは、任意のデータから読み込まれたジオメトリをカバーする範囲の土地利用ラスターを作成するものです。
FMEワークスペース例
処理結果例: 四国4県の区域をカバーする範囲の土地利用ラスター
国土数値情報 土地利用細分メッシュ (平成21年) に基づき作成
必要であればラスターの各セル(1/10細分メッシュ区画)を RasterCellCoercer によって画素値を属性として持つポリゴンやポイントに変換し、さらに、Joiner によって前出のCSV対応表を結合して画素値に対応する元の土地利用種別コードを復元したりその意味(土地利用種別文字列)を格納した属性を追加したりすることもできます。
カラーパレットの定義は変更あるいは削除できるので、ラスターの色はそれほど重要ではありません。セルサイズをメッシュ区画と等しくし、元の属性値(土地利用種別コード)と 1:1 で対応する画素値を設定することにより、元のデータと等価なラスターに変換できるということがポイントです。
1バイト符号なし整数1バンドの Geotiff 形式だと、1ファイル (1次メッシュ区画) あたり最大でも64万画素約630KB、全国分175ファイルのサイズの合計は63MB程度です。広い意味でのデータ圧縮とも言えます。
データを提供するためのファイルフォーマットとしては汎用性が高い XML や Shapefile が妥当ですが、利用者側では、元のデータと等価でありながらも軽量なラスターに変換してストックしておくと、必要なときに必要な部分を素早く抽出することができるなど、何かと便利かも知れません。
後記: 全国175区画のデータを全て変換するのにはやや時間がかかりますが、それはマシンが行うことなので問題ではありません。手作業が必要な工程の中では、おそらく国土数値情報ダウンロードサイトから175ファイルをダウンロードするのが最も単調でつまらないものだと思います。
しかし、現在試行段階の「国土数値情報 API」の本格運用が始まれば、国土数値情報データファイルのダウンロードもFMEによって自動化できるようになります。
時機が到来したらそれについての記事も掲載したいと思います。
[2017-04-07] 「メッシュデータのラスター化 - 土地利用細分メッシュ [更新]」につづく。
0 件のコメント:
コメントを投稿