HDF
データセット6 -50
(1)
通常の3
次元データセットの出力例sample3_make_L2Lproduct.c : Pixel Data Quality
データセット出力(抜粋)...
/** Number of Geophysical Data. */
#define GEO_DATA_LAYER_NUM (3) ...
/* Pixel Data Quality
* (type size * Number of Geophysical Data[1...3] * Numbef of scans * 243) */
p_dataset->p_pixel_quality = (unsigned char *) malloc(
GEO_DATA_LAYER_NUM * scan_size * AM2_DEF_SNUM_LO);
if (NULL == p_dataset->p_pixel_quality) {
E_MSG("malloc() error.\n");
return RET_ERROR;
} ...
/* Pixel Data Quality */
{
dimsize[0] = GEO_DATA_LAYER_NUM; /* 1 ... 3 */
dimsize[1] = scan_size;
dimsize[2] = AM2_DEF_SNUM_LO; /* binary (1byte) */
ret = AMTK_setDimSize(file_id, AM2_PIX_QUAL, dimsize);
if (0 > ret)
{
E_MSG("AMTK_setDimSize() error.[%d]\n", ret);
terminate(file_id, &dataset);
exit(EXIT_FAILURE);
}
ret = AMTK_set_SwathUChar(file_id, dataset.p_pixel_quality, scan_start, scan_end, AM2_PIX_QUAL);
if (0 > ret)
{
E_MSG("AMTK_set_SwathUChar() error.[%d]\n", ret);
terminate(file_id, &dataset);
exit(EXIT_FAILURE);
}
}
●変数の宣言
この例では、出力するPixel Data Qualityデータセット の物理量(レイヤー)数を3とします。
●メモリ領域の確保
出力するデータセットの領域を確保します。
malloc()にてレイヤー数 * スキャン数 * ピクセル数サ
イズのメモリ領域を確保します。
●データセットの作成
出力するディメンジョンサイズを設定します。
このとき、2次元目にスキャン数を指定します。
1次元目: レイヤー数 2次元目: スキャン数 3次元目: ピクセル数
AM2_PIX_QUALアクセスラベルを使用して、レイヤー数 *
スキャン数 * ピクセル数のサイズの3次元データセット を出力します。
●データの書き込み
出力するデータセットの値を設定します。
6 -51
(2)
物理量に関する3
次元データセットの出力例sample3_make_L2Lproduct.c :Geophysical Data
データセット出力(抜粋)...
/** Number of Geophysical Data. */
#define GEO_DATA_LAYER_NUM (3) ...
/* Access label: Geophysical Data */
const int geo_data_label[] = {AM2_SWATH_GEO1, AM2_SWATH_GEO2, AM2_SWATH_GEO3};
...
/* Geophysical Data (Layer: 1...3) * (type size * Number of scans * 243) */
for (i = 0; i < GEO_DATA_LAYER_NUM; i++) {
p_dataset->p_geo_data[i] = (float *) malloc(sizeof(float) * scan_size
* AM2_DEF_SNUM_LO);
if (NULL == p_dataset->p_geo_data[i])
{
E_MSG("malloc() error.\n");
return RET_ERROR;
}
} ...
/* Geophysical Data (Layer: 1...3) */
{
dimsize[0] = scan_size;
dimsize[1] = AM2_DEF_SNUM_LO;
dimsize[2] = GEO_DATA_LAYER_NUM; /* 1 ... 3 */
/* Layer: ALL -> AM2_SWATH_GEOA */
ret = AMTK_setDimSize(file_id, AM2_SWATH_GEOA, dimsize);
if (0 > ret)
{
E_MSG("AMTK_setDimSize() error.[%d]\n", ret);
terminate(file_id, &dataset);
exit(EXIT_FAILURE);
}
/* Layer: 1...3 -> AM2_SWATH_GEO1 ... AM2_SWATH_GEO3 */
for (i = 0; i < GEO_DATA_LAYER_NUM; i++)
{
●変数の宣言
この例では、出力するGeophysical Dataデータセットの 物理量(レイヤー)数を3とします。
Geophysial Dataデータセットの1~3層へのアクセスラ ベルを宣言します。
●メモリ領域の確保
出力するデータセットの領域を確保します。
mallocにてスキャン数 * ピクセル数サイズのメモリ領
域を、計3層分確保します。
●データセットの作成
出力するディメンジョンサイズを設定します。
このとき、1次元目にスキャン数を指定します。
1次元目: スキャン数 2次元目: ピクセル数 3次元目: レイヤー数
AM2_SWATH_GEOAアクセスラベルを使用して、スキャン数
* ピクセル数 * レイヤー数のサイズの3次元データセッ
トを出力します。
●データの書き込み
出力するデータセットの値を設定します。
6 -52
ret = AMTK_set_SwathFloat(file_id, dataset.p_geo_data[i], scan_start,
scan_end, geo_data_label[i]);
if (0 > ret)
{
E_MSG("AMTK_set_SwathFloat() error.[%d]\n", ret);
terminate(file_id, &dataset);
exit(EXIT_FAILURE);
}
}
} ...
Geophysial Dataデータセットの1~3層へのアクセスラ ベルを使用して、スキャン数 * ピクセル数の2次元デー タセットの値を計3層分出力します。
6 -53
6.1.2.2 Pixel Data Quality
データセット格納方法AMTK
を使用してPixel Data Quality
データセットを入出力するとき、C
言語はunsigned char
型、Fortran
はcharacter
型の配列 を使用し、各要素のbit
に設定すべき値を格納します。L1
のPixel Data Quality 6 to 36
は16bit
単位(
配列サイズ=2)
、Pixel Data Quality 89
は8bit
単位(
配列サイズ=1)
で意味のある値と なります。配列の各要素のbit
に設定すべき値を、図6-3
に示します。0: 正常
1 : RFI混入データ 1bit
6 GHz-V 6 GHz-H 10 GHz-V 10 GHz-H
18 GHz-V 18 GHz-H 23 GHz-V 23 GHz-H
36 GHz-V 36 GHz-H 89 GHzA-V 89 GHzA-H
7 GHz-V 7 GHz-H
89 GHzB-V 89 GHzB-H
(LSB)
(LSB) (MSB)
(MSB)
図 6-3 L1 の Pixel Data Quality 6 to 36, 89 の格納イメージ
尚、
HDF
ファイルへの入出力は1byte
単位で行われます。L1
のPixel Data Quality 6 to 36
、Pixel Data Quality 89
のデータセットと配列の対応イメージを、図6-4
に示します。Pixel Data Quality 6 to 36
Pixel Data Quality 89
6 -54
図 6-4 L1 の Pixel Data Quality 6 to 36, 89 のデータセットと配列の対応イメージ
Pixel Data Quality 89(AM2_PIX_QUAL_HI)
配列サイズ: scan * (486pixel * 1byte)Pixel Data Quality 6 to 36 (AM2_PIX_QUAL_LO)
配列サイズ: scan * (243pixel * 2byte)
1 0 1 0 1 0
1010101 01010101
1 0 0 1 0 1 0 1 2 3 4 5 6 7 8 9 10 11
0 1 0 1 12 13 14 15
7 6 5 4 3 2 1 0 5 4 3 2 1 0 9 8 1 1 1 1 1 1
1 0 1 0 1 0
01010101
1 0 0 1 2 3 4 5 6 7
7 6 5 4 3 2 1 0 配列の1要素目がデータセットの1byte目に対応する。
配列の2要素目がデータセットの2byte目に対応する。
配列の1要素目がデータセットの1byte目に対応する。
... * 243pixel
... * 243pixel
6.1.3
プロダクト関連プロダクトに関するデータ定義を表に示します。
名前 値 説明 備考
サ ン プ ル 数