File: he5_za_writedata.c

package info (click to toggle)
hdf-eos5 2%3A2.0-5
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 14,692 kB
  • sloc: ansic: 92,051; fortran: 31,463; sh: 11,395; makefile: 492
file content (140 lines) | stat: -rwxr-xr-x 4,538 bytes parent folder | download | duplicates (9)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
/*
 ----------------------------------------------------------------------------
 |    Copyright (C) 2002   Emergent IT Inc. and Raytheon Systems Company    |
 ----------------------------------------------------------------------------
 */


#include  <HE5_HdfEosDef.h>


/*  In this program we (1) open the "ZA.he5" file, (2) attach to the    */
/*  "ZA1" za, and (3) write data to the "Spectra" fields. Also, set up */
/*  the global, group, and local attributes                            */
/*  ------------------------------------------------------------------ */


int main()
{
  herr_t          status = FAIL;

  int             i, j, k;
  int             attr1[4] = {1, 2, 3, 4};         /* global attribute */
  int             attr2[4] = {10, 20, 30, 40};     /* group attribute  */
  int             attr3[4] = {100, 200, 300, 400}; /* local attribute  */

  hid_t           zafid = FAIL;
  hid_t           ZAid  = FAIL;

  char            attr4[7]; /* Global 'char' attribute */
 
  long            attr5[4] = {1111111L,2222222L,3333333L,4444444L};/* Global 'long' attribute   */ 

  double          attr6[4] = {1.111111,2.222222,3.333333,4.444444};/* Global 'double' attribute */

  hssize_t        start[3];
    
  hsize_t         count[3];

  double          plane[15][40][20];

  const char *charname[10] = {
        "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
        "BBBBBBBBBBBBBBBB",
        "CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC",
        "DDDDDDDDDDDDDDDDDDDD",
        "EEEEEEEE",
        "FFFFFFFFFFFFF",
        "GGGGGGGGGGGGG",
        "HHHHHHHHHH",
        "IIIIIII",
        "JJJJJJJJJJJJJ"
      };


  /* Populate spectra data array. Value = 100*(track index)+(band index) */
  /* ------------------------------------------------------------------- */
  for (i = 0; i < 15; i++)
  {
	  for (j = 0; j < 40; j++)
		for (k = 0; k < 20; k++)
		  plane[i][j][k] = (double)(j*100 + i);
  }
	
	
  /* Open the HDF za file, "ZA.he5" */
  /* ----------------------------- */
  zafid = HE5_ZAopen("ZA.he5", H5F_ACC_RDWR);
  if (zafid != FAIL)
	{
	  /* Attach the "ZA1" za */
	  /* ------------------- */
	  ZAid = HE5_ZAattach(zafid, "ZA1");
	  if (ZAid != FAIL)
		{
		  /* Write Spectra Field */
		  /* ------------------- */
		  start[0] = 0;      count[0] = 15;
		  start[1] = 0;      count[1] = 40;
		  start[2] = 0;      count[2] = 20;
			
		  status = HE5_ZAwrite(ZAid, "Spectra", start, NULL, count, plane);
		  printf("status returned by HE5_ZAwrite(\"Spectra\"):           %d\n", status);

            start[0] = 0;
            count[0] = 10;
                  status = HE5_ZAwrite(ZAid, "Test_string", start, NULL, count, charname);
                  printf("status returned by HE5_ZAwrite(\"Test_string\"):              %d\n", status);
            
		  /* Write Global 'int' Attribute */
		  /* ---------------------------- */
		  count[0] = 4;
		  status = HE5_ZAwriteattr(ZAid, "GlobalAttribute", H5T_NATIVE_INT, count, attr1);
		  printf("status returned by HE5_ZAwriteattr(\"GlobalAttribute\"):    %d\n", status);

		  /* Write Global 'char' Attribute */
		  /* ----------------------------- */
                  strcpy(attr4,"ABCDEF");
		  count[0] = 6;
		  status = HE5_ZAwriteattr(ZAid, "GLOBAL_CHAR_ATTR", H5T_NATIVE_CHAR, count, attr4);
		  printf("status returned by HE5_ZAwriteattr(\"GLOBAL_CHAR_ATTR\"):   %d\n", status);
			
		  /* Write Global 'long' Attribute */
		  /* ----------------------------- */
		  count[0] = 4;
		  status = HE5_ZAwriteattr(ZAid, "GLOBAL_LONG_ATTR", H5T_NATIVE_LONG, count, attr5);
		  printf("status returned by HE5_ZAwriteattr(\"GLOBAL_LONG_ATTR\"):   %d\n", status);

		  /* Write Global 'double' Attribute */
		  /* ------------------------------- */
		  count[0] = 4;
		  status = HE5_ZAwriteattr(ZAid, "GLOBAL_DOUBLE_ATTR", H5T_NATIVE_DOUBLE, count, attr6);
		  printf("status returned by HE5_ZAwriteattr(\"GLOBAL_DOUBLE_ATTR\"): %d\n", status);

		  /* Write Group Attribute */
		  /* --------------------- */
		  status = HE5_ZAwritegrpattr(ZAid, "GroupAttribute", H5T_NATIVE_INT, count, attr2);
		  printf("status returned by HE5_ZAwritegrpattr(\"GroupAttribute\"):  %d\n", status);

		  /* Write Local Attribute */
		  /* --------------------- */
		  status = HE5_ZAwritelocattr(ZAid, "Density", "LocalAttribute", H5T_NATIVE_INT, count, attr3);
		  printf("status returned by HE5_ZAwritelocattr(\"LocalAttribute\"):%d\n", status);

		}
	}
	
  status = HE5_ZAdetach(ZAid);
  status = HE5_ZAclose(zafid);

  return 0;
}