PCS‘h/home/pascal/depot/filedata/ext/libpolder/ress/dqx.hQ-?Lp/home/pascal/depot/filedata/ext/libpolder/ress/dqx_fty.hQ-A­n/home/pascal/depot/filedata/ext/libpolder/ress/polder.hQ-D.v/home/pascal/depot/filedata/ext/libpolder/ress/polder_fty.hQ-IТz/home/pascal/depot/filedata/ext/libpolder/src/EndianSwap/IO.cQ›PЅ|/home/pascal/depot/filedata/ext/libpolder/src/EndianSwap/mem.cQЗ‘Џ~/home/pascal/depot/filedata/ext/libpolder/src/EndianSwap/swap.cQ›Эˆ/home/pascal/depot/filedata/ext/libpolder/src/EndianSwap/swapfloat.cQ›дb„/home/pascal/depot/filedata/ext/libpolder/src/EndianSwap/swapint.cQ›р[l/home/pascal/depot/filedata/ext/libpolder/src/polder.cQїя d/home/pascal/depot/filedata/src/caliopfiledata.cppOgJ"Qл`/home/pascal/depot/filedata/src/caliopfiledata.hOc4Apюb/home/pascal/depot/filedata/src/ceresfiledata.cppOg‚E^/home/pascal/depot/filedata/src/ceresfiledata.hOc1й0 h/home/pascal/depot/filedata/src/cloudsatfiledata.cppOg‚кd/home/pascal/depot/filedata/src/cloudsatfiledata.hOc1йВ‰d/home/pascal/depot/filedata/src/dardarfiledata.cppOg+ Œ`/home/pascal/depot/filedata/src/dardarfiledata.hOc1йЏP/home/pascal/depot/filedata/src/date.cppOc1йƒvL/home/pascal/depot/filedata/src/date.hOc1йЏ b/home/pascal/depot/filedata/src/ecmwffiledata.cppOЇ’Е2{^/home/pascal/depot/filedata/src/ecmwffiledata.hOЇ’HEєZ/home/pascal/depot/filedata/src/epr/epr_api.cOOœљВZ/home/pascal/depot/filedata/src/epr/epr_api.hOOœ$\/home/pascal/depot/filedata/src/epr/epr_band.cOOœm\/home/pascal/depot/filedata/src/epr/epr_band.hOOœгb/home/pascal/depot/filedata/src/epr/epr_bitmask.cOOœpb/home/pascal/depot/filedata/src/epr/epr_bitmask.hOOœS\/home/pascal/depot/filedata/src/epr/epr_core.cOOœnе\/home/pascal/depot/filedata/src/epr/epr_core.hOOœ+b/home/pascal/depot/filedata/src/epr/epr_dataset.cOOœЃ,b/home/pascal/depot/filedata/src/epr/epr_dataset.hOOœЛ\/home/pascal/depot/filedata/src/epr/epr_dddb.cHлQГМы\/home/pascal/depot/filedata/src/epr/epr_dddb.hOGZ BZ/home/pascal/depot/filedata/src/epr/epr_dsd.cOOœJCZ/home/pascal/depot/filedata/src/epr/epr_dsd.hOOœqV\/home/pascal/depot/filedata/src/epr/epr_dump.cOOœs“^/home/pascal/depot/filedata/src/epr/epr_field.cOOœ† ^/home/pascal/depot/filedata/src/epr/epr_field.hOOœЄџ\/home/pascal/depot/filedata/src/epr/epr_msph.cOOœЈ\/home/pascal/depot/filedata/src/epr/epr_msph.hOOœУК^/home/pascal/depot/filedata/src/epr/epr_param.cOOœХИ^/home/pascal/depot/filedata/src/epr/epr_param.hOOœжПb/home/pascal/depot/filedata/src/epr/epr_product.cOOœкyd/home/pascal/depot/filedata/src/epr/epr_ptrarray.cOOœі+d/home/pascal/depot/filedata/src/epr/epr_ptrarray.hOOœ}`/home/pascal/depot/filedata/src/epr/epr_record.cOOœХ`/home/pascal/depot/filedata/src/epr/epr_record.hOOœ!Я`/home/pascal/depot/filedata/src/epr/epr_string.cOOœ%]`/home/pascal/depot/filedata/src/epr/epr_string.hOOœFи\/home/pascal/depot/filedata/src/epr/epr_swap.cOOœI@\/home/pascal/depot/filedata/src/epr/epr_swap.hOOœ`аb/home/pascal/depot/filedata/src/epr/epr_typconv.cOOœbЮb/home/pascal/depot/filedata/src/file_exceptions.hOO+ɘ\/home/pascal/depot/filedata/src/file_tools.cppOO+ дX/home/pascal/depot/filedata/src/file_tools.hOO+ ‹X/home/pascal/depot/filedata/src/filedata.cppOhE 1ТT/home/pascal/depot/filedata/src/filedata.hOhE1 <Їf/home/pascal/depot/filedata/src/filedataexception.hOc43 Кd/home/pascal/depot/filedata/src/filedatareader.cppOO+ i_`/home/pascal/depot/filedata/src/filedatareader.hOO+ nЪZ/home/pascal/depot/filedata/src/g_exception.hOc1к !v/home/pascal/depot/filedata/src/geometry/earth_geometry.cppOW$ ŸЋr/home/pascal/depot/filedata/src/geometry/earth_geometry.hOW( Ѓжj/home/pascal/depot/filedata/src/geometry/geometry.cppOXiЛ Лf/home/pascal/depot/filedata/src/geometry/geometry.hOg$ф t/home/pascal/depot/filedata/src/geometry/geometry_common.hOWZ z/home/pascal/depot/filedata/src/geometry/viewing_geometry.cppOW‚k Dv/home/pascal/depot/filedata/src/geometry/viewing_geometry.hOW‚X (е`/home/pascal/depot/filedata/src/gmaofiledata.cppOO+ eo\/home/pascal/depot/filedata/src/gmaofiledata.hOc1л q`/home/pascal/depot/filedata/src/gribfiledata.cppOЇ’П —L\/home/pascal/depot/filedata/src/gribfiledata.hOc5˜ ИG`/home/pascal/depot/filedata/src/hdf5filedata.cppOg‚ uN\/home/pascal/depot/filedata/src/hdf5filedata.hOc4Ѓ ™u^/home/pascal/depot/filedata/src/hdffiledata.cppOc5Д УFZ/home/pascal/depot/filedata/src/hdffiledata.hOc4c ьzf/home/pascal/depot/filedata/src/hdffilemetadata.cppOcQаь^b/home/pascal/depot/filedata/src/hdffilemetadata.hOcQаэf/home/pascal/depot/filedata/src/hdfmetadatanode.cppOO+T b/home/pascal/depot/filedata/src/hdfmetadatanode.hOO+bu^/home/pascal/depot/filedata/src/iirfiledata.cppOg ‚ўZ/home/pascal/depot/filedata/src/iirfiledata.hOc4ЃЂѕ^/home/pascal/depot/filedata/src/interpolation.hOc1кЌV/home/pascal/depot/filedata/src/logfile.cppOc1к)€R/home/pascal/depot/filedata/src/logfile.hOc1к1—b/home/pascal/depot/filedata/src/merisfiledata.cppOgДB.^/home/pascal/depot/filedata/src/merisfiledata.hOc4Ѓgb/home/pascal/depot/filedata/src/meteofiledata.cppOg‚“^/home/pascal/depot/filedata/src/meteofiledata.hOc1кЇЈb/home/pascal/depot/filedata/src/modisfiledata.cppOg$Тђ'^/home/pascal/depot/filedata/src/modisfiledata.hOc6фd/home/pascal/depot/filedata/src/netcdffiledata.cppOc6д‡Ж`/home/pascal/depot/filedata/src/netcdffiledata.hOc4ЃЁQ^/home/pascal/depot/filedata/src/observation.cppO_GРлZ/home/pascal/depot/filedata/src/observation.hO_GРЪђ^/home/pascal/depot/filedata/src/omifiledata.cppOg‚ч7Z/home/pascal/depot/filedata/src/omifiledata.hOc4Ѓќ^/home/pascal/depot/filedata/src/parasoldata.cppOc4ЃQпZ/home/pascal/depot/filedata/src/parasoldata.hOc4Ѓhаf/home/pascal/depot/filedata/src/parasolfiledata.cppOhEЋЇYb/home/pascal/depot/filedata/src/parasolfiledata.hOhE_ j/home/pascal/depot/filedata/src/parasolfileformat.cppOXpЬОНf/home/pascal/depot/filedata/src/parasolfileformat.hOO+мцj/home/pascal/depot/filedata/src/parasolfilereader.cppOg‚oуf/home/pascal/depot/filedata/src/parasolfilereader.hOb…Ќj/home/pascal/depot/filedata/src/parasolfilerecord.cppObєЦВf/home/pascal/depot/filedata/src/parasolfilerecord.hOc1лп_b/home/pascal/depot/filedata/src/parasolleader.cppOb*Gт^/home/pascal/depot/filedata/src/parasolleader.hObу[KN/home/pascal/depot/filedata/src/pixel.hOgc‘]\/home/pascal/depot/filedata/src/pmfiledata.cppOhAhя†X/home/pascal/depot/filedata/src/pmfiledata.hOhAhеr/home/pascal/depot/filedata/src/polderparasolfiledata.cppOc7УŒNn/home/pascal/depot/filedata/src/polderparasolfiledata.hOc4ЃЖ,j/home/pascal/depot/filedata/src/satellitefiledata.cppOW…*ѓKf/home/pascal/depot/filedata/src/satellitefiledata.hOg‚ћ6V/home/pascal/depot/filedata/src/statistic.hOc1кXrR/home/pascal/depot/filedata/src/tools.cppOfєЪyN/home/pascal/depot/filedata/src/tools.hOfєЪŒѓd/home/pascal/depot/filedata/src/tools_exceptions.hOO+Пx/home/pascal/depot/filedata/test/test_caliop_l1_filedata.cppOcQа)p/home/pascal/depot/filedata/test/test_caliopfiledata.cppOc1л.wn/home/pascal/depot/filedata/test/test_ceresfiledata.cppOc1л2ђt/home/pascal/depot/filedata/test/test_cloudsatfiledata.cppOc7т7_p/home/pascal/depot/filedata/test/test_dardarfiledata.cppOc7т;і\/home/pascal/depot/filedata/test/test_date.cppOc1л@qn/home/pascal/depot/filedata/test/test_ecmwffiledata.cppOc7тEрh/home/pascal/depot/filedata/test/test_file_tools.cppOO+Jšd/home/pascal/depot/filedata/test/test_geometry.cppOg‚Nнl/home/pascal/depot/filedata/test/test_gmaofiledata.cppOc1лTBl/home/pascal/depot/filedata/test/test_gribfiledata.cppOcHуXЁl/home/pascal/depot/filedata/test/test_hdf5filedata.cppOc4b]j/home/pascal/depot/filedata/test/test_hdffiledata.cppOgb2b/home/pascal/depot/filedata/test/test_logfile.cppOO+fАn/home/pascal/depot/filedata/test/test_modisfiledata.cppOgjЩz/home/pascal/depot/filedata/test/test_modisfiledata_myd06.cppOg%Ko6|/home/pascal/depot/filedata/test/test_modisfiledata_mydqkm.cppOgsпh/home/pascal/depot/filedata/test/test_parasol_l1.cppOhAix’j/home/pascal/depot/filedata/test/test_parasol_ls2.cppOc4b|щj/home/pascal/depot/filedata/test/test_parasol_oc2.cppOcWPJj/home/pascal/depot/filedata/test/test_parasol_rb2.cppOhAi…Ћr/home/pascal/depot/filedata/test/test_parasolfiledata.cppOhAiŠ h/home/pascal/depot/filedata/test/test_pmfiledata.cppOfь}Ž•^/home/pascal/depot/filedata/test/test_tools.cppOc1л’иh/home/pascal/depot/filedata/ext/libpolder/ress/dqx.h%{СоHџџџџ)—PeмŽ B1_DIR  32768h/home/pascal/depot/filedata/ext/libpolder/ress/dqx.hh/home/pascal/depot/filedata/ext/libpolder/ress/dqx.hО"Yh/home/pascal/depot/filedata/ext/libpolder/ress/dqx.hџџџџџџџџџџџџp/home/pascal/depot/filedata/ext/libpolder/ress/dqx_fty.h%{СоHџџџџ)—PeмŽ B1_DIR  32768p/home/pascal/depot/filedata/ext/libpolder/ress/dqx_fty.hp/home/pascal/depot/filedata/ext/libpolder/ress/dqx_fty.hYЙYлp/home/pascal/depot/filedata/ext/libpolder/ress/dqx_fty.hџџџџџџџџџџџџn/home/pascal/depot/filedata/ext/libpolder/ress/polder.h%{СоHџџџџ(cLЇчŒSB L 1073741824 /* signed word encoding */n/home/pascal/depot/filedata/ext/libpolder/ress/polder.h зW~ФЕЬR2_TAB_IЫ 8192n/home/pascal/depot/filedata/ext/libpolder/ress/polder.h зW…GqјR2_TAB_JЬ 512n/home/pascal/depot/filedata/ext/libpolder/ress/polder.hщƒ%ФЕЬR3_TAB_I 8192n/home/pascal/depot/filedata/ext/libpolder/ress/polder.hщƒ,GqјR3_TAB_J 512n/home/pascal/depot/filedata/ext/libpolder/ress/polder.h\ˆ"/+__cplusplus1џџџџn/home/pascal/depot/filedata/ext/libpolder/ress/polder.hЩёn/home/pascal/depot/filedata/ext/libpolder/ress/polder.hџџџџџџџџџџџџv/home/pascal/depot/filedata/ext/libpolder/ress/polder_fty.h%{СоHџџџџ(cТS wSB{ 1073741824 v/home/pascal/depot/filedata/ext/libpolder/ress/polder_fty.h зW~ФЕЬR2_TAB_I– 8192v/home/pascal/depot/filedata/ext/libpolder/ress/polder_fty.h зW…GqјR2_TAB_J— 512v/home/pascal/depot/filedata/ext/libpolder/ress/polder_fty.hщƒ%ФЕЬR3_TAB_I 8192v/home/pascal/depot/filedata/ext/libpolder/ress/polder_fty.hщƒ,GqјR3_TAB_J 512v/home/pascal/depot/filedata/ext/libpolder/ress/polder_fty.h+ЗyДQАkLIST_01e (1*16777216) v/home/pascal/depot/filedata/ext/libpolder/ress/polder_fty.h?Ы=6G"љO3_STAU865_GCI 29 v/home/pascal/depot/filedata/ext/libpolder/ress/polder_fty.hv/home/pascal/depot/filedata/ext/libpolder/ress/polder_fty.hholдv/home/pascal/depot/filedata/ext/libpolder/ress/polder_fty.hџџџџџџџџџџџџ~stdio.hstdlib.hconfig.hEndianSwap/IO.h(EndianSwap/swapint.h,EndianSwap/swapfloat.hz/home/pascal/depot/filedata/ext/libpolder/src/EndianSwap/IO.c%{кћјџџџџ,EndianSwap/swapfloat.hћY0(EndianSwap/swapint.hCR=еEndianSwap/IO.h7MДзstdio.hЏЬІ‰z/home/pascal/depot/filedata/ext/libpolder/src/EndianSwap/IO.cэдA3config.hхЩLstdlib.hЌšЅјz/home/pascal/depot/filedata/ext/libpolder/src/EndianSwap/IO.cџџџџџџџџџџџџ ES_fread_doublez/home/pascal/depot/filedata/ext/libpolder/src/EndianSwap/IO.cSuO–**************************************************************************** ES_fread_double ################ Read double data from a stream. The data are swapped from big-endian to little-endian representation. The reading is performed like the standard fread function. IN: size_t nmemb : number of double values to read. OUT: double *buf : pointer to the memory space that will receive the data. INOUT: FILE * stream : stream to read the data. RETURN: size_t : the number of double values successfully read. ***************************************************************************џџџџbufџџџџџџџџdouble*џџџџ nmembџџџџџџџџ size_tџџџџ streamџџџџџџџџ FILE*џџџџ size_tES_fread_floatz/home/pascal/depot/filedata/ext/libpolder/src/EndianSwap/IO.c.OOŒ**************************************************************************** ES_fread_float ################ Read float data from a stream. The data are swapped from big-endian to little-endian representation. The reading is performed like the standard fread function. IN: size_t nmemb : number of float values to read. OUT: float *buf : pointer to the memory space that will receive the data. INOUT: FILE * stream : stream to read the data. RETURN: size_t : the number of float values successfully read. ***************************************************************************џџџџobufџџџџџџџџ float*џџџџ nmembџџџџџџџџ size_tџџџџ streamџџџџџџџџ FILE*џџџџ size_tES_fread_intz/home/pascal/depot/filedata/ext/libpolder/src/EndianSwap/IO.c +Ox**************************************************************************** ES_fread_int ################ Read int data from a stream. The data are swapped from big-endian to little-endian representation. The reading is performed like the standard fread function. IN: size_t nmemb : number of int values to read. OUT: int *buf : pointer to the memory space that will receive the data. INOUT: FILE * stream : stream to read the data. RETURN: size_t : the number of int values successfully read. ***************************************************************************џџџџebufџџџџџџџџint*џџџџ nmembџџџџџџџџ size_tџџџџ streamџџџџџџџџ FILE*џџџџ size_tES_fread_shortz/home/pascal/depot/filedata/ext/libpolder/src/EndianSwap/IO.cфOŒ**************************************************************************** ES_fread_short ################ Read short data from a stream. The data are swapped from big-endian to little-endian representation. The reading is performed like the standard fread function. IN: size_t nmemb : number of short values to read. OUT: short *buf : pointer to the memory space that will receive the data. INOUT: FILE * stream : stream to read the data. RETURN: size_t : the number of short values successfully read. ***************************************************************************џџџџЕїсbufџџџџџџџџ short*џџџџ nmembџџџџџџџџ size_tџџџџ streamџџџџџџџџ FILE*џџџџ size_tES_fread_swapz/home/pascal/depot/filedata/ext/libpolder/src/EndianSwap/IO.cw…Ў**************************************************************************** ES_fread_swap ################ Read data from a stream. The data are swapped from big-endian to little-endian representation. The reading is performed like the standard fread function. IN: size_t size : size of the data type size_t nmemb : number of values to read. OUT: short *buf : pointer to the memory space that will receive the data. INOUT: FILE * stream : stream to read the data. RETURN: size_t : the number of values successfully read. ***************************************************************************џџџџbufџџџџџџџџdouble*џџџџsizeџџџџџџџџ size_tџџџџ nmembџџџџџџџџ size_tџџџџ streamџџџџџџџџ FILE*џџџџ size_t ES_fwrite_doublez/home/pascal/depot/filedata/ext/libpolder/src/EndianSwap/IO.c”КO‚**************************************************************************** ES_fwrite_double ################ Write double values to a file from little-endian memory representation to big endian representation in file. The writing is performed like the standard fwrite function. IN: const double *buf : pointer to the double values to write size_t nmemb : number of values to write. INOUT: FILE * stream : stream to write the data. RETURN: size_t : the number of double values successfully written. ***************************************************************************џџџџџџџ€bufџџџџџџџџconst double*џџџџ nmembџџџџџџџџ size_tџџџџ streamџџџџџџџџ FILE*џџџџ size_tES_fwrite_floatz/home/pascal/depot/filedata/ext/libpolder/src/EndianSwap/IO.cn’Ov**************************************************************************** ES_fwrite_float ############### Write float values to a file from little-endian memory representation to big endian representation in file. The writing is performed like the standard fwrite function. IN: const float *buf : pointer to the float values to write size_t nmemb : number of values to write. INOUT: FILE * stream : stream to write the data. RETURN: size_t : the number of float values successfully written. ***************************************************************************џџџџџџџ€bufџџџџџџџџconst float*џџџџ nmembџџџџџџџџ size_tџџџџ streamџџџџџџџџ FILE*џџџџ size_tES_fwrite_intz/home/pascal/depot/filedata/ext/libpolder/src/EndianSwap/IO.cGlO^**************************************************************************** ES_fwrite_int ############# Write int values to a file from little-endian memory representation to big endian representation in file. The writing is performed like the standard fwrite function. IN: const int *buf : pointer to the int values to write size_t nmemb : number of values to write. INOUT: FILE * stream : stream to write the data. RETURN: size_t : the number of int values successfully written. ***************************************************************************џџџџЕ№bufџџџџџџџџconst int*џџџџ nmembџџџџџџџџ size_tџџџџ streamџџџџџџџџ FILE*џџџџ size_tES_fwrite_shortz/home/pascal/depot/filedata/ext/libpolder/src/EndianSwap/IO.c"EOv**************************************************************************** ES_fwrite_short ############### Write short values to a file from little-endian memory representation to big endian representation in file. The writing is performed like the standard fwrite function. IN: const short *buf : pointer to the short values to write size_t nmemb : number of values to write. INOUT: FILE * stream : stream to write the data. RETURN: size_t : the number of short values successfully written. ***************************************************************************џџџџbufџџџџџџџџconst short*џџџџ nmembџџџџџџџџ size_tџџџџ streamџџџџџџџџ FILE*џџџџ size_tES_fwrite_swapz/home/pascal/depot/filedata/ext/libpolder/src/EndianSwap/IO.cМтO–**************************************************************************** ES_fwrite_swap ############## Write values to a file from little-endian memory representation to big endian representation in file. The writing is performed like the standard fwrite function. IN: const void *buf : pointer to the values to write size_t size : size of the data type. size_t nmemb : number of values to write. INOUT: FILE * stream : stream to write the data. RETURN: size_t : the number of values successfully written. ***************************************************************************џџџџџџџ€bufџџџџџџџџconst void*џџџџsizeџџџџџџџџ size_tџџџџ nmembџџџџџџџџ size_tџџџџ streamџџџџџџџџ FILE*џџџџ size_t€string.hconfig.h EndianSwap/mem.h(EndianSwap/swapint.h,EndianSwap/swapfloat.h|/home/pascal/depot/filedata/ext/libpolder/src/EndianSwap/mem.c%{УљXџџџџ,EndianSwap/swapfloat.hћY0(EndianSwap/swapint.hCR=еstring.h­Ц‰=|/home/pascal/depot/filedata/ext/libpolder/src/EndianSwap/mem.cЫHКconfig.hхЩL EndianSwap/mem.hЌXЭN|/home/pascal/depot/filedata/ext/libpolder/src/EndianSwap/mem.cџџџџџџџџџџџџ  ES_memcpy_double|/home/pascal/depot/filedata/ext/libpolder/src/EndianSwap/mem.c{œNќ**************************************************************************** ES_memcpy_double ############### Copy big-endian double values to little-endian double values. The copy is done like the standard memcpy function. IN: const double * src: pointer to the memory space to be copied size_t count: number of double values to copy OUT: double * dest : pointer to the destination space memory. RETURN: double * : pointer to dest ***************************************************************************џџџџџџџ€destџџџџџџџџdouble*џџџџsrcџџџџџџџџconst double*џџџџ countџџџџџџџџ size_tџџџџdouble*ES_memcpy_float|/home/pascal/depot/filedata/ext/libpolder/src/EndianSwap/mem.c[yOю**************************************************************************** ES_memcpy_float ############### Copy big-endian float values to little-endian float values. The copy is done like the standard memcpy function. IN: const float * src: pointer to the memory space to be copied size_t count: number of float values to copy OUT: float * dest : pointer to the destination space memory. RETURN: float * : pointer to dest ***************************************************************************џџџџndestџџџџџџџџ float*џџџџsrcџџџџџџџџconst float*џџџџ countџџџџџџџџ size_tџџџџ float*ES_memcpy_int|/home/pascal/depot/filedata/ext/libpolder/src/EndianSwap/mem.c;YOв**************************************************************************** ES_memcpy_int ############### Copy big-endian int values to little-endian int values. The copy is done like the standard memcpy function. IN: const int * src: pointer to the memory space to be copied size_t count: number of int values to copy OUT: int * dest : pointer to the destination space memory. RETURN: int * : pointer to dest ***************************************************************************џџџџdestџџџџџџџџint*џџџџsrcџџџџџџџџconst int*џџџџ countџџџџџџџџ size_tџџџџint*ES_memcpy_short|/home/pascal/depot/filedata/ext/libpolder/src/EndianSwap/mem.c:Oь**************************************************************************** ES_memcpy_short ############### Copy big-endian short values to little-endian short values. The copy is done like the standard memcpy function. IN: const short * src: pointer to the memory space to be copied size_t count: number of short values to copy OUT: short * dest : pointer to the destination space memory. RETURN: short * : pointer to dest ***************************************************************************џџџџ Азdestџџџџџџџџ short*џџџџsrcџџџџџџџџconst short*џџџџ countџџџџџџџџ size_tџџџџ short*ES_memcpy_swap|/home/pascal/depot/filedata/ext/libpolder/src/EndianSwap/mem.cžНO**************************************************************************** ES_memcpy_swap ############### Copy big-endian values to little-endian values. The copy is done like the standard memcpy function. IN: const void * src: pointer to the memory space to be copied size_t count: number values to copy size_t size: size of the value basic type. OUT: void * dest : pointer to the destination space memory. RETURN: void * : pointer to dest ***************************************************************************џџџџџџџ€destџџџџџџџџ void*џџџџsrcџџџџџџџџconst void*џџџџ countџџџџџџџџ size_tџџџџsizeџџџџџџџџ size_tџџџџ void*"ES_memmove_double|/home/pascal/depot/filedata/ext/libpolder/src/EndianSwap/mem.c @O**************************************************************************** ES_memmove_double ############### Copy big-endian double values to little-endian double values. The copy is done like the standard memmove function. IN: const double * src: pointer to the memory space to be copied size_t count: number of double values to copy OUT: double * dest : pointer to the destination space memory. RETURN: double * : pointer to dest ***************************************************************************џџџџ хW€destџџџџџџџџdouble*џџџџsrcџџџџџџџџconst double*џџџџ countџџџџџџџџ size_tџџџџdouble* ES_memmove_float|/home/pascal/depot/filedata/ext/libpolder/src/EndianSwap/mem.cџOђ**************************************************************************** ES_memmove_float ############### Copy big-endian float values to little-endian float values. The copy is done like the standard memmove function. IN: const float * src: pointer to the memory space to be copied size_t count: number of float values to copy OUT: float * dest : pointer to the destination space memory. RETURN: float * : pointer to dest ***************************************************************************џџџџdestџџџџџџџџ float*џџџџsrcџџџџџџџџconst float*џџџџ countџџџџџџџџ size_tџџџџ float*ES_memmove_int|/home/pascal/depot/filedata/ext/libpolder/src/EndianSwap/mem.cп§Oж**************************************************************************** ES_memmove_int ############### Copy big-endian int values to little-endian int values. The copy is done like the standard memmove function. IN: const int * src: pointer to the memory space to be copied size_t count: number of int values to copy OUT: int * dest : pointer to the destination space memory. RETURN: int * : pointer to dest ***************************************************************************џџџџ€destџџџџџџџџint*џџџџsrcџџџџџџџџconst int*џџџџ countџџџџџџџџ size_tџџџџint* ES_memmove_short|/home/pascal/depot/filedata/ext/libpolder/src/EndianSwap/mem.cПнOђ**************************************************************************** ES_memmove_short ############### Copy big-endian short values to little-endian short values. The copy is done like the standard memmove function. IN: const short * src: pointer to the memory space to be copied size_t count: number of short values to copy OUT: short * dest : pointer to the destination space memory. RETURN: short * : pointer to dest ***************************************************************************џџџџdestџџџџџџџџ short*џџџџsrcџџџџџџџџconst short*џџџџ countџџџџџџџџ size_tџџџџ short*ES_memmove_swap|/home/pascal/depot/filedata/ext/libpolder/src/EndianSwap/mem.cBP **************************************************************************** ES_memmove_swap ############### Copy big-endian values to little-endian values. The copy is done like the standard memmove function. IN: const void * src: pointer to the memory space to be copied size_t count: number values to copy size_t size: size of the value type. OUT: void * dest : pointer to the destination space memory. RETURN: void * : pointer to dest ***************************************************************************џџџџџџџ€destџџџџџџџџ void*џџџџsrcџџџџџџџџconst void*џџџџ countџџџџџџџџ size_tџџџџsizeџџџџџџџџ size_tџџџџ void*‚string.hstdlib.hconfig.h"EndianSwap/swap.h~/home/pascal/depot/filedata/ext/libpolder/src/EndianSwap/swap.c%{кћјџџџџstring.h­Ц‰=~/home/pascal/depot/filedata/ext/libpolder/src/EndianSwap/swap.c€bjцconfig.hхЩLstdlib.hЌšЅј"EndianSwap/swap.hr}ёj~/home/pascal/depot/filedata/ext/libpolder/src/EndianSwap/swap.cџџџџџџџџџџџџES_swap~/home/pascal/depot/filedata/ext/libpolder/src/EndianSwap/swap.c/ **************************************************************************** ES_swap ############### swap data between big-endian and little-endian representation. IN: size_t size: size of the value type. INOUT: void * val: pointer to the value to swap between big-endian and little-endian. RETURN: short * : pointer to val ***************************************************************************џџџџvalџџџџџџџџ void*џџџџsizeџџџџџџџџconst size_tџџџџ void*„stdlib.hconfig.h,EndianSwap/swapfloat.h(EndianSwap/swapint.h"EndianSwap/swap.hˆ/home/pascal/depot/filedata/ext/libpolder/src/EndianSwap/swapfloat.c%{кћјџџџџ,EndianSwap/swapfloat.hћY0(EndianSwap/swapint.hCR=еˆ/home/pascal/depot/filedata/ext/libpolder/src/EndianSwap/swapfloat.cш*ќconfig.hхЩLstdlib.hЌšЅј"EndianSwap/swap.hr}ёjˆ/home/pascal/depot/filedata/ext/libpolder/src/EndianSwap/swapfloat.cџџџџџџџџџџџџES_swap_doubleˆ/home/pascal/depot/filedata/ext/libpolder/src/EndianSwap/swapfloat.c<R**************************************************************************** ES_swap_double ############### Swap a double value from big-endian representation to little-endian IN: const double *val : pointer to the double value represented as big-endian RETURN: double : double value represented as little-endian. ***************************************************************************џџџџQvalџџџџџџџџconst double*џџџџ doubleES_swap_floatˆ/home/pascal/depot/filedata/ext/libpolder/src/EndianSwap/swapfloat.c:O**************************************************************************** ES_swap_float ############### Swap a float value from big-endian representation to little-endian IN: const float *val : pointer to the float value represented as big-endian RETURN: float : float value represented as little-endian. ***************************************************************************џџџџpawvalџџџџџџџџconst float*џџџџ float†*EndianSwap/byteswap.hconfig.h(EndianSwap/swapint.h„/home/pascal/depot/filedata/ext/libpolder/src/EndianSwap/swapint.c%{кћјџџџџ(EndianSwap/swapint.hCR=е„/home/pascal/depot/filedata/ext/libpolder/src/EndianSwap/swapint.cс*EndianSwap/byteswap.h3^žconfig.hхЩL„/home/pascal/depot/filedata/ext/libpolder/src/EndianSwap/swapint.cџџџџџџџџџџџџES_swap_int„/home/pascal/depot/filedata/ext/libpolder/src/EndianSwap/swapint.c3JOь**************************************************************************** ES_swap_int ############### Swap a int value from big-endian representation to little-endian IN: const int *val : pointer to the int value represented as big-endian RETURN: int : int value represented as little-endian. ***************************************************************************џџџџ*valџџџџџџџџconst int*џџџџintES_swap_long„/home/pascal/depot/filedata/ext/libpolder/src/EndianSwap/swapint.c1Oј**************************************************************************** ES_swap_long ############### Swap a long value from big-endian representation to little-endian IN: const long *val : pointer to the long value represented as big-endian RETURN: long : long value represented as little-endian. ***************************************************************************џџџџ%{valџџџџџџџџconst long*џџџџlongES_swap_short„/home/pascal/depot/filedata/ext/libpolder/src/EndianSwap/swapint.cLU**************************************************************************** ES_swap_short ############### Swap a short value from big-endian representation to little-endian IN: const short *val : pointer to the short value represented as big-endian RETURN: short : short value represented as little-endian. ***************************************************************************џџџџQvalџџџџџџџџconst short*џџџџ shortˆ stdio.hstdlib.hstring.hmemory.h math.hstdarg.hunistd.hconfig.hpolder.h.EndianSwap/EndianSwap.hl/home/pascal/depot/filedata/ext/libpolder/src/polder.c%{ФѓXџџџџ'/eqtPIO. 3.14159265358979323846l/home/pascal/depot/filedata/ext/libpolder/src/polder.cКыЯ>Omax' (a>b) ? a : bl/home/pascal/depot/filedata/ext/libpolder/src/polder.cab‘,džYmin* (a<b) ? a : bl/home/pascal/depot/filedata/ext/libpolder/src/polder.cab'eОƒСxFREE$T { if ((A)!=NULL) { free(A); (A)=NULL; } }l/home/pascal/depot/filedata/ext/libpolder/src/polder.cA*љѓшФnMODEG 0x0FFF0000l/home/pascal/depot/filedata/ext/libpolder/src/polder.c.њю\FЊзTYPEH 0x000001FFl/home/pascal/depot/filedata/ext/libpolder/src/polder.cѓ*“ЗCSPATIOTEMPO: 1620l/home/pascal/depot/filedata/ext/libpolder/src/polder.c!ьэ Юљ€аINITPOLDER_F77 …@ F77_FUNC(initpolder,INITPOLDER)l/home/pascal/depot/filedata/ext/libpolder/src/polder.c'’ЌпlМX EXTRACTBLOCK_F77 ‹H F77_FUNC(extractblock,EXTRACTBLOCK)l/home/pascal/depot/filedata/ext/libpolder/src/polder.c+L‹DYE ъ DQX_NBE 0x0F00l/home/pascal/depot/filedata/ext/libpolder/src/polder.c-33пG=У HEADER9 360l/home/pascal/depot/filedata/ext/libpolder/src/polder.c1ХЛZ…n OPT_BRK 0x20000000l/home/pascal/depot/filedata/ext/libpolder/src/polder.c:–Ј=P"ANNOTATION? 13320l/home/pascal/depot/filedata/ext/libpolder/src/polder.cJАэЌGАƒPREPROCESSING= 720l/home/pascal/depot/filedata/ext/libpolder/src/polder.cnSїP"UГSCALING> 13140l/home/pascal/depot/filedata/ext/libpolder/src/polder.cqћ4RИєvTECHNOLOGICAL< 166320l/home/pascal/depot/filedata/ext/libpolder/src/polder.cxОFbЂ[ CLOSEPRODUCT_F77 ‡H F77_FUNC(closeproduct,CLOSEPRODUCT)l/home/pascal/depot/filedata/ext/libpolder/src/polder.c|ЌэK,эBYTE_ORDERINGS 16l/home/pascal/depot/filedata/ext/libpolder/src/polder.c’ЎЎ\pфCAS_BR_II 0x0000E000l/home/pascal/depot/filedata/ext/libpolder/src/polder.c’ЎЕ\JшкCAS_BR_JJ 0x00001E00l/home/pascal/depot/filedata/ext/libpolder/src/polder.c—Мс>pARCH_BIG_ENDIAN0 0l/home/pascal/depot/filedata/ext/libpolder/src/polder.cše"yGcDESCRIPTOR8 180l/home/pascal/depot/filedata/ext/libpolder/src/polder.cЌ§Љ3;M‚ EXTRACTPIXEL_F77 ˆH F77_FUNC(extractpixel,EXTRACTPIXEL)l/home/pascal/depot/filedata/ext/libpolder/src/polder.cйŠКšЭ_qOPENPRODUCT_F77 †D F77_FUNC(openproduct,OPENPRODUCT)l/home/pascal/depot/filedata/ext/libpolder/src/polder.cрѕ§YRГАDQX_DIRL 0x8000l/home/pascal/depot/filedata/ext/libpolder/src/polder.cрWЂYBЌDQX_POSD 0x00FFl/home/pascal/depot/filedata/ext/libpolder/src/polder.cч№вKЅ~"№&EXTRACTPIXELDQX_F77 ŠT F77_FUNC(extractpixeldqx,EXTRACTPIXELDQX)l/home/pascal/depot/filedata/ext/libpolder/src/polder.cщфЁYРMœ(EXTRACTNEXTPIXEL_F77 ‰X F77_FUNC(extractnextpixel,EXTRACTNEXTPIXEL)l/home/pascal/depot/filedata/ext/libpolder/src/polder.cњ7OGcINSTRUMENT; 180l/home/pascal/depot/filedata/ext/libpolder/src/polder.c memory.h єя math.h ОN0string.h­Ц‰=stdarg.hЌS‹polder.h\Ќ.Œl/home/pascal/depot/filedata/ext/libpolder/src/polder.c!dЌxunistd.hеYiMstdio.hЏЬІ‰config.hхЩL.EndianSwap/EndianSwap.h ђ™stdlib.hЌšЅјl/home/pascal/depot/filedata/ext/libpolder/src/polder.cџџџџџџџџџџџџ#CloseProductl/home/pascal/depot/filedata/ext/libpolder/src/polder.cї P”**************************************************************************џџџџ/idџџџџџџџџintџџџџvoidExtractBlockl/home/pascal/depot/filedata/ext/libpolder/src/polder.c N P”**************************************************************************џџџџџџџ€idџџџџџџџџintџџџџ lineNџџџџџџџџintџџџџcolWџџџџџџџџintџџџџ lineSџџџџџџџџintџџџџcolEџџџџџџџџintџџџџvalџџџџџџџџ void*џџџџfmtџџџџџџџџintџџџџ nbparџџџџџџџџintџџџџint ExtractNextPixell/home/pascal/depot/filedata/ext/libpolder/src/polder.c Џ LP”**************************************************************************џџџџidџџџџџџџџintџџџџlineџџџџџџџџint*џџџџ columnџџџџџџџџint*џџџџvalџџџџџџџџ void*џџџџ nbparџџџџџџџџintџџџџint ExtractParameterl/home/pascal/depot/filedata/ext/libpolder/src/polder.cDJP”**************************************************************************џџџџџџџ€idџџџџџџџџintџџџџ bufferџџџџџџџџunsigned char*џџџџvalџџџџџџџџ float*џџџџtypeџџџџџџџџintџџџџintExtractPixell/home/pascal/depot/filedata/ext/libpolder/src/polder.c ! ­P”**************************************************************************џџџџЕљІidџџџџџџџџintџџџџlineџџџџџџџџintџџџџ columnџџџџџџџџintџџџџvalџџџџџџџџ void*џџџџ nbparџџџџџџџџintџџџџintExtractPixelDQXl/home/pascal/depot/filedata/ext/libpolder/src/polder.c  d”**************************************************************************џџџџidџџџџџџџџintџџџџlineџџџџџџџџintџџџџ columnџџџџџџџџintџџџџvalџџџџџџџџ&unsigned short int*џџџџ nbparџџџџџџџџintџџџџint(ExtractVariable_Gridl/home/pascal/depot/filedata/ext/libpolder/src/polder.cЪaP”**************************************************************************џџџџџџџ€idџџџџџџџџintџџџџvalџџџџџџџџshort**џџџџsizeџџџџџџџџint*џџџџgridџџџџџџџџintџџџџint&ExtractVariable_Varl/home/pascal/depot/filedata/ext/libpolder/src/polder.cџnP”**************************************************************************џџџџidџџџџџџџџintџџџџvalџџџџџџџџfloat**џџџџtypeџџџџџџџџintџџџџint0ExtractVariable_Var_Bytel/home/pascal/depot/filedata/ext/libpolder/src/polder.coЩ”**************************************************************************џџџџџџџ€idџџџџџџџџintџџџџvalџџџџџџџџunsigned char**џџџџtypeџџџџџџџџintџџџџint.ExtractVariable_Var_Intl/home/pascal/depot/filedata/ext/libpolder/src/polder.cJШP”**************************************************************************џџџџџџџ€idџџџџџџџџintџџџџvalџџџџџџџџunsigned int**џџџџtypeџџџџџџџџintџџџџint2ExtractVariable_Var_Shortl/home/pascal/depot/filedata/ext/libpolder/src/polder.cЭHPџџџџџџџџidџџџџџџџџintџџџџvalџџџџџџџџ unsigned short**џџџџtypeџџџџџџџџintџџџџintF77_FUNCl/home/pascal/depot/filedata/ext/libpolder/src/polder.c Ž ”**************************************************************************џџџџџџџ€џџџџџџџџџџџџinitpolderџџџџџџџџџџџџџџџџINITPOLDERџџџџvoidF77_FUNCl/home/pascal/depot/filedata/ext/libpolder/src/polder.c ’ џџџџџџџџЕ№u€џџџџџџџџџџџџopenproductџџџџџџџџџџџџџџџџOPENPRODUCTџџџџvoidF77_FUNCl/home/pascal/depot/filedata/ext/libpolder/src/polder.c Ÿ ЁџџџџџџџџџџџџџџџџџџџџcloseproductџџџџџџџџџџџџџџџџCLOSEPRODUCTџџџџvoidF77_FUNCl/home/pascal/depot/filedata/ext/libpolder/src/polder.c Ѓ ЫџџџџџџџџџџџџџџџџџџџџextractpixelџџџџџџџџџџџџџџџџEXTRACTPIXELџџџџvoidF77_FUNCl/home/pascal/depot/filedata/ext/libpolder/src/polder.c Э ѕџџџџџџџџџџџџџџџџџџџџ extractnextpixelџџџџџџџџџџџџџџџџ EXTRACTNEXTPIXELџџџџvoidF77_FUNCl/home/pascal/depot/filedata/ext/libpolder/src/polder.c ї !џџџџџџџџџџџ€џџџџџџџџџџџџextractpixeldqxџџџџџџџџџџџџџџџџEXTRACTPIXELDQXџџџџvoidF77_FUNCl/home/pascal/depot/filedata/ext/libpolder/src/polder.c # MџџџџџџџџџџџџџџџџџџџџextractblockџџџџџџџџџџџџџџџџEXTRACTBLOCKџџџџvoid GetProductMaxpixl/home/pascal/depot/filedata/ext/libpolder/src/polder.c e nь GetProductMaxpix * function: returns the product maxpix. * id: product identifiant. * return: the product maxpix.џџџџidџџџџџџџџintџџџџintGetProductTypel/home/pascal/depot/filedata/ext/libpolder/src/polder.c o ƒPф GetProductMaxpix * function: returns the product type. * id: product identifiant. * return: the product type.џџџџџџџ€idџџџџџџџџintџџџџintInitPolderl/home/pascal/depot/filedata/ext/libpolder/src/polder.cв P”**************************************************************************џџџџ#nbproductџџџџџџџџintџџџџVerboseModeџџџџџџџџintџџџџint IsNANl/home/pascal/depot/filedata/ext/libpolder/src/polder.c,EP”**************************************************************************џџџџџџџ€Xџџџџџџџџ floatџџџџintOpenProductl/home/pascal/depot/filedata/ext/libpolder/src/polder.c ѕP”**************************************************************************џџџџfilenameџџџџџџџџ char*џџџџintReadLinel/home/pascal/depot/filedata/ext/libpolder/src/polder.cLšP”**************************************************************************џџџџidџџџџџџџџintџџџџlineџџџџџџџџintџџџџ bufferџџџџџџџџ void*џџџџintReadNextPixell/home/pascal/depot/filedata/ext/libpolder/src/polder.cўdP”**************************************************************************џџџџidџџџџџџџџintџџџџlineџџџџџџџџintџџџџ columnџџџџџџџџintџџџџ no_recџџџџџџџџintџџџџ bufferџџџџџџџџ void*џџџџintReadPixell/home/pascal/depot/filedata/ext/libpolder/src/polder.cœќP”**************************************************************************џџџџlidџџџџџџџџintџџџџlineџџџџџџџџintџџџџ columnџџџџџџџџintџџџџ bufferџџџџџџџџ void*џџџџintSetLineColl/home/pascal/depot/filedata/ext/libpolder/src/polder.cfаP”**************************************************************************џџџџidџџџџџџџџintџџџџlineџџџџџџџџintџџџџcolџџџџџџџџintџџџџintget_Datel/home/pascal/depot/filedata/ext/libpolder/src/polder.c­§P”**************************************************************************џџџџџџџ€idџџџџџџџџintџџџџ beginџџџџџџџџ char**џџџџendџџџџџџџџ char**џџџџintget_bitsl/home/pascal/depot/filedata/ext/libpolder/src/polder.cеP”**************************************************************************џџџџџџџ€idџџџџџџџџintџџџџbufџџџџџџџџunsigned char*џџџџparџџџџџџџџintџџџџ$unsigned short intget_colnumberl/home/pascal/depot/filedata/ext/libpolder/src/polder.cP”**************************************************************************џџџџџџџ€ bufferџџџџџџџџunsigned char*џџџџis_big_endianџџџџџџџџunsigned intџџџџ shortget_floatl/home/pascal/depot/filedata/ext/libpolder/src/polder.cж*P”**************************************************************************џџџџџџџ€parџџџџџџџџPARAMETERџџџџbufџџџџџџџџunsigned char*џџџџsignџџџџџџџџintџџџџtypeџџџџџџџџintџџџџis_big_endianџџџџџџџџunsigned intџџџџ floatget_linenumberl/home/pascal/depot/filedata/ext/libpolder/src/polder.c BP”**************************************************************************џџџџџџџ€ bufferџџџџџџџџunsigned char*џџџџis_big_endianџџџџџџџџunsigned intџџџџ shortget_nb_par_dirl/home/pascal/depot/filedata/ext/libpolder/src/polder.cлP”**************************************************************************џџџџtypeџџџџџџџџintџџџџint get_type_productl/home/pascal/depot/filedata/ext/libpolder/src/polder.cbйP”**************************************************************************џџџџ levelџџџџџџџџintџџџџ nbparџџџџџџџџintџџџџpixsizeџџџџџџџџintџџџџ maxpixџџџџџџџџint*џџџџ maxligџџџџџџџџint*џџџџintpolder_errorl/home/pascal/depot/filedata/ext/libpolder/src/polder.cGЋP”**************************************************************************џџџџџџџ€errџџџџџџџџintџџџџvoidNBproductl/home/pascal/depot/filedata/ext/libpolder/src/polder.cZZ џџџџint&initialization_donel/home/pascal/depot/filedata/ext/libpolder/src/polder.cYYџџџџintproductl/home/pascal/depot/filedata/ext/libpolder/src/polder.c||џџџџPRODUCT**verbosel/home/pascal/depot/filedata/ext/libpolder/src/polder.cXXК---------------------------------------------------------------------------- ( verbose mode )int PARAMETERl/home/pascal/depot/filedata/ext/libpolder/src/polder.cee џџџџџџџџ PRODUCTl/home/pascal/depot/filedata/ext/libpolder/src/polder.czzџџџџPOLDER_PRODUCTŠ caliopfiledata.hd/home/pascal/depot/filedata/src/caliopfiledata.cpp%yЦoЋPџџџџd/home/pascal/depot/filedata/src/caliopfiledata.cpp`9:( caliopfiledata.hq)Џd/home/pascal/depot/filedata/src/caliopfiledata.cppџџџџџџџџџџџџCALIOPFileDatad/home/pascal/depot/filedata/src/caliopfiledata.cppгйџџџџџџџџCALIOPFileDatanameџџџџџџџџconst string&џџџџmodeџџџџџџџџconst string&џџџџџџџџcheck_filenamed/home/pascal/depot/filedata/src/caliopfiledata.cpp7џџџџџџџџCALIOPFileData Ўs short_filenameџџџџџџџџconst string&џџџџvoidcontain_datad/home/pascal/depot/filedata/src/caliopfiledata.cpp*,џџџџџџџџCALIOPFileDataџџџ€latџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџtimeџџџџџџџџconst double&џџџџ(colocation_toleranceџџџџџџџџconst double&џџџџconst bool contain_locationd/home/pascal/depot/filedata/src/caliopfiledata.cpp&)џџџџџџџџCALIOPFileDatalatџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџtoleranceџџџџџџџџconst double&џџџџconst bool*free_geolocation_datad/home/pascal/depot/filedata/src/caliopfiledata.cppЛФџџџџџџџџCALIOPFileDataџџџ€void8free_viewing_directions_datad/home/pascal/depot/filedata/src/caliopfiledata.cppжйџџџџџџџџCALIOPFileDatavoidget_indexd/home/pascal/depot/filedata/src/caliopfiledata.cpp.TџџџџџџџџCALIOPFileDatalatџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџ indexџџџџџџџџint&џџџџcoloc_toleranceџџџџџџџџconst floatџџџџconst bool"get_nb_geo_pointsd/home/pascal/depot/filedata/src/caliopfiledata.cpp~‚CџџџџџџџџCALIOPFileData const int4get_nearest_point_distanced/home/pascal/depot/filedata/src/caliopfiledata.cpp$џџџџџџџџCALIOPFileDataџџџ€latџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџcoloc_toleranceџџџџџџџџconst floatџџџџconst float,get_viewing_directionsd/home/pascal/depot/filedata/src/caliopfiledata.cppл џџџџџџџџCALIOPFileDataipixџџџџџџџџ(const vector< int >&џџџџ v_obsџџџџџџџџ,vector< Observation >&џџџџvoidget_vindexd/home/pascal/depot/filedata/src/caliopfiledata.cppbЙџџџџџџџџCALIOPFileDataџџџ€v_indexџџџџџџџџ2vector< vector < int > >&џџџџlatџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџ(colocation_toleranceџџџџџџџџconst floatџџџџvoidinitd/home/pascal/depot/filedata/src/caliopfiledata.cppкяџџџџџџџџCALIOPFileDatavoid is_dayd/home/pascal/depot/filedata/src/caliopfiledata.cppџџџџџџџџCALIOPFileDataџџџ const bool4is_geolocation_data_loadedd/home/pascal/depot/filedata/src/caliopfiledata.cppИКџџџџџџџџCALIOPFileData const boolBis_viewing_directions_data_loadedd/home/pascal/depot/filedata/src/caliopfiledata.cppЛН }џџџџCALIOPFileDatabool*load_geolocation_datad/home/pascal/depot/filedata/src/caliopfiledata.cppХџџџџџџџџCALIOPFileDatavoidload_v_pixeld/home/pascal/depot/filedata/src/caliopfiledata.cppV`џџџџџџџџCALIOPFileDataџџџ€void8load_viewing_directions_datad/home/pascal/depot/filedata/src/caliopfiledata.cppПдџџџџџџџџCALIOPFileDataср€voidparse_filenamed/home/pascal/depot/filedata/src/caliopfiledata.cpp8}џџџџџџџџCALIOPFileData хW€short_filenameџџџџџџџџconst string&џџџџvoid*set_lat_lon_index_maxd/home/pascal/depot/filedata/src/caliopfiledata.cpp џџџџџџџџCALIOPFileDatavoid&set_lat_lon_min_maxd/home/pascal/depot/filedata/src/caliopfiledata.cpp„Жz********* CALIOP SPECIFIC ACCESS METHODS ********************џџџџCALIOPFileDatavoid"set_time_coveraged/home/pascal/depot/filedata/src/caliopfiledata.cppѕ џџџџџџџџCALIOPFileDataЖY€void ~ CALIOPFileDatad/home/pascal/depot/filedata/src/caliopfiledata.cpp№єџџџџџџџџCALIOPFileDataЕѕ€џџџџ hdffiledata.hfile_tools.hiteratoralgorithm&satellitefiledata.h`/home/pascal/depot/filedata/src/caliopfiledata.h%yУэHhџџџџhdffiledata.h˜vТ&satellitefiledata.hщ"Fзfile_tools.hгЦiteratorИ"ОŠalgorithm{ `/home/pascal/depot/filedata/src/caliopfiledata.hаСM`/home/pascal/depot/filedata/src/caliopfiledata.hџџџџџџџџџџџџCALIOPFileData`/home/pascal/depot/filedata/src/caliopfiledata.h8€ШManages the opening, reading and accessing to data of a CALIOP file ( CALIPSO LIDAR ) To see a more detailed documentation about this class, please refer to the HDFFileData class for all inherited methods. You will find some examples on how to do some useful actions (loading an sds array...), in the HDFFileData class documentation. @author Nicolas PASCALџџџџ"SatelliteFileDataHDFFileData#CALIOPFileData`/home/pascal/depot/filedata/src/caliopfiledata.hККWџџџџџџџџCALIOPFileData _nameџџџџџџџџconst string&џџџџmodeџџџџџџџџconst string&џџџџџџџџcheck_filename`/home/pascal/depot/filedata/src/caliopfiledata.hp p= @brief Check is a the file is a valid caliop data file ( the analysis is done with a filename parsing, not on the data ) @throw invalid_filename if the filename does not match the file pattern @param short_filename string : the filename without its pathџџџџCALIOPFileData short_filenameџџџџџџџџconst string&џџџџvoidclose_data_file`/home/pascal/depot/filedata/src/caliopfiledata.h790 @brief closes the file.џџџџCALIOPFileDatavoidcontain_data`/home/pascal/depot/filedata/src/caliopfiledata.hœР @brief check if the file has possible (lat,lon) coincidence @warning it's an EVENTUAL coincidence. That is not a proof !!! @param lat latitude @param lon longitude @param time time @param colocation_tolerance the acceptable bias (in km or degrees. Supposed to be in, a plane approximation) between [lat,lon] and the nearest data point. @return true if can eventually contain a coincidence with the point. @warning at this time always true. I don't have a good way to do itџџџџCALIOPFileDatalatџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџtimeџџџџџџџџconst double&џџџџ(colocation_toleranceџџџџџџџџconst double&џџџџconst bool contain_location`/home/pascal/depot/filedata/src/caliopfiledata.h€8 @brief check if this file has eventually data coincident with (lat,lon) Actually, it only tests if (lat,lon) is contained in the data's bounding rectangle. @param lat the latitude of the event @param lon the longitude of the event @param tolerance acceptable bias between the nearest point in the data and the given (lat,lon) point @return true if a point in the data has been found in the colocation frameџџџџCALIOPFileDatalatџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџtoleranceџџџџџџџџconst double&џџџџconst bool*free_geolocation_data`/home/pascal/depot/filedata/src/caliopfiledata.h# # ^ @brief free eventually loaded geolocation dataџџџџCALIOPFileDatavoid8free_viewing_directions_data`/home/pascal/depot/filedata/src/caliopfiledata.hƒƒ0ˆ @brief free the data requested for computing the viewing directionsџџџџCALIOPFileDatavoid@get_cal_lid_l2_05kmcpro_altitude`/home/pascal/depot/filedata/src/caliopfiledata.hfhє @brief accessor to the altitude vector in CALIOP L2 05km CPro product @return the CALIOP L2 05km CPro altitudes abscissaџџџџCALIOPFileDataconst float32*6get_cal_lid_l2_vfm_altitude`/home/pascal/depot/filedata/src/caliopfiledata.h^eм @brief accessor to the altitude vector in CALIOP L2 VFM product @return the CALIOP L2 VFM altitudes abscissaџџџџCALIOPFileDataconst float32*,get_calipso_fill_value`/home/pascal/depot/filedata/src/caliopfiledata.hццAz return the fill value defined for the different data type as defined in the CALIPSO specification @param typecode "float", "int8" ... @return the fill value for sds having this data typeџџџџTџџџџCALIOPFileDatatypecodeџџџџџџџџconst string&џџџџconst Tget_index`/home/pascal/depot/filedata/src/caliopfiledata.hёё™ь @brief find the index of the nearest point to (lat,lon) in the data. If (lat,lon) is not found or out of the colocalisation_frame, returned indexes are [-1,-1] @param lat the latitude @param lon the longitude @param nearest_pix_idx the index of the nearest measure. -1 if no coincidence found. @param colocation_tolerance the acceptable bias (in km or degrees. Supposed to be in, a plane approximation) between [lat,lon] and the nearest data point. @return true if the coincidence has been foundџџџџCALIOPFileDatalatџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџnearest_pix_idxџџџџџџџџint&џџџџ(colocation_toleranceџџџџџџџџconst floatџџџџconst bool*get_lat_lon_index_max`/home/pascal/depot/filedata/src/caliopfiledata.hЬвn access to the higher usable indexes of the "Latitude" and "Longitude" sds. In other words, it returns the size of those sds arrays, diminuted of 1. Ex : if the sds "Latitude" has a size of (287,3), it will return [286,2] @return an array containing the maximal usable indexes for the geolocation sdsџџџџCALIOPFileData const int*get_level`/home/pascal/depot/filedata/src/caliopfiledata.hУХl read the level of the file @return the levelџџџџCALIOPFileData const int"get_nb_geo_points`/home/pascal/depot/filedata/src/caliopfiledata.hии'О access the number of different shot times of the file. @return the number of shot timesџџџџCALIOPFileData const intget_nb_layer`/home/pascal/depot/filedata/src/caliopfiledata.hнпк access to the accessible number of LIDAR echos layers. @return the accessible number of LIDAR echos layers.џџџџCALIOPFileData int4get_nearest_point_distance`/home/pascal/depot/filedata/src/caliopfiledata.hŽВ @brief compute the distance to (lat,lon) of the nearest point in the data If @a coloc_tolerance is given, it will compute only the distance of the points that have a distance to ( @a lat, @a lon ) inferior to @a coloc_tolerance @param lat the latitude @param lon the longitude @param coloc_tolerance the -/+ maximal tolerance for 2 points considered as colocated @return the distance to the nearest point, or -1 if no point in the colocalisation frame has been found.џџџџCALIOPFileDatalatџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџcoloc_toleranceџџџџџџџџconst floatџџџџconst floatget_pixel_coord`/home/pascal/depot/filedata/src/caliopfiledata.hGMЖ @brief retrieve the coordinates of a pixel using its index @param ipix [IN] index of the pixel @param lat [OUT] latitude of the pixel @param lon [OUT] longitude of the pixel @param time [OUT] timestamp of the pixelџџџџCALIOPFileDataipixџџџџџџџџ(const vector< int >&џџџџlatџџџџџџџџ float&џџџџlonџџџџџџџџ float&џџџџtimeџџџџџџџџdouble&џџџџvoidget_product`/home/pascal/depot/filedata/src/caliopfiledata.hVXџџџџџџџџCALIOPFileData stringget_resolution`/home/pascal/depot/filedata/src/caliopfiledata.hSUА @brief accessor to the product horizontal resolution @return the horizontal resolutionџџџџCALIOPFileData const float,get_viewing_directions`/home/pascal/depot/filedata/src/caliopfiledata.h‰‰a" @brief constucts the viewing directions observations for the given profile @param ipix 1D profile indice @param v_obs vector of observation(s)џџџџCALIOPFileDataџџ„ipixџџџџџџџџ(const vector< int >&џџџџ v_obsџџџџџџџџ,vector< Observation >&џџџџvoidget_vindex`/home/pascal/depot/filedata/src/caliopfiledata.hћќ}Š @brief build the list of indices of pixels that are in colocation tolerance, sorted by increasing distance to (lat,lon) If (lat,lon) is not found or out of the colocalisation_frame, returns an empty vector @param lat the latitude @param lon the longitude @param colocation_tolerance the acceptable bias (in km or degrees. Supposed to be in, a plane approximation) between [lat,lon] and the nearest data point. @return the list of indices of pixelsџџџџCALIOPFileDatav_indexџџџџџџџџ2vector< vector < int > >&џџџџlatџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџ(colocation_toleranceџџџџџџџџconst floatџџџџvoidinit`/home/pascal/depot/filedata/src/caliopfiledata.hБ БџџџџџџџџCALIOPFileDataџџ€void is_day`/home/pascal/depot/filedata/src/caliopfiledata.hггЂ wether the file contains day or night data @return true if it is day dataџџџџCALIOPFileData const bool4is_geolocation_data_loaded`/home/pascal/depot/filedata/src/caliopfiledata.h''1| @brief check if the geolocation data have been already loadedџџџџCALIOPFileData const boolis_same_orbit`/home/pascal/depot/filedata/src/caliopfiledata.hnzj @brief check if 2 CALIOP files contain data of the same half-orbit. It compares the end of the files' names. The purpose of this method is to be used as a binary predicate for the STL search algorithms @param fd1 first CALIOP file @param fd2 first CALIOP file @return true if they have the same timestampџџџџCALIOPFileData AПfd1џџџџџџџџ*const CALIOPFileData*џџџџfd2џџџџџџџџ*const CALIOPFileData*џџџџboolBis_viewing_directions_data_loaded`/home/pascal/depot/filedata/src/caliopfiledata.h{{4Ў @brief test if the data requested for computing the viewing directions has been loadedџџџџCALIOPFileDatabool*load_geolocation_data`/home/pascal/depot/filedata/src/caliopfiledata.h   @brief read the geolocations data and put it in memory This method is used to make the search of the indexes of a (lat,lon,time) point faster.џџџџCALIOPFileDatavoidload_v_pixel`/home/pascal/depot/filedata/src/caliopfiledata.h33B @brief load the list data pixelsџџџџCALIOPFileDatavoid8load_viewing_directions_data`/home/pascal/depot/filedata/src/caliopfiledata.h0ˆ @brief load the data requested for computing the viewing directionsџџџџCALIOPFileDatatvoidopen_data_file`/home/pascal/depot/filedata/src/caliopfiledata.h=?. @brief opens the file.џџџџCALIOPFileDatavoidparse_filename`/home/pascal/depot/filedata/src/caliopfiledata.hu u7Д Once the filename has been checked (that's a precondition : no verification on it are done in this method), some informations can be extracted of it. @param short_filename string : the filename without its pathџџџџCALIOPFileDatashort_filenameџџџџџџџџconst string&џџџџvoid*set_lat_lon_index_max`/home/pascal/depot/filedata/src/caliopfiledata.hЦ Ц џџџџџџџџCALIOPFileDatavoid&set_lat_lon_min_max`/home/pascal/depot/filedata/src/caliopfiledata.h „ set the mininimal and maximal values of latitude and longitudeџџџџCALIOPFileDatavoid"set_time_coverage`/home/pascal/depot/filedata/src/caliopfiledata.hz z№ @brief read the time covered by the data, in secs compute the difference of the last and first LIDAR profile timestampџџџџCALIOPFileDatavoid ~ CALIOPFileData`/home/pascal/depot/filedata/src/caliopfiledata.hООџџџџџџџџCALIOPFileDataџџџџ close_data_file`/home/pascal/depot/filedata/src/caliopfiledata.h790 @brief closes the file.џџџџCALIOPFileDatavoid@get_cal_lid_l2_05kmcpro_altitude`/home/pascal/depot/filedata/src/caliopfiledata.hfhє @brief accessor to the altitude vector in CALIOP L2 05km CPro product @return the CALIOP L2 05km CPro altitudes abscissaџџџџCALIOPFileDataconst float32*6get_cal_lid_l2_vfm_altitude`/home/pascal/depot/filedata/src/caliopfiledata.h^eм @brief accessor to the altitude vector in CALIOP L2 VFM product @return the CALIOP L2 VFM altitudes abscissaџџџџCALIOPFileDataconst float32**get_lat_lon_index_max`/home/pascal/depot/filedata/src/caliopfiledata.hЬвn access to the higher usable indexes of the "Latitude" and "Longitude" sds. In other words, it returns the size of those sds arrays, diminuted of 1. Ex : if the sds "Latitude" has a size of (287,3), it will return [286,2] @return an array containing the maximal usable indexes for the geolocation sdsџџџџCALIOPFileData const int*get_level`/home/pascal/depot/filedata/src/caliopfiledata.hУХl read the level of the file @return the levelџџџџCALIOPFileData const intget_nb_layer`/home/pascal/depot/filedata/src/caliopfiledata.hнпк access to the accessible number of LIDAR echos layers. @return the accessible number of LIDAR echos layers.џџџџCALIOPFileData intget_pixel_coord`/home/pascal/depot/filedata/src/caliopfiledata.hGMЖ @brief retrieve the coordinates of a pixel using its index @param ipix [IN] index of the pixel @param lat [OUT] latitude of the pixel @param lon [OUT] longitude of the pixel @param time [OUT] timestamp of the pixelџџџџCALIOPFileDataipixџџџџџџџџ(const vector< int >&џџџџlatџџџџџџџџ float&џџџџlonџџџџџџџџ float&џџџџtimeџџџџџџџџdouble&џџџџvoidget_product`/home/pascal/depot/filedata/src/caliopfiledata.hVXџџџџџџџџCALIOPFileData stringget_resolution`/home/pascal/depot/filedata/src/caliopfiledata.hSUА @brief accessor to the product horizontal resolution @return the horizontal resolutionџџџџCALIOPFileData const floatis_same_orbit`/home/pascal/depot/filedata/src/caliopfiledata.hnzj @brief check if 2 CALIOP files contain data of the same half-orbit. It compares the end of the files' names. The purpose of this method is to be used as a binary predicate for the STL search algorithms @param fd1 first CALIOP file @param fd2 first CALIOP file @return true if they have the same timestampџџџџCALIOPFileData AПfd1џџџџџџџџ*const CALIOPFileData*џџџџfd2џџџџџџџџ*const CALIOPFileData*џџџџboolopen_data_file`/home/pascal/depot/filedata/src/caliopfiledata.h=?. @brief opens the file.џџџџCALIOPFileDatavoid&CAL_LID_L1`/home/pascal/depot/filedata/src/caliopfiledata.h] ]џџџџProductType&CAL_LID_L2_01kmCLay`/home/pascal/depot/filedata/src/caliopfiledata.h_ _џџџџProductType&CAL_LID_L2_05kmALay`/home/pascal/depot/filedata/src/caliopfiledata.ha aџџџџProductType&CAL_LID_L2_05kmCLay`/home/pascal/depot/filedata/src/caliopfiledata.h` `џџџџProductType&CAL_LID_L2_05kmCPro`/home/pascal/depot/filedata/src/caliopfiledata.hc cџџџџProductType&CAL_LID_L2_333mCLay`/home/pascal/depot/filedata/src/caliopfiledata.h^ ^џџџџProductType&CAL_LID_L2_40kmAPro`/home/pascal/depot/filedata/src/caliopfiledata.hb bџџџџProductTypeCAL_LID_L2_VFM`/home/pascal/depot/filedata/src/caliopfiledata.hd dџџџџProductType"CAL_LID_UNDEFINED`/home/pascal/depot/filedata/src/caliopfiledata.h\ \џџџџProductType8cal_lid_l2_05kmCPro_altitude`/home/pascal/depot/filedata/src/caliopfiledata.hTT7v altitudes of the bins in the CAL_LID L2 05kmCPro products const float32*.cal_lid_l2_vfm_altitude`/home/pascal/depot/filedata/src/caliopfiledata.hOO2F altitudes of the bins of the CALIOP L2 VFM profiles in km, from down to up. Each value is the mean altitude of the bin ( ie: ( top_bin_alt - base_bin_alt ) / 2 ) const float32*4cal_lid_l2_vfm_altitude_ud`/home/pascal/depot/filedata/src/caliopfiledata.hQQ5˜ altitudes of the bins of the CALIOP L2 VFM profiles in km, from up to down const float32*(colocation_tolerance`/home/pascal/depot/filedata/src/caliopfiledata.hVV+џџџџconst floatday_mode`/home/pascal/depot/filedata/src/caliopfiledata.hš šЄ wether the data in this file have been taken during day (true) or night(false)bool"lat_lon_index_max`/home/pascal/depot/filedata/src/caliopfiledata.hЃЃџџџџint*lat_max`/home/pascal/depot/filedata/src/caliopfiledata.hЅЅџџџџ floatlat_min`/home/pascal/depot/filedata/src/caliopfiledata.hЅ Ѕџџџџ float"latitude_sds_name`/home/pascal/depot/filedata/src/caliopfiledata.h­ ­B some constant specific to CALIOP string level`/home/pascal/depot/filedata/src/caliopfiledata.hŽŽ 8 the level of the productintlon_max`/home/pascal/depot/filedata/src/caliopfiledata.hЅ"Ѕ)џџџџ floatlon_min`/home/pascal/depot/filedata/src/caliopfiledata.hЅЅ!џџџџ float$longitude_sds_name`/home/pascal/depot/filedata/src/caliopfiledata.hЎ Ўџџџџ string(meteo_level_altitude`/home/pascal/depot/filedata/src/caliopfiledata.hMM/т Altitudes of each level in the meteo profiles data. To be rigourous, those levels shall be loaded while reading the data (they are available in the VD named "Met_Data_Altitudes" ) but, at the time this comment is written, they are constant const float32* nb_05kmcpro_bins`/home/pascal/depot/filedata/src/caliopfiledata.hJJ)f number of bins in cloud profile products ( CPro ) const int nb_aerosol_layer`/home/pascal/depot/filedata/src/caliopfiledata.h??'X number of lidar layers of aerosol products const intnb_cloud_layer`/home/pascal/depot/filedata/src/caliopfiledata.h;;&T number of lidar layers of cloud products const intnb_layer`/home/pascal/depot/filedata/src/caliopfiledata.hžžж number of LIDAR echos layers of the product data. Different for cloud products(10) and aerosol ones (8)int4nb_lidar_surface_elevation`/home/pascal/depot/filedata/src/caliopfiledata.h==1^ number surface elevation data for one profile const intnb_meteo_level`/home/pascal/depot/filedata/src/caliopfiledata.hHH&~ number of meteo levels (pressure and temperature) in L1 files const intnb_vbins`/home/pascal/depot/filedata/src/caliopfiledata.hAA!^ number of vertical bins for L1 products (583) const intnb_vfm_bins`/home/pascal/depot/filedata/src/caliopfiledata.hCC%l number of vertical feature masks for L2 VFM products const int4nb_vfm_samples_per_profile`/home/pascal/depot/filedata/src/caliopfiledata.hEE3h number of vsamples per profile for L2 VFM products const intproduct`/home/pascal/depot/filedata/src/caliopfiledata.hЁ Ё$ the product name  stringproduct_type`/home/pascal/depot/filedata/src/caliopfiledata.h’’6 the type of the productProductTyperesolution`/home/pascal/depot/filedata/src/caliopfiledata.h– –P the resolution of the product, in km floattime_sds_name`/home/pascal/depot/filedata/src/caliopfiledata.hЏ Џџџџџ stringv_alt_data`/home/pascal/depot/filedata/src/caliopfiledata.hЊ ЊP earth pixe l altitude data buffer (km) float32*v_pos_data`/home/pascal/depot/filedata/src/caliopfiledata.hЈ Јl [X, Y, Z] position of the satellite data buffer (km) float64* ProductType`/home/pascal/depot/filedata/src/caliopfiledata.h[eb defines the possible types of CALIOP productsconst int FeatureClassFlag`/home/pascal/depot/filedata/src/caliopfiledata.h&.Єfacility for Feature_CLassification_Flags sds reading. Equivalent to a uint16 typeџџџџ0horizontal_avg_detection`/home/pascal/depot/filedata/src/caliopfiledata.h--1џџџџunsigned int phase`/home/pascal/depot/filedata/src/caliopfiledata.h))џџџџunsigned intphaseQA`/home/pascal/depot/filedata/src/caliopfiledata.h** џџџџunsigned intsubtype`/home/pascal/depot/filedata/src/caliopfiledata.h++ џџџџunsigned intsubtypeQA`/home/pascal/depot/filedata/src/caliopfiledata.h,,"џџџџunsigned inttype`/home/pascal/depot/filedata/src/caliopfiledata.h''џџџџunsigned int typeQA`/home/pascal/depot/filedata/src/caliopfiledata.h((џџџџunsigned int,get_calipso_fill_value`/home/pascal/depot/filedata/src/caliopfiledata.h‚џџџџџџџџTџџџџCALIOPFileDatatypecodeџџџџџџџџconst string&џџџџconst TŒceresfiledata.hb/home/pascal/depot/filedata/src/ceresfiledata.cpp%yЦg‚Pџџџџb/home/pascal/depot/filedata/src/ceresfiledata.cppcЃzВceresfiledata.hЈ[+Ђb/home/pascal/depot/filedata/src/ceresfiledata.cppџџџџџџџџџџџџCERESFileDatab/home/pascal/depot/filedata/src/ceresfiledata.cppџџџџџџџџCERESFileDataџџџ€nameџџџџџџџџconst string&џџџџmodeџџџџџџџџconst string&џџџџџџџџcheck_filenameb/home/pascal/depot/filedata/src/ceresfiledata.cpp_uџџџџџџџџCERESFileData short_filenameџџџџџџџџconst string&џџџџboolcontain_datab/home/pascal/depot/filedata/src/ceresfiledata.cppўџџџџџџџџCERESFileDatalatџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџtimeџџџџџџџџconst double&џџџџ(colocation_toleranceџџџџџџџџconst double&џџџџconst bool contain_locationb/home/pascal/depot/filedata/src/ceresfiledata.cppЛСTconst bool CERESFileData::contain_data( const float & lat, const float & lon, const double & time ) const { return contain_time(time) && contain_location(lat,lon) ; }џџџџCERESFileDatatlatџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџtoleranceџџџџџџџџ floatџџџџconst bool contain_locationb/home/pascal/depot/filedata/src/ceresfiledata.cppњ§џџџџџџџџCERESFileDatalatџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџtoleranceџџџџџџџџconst double&џџџџconst bool*free_geolocation_datab/home/pascal/depot/filedata/src/ceresfiledata.cppХЮџџџџџџџџCERESFileDatavvoidget_ceres_latb/home/pascal/depot/filedata/src/ceresfiledata.cppЕКџџџџџџџџCERESFileDatalatџџџџџџџџconst float&џџџџconst floatget_ceres_lonb/home/pascal/depot/filedata/src/ceresfiledata.cppВДџџџџџџџџCERESFileDatalonџџџџџџџџconst float&џџџџconst floatget_indexb/home/pascal/depot/filedata/src/ceresfiledata.cpp‰БџџџџџџџџCERESFileDatalatџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџtimeџџџџџџџџconst doubleџџџџ indexџџџџџџџџint&џџџџcoloc_toleranceџџџџџџџџconst floatџџџџconst boolget_indexb/home/pascal/depot/filedata/src/ceresfiledata.cppучџџџџџџџџCERESFileDataЕїЛ€latџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџnearest_pix_idxџџџџџџџџint&џџџџcoloc_toleranceџџџџџџџџconst floatџџџџconst bool"get_nb_geo_pointsb/home/pascal/depot/filedata/src/ceresfiledata.cppy{џџџџџџџџCERESFileDataџџџ const int4get_nearest_point_distanceb/home/pascal/depot/filedata/src/ceresfiledata.cpp|ˆџџџџџџџџCERESFileDatalatџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџcoincidence_idxџџџџџџџџint&џџџџcoloc_toleranceџџџџџџџџ floatџџџџconst float4get_nearest_point_distanceb/home/pascal/depot/filedata/src/ceresfiledata.cppщјџџџџџџџџCERESFileDatalatџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџcoloc_toleranceџџџџџџџџconst floatџџџџconst floatget_radixb/home/pascal/depot/filedata/src/ceresfiledata.cppvxџџџџџџџџCERESFileData хW const stringinitb/home/pascal/depot/filedata/src/ceresfiledata.cpp0џџџџџџџџCERESFileDatavoid4is_geolocation_data_loadedb/home/pascal/depot/filedata/src/ceresfiledata.cppТФџџџџџџџџCERESFileData const bool*load_geolocation_datab/home/pascal/depot/filedata/src/ceresfiledata.cppЯсџџџџџџџџCERESFileDatavoidparse_filenameb/home/pascal/depot/filedata/src/ceresfiledata.cppB^џџџџџџџџCERESFileDataџџџ€short_filenameџџџџџџџџconst string&џџџџvoid*set_lat_lon_index_maxb/home/pascal/depot/filedata/src/ceresfiledata.cpp6AџџџџџџџџCERESFileData хW€void~ CERESFileDatab/home/pascal/depot/filedata/src/ceresfiledata.cpp15џџџџџџџџCERESFileDataџџџ€џџџџ hdffiledata.h&satellitefiledata.h^/home/pascal/depot/filedata/src/ceresfiledata.h%yУут(џџџџhdffiledata.h˜vТ&satellitefiledata.hщ"Fз^/home/pascal/depot/filedata/src/ceresfiledata.hъ3—^/home/pascal/depot/filedata/src/ceresfiledata.hџџџџџџџџџџџџCERESFileData^/home/pascal/depot/filedata/src/ceresfiledata.h§мclass managing the reading of the CERES file data. CERES products managed : CRS ; SSF ; @author nicolas PASCALџџџџ"SatelliteFileDataHDFFileDataCERESFileData^/home/pascal/depot/filedata/src/ceresfiledata.hGG=џџџџџџџџCERESFileDatanameџџџџџџџџconst string&џџџџmodeџџџџџџџџconst string&џџџџџџџџcheck_filename^/home/pascal/depot/filedata/src/ceresfiledata.h2 2<џџџџџџџџCERESFileData short_filenameџџџџџџџџconst string&џџџџboolclose_data_file^/home/pascal/depot/filedata/src/ceresfiledata.hщы0 @brief closes the file.џџџџCERESFileDatavoidcontain_data^/home/pascal/depot/filedata/src/ceresfiledata.hхх›Р @brief check if the file has possible (lat,lon) coincidence @warning it's an EVENTUAL coincidence. That is not a proof !!! @param lat latitude @param lon longitude @param time time @param colocation_tolerance the acceptable bias (in km or degrees. Supposed to be in, a plane approximation) between [lat,lon] and the nearest data point. @return true if can eventually contain a coincidence with the point. @warning at this time always true. I don't have a good way to do itџџџџCERESFileDatalatџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџtimeџџџџџџџџconst double&џџџџ(colocation_toleranceџџџџџџџџconst double&џџџџconst bool contain_location^/home/pascal/depot/filedata/src/ceresfiledata.hžž @brief check if this file has data coincident with ( @a lat , @a lon ) at a distance not bigger than @a tolerance @param lat the latitude of the event @param lon the longitude of the event @returnџџџџCERESFileDatalatџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџtoleranceџџџџџџџџ floatџџџџconst bool contain_location^/home/pascal/depot/filedata/src/ceresfiledata.hкк8 @brief check if this file has eventually data coincident with (lat,lon) Actually, it only tests if (lat,lon) is contained in the data's bounding rectangle. @param lat the latitude of the event @param lon the longitude of the event @param tolerance acceptable bias between the nearest point in the data and the given (lat,lon) point @return true if a point in the data has been found in the colocation frameџџџџCERESFileDatalatџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџtoleranceџџџџџџџџconst double&џџџџconst bool*free_geolocation_data^/home/pascal/depot/filedata/src/ceresfiledata.hЇЇ(^ @brief free eventually loaded geolocation dataџџџџCERESFileDatavoidget_ceres_lat^/home/pascal/depot/filedata/src/ceresfiledata.hWW7~ @brief convert a usual latitude in degrees (-90->90) to a colatitude, the convention used in CERES files (colat=90-lat) @param lat a latitude @return the colatitude corresponding to @a latџџџџCERESFileDatalatџџџџџџџџconst float&џџџџconst floatget_ceres_lon^/home/pascal/depot/filedata/src/ceresfiledata.hQQ7œ @brief convert a usual longitude in degrees (-180->180) to a longitude in CERES convention (0->360 where the 0 is the greenwich mereidian) @param lon a usual longitude @return the longitude used in CERESџџџџCERESFileDatalonџџџџџџџџconst float&џџџџconst floatget_index^/home/pascal/depot/filedata/src/ceresfiledata.hŒŒЄB @brief search the index of the nearest point in the data to (@a lat , @a lon ) It uses a brute force search on the whole data. For better performances, override this method, and use more specifics way like sort the pixels by increasing (lat,lon) then dichotomic search on it... Only the points that have a distance to ( @a lat, @a lon ) inferior to @a coloc_tolerance will be considered @param lat the latitude @param lon the longitude @param time the time of the observation. If -1., skipped @param index the index of the eventual coincidence (or -1) @param coloc_tolerance the frame in which 2 points are considered as colocated @return true if coincidence foundџџџџCERESFileDatalatџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџtimeџџџџџџџџconst doubleџџџџ indexџџџџџџџџint&џџџџcoloc_toleranceџџџџџџџџconst floatџџџџconst boolget_index^/home/pascal/depot/filedata/src/ceresfiledata.hКʘь @brief find the index of the nearest point to (lat,lon) in the data. If (lat,lon) is not found or out of the colocalisation_frame, returned indexes are [-1,-1] @param lat the latitude @param lon the longitude @param nearest_pix_idx the index of the nearest measure. -1 if no coincidence found. @param colocation_tolerance the acceptable bias (in km or degrees. Supposed to be in, a plane approximation) between [lat,lon] and the nearest data point. @return true if the coincidence has been foundџџџџCERESFileDatalatџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџnearest_pix_idxџџџџџџџџint&џџџџ(colocation_toleranceџџџџџџџџconst floatџџџџconst boolget_instrument^/home/pascal/depot/filedata/src/ceresfiledata.hqw’ read the instrument in use in this product @return the instrumentџџџџCERESFileData const string"get_nb_geo_points^/home/pascal/depot/filedata/src/ceresfiledata.hАА'о @brief access the number of differents geographical points in the file @return the number of different pointsџџџџCERESFileData const int4get_nearest_point_distance^/home/pascal/depot/filedata/src/ceresfiledata.h——І @brief compute the distance to (lat,lon) of the nearest point in the data Only the points that have a distance to ( @a lat, @a lon ) inferior to @a coloc_tolerance will be considered In the method, calls the get_index method @param lat the latitude @param lon the longitude @param coloc_tolerance the frame in which 2 points are considered as colocated @param coincidence_idx the index of the eventual coincidence @return the distance to the nearest point, or -1 if no point in the colocalisation frame has been found.џџџџCERESFileDatalatџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџcoincidence_idxџџџџџџџџint&џџџџcoloc_toleranceџџџџџџџџ floatџџџџconst float4get_nearest_point_distance^/home/pascal/depot/filedata/src/ceresfiledata.hббВ @brief compute the distance to (lat,lon) of the nearest point in the data If @a coloc_tolerance is given, it will compute only the distance of the points that have a distance to ( @a lat, @a lon ) inferior to @a coloc_tolerance @param lat the latitude @param lon the longitude @param coloc_tolerance the -/+ maximal tolerance for 2 points considered as colocated @return the distance to the nearest point, or -1 if no point in the colocalisation frame has been found.џџџџCERESFileDatalatџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџcoloc_toleranceџџџџџџџџconst floatџџџџconst floatget_pixel_coord^/home/pascal/depot/filedata/src/ceresfiledata.hљќЖ @brief retrieve the coordinates of a pixel using its index @param ipix [IN] index of the pixel @param lat [OUT] latitude of the pixel @param lon [OUT] longitude of the pixel @param time [OUT] timestamp of the pixelџџџџCERESFileDataipixџџџџџџџџ(const vector< int >&џџџџlatџџџџџџџџ float&џџџџlonџџџџџџџџ float&џџџџtimeџџџџџџџџdouble&џџџџvoidget_platform^/home/pascal/depot/filedata/src/ceresfiledata.hjp† read the platform used in this product @return the platformџџџџCERESFileData const stringget_product^/home/pascal/depot/filedata/src/ceresfiledata.hci€ read the product name (CRS,...) @return the product nameџџџџCERESFileData const stringget_radix^/home/pascal/depot/filedata/src/ceresfiledata.h€€"в return the radix of the file, actually the file name without the date and the dot. Ex : the radix of the file "CER_CRS_Terra-FM2-MODIS_Sample_000000.2001010101" is "CER_CRS_Terra-FM2-MODIS_Sample_000000" @return the radixџџџџCERESFileData const string"get_time_sds_name^/home/pascal/depot/filedata/src/ceresfiledata.h46џџџџџџџџCERESFileData productџџџџџџџџconst stringџџџџconst stringget_version^/home/pascal/depot/filedata/src/ceresfiledata.hxt access the version of the CERES file @return the versionџџџџCERESFileData const stringget_vindex^/home/pascal/depot/filedata/src/ceresfiledata.hУЧŠ @brief build the list of indices of pixels that are in colocation tolerance, sorted by increasing distance to (lat,lon) If (lat,lon) is not found or out of the colocalisation_frame, returns an empty vector @param lat the latitude @param lon the longitude @param colocation_tolerance the acceptable bias (in km or degrees. Supposed to be in, a plane approximation) between [lat,lon] and the nearest data point. @return the list of indices of pixelsџџџџCERESFileDatav_indexџџџџџџџџ2vector< vector < int > >&џџџџlatџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџ(colocation_toleranceџџџџџџџџconst floatџџџџvoidinit^/home/pascal/depot/filedata/src/ceresfiledata.h0 0џџџџџџџџCERESFileDatavoid4is_geolocation_data_loaded^/home/pascal/depot/filedata/src/ceresfiledata.hЋЋ9| @brief check if the geolocation data have been already loadedџџџџCERESFileData$const bool*load_geolocation_data^/home/pascal/depot/filedata/src/ceresfiledata.hЃЃ( @brief read the geolocations data and put it in memory This method is used to make the search of the indexes of a (lat,lon,time) point faster.џџџџCERESFileDatavoidload_v_pixel^/home/pascal/depot/filedata/src/ceresfiledata.h:=B @brief load the list data pixelsџџџџCERESFileDatavoidopen_data_file^/home/pascal/depot/filedata/src/ceresfiledata.hяё. @brief opens the file.џџџџCERESFileDatavoidparse_filename^/home/pascal/depot/filedata/src/ceresfiledata.h1 16џџџџџџџџCERESFileDatashort_filenameџџџџџџџџconst string&џџџџvoid*set_lat_lon_index_max^/home/pascal/depot/filedata/src/ceresfiledata.h[ [ d Set the latitude and longitude indexes extremaџџџџCERESFileDatavoid~ CERESFileData^/home/pascal/depot/filedata/src/ceresfiledata.hKKџџџџџџџџCERESFileDataџџџџ close_data_file^/home/pascal/depot/filedata/src/ceresfiledata.hщы0 @brief closes the file.џџџџCERESFileDatavoidget_instrument^/home/pascal/depot/filedata/src/ceresfiledata.hqw’ read the instrument in use in this product @return the instrumentџџџџCERESFileData const stringget_pixel_coord^/home/pascal/depot/filedata/src/ceresfiledata.hљќЖ @brief retrieve the coordinates of a pixel using its index @param ipix [IN] index of the pixel @param lat [OUT] latitude of the pixel @param lon [OUT] longitude of the pixel @param time [OUT] timestamp of the pixelџџџџCERESFileDataipixџџџџџџџџ(const vector< int >&џџџџlatџџџџџџџџ float&џџџџlonџџџџџџџџ float&џџџџtimeџџџџџџџџdouble&џџџџvoidget_platform^/home/pascal/depot/filedata/src/ceresfiledata.hjp† read the platform used in this product @return the platformџџџџCERESFileData const stringget_product^/home/pascal/depot/filedata/src/ceresfiledata.hci€ read the product name (CRS,...) @return the product nameџџџџCERESFileData const string"get_time_sds_name^/home/pascal/depot/filedata/src/ceresfiledata.h46џџџџџџџџCERESFileData productџџџџџџџџconst stringџџџџconst stringget_version^/home/pascal/depot/filedata/src/ceresfiledata.hxt access the version of the CERES file @return the versionџџџџCERESFileData const stringget_vindex^/home/pascal/depot/filedata/src/ceresfiledata.hУЧŠ @brief build the list of indices of pixels that are in colocation tolerance, sorted by increasing distance to (lat,lon) If (lat,lon) is not found or out of the colocalisation_frame, returns an empty vector @param lat the latitude @param lon the longitude @param colocation_tolerance the acceptable bias (in km or degrees. Supposed to be in, a plane approximation) between [lat,lon] and the nearest data point. @return the list of indices of pixelsџџџџCERESFileDatav_indexџџџџџџџџ2vector< vector < int > >&џџџџlatџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџ(colocation_toleranceџџџџџџџџconst floatџџџџvoidload_v_pixel^/home/pascal/depot/filedata/src/ceresfiledata.h:=B @brief load the list data pixelsџџџџCERESFileDatavoidopen_data_file^/home/pascal/depot/filedata/src/ceresfiledata.hяё. @brief opens the file.џџџџCERESFileDatavoid(colocation_tolerance^/home/pascal/depot/filedata/src/ceresfiledata.h,,+џџџџconst floatinstrument^/home/pascal/depot/filedata/src/ceresfiledata.h# #џџџџ string"lat_lon_index_max^/home/pascal/depot/filedata/src/ceresfiledata.h.. the data size int*"latitude_sds_name^/home/pascal/depot/filedata/src/ceresfiledata.h**)` // // // double *time_data; /** the times */const string$longitude_sds_name^/home/pascal/depot/filedata/src/ceresfiledata.h++*џџџџconst stringplatform^/home/pascal/depot/filedata/src/ceresfiledata.h" "џџџџ stringproduct^/home/pascal/depot/filedata/src/ceresfiledata.h! !џџџџ stringversion^/home/pascal/depot/filedata/src/ceresfiledata.h$ $џџџџ stringŽ$cloudsatfiledata.hh/home/pascal/depot/filedata/src/cloudsatfiledata.cpp%yЦg‚Pџџџџh/home/pascal/depot/filedata/src/cloudsatfiledata.cppu4 _$cloudsatfiledata.h)Q‘Пh/home/pascal/depot/filedata/src/cloudsatfiledata.cppџџџџџџџџџџџџ CLOUDSATFileDatah/home/pascal/depot/filedata/src/cloudsatfiledata.cppџџџџџџџџ CLOUDSATFileDatacnameџџџџџџџџconst string&џџџџmodeџџџџџџџџconst string&џџџџџџџџcheck_filenameh/home/pascal/depot/filedata/src/cloudsatfiledata.cppЋуџџџџџџџџ CLOUDSATFileDatashort_filenameџџџџџџџџconst string&џџџџboolcontain_datah/home/pascal/depot/filedata/src/cloudsatfiledata.cppшъџџџџџџџџ CLOUDSATFileDataЖ latџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџtimeџџџџџџџџconst double&џџџџ(colocation_toleranceџџџџџџџџconst double&џџџџconst bool contain_locationh/home/pascal/depot/filedata/src/cloudsatfiledata.cppфчџџџџџџџџ CLOUDSATFileDatalatџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџtoleranceџџџџџџџџconst double&џџџџconst bool*free_geolocation_datah/home/pascal/depot/filedata/src/cloudsatfiledata.cppCJџџџџџџџџ CLOUDSATFileDataЕђЇ€voidget_indexh/home/pascal/depot/filedata/src/cloudsatfiledata.cppыџџџџџџџџ CLOUDSATFileDatalatџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџnearest_pix_idxџџџџџџџџint&џџџџ(colocation_toleranceџџџџџџџџconst floatџџџџconst bool4get_nearest_point_distanceh/home/pascal/depot/filedata/src/cloudsatfiledata.cpp,џџџџџџџџ CLOUDSATFileDataџџџ€latџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџcoloc_toleranceџџџџџџџџconst floatџџџџconst floatinith/home/pascal/depot/filedata/src/cloudsatfiledata.cpp1џџџџџџџџ CLOUDSATFileData void*load_geolocation_datah/home/pascal/depot/filedata/src/cloudsatfiledata.cppKyџџџџџџџџ CLOUDSATFileData хW€voidload_v_pixelh/home/pascal/depot/filedata/src/cloudsatfiledata.cpp{…џџџџџџџџ CLOUDSATFileDatavoidparse_filenameh/home/pascal/depot/filedata/src/cloudsatfiledata.cppЉџџџџџџџџ CLOUDSATFileDataЕїб€short_filenameџџџџџџџџconst string&џџџџvoid*set_lat_lon_index_maxh/home/pascal/depot/filedata/src/cloudsatfiledata.cpp‡џџџџџџџџ CLOUDSATFileData€void"set_time_coverageh/home/pascal/depot/filedata/src/cloudsatfiledata.cpp7Bџџџџџџџџ CLOUDSATFileDataџџџ€void$~ CLOUDSATFileDatah/home/pascal/depot/filedata/src/cloudsatfiledata.cpp26џџџџџџџџ CLOUDSATFileDataџџџџhdffiledata.hpixel.h&satellitefiledata.hd/home/pascal/depot/filedata/src/cloudsatfiledata.h%yУут(џџџџhdffiledata.h˜vТ&satellitefiledata.hщ"Fзpixel.hЊІ“иd/home/pascal/depot/filedata/src/cloudsatfiledata.hЩ|1Єd/home/pascal/depot/filedata/src/cloudsatfiledata.hџџџџџџџџџџџџ CLOUDSATFileDatad/home/pascal/depot/filedata/src/cloudsatfiledata.hЩЄ@author Nicolas PASCAL @class CLOUDSATFileData manage the reading of CLOUSAT filesџџџџ"SatelliteFileDataHDFFileData CLOUDSATFileDatad/home/pascal/depot/filedata/src/cloudsatfiledata.hWW@џџџџџџџџ CLOUDSATFileDatanameџџџџџџџџconst string&џџџџmodeџџџџџџџџconst string&џџџџџџџџcheck_filenamed/home/pascal/depot/filedata/src/cloudsatfiledata.hF F6ц @brief test if the filename seems to be a valid CLOUDSAT file @param short_filename the filename without its pathџџџџ CLOUDSATFileDatashort_filenameџџџџџџџџconst string&џџџџboolclose_data_filed/home/pascal/depot/filedata/src/cloudsatfiledata.hВД0 @brief closes the file.џџџџ CLOUDSATFileDatavoidcontain_datad/home/pascal/depot/filedata/src/cloudsatfiledata.hzz|Р @brief check if the file has possible (lat,lon) coincidence @warning it's an EVENTUAL coincidence. That is not a proof !!! @param lat latitude @param lon longitude @param time time @param colocation_tolerance the acceptable bias (in km or degrees. Supposed to be in, a plane approximation) between [lat,lon] and the nearest data point. @return true if can eventually contain a coincidence with the point. @warning at this time always true. I don't have a good way to do itџџџџ CLOUDSATFileDatalatџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџtimeџџџџџџџџconst double&џџџџ(colocation_toleranceџџџџџџџџconst double&џџџџconst bool contain_locationd/home/pascal/depot/filedata/src/cloudsatfiledata.hoo`8 @brief check if this file has eventually data coincident with (lat,lon) Actually, it only tests if (lat,lon) is contained in the data's bounding rectangle. @param lat the latitude of the event @param lon the longitude of the event @param tolerance acceptable bias between the nearest point in the data and the given (lat,lon) point @return true if a point in the data has been found in the colocation frameџџџџ CLOUDSATFileDatalatџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџtoleranceџџџџџџџџconst double&џџџџconst bool*free_geolocation_datad/home/pascal/depot/filedata/src/cloudsatfiledata.he e и @brief free eventually loaded geolocation data If the geolocation data are not loaded, doesn't do anythingџџџџ CLOUDSATFileDatavoidget_indexd/home/pascal/depot/filedata/src/cloudsatfiledata.h——zь @brief find the index of the nearest point to (lat,lon) in the data. If (lat,lon) is not found or out of the colocalisation_frame, returned indexes are [-1,-1] @param lat the latitude @param lon the longitude @param nearest_pix_idx the index of the nearest measure. -1 if no coincidence found. @param colocation_tolerance the acceptable bias (in km or degrees. Supposed to be in, a plane approximation) between [lat,lon] and the nearest data point. @return true if the coincidence has been foundџџџџ CLOUDSATFileDatalatџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџnearest_pix_idxџџџџџџџџint&џџџџ(colocation_toleranceџџџџџџџџconst floatџџџџconst bool"get_nb_geo_pointsd/home/pascal/depot/filedata/src/cloudsatfiledata.hЊ­Ц @brief retrieve the number of (lat,lon) pixels in the file @return the number of (lat,lon) pixelsџџџџ CLOUDSATFileDataconst int4get_nearest_point_distanced/home/pascal/depot/filedata/src/cloudsatfiledata.hƒƒВ @brief compute the distance to (lat,lon) of the nearest point in the data If @a coloc_tolerance is given, it will compute only the distance of the points that have a distance to ( @a lat, @a lon ) inferior to @a coloc_tolerance @param lat the latitude @param lon the longitude @param coloc_tolerance the -/+ maximal tolerance for 2 points considered as colocated @return the distance to the nearest point, or -1 if no point in the colocalisation frame has been found.џџџџ CLOUDSATFileDatalatџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџcoloc_toleranceџџџџџџџџconst floatџџџџconst floatget_pixel_coordd/home/pascal/depot/filedata/src/cloudsatfiledata.hТШЖ @brief retrieve the coordinates of a pixel using its index @param ipix [IN] index of the pixel @param lat [OUT] latitude of the pixel @param lon [OUT] longitude of the pixel @param time [OUT] timestamp of the pixelџџџџ CLOUDSATFileDataipixџџџџџџџџ(const vector< int >&џџџџlatџџџџџџџџ float&џџџџlonџџџџџџџџ float&џџџџtimeџџџџџџџџdouble&џџџџvoidget_productd/home/pascal/depot/filedata/src/cloudsatfiledata.hˆŒx @brief access to the product name @return the product nameџџџџ CLOUDSATFileData stringget_versiond/home/pascal/depot/filedata/src/cloudsatfiledata.h–  @brief access to the version of the product @return the version of the productџџџџ CLOUDSATFileData stringget_vindexd/home/pascal/depot/filedata/src/cloudsatfiledata.h ЄŠ @brief build the list of indices of pixels that are in colocation tolerance, sorted by increasing distance to (lat,lon) If (lat,lon) is not found or out of the colocalisation_frame, returns an empty vector @param lat the latitude @param lon the longitude @param colocation_tolerance the acceptable bias (in km or degrees. Supposed to be in, a plane approximation) between [lat,lon] and the nearest data point. @return the list of indices of pixelsџџџџ CLOUDSATFileDatav_indexџџџџџџџџ2vector< vector < int > >&џџџџlatџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџ(colocation_toleranceџџџџџџџџconst floatџџџџvoidinitd/home/pascal/depot/filedata/src/cloudsatfiledata.h8 8† @brief initialize the attributes during the first read of the fileџџџџ CLOUDSATFileDatavoid*load_geolocation_datad/home/pascal/depot/filedata/src/cloudsatfiledata.h` ` 2 @brief read the geolocation data (latitude, longitude and time) This method is used to make the search of the indexes of a (lat,lon,time) point faster.џџџџ CLOUDSATFileDatavoidload_v_pixeld/home/pascal/depot/filedata/src/cloudsatfiledata.hЎЎB @brief load the list data pixelsџџџџ CLOUDSATFileDatavoidopen_data_filed/home/pascal/depot/filedata/src/cloudsatfiledata.hИК. @brief opens the file.џџџџ CLOUDSATFileDatavoidparse_filenamed/home/pascal/depot/filedata/src/cloudsatfiledata.hA A6в @brief extract sone informations using the filename @param short_filename the filename without its pathџџџџ CLOUDSATFileDatashort_filenameџџџџџџџџconst string&џџџџvoid*set_lat_lon_index_maxd/home/pascal/depot/filedata/src/cloudsatfiledata.hJ J Œ @brief read the geolocation data array size (latitude, and longitude)џџџџ CLOUDSATFileDatavoid"set_time_coveraged/home/pascal/depot/filedata/src/cloudsatfiledata.h< <š @brief compute the time range covered by this file, depending of the productџџџџ CLOUDSATFileDatavoid$~ CLOUDSATFileDatad/home/pascal/depot/filedata/src/cloudsatfiledata.h[ [џџџџџџџџ CLOUDSATFileDataџџџџclose_data_filed/home/pascal/depot/filedata/src/cloudsatfiledata.hВД0 @brief closes the file.џџџџ CLOUDSATFileDatavoid"get_nb_geo_pointsd/home/pascal/depot/filedata/src/cloudsatfiledata.hЊ­Ц @brief retrieve the number of (lat,lon) pixels in the file @return the number of (lat,lon) pixelsџџџџ CLOUDSATFileDataconst intget_pixel_coordd/home/pascal/depot/filedata/src/cloudsatfiledata.hТШЖ @brief retrieve the coordinates of a pixel using its index @param ipix [IN] index of the pixel @param lat [OUT] latitude of the pixel @param lon [OUT] longitude of the pixel @param time [OUT] timestamp of the pixelџџџџ CLOUDSATFileDataipixџџџџџџџџ(const vector< int >&џџџџlatџџџџџџџџ float&џџџџlonџџџџџџџџ float&џџџџtimeџџџџџџџџdouble&џџџџvoidget_productd/home/pascal/depot/filedata/src/cloudsatfiledata.hˆŒx @brief access to the product name @return the product nameџџџџ CLOUDSATFileData stringget_versiond/home/pascal/depot/filedata/src/cloudsatfiledata.h–  @brief access to the version of the product @return the version of the productџџџџ CLOUDSATFileData stringget_vindexd/home/pascal/depot/filedata/src/cloudsatfiledata.h ЄŠ @brief build the list of indices of pixels that are in colocation tolerance, sorted by increasing distance to (lat,lon) If (lat,lon) is not found or out of the colocalisation_frame, returns an empty vector @param lat the latitude @param lon the longitude @param colocation_tolerance the acceptable bias (in km or degrees. Supposed to be in, a plane approximation) between [lat,lon] and the nearest data point. @return the list of indices of pixelsџџџџ CLOUDSATFileDatav_indexџџџџџџџџ2vector< vector < int > >&џџџџlatџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџ(colocation_toleranceџџџџџџџџconst floatџџџџvoidopen_data_filed/home/pascal/depot/filedata/src/cloudsatfiledata.hИК. @brief opens the file.џџџџ CLOUDSATFileDatavoid (colocation_toleranced/home/pascal/depot/filedata/src/cloudsatfiledata.h+џџџџconst float"lat_lon_index_maxd/home/pascal/depot/filedata/src/cloudsatfiledata.h11B The geolocation data array size intlatitude_named/home/pascal/depot/filedata/src/cloudsatfiledata.h# #r The name of the latitude data field (in fact it's a VD)  stringlongitude_named/home/pascal/depot/filedata/src/cloudsatfiledata.h% %t The name of the longitude data field (in fact it's a VD)  stringnb_layersd/home/pascal/depot/filedata/src/cloudsatfiledata.hQQ „ Maximum number of layers for a CLOUDSAT 2B-GEOPROF-LIDAR product const intnb_profile_maxd/home/pascal/depot/filedata/src/cloudsatfiledata.hOO)b Maximum number of profiles for a CLOUDSAT orbit const intnb_vbinsd/home/pascal/depot/filedata/src/cloudsatfiledata.hMM!n Number of vertical bins of a CLOUDSAT profile (fixed) const intorbit_nbd/home/pascal/depot/filedata/src/cloudsatfiledata.h3 32 The number of the orbit  shortproductd/home/pascal/depot/filedata/src/cloudsatfiledata.h- -D The name of the CLOUDSAT product  stringtime_named/home/pascal/depot/filedata/src/cloudsatfiledata.h''!j The name of the time data field (in fact it's a VD) const string time_origin_named/home/pascal/depot/filedata/src/cloudsatfiledata.h))(Ш The name of the data field that sets the time (in TAI93 convention) of the first shots (also a VD) const stringversiond/home/pascal/depot/filedata/src/cloudsatfiledata.h/ / The version of the product : concatenation of the reprocessing and the epoch number (format R**_V** where * is a digit number)  string dardarfiledata.hd/home/pascal/depot/filedata/src/dardarfiledata.cpp%yЦf.xџџџџ dardarfiledata.h'§ƒЎd/home/pascal/depot/filedata/src/dardarfiledata.cppХ\IŽd/home/pascal/depot/filedata/src/dardarfiledata.cppџџџџџџџџџџџџDARDARFileDatad/home/pascal/depot/filedata/src/dardarfiledata.cpp џџџџџџџџDARDARFileDataџџџ€nameџџџџџџџџconst string&џџџџmodeџџџџџџџџconst string&џџџџџџџџcheck_filenamed/home/pascal/depot/filedata/src/dardarfiledata.cppqšџџџџџџџџDARDARFileDataџџџ€short_filenameџџџџџџџџconst string&џџџџboolcontain_datad/home/pascal/depot/filedata/src/dardarfiledata.cppђєџџџџџџџџDARDARFileDataџџџ€latџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџtimeџџџџџџџџconst double&џџџџ(colocation_toleranceџџџџџџџџconst double&џџџџconst bool contain_locationd/home/pascal/depot/filedata/src/dardarfiledata.cppюёџџџџџџџџDARDARFileDataџџџ€latџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџtoleranceџџџџџџџџconst double&џџџџconst bool*free_geolocation_datad/home/pascal/depot/filedata/src/dardarfiledata.cppАЗџџџџџџџџDARDARFileDataџџџ€voidget_indexd/home/pascal/depot/filedata/src/dardarfiledata.cppѕ&џџџџџџџџDARDARFileDataџџџ€latџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџnearest_pix_idxџџџџџџџџint&џџџџ(colocation_toleranceџџџџџџџџconst floatџџџџconst bool4get_nearest_point_distanced/home/pascal/depot/filedata/src/dardarfiledata.cpp'6џџџџџџџџDARDARFileDataџџџ€latџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџcoloc_toleranceџџџџџџџџconst floatџџџџconst floatinitd/home/pascal/depot/filedata/src/dardarfiledata.cpp&;џџџџџџџџDARDARFileDataџџџ€void*load_geolocation_datad/home/pascal/depot/filedata/src/dardarfiledata.cppИьџџџџџџџџDARDARFileDataџџџ€voidload_v_pixeld/home/pascal/depot/filedata/src/dardarfiledata.cpp=GџџџџџџџџDARDARFileDataџџџ€voidparse_filenamed/home/pascal/depot/filedata/src/dardarfiledata.cpp<oџџџџџџџџDARDARFileDataџџџ€short_filenameџџџџџџџџconst string&џџџџvoid*set_lat_lon_index_maxd/home/pascal/depot/filedata/src/dardarfiledata.cpp7<џџџџџџџџDARDARFileDataџџџ€void"set_time_coveraged/home/pascal/depot/filedata/src/dardarfiledata.cpp›ЏџџџџџџџџDARDARFileDataџџџ€void ~ DARDARFileDatad/home/pascal/depot/filedata/src/dardarfiledata.cpp!%џџџџџџџџDARDARFileDataџџџ€џџџџ$cloudsatfiledata.h`/home/pascal/depot/filedata/src/dardarfiledata.h%yУут(џџџџ`/home/pascal/depot/filedata/src/dardarfiledata.h‡S•ѓ$cloudsatfiledata.h)Q‘П`/home/pascal/depot/filedata/src/dardarfiledata.hџџџџџџџџџџџџDARDARFileData`/home/pascal/depot/filedata/src/dardarfiledata.hп @author Nicolas PASCAL @class DARDARFileData manage the reading of CLOUSAT filesџџџџ"SatelliteFileDataHDFFileDataDARDARFileData`/home/pascal/depot/filedata/src/dardarfiledata.h[[>џџџџџџџџDARDARFileDatanameџџџџџџџџconst string&џџџџmodeџџџџџџџџconst string&џџџџџџџџcheck_filename`/home/pascal/depot/filedata/src/dardarfiledata.hD D6ц @brief test if the filename seems to be a valid CLOUDSAT file @param short_filename the filename without its pathџџџџDARDARFileDatashort_filenameџџџџџџџџconst string&џџџџboolclose_data_file`/home/pascal/depot/filedata/src/dardarfiledata.hqs0 @brief closes the file.џџџџDARDARFileDatavoidcontain_data`/home/pascal/depot/filedata/src/dardarfiledata.h|Р @brief check if the file has possible (lat,lon) coincidence @warning it's an EVENTUAL coincidence. That is not a proof !!! @param lat latitude @param lon longitude @param time time @param colocation_tolerance the acceptable bias (in km or degrees. Supposed to be in, a plane approximation) between [lat,lon] and the nearest data point. @return true if can eventually contain a coincidence with the point. @warning at this time always true. I don't have a good way to do itџџџџDARDARFileDatalatџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџtimeџџџџџџџџconst double&џџџџ(colocation_toleranceџџџџџџџџconst double&џџџџconst bool contain_location`/home/pascal/depot/filedata/src/dardarfiledata.h’’`8 @brief check if this file has eventually data coincident with (lat,lon) Actually, it only tests if (lat,lon) is contained in the data's bounding rectangle. @param lat the latitude of the event @param lon the longitude of the event @param tolerance acceptable bias between the nearest point in the data and the given (lat,lon) point @return true if a point in the data has been found in the colocation frameџџџџDARDARFileDatalatџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџtoleranceџџџџџџџџconst double&џџџџconst bool*free_geolocation_data`/home/pascal/depot/filedata/src/dardarfiledata.hi i и @brief free eventually loaded geolocation data If the geolocation data are not loaded, doesn't do anythingџџџџDARDARFileDatavoid"get_dardar_height`/home/pascal/depot/filedata/src/dardarfiledata.hлнТ @brief accessor to the altitudes of the bins @return a vector with the bins altitudes in metersџџџџDARDARFileDataconst int16*get_index`/home/pascal/depot/filedata/src/dardarfiledata.hАА‚ь @brief find the index of the nearest point to (lat,lon) in the data. If (lat,lon) is not found or out of the colocalisation_frame, returned indexes are [-1,-1] @param lat the latitude @param lon the longitude @param nearest_pix_idx the index of the nearest measure. -1 if no coincidence found. @param colocation_tolerance the acceptable bias (in km or degrees. Supposed to be in, a plane approximation) between [lat,lon] and the nearest data point. @return true if the coincidence has been foundџџџџDARDARFileDatalatџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџnearest_pix_idxџџџџџџџџint&џџџџ(colocation_toleranceџџџџџџџџconst floatџџџџconst bool"get_nb_geo_points`/home/pascal/depot/filedata/src/dardarfiledata.h~‚Ц @brief retrieve the number of (lat,lon) pixels in the file @return the number of (lat,lon) pixelsџџџџDARDARFileDataconst int4get_nearest_point_distance`/home/pascal/depot/filedata/src/dardarfiledata.hІІŽВ @brief compute the distance to (lat,lon) of the nearest point in the data If @a coloc_tolerance is given, it will compute only the distance of the points that have a distance to ( @a lat, @a lon ) inferior to @a coloc_tolerance @param lat the latitude @param lon the longitude @param coloc_tolerance the -/+ maximal tolerance for 2 points considered as colocated @return the distance to the nearest point, or -1 if no point in the colocalisation frame has been found.џџџџDARDARFileDatalatџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџcoloc_toleranceџџџџџџџџconst floatџџџџconst floatget_pixel_coord`/home/pascal/depot/filedata/src/dardarfiledata.hХЧ2 @brief retrieve the coordinates of a pixel using its index @param ipix [IN] index of the pixel in a unique value vector for interface implementation purpose @param lat [OUT] latitude of the pixel @param lon [OUT] longitude of the pixel @param time [OUT] timestamp of the pixelџџџџDARDARFileDataipixџџџџџџџџ(const vector< int >&џџџџlatџџџџџџџџ float&џџџџlonџџџџџџџџ float&џџџџtimeџџџџџџџџdouble&џџџџvoidget_pixel_coord`/home/pascal/depot/filedata/src/dardarfiledata.hЯеЖ @brief retrieve the coordinates of a pixel using its index @param ipix [IN] index of the pixel @param lat [OUT] latitude of the pixel @param lon [OUT] longitude of the pixel @param time [OUT] timestamp of the pixelџџџџDARDARFileDataipixџџџџџџџџconst intџџџџlatџџџџџџџџ float&џџџџlonџџџџџџџџ float&џџџџtimeџџџџџџџџdouble&џџџџvoidget_product`/home/pascal/depot/filedata/src/dardarfiledata.hƒ‡x @brief access to the product name @return the product nameџџџџDARDARFileData stringget_version`/home/pascal/depot/filedata/src/dardarfiledata.hˆ‘  @brief access to the version of the product @return the version of the productџџџџDARDARFileData stringget_vindex`/home/pascal/depot/filedata/src/dardarfiledata.hЙНŠ @brief build the list of indices of pixels that are in colocation tolerance, sorted by increasing distance to (lat,lon) If (lat,lon) is not found or out of the colocalisation_frame, returns an empty vector @param lat the latitude @param lon the longitude @param colocation_tolerance the acceptable bias (in km or degrees. Supposed to be in, a plane approximation) between [lat,lon] and the nearest data point. @return the list of indices of pixelsџџџџDARDARFileDatav_indexџџџџџџџџ2vector< vector < int > >&џџџџlatџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџ(colocation_toleranceџџџџџџџџconst floatџџџџvoidinit`/home/pascal/depot/filedata/src/dardarfiledata.hH H† @brief initialize the attributes during the first read of the fileџџџџDARDARFileDatavoid*load_geolocation_data`/home/pascal/depot/filedata/src/dardarfiledata.hd d 2 @brief read the geolocation data (latitude, longitude and time) This method is used to make the search of the indexes of a (lat,lon,time) point faster.џџџџDARDARFileDatavoidload_v_pixel`/home/pascal/depot/filedata/src/dardarfiledata.hm mB @brief load the list data pixelsџџџџDARDARFileDatavoidopen_data_file`/home/pascal/depot/filedata/src/dardarfiledata.hwy. @brief opens the file.џџџџDARDARFileDatavoidparse_filename`/home/pascal/depot/filedata/src/dardarfiledata.h? ?6в @brief extract sone informations using the filename @param short_filename the filename without its pathџџџџDARDARFileDatashort_filenameџџџџџџџџconst string&џџџџvoid*set_lat_lon_index_max`/home/pascal/depot/filedata/src/dardarfiledata.hL L Œ @brief read the geolocation data array size (latitude, and longitude)џџџџDARDARFileDatavoid"set_time_coverage`/home/pascal/depot/filedata/src/dardarfiledata.hP Pš @brief compute the time range covered by this file, depending of the productџџџџDARDARFileDatavoid ~ DARDARFileData`/home/pascal/depot/filedata/src/dardarfiledata.h__џџџџџџџџDARDARFileDataџџџџ close_data_file`/home/pascal/depot/filedata/src/dardarfiledata.hqs0 @brief closes the file.џџџџDARDARFileDatavoid"get_dardar_height`/home/pascal/depot/filedata/src/dardarfiledata.hлнТ @brief accessor to the altitudes of the bins @return a vector with the bins altitudes in metersџџџџDARDARFileDataconst int16*"get_nb_geo_points`/home/pascal/depot/filedata/src/dardarfiledata.h~‚Ц @brief retrieve the number of (lat,lon) pixels in the file @return the number of (lat,lon) pixelsџџџџDARDARFileDataconst intget_pixel_coord`/home/pascal/depot/filedata/src/dardarfiledata.hХЧ2 @brief retrieve the coordinates of a pixel using its index @param ipix [IN] index of the pixel in a unique value vector for interface implementation purpose @param lat [OUT] latitude of the pixel @param lon [OUT] longitude of the pixel @param time [OUT] timestamp of the pixelџџџџDARDARFileDataipixџџџџџџџџ(const vector< int >&џџџџlatџџџџџџџџ float&џџџџlonџџџџџџџџ float&џџџџtimeџџџџџџџџdouble&џџџџvoidget_pixel_coord`/home/pascal/depot/filedata/src/dardarfiledata.hЯеЖ @brief retrieve the coordinates of a pixel using its index @param ipix [IN] index of the pixel @param lat [OUT] latitude of the pixel @param lon [OUT] longitude of the pixel @param time [OUT] timestamp of the pixelџџџџDARDARFileDataipixџџџџџџџџconst intџџџџlatџџџџџџџџ float&џџџџlonџџџџџџџџ float&џџџџtimeџџџџџџџџdouble&џџџџvoidget_product`/home/pascal/depot/filedata/src/dardarfiledata.hƒ‡x @brief access to the product name @return the product nameџџџџDARDARFileData stringget_version`/home/pascal/depot/filedata/src/dardarfiledata.hˆ‘  @brief access to the version of the product @return the version of the productџџџџDARDARFileData stringget_vindex`/home/pascal/depot/filedata/src/dardarfiledata.hЙНŠ @brief build the list of indices of pixels that are in colocation tolerance, sorted by increasing distance to (lat,lon) If (lat,lon) is not found or out of the colocalisation_frame, returns an empty vector @param lat the latitude @param lon the longitude @param colocation_tolerance the acceptable bias (in km or degrees. Supposed to be in, a plane approximation) between [lat,lon] and the nearest data point. @return the list of indices of pixelsџџџџDARDARFileDatav_indexџџџџџџџџ2vector< vector < int > >&џџџџlatџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџ(colocation_toleranceџџџџџџџџconst floatџџџџvoidopen_data_file`/home/pascal/depot/filedata/src/dardarfiledata.hwy. @brief opens the file.џџџџDARDARFileDatavoidDARDAR_CLOUD`/home/pascal/depot/filedata/src/dardarfiledata.h++џџџџProduct_IDDARDAR_MASK`/home/pascal/depot/filedata/src/dardarfiledata.h,,џџџџProduct_IDUNDEFINED`/home/pascal/depot/filedata/src/dardarfiledata.h**џџџџProduct_ID(colocation_tolerance`/home/pascal/depot/filedata/src/dardarfiledata.h+џџџџconst floatdardar_height`/home/pascal/depot/filedata/src/dardarfiledata.hUU'6 altitudes of the bins (m) const int16*"lat_lon_index_max`/home/pascal/depot/filedata/src/dardarfiledata.h77B The geolocation data array size intlatitude_name`/home/pascal/depot/filedata/src/dardarfiledata.h! !J The name of the latitude data field  stringlongitude_name`/home/pascal/depot/filedata/src/dardarfiledata.h# #L The name of the longitude data field  stringnb_dardar_bin`/home/pascal/depot/filedata/src/dardarfiledata.hSS&„ Number of vertical bins of a DARDAR (MASK+CLOUD) profile (fixed) const intorbit_nb`/home/pascal/depot/filedata/src/dardarfiledata.h9 92 The number of the orbit  shortproduct`/home/pascal/depot/filedata/src/dardarfiledata.h3 3D The name of the CLOUDSAT product  stringproduct_id`/home/pascal/depot/filedata/src/dardarfiledata.h118 the type of DARDAR product Product_IDtime_name`/home/pascal/depot/filedata/src/dardarfiledata.h% %B The name of the time data field  stringversion`/home/pascal/depot/filedata/src/dardarfiledata.h5 5 The version of the product : concatenation of the reprocessing and the epoch number (format R**_V** where * is a digit number)  string Product_ID`/home/pascal/depot/filedata/src/dardarfiledata.h)-€ @enum Product_ID defines the different types of DARDAR productsconst int’ date.hP/home/pascal/depot/filedata/src/date.cpp%yУут(џџџџP/home/pascal/depot/filedata/src/date.cppЂў&t date.hћMєP/home/pascal/depot/filedata/src/date.cppџџџџџџџџџџџџ)DateP/home/pascal/depot/filedata/src/date.cppCEџџџџџџџџDateЕі € _yearџџџџџџџџintџџџџ _monthџџџџџџџџintџџџџ_dayџџџџџџџџintџџџџ _hourџџџџџџџџintџџџџ_minџџџџџџџџintџџџџ_secџџџџџџџџintџџџџџџџџDateP/home/pascal/depot/filedata/src/date.cppFHџџџџџџџџDate_epoch_timeџџџџџџџџconst double&џџџџџџџџDateP/home/pascal/depot/filedata/src/date.cppIKџџџџџџџџDateЖ_epoch_timeџџџџџџџџconst time_t&џџџџџџџџget_ECMWF_timeP/home/pascal/depot/filedata/src/date.cppЙМџџџџџџџџDateЬL const doubleget_TAI93_timeP/home/pascal/depot/filedata/src/date.cppСФџџџџџџџџDate const doubleget_date_strP/home/pascal/depot/filedata/src/date.cppгмџџџџџџџџDate formatџџџџџџџџconst char*џџџџconst stringget_dayP/home/pascal/depot/filedata/src/date.cpp…‡џџџџџџџџDateЖ€ const intget_day_numberP/home/pascal/depot/filedata/src/date.cpp!)џџџџџџџџDateyearџџџџџџџџconst int&џџџџ monthџџџџџџџџconst int&џџџџdayџџџџџџџџint&џџџџintget_day_rangeP/home/pascal/depot/filedata/src/date.cppщџџџџџџџџDate€yearџџџџџџџџconst int&џџџџ monthџџџџџџџџconst int&џџџџ firstџџџџџџџџint&џџџџlastџџџџџџџџint&џџџџvoidget_daysP/home/pascal/depot/filedata/src/date.cpp џџџџџџџџDate хW€ startџџџџџџџџconst Date&џџџџendџџџџџџџџconst Date&џџџџ(const vector< Date >get_epoch_timeP/home/pascal/depot/filedata/src/date.cpp<@џџџџџџџџDate€ s_dateџџџџџџџџconst char*џџџџ formatџџџџџџџџconst char*џџџџ time_tget_hourP/home/pascal/depot/filedata/src/date.cpp‚„џџџџџџџџDate const intget_julian_timeP/home/pascal/depot/filedata/src/date.cpp˜œџџџџџџџџDateconst doubleget_minP/home/pascal/depot/filedata/src/date.cppџџџџџџџџDate const intget_monthP/home/pascal/depot/filedata/src/date.cpp‹џџџџџџџџDate хW const int get_month_stringP/home/pascal/depot/filedata/src/date.cppошџџџџџџџџDate monthџџџџџџџџconst intџџџџconst stringget_nb_dayP/home/pascal/depot/filedata/src/date.cppџџџџџџџџDate monthџџџџџџџџconst int&џџџџyearџџџџџџџџconst int&џџџџconst intget_secP/home/pascal/depot/filedata/src/date.cpp|~џџџџџџџџDateЕђЅ const int$get_tai93_leap_secP/home/pascal/depot/filedata/src/date.cppVYџџџџџџџџDate€dџџџџџџџџconst Date&џџџџ double get_tai_leap_secP/home/pascal/depot/filedata/src/date.cppBUџџџџџџџџDatedџџџџџџџџconst Date&џџџџ doubleget_ydayP/home/pascal/depot/filedata/src/date.cppˆŠџџџџџџџџDate const intget_yearP/home/pascal/depot/filedata/src/date.cppŽџџџџџџџџDate const int&init_leap_sec_tableP/home/pascal/depot/filedata/src/date.cppAџџџџџџџџDatevoidis_the_same_dayP/home/pascal/depot/filedata/src/date.cppХЧџџџџџџџџDatedџџџџџџџџconst Date&џџџџconst booloperator !=P/home/pascal/depot/filedata/src/date.cpp[`џџџџџџџџDate dџџџџџџџџconst Date&џџџџbooloperator +P/home/pascal/depot/filedata/src/date.cppЈЌџџџџџџџџDatetimeџџџџџџџџconst double&џџџџDateoperator <P/home/pascal/depot/filedata/src/date.cppmrџџџџџџџџDate dџџџџџџџџconst Date&џџџџbooloperator <<P/home/pascal/depot/filedata/src/date.cpp+.џџџџџџџџ€ streamџџџџџџџџstd::ostream&џџџџdateџџџџџџџџconst Date&џџџџstd::ostream&operator <=P/home/pascal/depot/filedata/src/date.cppafџџџџџџџџDateџџџ dџџџџџџџџconst Date&џџџџbooloperator =P/home/pascal/depot/filedata/src/date.cppLTџџџџџџџџDateЕї<dџџџџџџџџconst Date&џџџџ Date&operator ==P/home/pascal/depot/filedata/src/date.cppUZџџџџџџџџDate dџџџџџџџџconst Date&џџџџbooloperator >P/home/pascal/depot/filedata/src/date.cppsxџџџџџџџџDate dџџџџџџџџconst Date&џџџџbooloperator >=P/home/pascal/depot/filedata/src/date.cppglџџџџџџџџDate dџџџџџџџџconst Date&џџџџbool printP/home/pascal/depot/filedata/src/date.cpp8:џџџџџџџџDatee voidset_ECMWF_timeP/home/pascal/depot/filedata/src/date.cppЎИџџџџџџџџDateЕљ[€timeџџџџџџџџconst double&џџџџvoidset_TAI93_timeP/home/pascal/depot/filedata/src/date.cppНРџџџџџџџџDateSМ&timeџџџџџџџџconst double&џџџџvoidset_dateP/home/pascal/depot/filedata/src/date.cppІџџџџџџџџDate Ўs _yearџџџџџџџџconst int&џџџџ _monthџџџџџџџџconst int&џџџџ_dayџџџџџџџџconst int&џџџџ _hourџџџџџџџџconst int&џџџџ_minџџџџџџџџconst int&џџџџ_secџџџџџџџџconst int&џџџџvoidset_date_strP/home/pascal/depot/filedata/src/date.cppШбџџџџџџџџDatesџџџџџџџџconst string&џџџџ formatџџџџџџџџconst char*џџџџvoidset_epoch_timeP/home/pascal/depot/filedata/src/date.cppy{џџџџџџџџDate_xџџџџџџџџconst time_t&џџџџvoidset_julian_timeP/home/pascal/depot/filedata/src/date.cpp’—џџџџџџџџDate*julian_timeџџџџџџџџconst double&џџџџvoidto_stringP/home/pascal/depot/filedata/src/date.cpp06џџџџџџџџDateџџџ  stringiostream stringassert.h cmath ctimeclocaleexceptiontools.hL/home/pascal/depot/filedata/src/date.h%yУут(џџџџ cmath†Ьassert.hє(DЈ string XaчiostreamВ$BєL/home/pascal/depot/filedata/src/date.hуUclocale˜'ууtools.hАох7 ctime‡[‚exceptionOL/home/pascal/depot/filedata/src/date.hџџџџџџџџџџџџDateL/home/pascal/depot/filedata/src/date.h‰‚|Manages the manipulation of dates. REM : - midnight is used with the convention "00:00:00" ( not 24:00:00 ) LIMITATION : The year must be more than 1970, because inside the class, all dates are converted into the UNIX epoch time. In the following documentation, this means "the date that is represented by this object"џџџџ,DateL/home/pascal/depot/filedata/src/date.hœœ]џџџџџџџџDateyearџџџџџџџџintџџџџ monthџџџџџџџџintџџџџdayџџџџџџџџintџџџџhourџџџџџџџџintџџџџminџџџџџџџџintџџџџsecџџџџџџџџintџџџџџџџџDateL/home/pascal/depot/filedata/src/date.hЁЁџџџџџџџџDatetmџџџџџџџџconst time_t&џџџџџџџџDateL/home/pascal/depot/filedata/src/date.hІІџџџџџџџџDatetmџџџџџџџџconst double&џџџџџџџџget_ECMWF_timeL/home/pascal/depot/filedata/src/date.hLL'N @brief access to the time in hour using the ECMWF convention (number of hours from 1900/01/01 at 00:00:00) @return the time in hours since the 1900/01/01 at 00:00:00џџџџDate const doubleget_TAI93_timeL/home/pascal/depot/filedata/src/date.hBB'@ @brief access to the time in sec using the TAI (International Atomic Time) convention : seconds from Jan. 1, 1993 @return the time in sec since the 1993/01/01џџџџDate const doubleget_date_strL/home/pascal/depot/filedata/src/date.hgg8і @brief return the date as a formatted string @param _format the format. See strftime documentation for format descriptionџџџџDate_formatџџџџџџџџconst char*џџџџconst stringget_dayL/home/pascal/depot/filedata/src/date.hќќx the number of the day of this @return the day numberџџџџDate const intget_day_numberL/home/pascal/depot/filedata/src/date.h!!I& return the day number spend since the start of year @param year the number of the year, using christian numeration (ex : 2005) @param month the number of the month (1->12) @param day the number of the day @return the number of days since the start of yearџџџџDateyearџџџџџџџџconst int&џџџџ monthџџџџџџџџconst int&џџџџdayџџџџџџџџint&џџџџintget_day_rangeL/home/pascal/depot/filedata/src/date.h**V№ get the day number range for a month. Rem : the 1st january has the number 0 (POSIX convention) @param year the year, using 4 digits (ex 2005) @param month the month number (0->11) @param first the number (from the start of year) of the 1st day of the month (0->365) @param last the number (from the start of year) of the last day of the month (0->365)џџџџDateyearџџџџџџџџconst int&џџџџ monthџџџџџџџџconst int&џџџџ firstџџџџџџџџint&џџџџlastџџџџџџџџint&џџџџvoidget_daysL/home/pascal/depot/filedata/src/date.hJд @brief list the days between the start date and end date (included) as a vector of "YYYY_MM_DD" strings @param start the start date @param end the end date @return a vector of Date representing the days between @a start and @a endџџџџDate startџџџџџџџџconst Date&џџџџendџџџџџџџџconst Date&џџџџ(const vector< Date >get_epoch_timeL/home/pascal/depot/filedata/src/date.hpuи @brief return the date using the UNIX epoch time convention (number of seconds passed since the 1970/01/01)џџџџDate time_tget_epoch_timeL/home/pascal/depot/filedata/src/date.hL" @brief return the date using the UNIX epoch time convention (number of seconds passed since the 1970/01/01) @param s a string representing a date @param _format a string formatter using the strptime convention @return the number of seconds in UNIX EPOCH time conventionџџџџDate s_dateџџџџџџџџconst char*џџџџ formatџџџџџџџџconst char*џџџџ time_tget_hourL/home/pascal/depot/filedata/src/date.hїїj the number of hours of this @return the hoursџџџџDate const intget_julian_timeL/home/pascal/depot/filedata/src/date.h=="Р convert the Date represented by this into a julian date. @return the julian date in daysџџџџDateconst doubleget_minL/home/pascal/depot/filedata/src/date.hђђr the number of minutes of this @return the minutesџџџџDate const intget_monthL/home/pascal/depot/filedata/src/date.h€ the number of the month of this @return the month numberџџџџDate const int get_month_stringL/home/pascal/depot/filedata/src/date.h//<& return a string representing the month passed in parametre, using 2 digits. In other words, if the month if less than 10, it will return 0+the_number_of_the_month. If more than 10, it will just convert the in month into a string. @param _month the number of the monthџџџџDate _monthџџџџџџџџconst intџџџџconst stringget_nb_dayL/home/pascal/depot/filedata/src/date.hAо return the number of days for the given month of the given year @param month the number of the month (1->12) @param year the number of the year, using christian numeration (ex : 2005) @return the number of days of the monthџџџџDate monthџџџџџџџџconst int&џџџџyearџџџџџџџџconst int&џџџџconst intget_secL/home/pascal/depot/filedata/src/date.hээr the number of seconds of this @return the secondsџџџџDate const int$get_tai93_leap_secL/home/pascal/depot/filedata/src/date.hЕЕ6ц @brief compute the number of leap seconds between a TAI93 and UTC time at the given date @param d a date @returnџџџџDatedџџџџџџџџconst Date&џџџџ double get_tai_leap_secL/home/pascal/depot/filedata/src/date.hЛЛ4ц @brief compute the number of leap seconds between a TAI70 and UTC time at the given date @param d a date @returnџџџџDatedџџџџџџџџconst Date&џџџџ doubleget_ydayL/home/pascal/depot/filedata/src/date.h  Ш the number of days passed since the start of year @return the number of days from year startџџџџDate const intget_yearL/home/pascal/depot/filedata/src/date.h` the year of this @return the year numberџџџџDate const int&init_leap_sec_tableL/home/pascal/depot/filedata/src/date.hЏЏ&А @brief initialize the static table of UTC to TAI leap seconds. This method must updatedџџџџDatevoidis_epoch_startL/home/pascal/depot/filedata/src/date.hшш9њ @brief check is the date is the start of the UNIX epoch time (default) @return true is the date is the 1970:01:01T00:00:00ZџџџџDate boolis_the_same_dayL/home/pascal/depot/filedata/src/date.h33-œ check is the 2 dates are issued of the same day (same day; month and year)џџџџDatedџџџџџџџџconst Date&џџџџconst booloperator !=L/home/pascal/depot/filedata/src/date.hЯ Я)` unequality test operator @param d a DateџџџџDate dџџџџџџџџconst Date&џџџџbooloperator +L/home/pascal/depot/filedata/src/date.hХ Х'Т A time in seconds addition operator @param time a time in secs that must be added to thisџџџџDatetimeџџџџџџџџconst double&џџџџDateoperator <L/home/pascal/depot/filedata/src/date.hо о(T less test operator @param d a DateџџџџDate dџџџџџџџџconst Date&џџџџbooloperator <<L/home/pascal/depot/filedata/src/date.hLџџџџџџџџDate streamџџџџџџџџstd::ostream&џџџџdateџџџџџџџџconst Date&џџџџstd::ostream&operator <=L/home/pascal/depot/filedata/src/date.hд д)f less or equal test operator @param d a DateџџџџDate dџџџџџџџџconst Date&џџџџbooloperator =L/home/pascal/depot/filedata/src/date.hР Р#\ Affectation operator @param d the DateџџџџDatedџџџџџџџџconst Date&џџџџ Date&operator ==L/home/pascal/depot/filedata/src/date.hЪ Ъ)\ equality test operator @param d a DateџџџџDate dџџџџџџџџconst Date&џџџџbooloperator >L/home/pascal/depot/filedata/src/date.hу у(Z greater test operator @param d a DateџџџџDate dџџџџџџџџconst Date&џџџџbooloperator >=L/home/pascal/depot/filedata/src/date.hй й)l greater or equal test operator @param d a DateџџџџDate dџџџџџџџџconst Date&џџџџbool printL/home/pascal/depot/filedata/src/date.hv v, print out the dateџџџџDate voidset_ECMWF_timeL/home/pascal/depot/filedata/src/date.hQ Q+6 @brief set the date using the ECMWF convention (number of hours from 1900/01/01 at 00:00:00) @param time a time in hours since the 1900/01/01 at 00:00:00џџџџDatetimeџџџџџџџџconst double&џџџџvoidset_TAI93_timeL/home/pascal/depot/filedata/src/date.hG G/ў @brief set the date using a TAI time (number of seconds passed since the 1993/01/01) @param TAI_time a time in TAI conventionџџџџDateTAI_timeџџџџџџџџconst double&џџџџvoidset_dateL/home/pascal/depot/filedata/src/date.h\ \–” build the date with the day number + the month number. @param _year the year (the real one, not from 1970 or stuff like this. ex : 2005) @param _month the month in range (1->12) @param _day the day in range (1->31) @param _hour the hour in range (0->23) @param _min the minutes in range (0->59) @param _sec the seconds in range (0->59). In fact 60 is possible du to the Posix norma, but it's preferable not to use it in this case.џџџџDate _yearџџџџџџџџconst int&џџџџ _monthџџџџџџџџconst int&џџџџ_dayџџџџџџџџconst int&џџџџ _hourџџџџџџџџconst int&џџџџ_minџџџџџџџџconst int&џџџџ_secџџџџџџџџconst int&џџџџvoidset_date_strL/home/pascal/depot/filedata/src/date.hb bFf build the date using a formatted string. @param s the formatted string containing the date @param _format the format. See strptime documentation for format descriptionџџџџDatesџџџџџџџџconst string&џџџџ_formatџџџџџџџџconst char*џџџџvoidset_epoch_timeL/home/pascal/depot/filedata/src/date.hl l2 set the date using an epoch (ie UNIX) time (number of seconds passed since the 1970/01/01) @param _epoch_time a time in UNIX conventionџџџџDate_epoch_timeџџџџџџџџconst time_t&џџџџvoidset_julian_timeL/home/pascal/depot/filedata/src/date.h8 83ј set the time using a julian date (in float days since 1/1/-4712 at 12h00) @param julian_time the julian date in yearџџџџDatejulian_timeџџџџџџџџconst double&џџџџvoidto_stringL/home/pascal/depot/filedata/src/date.hw wџџџџџџџџDate string ~ DateL/home/pascal/depot/filedata/src/date.hЊЊџџџџџџџџDateџџџџget_epoch_timeL/home/pascal/depot/filedata/src/date.hpuи @brief return the date using the UNIX epoch time convention (number of seconds passed since the 1970/01/01)џџџџDate time_tis_epoch_startL/home/pascal/depot/filedata/src/date.hшш9њ @brief check is the date is the start of the UNIX epoch time (default) @return true is the date is the 1970:01:01T00:00:00ZџџџџDate bool ~ DateL/home/pascal/depot/filedata/src/date.hЊЊџџџџџџџџDateџџџџepoch_timeL/home/pascal/depot/filedata/src/date.hŠ Šџџџџ time_t.nsec_tai93_to_utc_startL/home/pascal/depot/filedata/src/date.h’’1т constant number of leap seconds between the TAI93 start ( 1st of January 1993 at 00:00:00 ) and the UTC start ()const int$utc_2_tai_leap_secL/home/pascal/depot/filedata/src/date.h!3 Table of the leap seconds between TAI and UTC from the 1st of January 1972 at 00:00:00 each line is : ( <start of range, included>, <end of range, excluded>, TAI - UTC leap seconds ) source : ftp://hpiers.obspm.fr/iers/bul/bulc/UTC-TAI.history (vector< Epoch2Leap >Epoch2LeapL/home/pascal/depot/filedata/src/date.h\€˜ Dates UTC to TAI leap seconds increments, and number of leap seconds to addџџџџEpoch2LeapL/home/pascal/depot/filedata/src/date.heewџџџџџџџџEpoch2Leapepoch_timeџџџџџџџџconst doubleџџџџleap_secџџџџџџџџconst intџџџџџџџџget_epoch_timeL/home/pascal/depot/filedata/src/date.hpvИ @brief accessor to the epoch time of a change leap seconds event @return a UNIX epoch timeџџџџEpoch2Leap doubleget_leap_secL/home/pascal/depot/filedata/src/date.hw|Д @brief accessor to the number of leap seconds at the given time @return the leap secondsџџџџEpoch2Leap int printL/home/pascal/depot/filedata/src/date.h}2 @brief print out contentџџџџEpoch2Leap void~ Epoch2LeapL/home/pascal/depot/filedata/src/date.hjjџџџџџџџџEpoch2LeapџџџџEpoch2LeapL/home/pascal/depot/filedata/src/date.heewџџџџџџџџEpoch2Leapepoch_timeџџџџџџџџconst doubleџџџџleap_secџџџџџџџџconst intџџџџџџџџget_epoch_timeL/home/pascal/depot/filedata/src/date.hpvИ @brief accessor to the epoch time of a change leap seconds event @return a UNIX epoch timeџџџџEpoch2Leap doubleget_leap_secL/home/pascal/depot/filedata/src/date.hw|Д @brief accessor to the number of leap seconds at the given time @return the leap secondsџџџџEpoch2Leap int printL/home/pascal/depot/filedata/src/date.h}2 @brief print out contentџџџџEpoch2Leap void~ Epoch2LeapL/home/pascal/depot/filedata/src/date.hjjџџџџџџџџEpoch2Leapџџџџepoch_timeL/home/pascal/depot/filedata/src/date.h] ]џџџџ doubleleap_secL/home/pascal/depot/filedata/src/date.h^ ^џџџџintbad_dateL/home/pascal/depot/filedata/src/date.h0;0Bad date exception classџџџџexceptionbad_dateL/home/pascal/depot/filedata/src/date.h22џџџџџџџџbad_dateaџџџџwhatL/home/pascal/depot/filedata/src/date.h7:џџџџџџџџbad_date$const char*~ bad_dateL/home/pascal/depot/filedata/src/date.h46џџџџџџџџbad_dateџџџџbad_dateL/home/pascal/depot/filedata/src/date.h22џџџџџџџџbad_dateaџџџџwhatL/home/pascal/depot/filedata/src/date.h7:џџџџџџџџbad_date$const char*~ bad_dateL/home/pascal/depot/filedata/src/date.h46џџџџџџџџbad_dateџџџџbad_monthL/home/pascal/depot/filedata/src/date.h?HZBad month exception : outside of range [1,12]џџџџexceptionbad_monthL/home/pascal/depot/filedata/src/date.hBB/џџџџџџџџbad_month monthџџџџџџџџconst intџџџџџџџџwhatL/home/pascal/depot/filedata/src/date.hDGџџџџџџџџbad_month$const char*~ bad_monthL/home/pascal/depot/filedata/src/date.hCCџџџџџџџџbad_monthџџџџbad_monthL/home/pascal/depot/filedata/src/date.hBB/џџџџџџџџbad_month monthџџџџџџџџconst intџџџџџџџџwhatL/home/pascal/depot/filedata/src/date.hDGџџџџџџџџbad_month$const char*~ bad_monthL/home/pascal/depot/filedata/src/date.hCCџџџџџџџџbad_monthџџџџ monthL/home/pascal/depot/filedata/src/date.h@@ џџџџint parse_date_errorL/home/pascal/depot/filedata/src/date.hJWџџџџџџџџstd::exception parse_date_errorL/home/pascal/depot/filedata/src/date.hLL[џџџџџџџџ parse_date_errordateџџџџџџџџconst string&џџџџ formatџџџџџџџџconst string&џџџџџџџџwhatL/home/pascal/depot/filedata/src/date.hOSџџџџџџџџ parse_date_error$const char*$~ parse_date_errorL/home/pascal/depot/filedata/src/date.hMM"џџџџџџџџ parse_date_errorџџџџ parse_date_errorL/home/pascal/depot/filedata/src/date.hLL[џџџџџџџџ parse_date_errordateџџџџџџџџconst string&џџџџ formatџџџџџџџџconst string&џџџџџџџџwhatL/home/pascal/depot/filedata/src/date.hOSџџџџџџџџ parse_date_error$const char*$~ parse_date_errorL/home/pascal/depot/filedata/src/date.hMM"џџџџџџџџ parse_date_errorџџџџdateL/home/pascal/depot/filedata/src/date.hU Uџџџџ string formatL/home/pascal/depot/filedata/src/date.hV Vџџџџ string2MAX_FORMATTED_STRING_SIZEL/home/pascal/depot/filedata/src/date.h++.Ќ The maximum number of characters in the string returned by the get_time_str function const intstdL/home/pascal/depot/filedata/src/date.h”ecmwffiledata.hhdffiledata.hmeteofiledata.htools.hfile_tools.hb/home/pascal/depot/filedata/src/ecmwffiledata.cpp%yїj|џџџџb/home/pascal/depot/filedata/src/ecmwffiledata.cppuRTRmeteofiledata.h/‘jhdffiledata.h˜vТfile_tools.hгЦtools.hАох7ecmwffiledata.hоsБBb/home/pascal/depot/filedata/src/ecmwffiledata.cppџџџџџџџџџџџџECMWFFileDatab/home/pascal/depot/filedata/src/ecmwffiledata.cppAQџџџџџџџџECMWFFileData Эanameџџџџџџџџconst string&џџџџmodeџџџџџџџџconst string&џџџџџџџџcheck_filenameb/home/pascal/depot/filedata/src/ecmwffiledata.cpp†КџџџџџџџџECMWFFileData filenameџџџџџџџџconst string&џџџџboolclose_data_fileb/home/pascal/depot/filedata/src/ecmwffiledata.cppМОџџџџџџџџECMWFFileDatavoid*get_dataset_data_typeb/home/pascal/depot/filedata/src/ecmwffiledata.cppджџџџџџџџџECMWFFileDatasds_nameџџџџџџџџ stringџџџџint get_dataset_nameb/home/pascal/depot/filedata/src/ecmwffiledata.cppавџџџџџџџџECMWFFileDataiџџџџџџџџintџџџџ stringget_grid_descb/home/pascal/depot/filedata/src/ecmwffiledata.cppekџџџџџџџџECMWFFileDataconst stringget_n_datasetb/home/pascal/depot/filedata/src/ecmwffiledata.cppЬЮ }џџџџECMWFFileDataint,get_nb_pressure_levelsb/home/pascal/depot/filedata/src/ecmwffiledata.cppX[џџџџџџџџECMWFFileDataQЙ€var_nameџџџџџџџџconst string&џџџџconst int&get_pressure_levelsb/home/pascal/depot/filedata/src/ecmwffiledata.cppTWџџџџџџџџECMWFFileData П|var_nameџџџџџџџџconst string&џџџџ&const vector< int >.get_values_attr_datasetb/home/pascal/depot/filedata/src/ecmwffiledata.cppикџџџџџџџџECMWFFileDatasds_nameџџџџџџџџ stringџџџџattrџџџџџџџџ stringџџџџ string has_attr_datasetb/home/pascal/depot/filedata/src/ecmwffiledata.cppмоџџџџџџџџECMWFFileDatasds_nameџџџџџџџџ stringџџџџattrџџџџџџџџ stringџџџџboolinit_gridb/home/pascal/depot/filedata/src/ecmwffiledata.cpp\dџџџџџџџџECMWFFileDatavoidopen_data_fileb/home/pascal/depot/filedata/src/ecmwffiledata.cppРЪџџџџџџџџECMWFFileDatavoidparse_filenameb/home/pascal/depot/filedata/src/ecmwffiledata.cppl…џџџџџџџџECMWFFileData fnameџџџџџџџџconst string&џџџџvoid~ ECMWFFileDatab/home/pascal/depot/filedata/src/ecmwffiledata.cppRSџџџџџџџџECMWFFileData Озџџџџgribfiledata.hmeteofiledata.hinterpolation.h earth_geometry.h^/home/pascal/depot/filedata/src/ecmwffiledata.h%yїhв@џџџџmeteofiledata.h/‘j earth_geometry.h”DpUgribfiledata.h(XTinterpolation.hЅqБ^/home/pascal/depot/filedata/src/ecmwffiledata.h K”7^/home/pascal/depot/filedata/src/ecmwffiledata.hџџџџџџџџџџџџECMWFFileData^/home/pascal/depot/filedata/src/ecmwffiledata.h c8 @author Nicolas PASCAL @class ECMWFFileData manage the reading of ECMWF GRIB files archived at ICARE @TODO remove FileDataReader interface implementationџџџџMeteoFileDataGribFileDataFileDataReader'ECMWFFileData^/home/pascal/depot/filedata/src/ecmwffiledata.h__=џџџџџџџџECMWFFileDataЖё€nameџџџџџџџџconst string&џџџџmodeџџџџџџџџconst string&џџџџџџџџalt_to_geop^/home/pascal/depot/filedata/src/ecmwffiledata.h35ќ @brief compute the geopotential of an altitude in m The formula used is : geop = g0 * alt. g0 is assumed to be constant in the atmosphere and on the surface on the earth @param alt an altitude in m @return the geopotential of this altitude, in m2.s-2џџџџECMWFFileDataaltџџџџџџџџconst double&џџџџ doublecheck_filename^/home/pascal/depot/filedata/src/ecmwffiledata.hD D<р @brief test if the filename seems to be a valid ECMWF file @param short_filename the filename without its pathџџџџECMWFFileDataџџџ short_filenameџџџџџџџџconst string&џџџџboolclose_data_file^/home/pascal/depot/filedata/src/ecmwffiledata.hY Yv --- FOR OLD DATA2GRID INTERFACE compatibility - START --- џџџџECMWFFileDatavoid*free_geolocation_data^/home/pascal/depot/filedata/src/ecmwffiledata.hhh$Њ @brief free eventually loaded data. Not used here, only for interface compatibilityџџџџECMWFFileDatavoid&get_abscissa_hybrid^/home/pascal/depot/filedata/src/ecmwffiledata.hH IKњ @brief compute the abscissa of the given pressures in the hybrid levels system. The abscissa is designed to be used lineary with log(P) @param v_out_abs [OUT] pressures abscissa @param v_out_pres [IN] searched pressures @param sz_out_pres [IN] number of searched pressures @param v_in_pres [IN] hybrid levels pressures @param sz_in_pres [IN] number of hybrid levels pressuresџџџџ Txoutџџџџ TyoutџџџџTxinџџџџECMWFFileDatav_out_absџџџџџџџџ Tyout*џџџџv_out_presџџџџџџџџconst Txout*џџџџsz_out_presџџџџџџџџconst intџџџџv_in_presџџџџџџџџconst Txin*џџџџsz_in_presџџџџџџџџconst intџџџџvoid get_abscissa_iso^/home/pascal/depot/filedata/src/ecmwffiledata.h= =^, @brief compute the abscissa of the given pressures in the isobaric levels system. The abscissa is designed to be used lineary with log(P) @param v_out_abs [OUT] pressures abscissa @param v_out_pres [IN] searched pressures @param sz_out_pres [IN] number of searched pressuresџџџџ Txoutџџџџ TyoutџџџџECMWFFileDatav_out_absџџџџџџџџ Tyout*џџџџv_out_presџџџџџџџџconst Txout*џџџџsz_out_presџџџџџџџџconst intџџџџvoid*get_dataset_data_type^/home/pascal/depot/filedata/src/ecmwffiledata.h__.џџџџџџџџECMWFFileDatasds_nameџџџџџџџџ stringџџџџint get_dataset_name^/home/pascal/depot/filedata/src/ecmwffiledata.h^ ^"џџџџџџџџECMWFFileDataiџџџџџџџџintџџџџ stringget_grid_desc^/home/pascal/depot/filedata/src/ecmwffiledata.hрр!ђ @brief return a description of the grid (resolution, number of cells,...) as a string @return a description of the gridџџџџECMWFFileDataconst string2get_hybrid_level_pressure^/home/pascal/depot/filedata/src/ecmwffiledata.h` @brief compute the pressure of an hybrid level, in the 91 levels model Source : http://www.ecmwf.int/research/ifsdocs/DYNAMICS/Chap2_Discretization4.html#961180 @param i_level number of the level. Must ne in range [0,90] @param p_surf surface pressure in hPa @return the pressure of the hybrid levelџџџџECMWFFileDataЖй i_levelџџџџџџџџconst intџџџџ p_surfџџџџџџџџconst double&џџџџconst double4get_hybrid_level_pressures^/home/pascal/depot/filedata/src/ecmwffiledata.hєј† @brief accessor to the pressures of the 91 model levels in hPa Source : http://www.ecmwf.int/research/ifsdocs/DYNAMICS/Chap2_Discretization4.html#961180 @param p_surf surface pressure in hPa @param v_p_hybrid [OUT] vector of hybrid pressure full levels, from top to bottom. @return the pressures of the 91 model levelsџџџџECMWFFileDataЖŒ  p_surfџџџџџџџџconst double&џџџџv_p_hybridџџџџџџџџdouble*џџџџvoidget_index^/home/pascal/depot/filedata/src/ecmwffiledata.hssfn @brief find the index of the nearest point to (lat,lon,time) in the data. time is ignored for ECMWF files because only one time level is used @throw g_exception if lat or lon are invalid @param lat the latitude @param lon the longitude @param time the time (using TAI convention) @param indexes the output indexes : a 3 values array {lat_index,lon_index,time_index} @return true if the coincidence could have been found. False elseџџџџECMWFFileDataЖіlatџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџtimeџџџџџџџџconst double&џџџџindexesџџџџџџџџint*џџџџconst boolget_index^/home/pascal/depot/filedata/src/ecmwffiledata.h||RЌ @brief find the index of the nearest point to (lat,lon) in the data. If (lat,lon,time) is not contained in this file, returned indexes are [-1,-1] @param lat the latitude @param lon the longitude @param indexes the output indexes : a 2 values array {lat_index,lon_index} @return true if the coincidence could have been found. False elseџџџџECMWFFileDatalatџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџindexesџџџџџџџџint*џџџџconst boolget_index^/home/pascal/depot/filedata/src/ecmwffiledata.h‡Št @brief find the index of the nearest point to (lat,lon, p_lvl) in the data. @warning not implemented at this time If (lat,lon,p_lvl) is not contained in this file, returned indexes are [-1,-1, -1] @param lat the latitude @param lon the longitude @param p_lvl the isobaric pressure level in hPa @param indexes the output indexes : a 2 values array {lat_index,lon_index} @return true if the coincidence could have been found. False elseџџџџECMWFFileData ІU€latџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџ p_lvlџџџџџџџџconst float&џџџџindexesџџџџџџџџint*џџџџconst bool8get_isobaric_level_pressures^/home/pascal/depot/filedata/src/ecmwffiledata.h  @brief access to the isobaric levels pressures vector, in hPa and sorted in decreasing order @return the isobaric levels pressures vectorџџџџECMWFFileDataЖ3*const unsigned short*get_lat^/home/pascal/depot/filedata/src/ecmwffiledata.h7 @brief return the latitude of the grid point at indice @a i_y @param i_y grid point indice along Y @return the grid point latitudeџџџџECMWFFileDataЖ i_yџџџџџџџџconst int&џџџџconst float32get_lat_index^/home/pascal/depot/filedata/src/ecmwffiledata.h:J @brief return the index of the grid point that has the nearest latitude to @a lat @param lat the latitude @return the index, or raise an exception if out of rangeџџџџECMWFFileData latџџџџџџџџconst float&џџџџconst intget_lon^/home/pascal/depot/filedata/src/ecmwffiledata.hЃЃ7 @brief return the longitude of the grid point at indice @a i_x @param i_x grid point indice along X @return the grid point longitudeџџџџECMWFFileData i_xџџџџџџџџconst int&џџџџconst float32get_lon_index^/home/pascal/depot/filedata/src/ecmwffiledata.h––:z @brief return the index of the grid point that has the nearest longitude to @a lon @param lon the longitude, in [-180, 180] range @return the index, or raise an exception if out of rangeџџџџECMWFFileDataO lonџџџџџџџџconst float&џџџџconst intget_n_dataset^/home/pascal/depot/filedata/src/ecmwffiledata.h]]Š void get_dataset_fill_value(const string &name,void *fillvalue);џџџџECMWFFileDataint,get_nb_pressure_levels^/home/pascal/depot/filedata/src/ecmwffiledata.hьь>: @brief returns the number of vertical levels of the given variable @param var_name the name of the searched variable @return the number of pressure levelsџџџџECMWFFileDataЖїvar_nameџџџџџџџџconst string&џџџџconst intget_pres_on_alt^/home/pascal/depot/filedata/src/ecmwffiledata.h) ,,& @brief compute the pressure at a given altitude @warning no extrapolation done. If @a alt is out of the latitudes represented in @a v_ingeop NaN is returned @param alt [IN] altitude where to compute the pressure in km @param v_ingeop [IN] geopotential on input levels in m^2.s^-2 @param v_inpres [IN] pressure on input levels in hPa. Stricly decreasing @param sz_inpres [IN] number of input levels @param interp_type [IN] type of interpolation to use : "linear" , "linear_log" or "spline" @return the output pressure in hPaџџџџ TxoutџџџџTxinџџџџTyinџџџџECMWFFileDataaltџџџџџџџџconst Txoutџџџџv_ingeopџџџџџџџџconst Txin*џџџџv_inpresџџџџџџџџconst Tyin*џџџџsz_inpresџџџџџџџџconst intџџџџinterp_typeџџџџџџџџconst stringџџџџ double&get_pressure_levels^/home/pascal/depot/filedata/src/ecmwffiledata.hццC @brief returns the pressure levels of the given variable @param var_name the name of the searched variable @return the pressure levelsџџџџECMWFFileDataЖ>var_nameџџџџџџџџconst string&џџџџ&const vector< int >get_product_id^/home/pascal/depot/filedata/src/ecmwffiledata.hЕЗˆ @brief accessor to the product type ID @return the product type IDџџџџECMWFFileDataЖ  ECMWFProductType get_s_product_id^/home/pascal/depot/filedata/src/ecmwffiledata.hМЭЌ @brief accessor to the product type as a string @return the product type as a stringџџџџECMWFFileData хW const stringget_sz_x^/home/pascal/depot/filedata/src/ecmwffiledata.hвиь@brief accessor to the number of grid cells along the longitudes @return the number of grid cells along the longitudesџџџџECMWFFileDataЖ intget_sz_y^/home/pascal/depot/filedata/src/ecmwffiledata.hйпш@brief accessor to the number of grid cells along the latitudes @return the number of grid cells along the latitudesџџџџECMWFFileData int"get_v_pres_on_alt^/home/pascal/depot/filedata/src/ecmwffiledata.h ,о @brief compute the pressure at a list of altitudes @param v_out_pres [OUT] output pressure in hPa @param v_alt [IN] altitudes where to compute the pressure in km @param sz_alt [IN] number of altitudes and output pressures @param v_geop [IN] geopotential on input levels in m^2.s^-2 @param v_inpres [IN] pressure on input levels in hPa. Stricly decreasing @param n_pres [IN] number of input levels @param interp_type [IN] type of interpolation to use : "linear" , "linear_log" or "spline"џџџџ Txoutџџџџ TyoutџџџџTxinџџџџTyinџџџџECMWFFileDataЖBv_out_presџџџџџџџџ Tyout*џџџџ v_altџџџџџџџџconst Txout*џџџџ sz_altџџџџџџџџconst intџџџџ v_geopџџџџџџџџconst Txin*џџџџv_inpresџџџџџџџџconst Tyin*џџџџ n_presџџџџџџџџconst intџџџџinterp_typeџџџџџџџџconst stringџџџџvoid.get_values_attr_dataset^/home/pascal/depot/filedata/src/ecmwffiledata.h` `?џџџџџџџџECMWFFileDatasds_nameџџџџџџџџ stringџџџџattrџџџџџџџџ stringџџџџ string has_attr_dataset^/home/pascal/depot/filedata/src/ecmwffiledata.ha a6џџџџџџџџECMWFFileDatasds_nameџџџџџџџџ stringџџџџattrџџџџџџџџ stringџџџџboolinit_grid^/home/pascal/depot/filedata/src/ecmwffiledata.hH Hx @brief read the grid characteristics in the file attributesџџџџECMWFFileData€voidinterp_on_pres^/home/pascal/depot/filedata/src/ecmwffiledata.hU VXФ @brief interpolate the variable on the given pressures, using precomputed abscissa based on a linear approach on log(P) @param v_out_var [OUT] output variable interpolated on abscissa @param v_out_abs [IN] abscissa of output level, in the reference coordinates system @param sz_out [IN] number of elements to interpolate @param v_in_var [IN] value of variable at reference levels @param v_in_pres [IN] pressure of reference levels @param sz_in [IN] number of reference levelsџџџџ Txoutџџџџ TyoutџџџџTxinџџџџTyinџџџџECMWFFileDatav_out_varџџџџџџџџ Tyout*џџџџv_out_absџџџџџџџџconst Txout*џџџџ sz_outџџџџџџџџconst intџџџџv_in_varџџџџџџџџconst Tyin*џџџџv_in_presџџџџџџџџconst Txin*џџџџ sz_inџџџџџџџџconst intџџџџvoidload_time_level^/home/pascal/depot/filedata/src/ecmwffiledata.hMM& @brief if not already set, read the time levels in the file Interface implementation purpose. GRIB ECMWF files are composed of only one timeџџџџECMWFFileDataЖ0voidopen_data_file^/home/pascal/depot/filedata/src/ecmwffiledata.hZ ZџџџџџџџџECMWFFileDatavoidparse_filename^/home/pascal/depot/filedata/src/ecmwffiledata.h? ?6в @brief extract sone informations using the filename @param short_filename the filename without its pathџџџџECMWFFileDatashort_filenameџџџџџџџџconst string&џџџџvoidread_data^/home/pascal/depot/filedata/src/ecmwffiledata.hЎАц @brief read a subset of a data set @param data the data output buffer @param sds_name the data set to read @param start the start point @param stride the step between to read values @param edges the number of values to read in each direction @param rank the rank of the sds @return a pointer to the data buffer. Use it if the allocation is done inside this methodџџџџECMWFFileDatadataџџџџџџџџ void*џџџџsds_nameџџџџџџџџconst char*џџџџ startџџџџџџџџint*џџџџ strideџџџџџџџџint*џџџџ edgesџџџџџџџџint*џџџџrankџџџџџџџџintџџџџ void*"set_time_coverage^/home/pascal/depot/filedata/src/ecmwffiledata.h: :š @brief compute the time range covered by this file, depending of the productџџџџECMWFFileDatacvoid~ ECMWFFileData^/home/pascal/depot/filedata/src/ecmwffiledata.hccџџџџџџџџECMWFFileDataџџџџ alt_to_geop^/home/pascal/depot/filedata/src/ecmwffiledata.h35ќ @brief compute the geopotential of an altitude in m The formula used is : geop = g0 * alt. g0 is assumed to be constant in the atmosphere and on the surface on the earth @param alt an altitude in m @return the geopotential of this altitude, in m2.s-2џџџџECMWFFileDataaltџџџџџџџџconst double&џџџџ double*free_geolocation_data^/home/pascal/depot/filedata/src/ecmwffiledata.hhh$Њ @brief free eventually loaded data. Not used here, only for interface compatibilityџџџџECMWFFileDatavoid2get_hybrid_level_pressure^/home/pascal/depot/filedata/src/ecmwffiledata.h` @brief compute the pressure of an hybrid level, in the 91 levels model Source : http://www.ecmwf.int/research/ifsdocs/DYNAMICS/Chap2_Discretization4.html#961180 @param i_level number of the level. Must ne in range [0,90] @param p_surf surface pressure in hPa @return the pressure of the hybrid levelџџџџECMWFFileDataЖй i_levelџџџџџџџџconst intџџџџ p_surfџџџџџџџџconst double&џџџџconst double4get_hybrid_level_pressures^/home/pascal/depot/filedata/src/ecmwffiledata.hєј† @brief accessor to the pressures of the 91 model levels in hPa Source : http://www.ecmwf.int/research/ifsdocs/DYNAMICS/Chap2_Discretization4.html#961180 @param p_surf surface pressure in hPa @param v_p_hybrid [OUT] vector of hybrid pressure full levels, from top to bottom. @return the pressures of the 91 model levelsџџџџECMWFFileDataЖŒ  p_surfџџџџџџџџconst double&џџџџv_p_hybridџџџџџџџџdouble*џџџџvoidget_index^/home/pascal/depot/filedata/src/ecmwffiledata.h‡Št @brief find the index of the nearest point to (lat,lon, p_lvl) in the data. @warning not implemented at this time If (lat,lon,p_lvl) is not contained in this file, returned indexes are [-1,-1, -1] @param lat the latitude @param lon the longitude @param p_lvl the isobaric pressure level in hPa @param indexes the output indexes : a 2 values array {lat_index,lon_index} @return true if the coincidence could have been found. False elseџџџџECMWFFileData ІU€latџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџ p_lvlџџџџџџџџconst float&џџџџindexesџџџџџџџџint*џџџџconst bool8get_isobaric_level_pressures^/home/pascal/depot/filedata/src/ecmwffiledata.h  @brief access to the isobaric levels pressures vector, in hPa and sorted in decreasing order @return the isobaric levels pressures vectorџџџџECMWFFileDataЖ3*const unsigned short*get_product_id^/home/pascal/depot/filedata/src/ecmwffiledata.hЕЗˆ @brief accessor to the product type ID @return the product type IDџџџџECMWFFileDataЖ  ECMWFProductType get_s_product_id^/home/pascal/depot/filedata/src/ecmwffiledata.hМЭЌ @brief accessor to the product type as a string @return the product type as a stringџџџџECMWFFileData хW const stringget_sz_x^/home/pascal/depot/filedata/src/ecmwffiledata.hвиь@brief accessor to the number of grid cells along the longitudes @return the number of grid cells along the longitudesџџџџECMWFFileDataЖ intget_sz_y^/home/pascal/depot/filedata/src/ecmwffiledata.hйпш@brief accessor to the number of grid cells along the latitudes @return the number of grid cells along the latitudesџџџџECMWFFileData intload_time_level^/home/pascal/depot/filedata/src/ecmwffiledata.hMM& @brief if not already set, read the time levels in the file Interface implementation purpose. GRIB ECMWF files are composed of only one timeџџџџECMWFFileDataЖ0voidread_data^/home/pascal/depot/filedata/src/ecmwffiledata.hЎАц @brief read a subset of a data set @param data the data output buffer @param sds_name the data set to read @param start the start point @param stride the step between to read values @param edges the number of values to read in each direction @param rank the rank of the sds @return a pointer to the data buffer. Use it if the allocation is done inside this methodџџџџECMWFFileDatadataџџџџџџџџ void*џџџџsds_nameџџџџџџџџconst char*џџџџ startџџџџџџџџint*џџџџ strideџџџџџџџџint*џџџџ edgesџџџџџџџџint*џџџџrankџџџџџџџџintџџџџ void* a_hybrid_91^/home/pascal/depot/filedata/src/ecmwffiledata.hVV'X a, b coefficients used to compute the pressure of the ECMWF 91 vertical hybrid levels Source : http://www.ecmwf.int/products/data/technical/model_levels/model_def_91.htmlconst double*b_hybrid_91^/home/pascal/depot/filedata/src/ecmwffiledata.hWW'џџџџconst double*0isobaric_level_pressures^/home/pascal/depot/filedata/src/ecmwffiledata.hP P:L vector of isobaric pressures, in hPa *const unsigned short*lat0^/home/pascal/depot/filedata/src/ecmwffiledata.h3 3` latitude of the up grid point (border of cell)  floatlon0^/home/pascal/depot/filedata/src/ecmwffiledata.h5 5d longitude of the left grid point (border of cell) float$nb_level_hybrid_91^/home/pascal/depot/filedata/src/ecmwffiledata.hYY'2 number of hybrid levels const int*nb_max_isobaric_level^/home/pascal/depot/filedata/src/ecmwffiledata.hRR*X maximum number of isobaric pressure levels const intproduct_id^/home/pascal/depot/filedata/src/ecmwffiledata.h++6 the type of ECMWF product  ECMWFProductTypesz_x^/home/pascal/depot/filedata/src/ecmwffiledata.h// V number of grid cells along the longitudes intsz_y^/home/pascal/depot/filedata/src/ecmwffiledata.h11 T number of grid cells along the latitudes intversion^/home/pascal/depot/filedata/src/ecmwffiledata.h- -* the product version  string ECMWFProductType^/home/pascal/depot/filedata/src/ecmwffiledata.h))џџџџџџџџ &get_abscissa_hybrid^/home/pascal/depot/filedata/src/ecmwffiledata.hртџџџџџџџџ Txoutџџџџ TyoutџџџџTxinџџџџECMWFFileData*v_out_absџџџџџџџџ Tyout*џџџџv_out_presџџџџџџџџconst Txout*џџџџ sz_outџџџџџџџџconst intџџџџv_in_presџџџџџџџџconst Txin*џџџџ sz_inџџџџџџџџconst intџџџџvoid get_abscissa_iso^/home/pascal/depot/filedata/src/ecmwffiledata.hлнџџџџџџџџ Txoutџџџџ TyoutџџџџECMWFFileData v_out_absџџџџџџџџ Tyout*џџџџv_out_presџџџџџџџџconst Txout*џџџџ sz_outџџџџџџџџconst intџџџџvoidget_index^/home/pascal/depot/filedata/src/ecmwffiledata.h†ŠџџџџџџџџECMWFFileDatalatџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџindexesџџџџџџџџint*џџџџconst boolget_index^/home/pascal/depot/filedata/src/ecmwffiledata.hŒŽџџџџџџџџECMWFFileDatalatџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџtimeџџџџџџџџconst double&џџџџindexesџџџџџџџџint*џџџџconst boolget_lat^/home/pascal/depot/filedata/src/ecmwffiledata.hmoџџџџџџџџECMWFFileData i_yџџџџџџџџconst int&џџџџconst float32get_lat_index^/home/pascal/depot/filedata/src/ecmwffiledata.hekџџџџџџџџECMWFFileData latџџџџџџџџconst float&џџџџconst intget_lon^/home/pascal/depot/filedata/src/ecmwffiledata.hpuџџџџџџџџECMWFFileData i_xџџџџџџџџconst int&џџџџconst float32get_lon_index^/home/pascal/depot/filedata/src/ecmwffiledata.hv„џџџџџџџџECMWFFileData _lonџџџџџџџџconst float&џџџџconst intget_pres_on_alt^/home/pascal/depot/filedata/src/ecmwffiledata.hЕиџџџџџџџџ TxoutџџџџTxinџџџџTyinџџџџECMWFFileData*altџџџџџџџџconst Txoutџџџџv_ingeopџџџџџџџџconst Txin*џџџџv_inpresџџџџџџџџconst Tyin*џџџџsz_inpresџџџџџџџџconst intџџџџinterp_typeџџџџџџџџconst stringџџџџ double"get_v_pres_on_alt^/home/pascal/depot/filedata/src/ecmwffiledata.h‘Вџџџџџџџџ Txoutџџџџ TyoutџџџџTxinџџџџTyinџџџџECMWFFileDatav_outpresџџџџџџџџ Tyout*џџџџ v_altџџџџџџџџconst Txout*џџџџ sz_altџџџџџџџџconst intџџџџv_ingeopџџџџџџџџconst Txin*џџџџv_inpresџџџџџџџџconst Tyin*џџџџsz_inpresџџџџџџџџconst intџџџџinterp_typeџџџџџџџџconst stringџџџџvoidinterp_on_pres^/home/pascal/depot/filedata/src/ecmwffiledata.hхїџџџџџџџџ Txoutџџџџ TyoutџџџџTxinџџџџTyinџџџџECMWFFileDataav_out_varџџџџџџџџ Tyout*џџџџv_out_absџџџџџџџџconst Txout*џџџџ sz_outџџџџџџџџconst intџџџџv_in_varџџџџџџџџconst Tyin*џџџџv_in_presџџџџџџџџconst Txin*џџџџ sz_inџџџџџџџџconst intџџџџvoid– assert.herrno.hstdio.hstdlib.hstring.h time.hepr_api.hepr_core.hepr_string.hepr_ptrarray.hepr_swap.hepr_dddb.hZ/home/pascal/depot/filedata/src/epr/epr_api.c%yДЂTџџџџ epr_core.hHлХepr_swap.hЌyerrno.h›2assert.hє(DЈstring.h­Ц‰=epr_string.hЯфѓZ/home/pascal/depot/filedata/src/epr/epr_api.cиŠмstdio.hЏЬІ‰epr_dddb.hOq:epr_api.hjk+Іepr_ptrarray.h;mestdlib.hЌšЅј time.h _žЕZ/home/pascal/depot/filedata/src/epr/epr_api.cџџџџџџџџџџџџepr_close_apiZ/home/pascal/depot/filedata/src/epr/epr_api.cYqА Closes the ENVISAT product reader API by releasing all resources allocated by the API.џџџџ Эavoidepr_init_apiZ/home/pascal/depot/filedata/src/epr/epr_api.c'XX Initializes the ENVISAT product reader API.џџџџlog_levelџџџџџџџџEPR_ELogLevelџџџџlog_handlerџџџџџџџџEPR_FLogHandlerџџџџerr_handlerџџџџџџџџEPR_FErrHandlerџџџџintepr_log_messageZ/home/pascal/depot/filedata/src/epr/epr_api.cxџџџџџџџџlog_levelџџџџџџџџEPR_ELogLevelџџџџlog_messageџџџџџџџџconst char*џџџџvoid&epr_set_log_handlerZ/home/pascal/depot/filedata/src/epr/epr_api.cruš Sets the log handler for the ENVISAT API. @param log_handler the new log handler (function pointer), can be NULL, if logging shall be disabled @return zero for success, an error code otherwiseџџџџ Ля€log_handlerџџџџџџџџEPR_FLogHandlerџџџџvoidstdio.hepr_ptrarray.hZ/home/pascal/depot/filedata/src/epr/epr_api.h%yДЂTџџџџ\ˆ"/+__cplusplus1џџџџ–ˆ0ж2„*EPR_PRODUCT_ID_STRLENг 48Z/home/pascal/depot/filedata/src/epr/epr_api.hZ/home/pascal/depot/filedata/src/epr/epr_api.hиŠсstdio.hЏЬІ‰epr_ptrarray.h;meZ/home/pascal/depot/filedata/src/epr/epr_api.hџџџџџџџџџџџџ EPR_BandIdZ/home/pascal/depot/filedata/src/epr/epr_api.hёЈ The <code>EPR_BandId</code> structure contains information about a band within an ENVISAT product file which has been opened with the <code>epr_open_product()</code> API function. A new <code>EPR_BandId</code> instance can be obtained with the <code>epr_get_band_id()</code> API function. @see epr_open_product @see epr_get_band_idџџџџEPR_DSDZ/home/pascal/depot/filedata/src/epr/epr_api.h„ГV The <code>EPR_DSD</code> structure contains information about the propertier of a dataset properties and its location within an ENVISAT product file @see epr_read_dsdџџџџEPR_DatasetIdZ/home/pascal/depot/filedata/src/epr/epr_api.hOzP The <code>EPR_DatasetId</code> structure contains information about a dataset within an ENVISAT product file which has been opened with the <code>epr_open_product()</code> API function. A new <code>EPR_DatasetId</code> instance can be obtained with the <code>epr_get_dataset_id()</code> or <code>epr_get_dataset_id_at()</code> API functions. @see epr_open_product @see epr_get_dataset_id @see epr_get_dataset_id_atџџџџEPR_DatasetRefZ/home/pascal/depot/filedata/src/epr/epr_api.hRW` The <code>EPR_DatasetRef</code> structure represents the information from <code>dddb</code> <br>with the reference to data name (in dddb), field-name and index of the element in field-array, in which (by name) searchable values are located. Example for the search for a scaling_offset information: This information for the <code>reflec_10</code> is described with the <code>Scaling_Factor_GADS.22.10</code> In <code>dataset_id</code> the searched ENVISAT product name (e.g. <code>MER_RR__2P</code>) is located. <br>In the corresponding file (e.g. <code>/product/MER_RR__2P.dd</code>) the path, how to find that information will be decribed. In that file, in the field number <code>22</code> there is an information about the location of the searched value in the ENVISAT product data. @see EPR_SDatasetIdџџџџEPR_FieldZ/home/pascal/depot/filedata/src/epr/epr_api.hпP Represents a field within a record. A field is composed of one or more data elements of one of the types defined in the in <code>field_info</code>. @see EPR_RecordџџџџEPR_FlagDefZ/home/pascal/depot/filedata/src/epr/epr_api.h]s^ Represents a flag-field within a flag-record. џџџџEPR_ProductIdZ/home/pascal/depot/filedata/src/epr/epr_api.hс>~ The <code>EPR_ProductId</code> structure contains information about an ENVISAT product file which has been opened with the <code>epr_open_product()</code> function. @see epr_open_productџџџџEPR_RasterZ/home/pascal/depot/filedata/src/epr/epr_api.h AЎ Represents a raster in which data will be stored. All 'size' parameter are in PIXEL.џџџџEPR_RecordZ/home/pascal/depot/filedata/src/epr/epr_api.hНж: The <code>EPR_Record</code> structure represents a record instance read from an ENVISAT dataset. A record is composed of multiple fields. @see EPR_FieldџџџџEPR_TimeZ/home/pascal/depot/filedata/src/epr/epr_api.hљў Represents a binary time value field in ENVISAT records. <p> Refer to ENVISAT documentation for the exact definition of this data type.џџџџ62e_err_api_not_initializedZ/home/pascal/depot/filedata/src/epr/epr_api.h``%( API related errors EPR_ErrCode0e_err_file_access_deniedZ/home/pascal/depot/filedata/src/epr/epr_api.hYY%џџџџEPR_ErrCode.e_err_file_close_failedZ/home/pascal/depot/filedata/src/epr/epr_api.h]]%џџџџEPR_ErrCode(e_err_file_not_foundZ/home/pascal/depot/filedata/src/epr/epr_api.hXX% I/O errors EPR_ErrCode,e_err_file_open_failedZ/home/pascal/depot/filedata/src/epr/epr_api.h\\%џџџџEPR_ErrCode*e_err_file_read_errorZ/home/pascal/depot/filedata/src/epr/epr_api.hZZ%џџџџEPR_ErrCode,e_err_file_write_errorZ/home/pascal/depot/filedata/src/epr/epr_api.h[[%џџџџEPR_ErrCode(e_err_flag_not_foundZ/home/pascal/depot/filedata/src/epr/epr_api.hpp"* Bitmask term errors EPR_ErrCode"e_err_illegal_argZ/home/pascal/depot/filedata/src/epr/epr_api.hPP%џџџџEPR_ErrCode0e_err_illegal_conversionZ/home/pascal/depot/filedata/src/epr/epr_api.hTT"џџџџEPR_ErrCode.e_err_illegal_data_typeZ/home/pascal/depot/filedata/src/epr/epr_api.hUU"џџџџEPR_ErrCode&e_err_illegal_stateZ/home/pascal/depot/filedata/src/epr/epr_api.hQQ%џџџџEPR_ErrCode0e_err_index_out_of_rangeZ/home/pascal/depot/filedata/src/epr/epr_api.hSS%џџџџEPR_ErrCode$e_err_invalid_bandZ/home/pascal/depot/filedata/src/epr/epr_api.hcc!џџџџEPR_ErrCode.e_err_invalid_band_nameZ/home/pascal/depot/filedata/src/epr/epr_api.hii%џџџџEPR_ErrCode2e_err_invalid_data_formatZ/home/pascal/depot/filedata/src/epr/epr_api.hjj"џџџџEPR_ErrCode4e_err_invalid_dataset_nameZ/home/pascal/depot/filedata/src/epr/epr_api.hee%џџџџEPR_ErrCode2e_err_invalid_ddbb_formatZ/home/pascal/depot/filedata/src/epr/epr_api.htt% DDDB errors EPR_ErrCode0e_err_invalid_field_nameZ/home/pascal/depot/filedata/src/epr/epr_api.hff%џџџџEPR_ErrCode4e_err_invalid_keyword_nameZ/home/pascal/depot/filedata/src/epr/epr_api.hll"џџџџEPR_ErrCode0e_err_invalid_product_idZ/home/pascal/depot/filedata/src/epr/epr_api.haa%џџџџEPR_ErrCode4e_err_invalid_product_nameZ/home/pascal/depot/filedata/src/epr/epr_api.hhh"џџџџEPR_ErrCode(e_err_invalid_rasterZ/home/pascal/depot/filedata/src/epr/epr_api.hdd%џџџџEPR_ErrCode(e_err_invalid_recordZ/home/pascal/depot/filedata/src/epr/epr_api.hbb"џџџџEPR_ErrCode2e_err_invalid_record_nameZ/home/pascal/depot/filedata/src/epr/epr_api.hgg"џџџџEPR_ErrCode&e_err_invalid_valueZ/home/pascal/depot/filedata/src/epr/epr_api.hkk"џџџџEPR_ErrCodee_err_noneZ/home/pascal/depot/filedata/src/epr/epr_api.hLL% Not an error EPR_ErrCode$e_err_null_pointerZ/home/pascal/depot/filedata/src/epr/epr_api.hOO%$ Low level errors EPR_ErrCode&e_err_out_of_memoryZ/home/pascal/depot/filedata/src/epr/epr_api.hRR%џџџџEPR_ErrCode4e_err_unknown_endian_orderZ/home/pascal/depot/filedata/src/epr/epr_api.hmm"џџџџEPR_ErrCodee_log_debugZ/home/pascal/depot/filedata/src/epr/epr_api.h~~џџџџEPR_LogLevele_log_errorZ/home/pascal/depot/filedata/src/epr/epr_api.hџџџџEPR_LogLevele_log_infoZ/home/pascal/depot/filedata/src/epr/epr_api.hџџџџEPR_LogLevele_log_warningZ/home/pascal/depot/filedata/src/epr/epr_api.h€€џџџџEPR_LogLevele_smid_linZ/home/pascal/depot/filedata/src/epr/epr_api.hџџџџ"EPR_ScalingMethode_smid_logZ/home/pascal/depot/filedata/src/epr/epr_api.h‘‘џџџџ"EPR_ScalingMethode_smid_nonZ/home/pascal/depot/filedata/src/epr/epr_api.hџџџџ"EPR_ScalingMethode_smod_1OF1Z/home/pascal/depot/filedata/src/epr/epr_api.h††џџџџEPR_SampleModele_smod_1OF2Z/home/pascal/depot/filedata/src/epr/epr_api.h‡‡џџџџEPR_SampleModele_smod_2OF2Z/home/pascal/depot/filedata/src/epr/epr_api.hˆˆџџџџEPR_SampleModele_smod_2TOFZ/home/pascal/depot/filedata/src/epr/epr_api.hŠŠџџџџEPR_SampleModele_smod_3TOIZ/home/pascal/depot/filedata/src/epr/epr_api.h‰‰џџџџEPR_SampleModele_tid_charZ/home/pascal/depot/filedata/src/epr/epr_api.h//‚ An array of signed 8-bit integers, C type is <code>char*</code> EPR_DataTypeIde_tid_doubleZ/home/pascal/depot/filedata/src/epr/epr_api.h;;– An array of 64-bit floating point numbers, C type is <code>double*</code> EPR_DataTypeIde_tid_floatZ/home/pascal/depot/filedata/src/epr/epr_api.h99” An array of 32-bit floating point numbers, C type is <code>float*</code> EPR_DataTypeIde_tid_longZ/home/pascal/depot/filedata/src/epr/epr_api.h77„ An array of signed 32-bit integers, C type is <code>long*</code> EPR_DataTypeIde_tid_shortZ/home/pascal/depot/filedata/src/epr/epr_api.h33† An array of signed 16-bit integers, C type is <code>short*</code> EPR_DataTypeIde_tid_spareZ/home/pascal/depot/filedata/src/epr/epr_api.h??~ An array of unsigned character, C type is <code>uchar*</code> EPR_DataTypeIde_tid_stringZ/home/pascal/depot/filedata/src/epr/epr_api.h==| A zero-terminated ASCII string, C type is <code>char*</code> EPR_DataTypeIde_tid_timeZ/home/pascal/depot/filedata/src/epr/epr_api.hAAr A time (MJD) structure, C type is <code>EPR_Time</code> EPR_DataTypeIde_tid_ucharZ/home/pascal/depot/filedata/src/epr/epr_api.h--ˆ An array of unsigned 8-bit integers, C type is <code>uchar*</code> EPR_DataTypeIde_tid_ulongZ/home/pascal/depot/filedata/src/epr/epr_api.h55Š An array of unsigned 32-bit integers, C type is <code>ulong*</code> EPR_DataTypeIde_tid_unknownZ/home/pascal/depot/filedata/src/epr/epr_api.h++6 The ID for unknown types. EPR_DataTypeIde_tid_ushortZ/home/pascal/depot/filedata/src/epr/epr_api.h11Œ An array of unsigned 16-bit integers, C type is <code>ushort*</code> EPR_DataTypeId! EPR_DataTypeIdZ/home/pascal/depot/filedata/src/epr/epr_api.h(Bє The <code>EPR_DataTypeId</code> enumeration lists all possible data types for field elements in ENVISAT dataset records.const int EPR_EDataTypeIdZ/home/pascal/depot/filedata/src/epr/epr_api.hЄ#Є2џџџџ&enum EPR_DataTypeId EPR_EErrCodeZ/home/pascal/depot/filedata/src/epr/epr_api.hЅ#Ѕ/џџџџ enum EPR_ErrCode EPR_ELogLevelZ/home/pascal/depot/filedata/src/epr/epr_api.hІ#І0џџџџ"enum EPR_LogLevel EPR_ESampleModelZ/home/pascal/depot/filedata/src/epr/epr_api.hЇ#Ї3џџџџ(enum EPR_SampleModel $EPR_EScalingMethodZ/home/pascal/depot/filedata/src/epr/epr_api.hЈ#Ј5џџџџ,enum EPR_ScalingMethod EPR_ErrCodeZ/home/pascal/depot/filedata/src/epr/epr_api.hIuк The <code>EPR_ErrCode</code> enumeration lists all possible error codes for the ENVISAT product reader API.const int EPR_FErrHandlerZ/home/pascal/depot/filedata/src/epr/epr_api.hИ ИOџџџџvoid EPR_FLogHandlerZ/home/pascal/depot/filedata/src/epr/epr_api.hЙ ЙQџџџџvoid EPR_LogLevelZ/home/pascal/depot/filedata/src/epr/epr_api.h|‚в The <code>EPR_LogLevel</code> enumeration lists possible log levels for the ENVISAT product reader API.const int EPR_MagicZ/home/pascal/depot/filedata/src/epr/epr_api.hУ Уџџџџlong EPR_SBandIdZ/home/pascal/depot/filedata/src/epr/epr_api.hЋЋ)џџџџ"struct EPR_BandId EPR_SBitmaskTermZ/home/pascal/depot/filedata/src/epr/epr_api.hЖ#Ж3џџџџ,struct EPR_BitmaskTerm EPR_SDSDZ/home/pascal/depot/filedata/src/epr/epr_api.hА#А+џџџџstruct EPR_DSD EPR_SDatasetIdZ/home/pascal/depot/filedata/src/epr/epr_api.hЊ#Њ1џџџџ(struct EPR_DatasetId EPR_SDatasetRefZ/home/pascal/depot/filedata/src/epr/epr_api.hЕ#Е2џџџџ*struct EPR_DatasetRef EPR_SFieldZ/home/pascal/depot/filedata/src/epr/epr_api.hЎ#Ў-џџџџ struct EPR_Field EPR_SFieldInfoZ/home/pascal/depot/filedata/src/epr/epr_api.hЏ#Џ1џџџџ(struct EPR_FieldInfo EPR_SFlagDefZ/home/pascal/depot/filedata/src/epr/epr_api.hВ#В/џџџџ$struct EPR_FlagDef EPR_SFlagSetZ/home/pascal/depot/filedata/src/epr/epr_api.hЗ#З/џџџџ$struct EPR_FlagSet EPR_SParamElemZ/home/pascal/depot/filedata/src/epr/epr_api.hГ Г.џџџџ(struct EPR_ParamElem EPR_SProductIdZ/home/pascal/depot/filedata/src/epr/epr_api.hЉ#Љ1џџџџ(struct EPR_ProductId EPR_SRasterZ/home/pascal/depot/filedata/src/epr/epr_api.hБ#Б.џџџџ"struct EPR_Raster EPR_SRecordZ/home/pascal/depot/filedata/src/epr/epr_api.hЌ#Ќ.џџџџ"struct EPR_Record EPR_SRecordInfoZ/home/pascal/depot/filedata/src/epr/epr_api.h­#­2џџџџ*struct EPR_RecordInfo EPR_STimeZ/home/pascal/depot/filedata/src/epr/epr_api.hД#Д,џџџџstruct EPR_Time EPR_SampleModelZ/home/pascal/depot/filedata/src/epr/epr_api.h„‹џџџџconst int "EPR_ScalingMethodZ/home/pascal/depot/filedata/src/epr/epr_api.h’џџџџconst int booleanZ/home/pascal/depot/filedata/src/epr/epr_api.hММџџџџint ucharZ/home/pascal/depot/filedata/src/epr/epr_api.hННџџџџunsigned char uintZ/home/pascal/depot/filedata/src/epr/epr_api.hППџџџџunsigned int ulongZ/home/pascal/depot/filedata/src/epr/epr_api.hРРџџџџunsigned long ushortZ/home/pascal/depot/filedata/src/epr/epr_api.hООџџџџunsigned short˜assert.herrno.hstdio.hstdlib.hstring.h math.hepr_api.hepr_core.hepr_string.hepr_ptrarray.hepr_swap.hepr_field.hepr_record.hepr_param.hepr_dsd.hepr_msph.hepr_band.hepr_bitmask.hepr_dddb.h\/home/pascal/depot/filedata/src/epr/epr_band.c%yДЂTџџџџepr_core.hHлХepr_bitmask.hˆˆВ'epr_swap.hЌyerrno.h›2 math.h ОN0assert.hє(DЈstring.h­Ц‰=epr_record.hтˆьћepr_msph.h&xєepr_band.h! epr_string.hЯфѓepr_field.h)•Жр\/home/pascal/depot/filedata/src/epr/epr_band.cY“^чstdio.hЏЬІ‰epr_dddb.hOq:epr_param.h7[F}epr_api.hjk+Іepr_ptrarray.h;mestdlib.hЌšЅјepr_dsd.hjo2W\/home/pascal/depot/filedata/src/epr/epr_band.cџџџџџџџџџџџџ7@decode_line_char_1_of_1_to_float\/home/pascal/depot/filedata/src/epr/epr_band.cЦтџџџџџџџџsource_arrayџџџџџџџџ void*џџџџband_idџџџџџџџџEPR_SBandId*џџџџoffset_xџџџџџџџџintџџџџraster_widthџџџџџџџџintџџџџ step_xџџџџџџџџintџџџџraster_bufferџџџџџџџџ void*џџџџraster_posџџџџџџџџintџџџџvoidBdecode_line_short_1_of_1_to_float\/home/pascal/depot/filedata/src/epr/epr_band.c џџџџџџџџsource_arrayџџџџџџџџ void*џџџџband_idџџџџџџџџEPR_SBandId*џџџџoffset_xџџџџџџџџintџџџџraster_widthџџџџџџџџintџџџџ step_xџџџџџџџџintџџџџraster_bufferџџџџџџџџ void*џџџџraster_posџџџџџџџџintџџџџvoidBdecode_line_short_1_of_2_to_float\/home/pascal/depot/filedata/src/epr/epr_band.c">џџџџџџџџsource_arrayџџџџџџџџ void*џџџџband_idџџџџџџџџEPR_SBandId*џџџџoffset_xџџџџџџџџintџџџџraster_widthџџџџџџџџintџџџџ step_xџџџџџџџџintџџџџraster_bufferџџџџџџџџ void*џџџџraster_posџџџџџџџџintџџџџvoidBdecode_line_short_2_of_2_to_float\/home/pascal/depot/filedata/src/epr/epr_band.cA]џџџџџџџџsource_arrayџџџџџџџџ void*џџџџband_idџџџџџџџџEPR_SBandId*џџџџoffset_xџџџџџџџџintџџџџraster_widthџџџџџџџџintџџџџ step_xџџџџџџџџintџџџџraster_bufferџџџџџџџџ void*џџџџraster_posџџџџџџџџintџџџџvoidBdecode_line_uchar_1_of_1_to_float\/home/pascal/depot/filedata/src/epr/epr_band.cЇУџџџџџџџџsource_arrayџџџџџџџџ void*џџџџband_idџџџџџџџџEPR_SBandId*џџџџoffset_xџџџџџџџџintџџџџraster_widthџџџџџџџџintџџџџ step_xџџџџџџџџintџџџџraster_bufferџџџџџџџџ void*џџџџraster_posџџџџџџџџintџџџџvoidBdecode_line_uchar_1_of_1_to_uchar\/home/pascal/depot/filedata/src/epr/epr_band.c`rџџџџџџџџЕѓЄ€source_arrayџџџџџџџџ void*џџџџband_idџџџџџџџџEPR_SBandId*џџџџoffset_xџџџџџџџџintџџџџraster_widthџџџџџџџџintџџџџ step_xџџџџџџџџintџџџџraster_bufferџџџџџџџџ void*џџџџraster_posџџџџџџџџintџџџџvoidBdecode_line_uchar_1_of_2_to_float\/home/pascal/depot/filedata/src/epr/epr_band.cвюџџџџџџџџsource_arrayџџџџџџџџ void*џџџџband_idџџџџџџџџEPR_SBandId*џџџџoffset_xџџџџџџџџintџџџџraster_widthџџџџџџџџintџџџџ step_xџџџџџџџџintџџџџraster_bufferџџџџџџџџ void*џџџџraster_posџџџџџџџџintџџџџvoidBdecode_line_uchar_1_of_2_to_uchar\/home/pascal/depot/filedata/src/epr/epr_band.ct†џџџџџџџџsource_arrayџџџџџџџџ void*џџџџband_idџџџџџџџџEPR_SBandId*џџџџoffset_xџџџџџџџџintџџџџraster_widthџџџџџџџџintџџџџ step_xџџџџџџџџintџџџџraster_bufferџџџџџџџџ void*џџџџraster_posџџџџџџџџintџџџџvoidBdecode_line_uchar_2_of_2_to_float\/home/pascal/depot/filedata/src/epr/epr_band.cђџџџџџџџџЕї+source_arrayџџџџџџџџ void*џџџџband_idџџџџџџџџEPR_SBandId*џџџџoffset_xџџџџџџџџintџџџџraster_widthџџџџџџџџintџџџџ step_xџџџџџџџџintџџџџraster_bufferџџџџџџџџ void*џџџџraster_posџџџџџџџџintџџџџvoidBdecode_line_uchar_2_of_2_to_uchar\/home/pascal/depot/filedata/src/epr/epr_band.c‰›џџџџџџџџsource_arrayџџџџџџџџ void*џџџџband_idџџџџџџџџEPR_SBandId*џџџџoffset_xџџџџџџџџintџџџџraster_widthџџџџџџџџintџџџџ step_xџџџџџџџџintџџџџraster_bufferџџџџџџџџ void*џџџџraster_posџџџџџџџџintџџџџvoidBdecode_line_uchar_2_to_f_to_float\/home/pascal/depot/filedata/src/epr/epr_band.cБаџџџџџџџџsource_arrayџџџџџџџџ void*џџџџband_idџџџџџџџџEPR_SBandId*џџџџoffset_xџџџџџџџџintџџџџraster_widthџџџџџџџџintџџџџ step_xџџџџџџџџintџџџџraster_bufferџџџџџџџџ void*џџџџraster_posџџџџџџџџintџџџџvoidBdecode_line_uchar_3_to_i_to_ulong\/home/pascal/depot/filedata/src/epr/epr_band.c4џџџџџџџџsource_arrayџџџџџџџџ void*џџџџband_idџџџџџџџџEPR_SBandId*џџџџoffset_xџџџџџџџџintџџџџraster_widthџџџџџџџџintџџџџ step_xџџџџџџџџintџџџџraster_bufferџџџџџџџџ void*џџџџraster_posџџџџџџџџintџџџџvoidDdecode_line_ushort_1_of_1_to_float\/home/pascal/depot/filedata/src/epr/epr_band.cхџџџџџџџџ%y€source_arrayџџџџџџџџ void*џџџџband_idџџџџџџџџEPR_SBandId*џџџџoffset_xџџџџџџџџintџџџџraster_widthџџџџџџџџintџџџџ step_xџџџџџџџџintџџџџraster_bufferџџџџџџџџ void*џџџџraster_posџџџџџџџџintџџџџvoidFdecode_line_ushort_1_of_1_to_ushort\/home/pascal/depot/filedata/src/epr/epr_band.cЏџџџџџџџџsource_arrayџџџџџџџџ void*џџџџband_idџџџџџџџџEPR_SBandId*џџџџoffset_xџџџџџџџџintџџџџraster_widthџџџџџџџџintџџџџ step_xџџџџџџџџintџџџџraster_bufferџџџџџџџџ void*џџџџraster_posџџџџџџџџintџџџџvoid(decode_tiepoint_band\/home/pascal/depot/filedata/src/epr/epr_band.c5„œ Computes the physical values for the annotation data. @param sa_beg the float array of tie points "before" Y-coordinate of the point to search @param sa_end the float array of tie points "after" Y-coordinate of the point to search @param samples_per_tie_pt the "distance" between two neighbour tie points (in scan-line direction) @param num_elems number of elements in one tie point scan-line @param band_id the information about properties and quantities of ENVISAT data. @param offset_x [PIXEL] X-coordinate (0-based) of the upper right raster corner to search @param y_mod [PIXEL] relative location of the point is being searched for (in flight direction) @param raster_width [PIXEL] the width of the raster is being searched for @param s_x [PIXEL] X-step to get the next point (in source coordinates) to search @param raster_buffer the float user array to be filled with physical values @param raster_pos the actual "filled" position in raster_buffer-array џџџџ  sa_begџџџџџџџџ float*џџџџ sa_endџџџџџџџџ float*џџџџ$samples_per_tie_ptџџџџџџџџ ulongџџџџnum_elemsџџџџџџџџuintџџџџband_idџџџџџџџџEPR_SBandId*џџџџoffset_xџџџџџџџџintџџџџscan_offset_xџџџџџџџџ floatџџџџ y_modџџџџџџџџ floatџџџџraster_widthџџџџџџџџintџџџџs_xџџџџџџџџintџџџџraster_bufferџџџџџџџџ float*џџџџraster_posџџџџџџџџintџџџџvoid&epr_create_band_ids\/home/pascal/depot/filedata/src/epr/epr_band.c*ЪN Obtains all bands infos from the dddb.џџџџ%y€product_idџџџџџџџџEPR_SProductId*џџџџEPR_SPtrArray*2epr_create_bitmask_raster\/home/pascal/depot/filedata/src/epr/epr_band.cфћ Creates a raster to be used for reading bitmasks. The raster returned is always of type <code>byte</code>. @param source_width the width (across track dimension) of the source to be read into the raster. See description of epr_create_compatible_raster. @param source_height the height (along track dimension) of the source to be read into the raster. See description of epr_create_compatible_raster. @param source_step_x the subsampling step across track of the source when reading into the raster. See description of epr_create_compatible_raster. @param source_step_y the subsampling step along track of the source when reading into the raster. See description of epr_create_compatible_raster. @return the new raster instance or <code>NULL</code> if an error occured.џџџџЕѕф€source_widthџџџџџџџџuintџџџџsource_heightџџџџџџџџuintџџџџsource_step_xџџџџџџџџuintџџџџsource_step_yџџџџџџџџuintџџџџEPR_SRaster*8epr_create_compatible_raster\/home/pascal/depot/filedata/src/epr/epr_band.c3Dœ Creates a compatible raster for the given band. @param dataset_id the dataset identifier, must not be <code>NULL</code> @return the new raster instance or <code>NULL</code> if an error occured.џџџџband_idџџџџџџџџEPR_SBandId*џџџџsource_widthџџџџџџџџuintџџџџsource_heightџџџџџџџџuintџџџџsource_step_xџџџџџџџџuintџџџџsource_step_yџџџџџџџџuintџџџџEPR_SRaster*"epr_create_raster\/home/pascal/depot/filedata/src/epr/epr_band.cќ2Т Creates a raster for the given datatype and dimension. @param data_type the data type identifier @param source_width the source's width @param source_height the source's height @param source_step_x the sub-sampling in X @param source_step_y the sub-sampling in Y @return the new raster instance or <code>NULL</code> if an error occured.џџџџpdata_typeџџџџџџџџEPR_EDataTypeIdџџџџsource_widthџџџџџџџџuintџџџџsource_heightџџџџџџџџuintџџџџsource_step_xџџџџџџџџuintџџџџsource_step_yџџџџџџџџuintџџџџEPR_SRaster* epr_free_band_id\/home/pascal/depot/filedata/src/epr/epr_band.c"FВ Release the memory allocated through a band ID. @param band the dataset description identifier, if <code>NULL</code> the function immediately returns zero. @return zero for success, an error code otherwiseџџџџband_idџџџџџџџџEPR_SBandId*џџџџvoidepr_free_raster\/home/pascal/depot/filedata/src/epr/epr_band.cG^џџџџџџџџ rasterџџџџџџџџEPR_SRaster*џџџџvoidepr_get_band_id\/home/pascal/depot/filedata/src/epr/epr_band.cё џџџџџџџџ хW€product_idџџџџџџџџEPR_SProductId*џџџџband_nameџџџџџџџџconst char*џџџџEPR_SBandId*$epr_get_band_id_at\/home/pascal/depot/filedata/src/epr/epr_band.cмяџџџџџџџџ7ˆproduct_idџџџџџџџџEPR_SProductId*џџџџ indexџџџџџџџџuintџџџџEPR_SBandId*"epr_get_band_name\/home/pascal/depot/filedata/src/epr/epr_band.c!џџџџџџџџband_idџџџџџџџџEPR_SBandId*џџџџconst char*"epr_get_num_bands\/home/pascal/depot/filedata/src/epr/epr_band.cЭкџџџџџџџџџџџ€product_idџџџџџџџџEPR_SProductId*џџџџuint0epr_get_raster_elem_addr\/home/pascal/depot/filedata/src/epr/epr_band.c")џџџџџџџџЕјT rasterџџџџџџџџ$const EPR_SRaster*џџџџ offsetџџџџџџџџ ulongџџџџ void*0epr_get_raster_elem_size\/home/pascal/depot/filedata/src/epr/epr_band.c џџџџџџџџ rasterџџџџџџџџ$const EPR_SRaster*џџџџ ulong*epr_get_raster_height\/home/pascal/depot/filedata/src/epr/epr_band.cFODџџџџџџџџЖf€ rasterџџџџџџџџEPR_SRaster*џџџџ ulong0epr_get_raster_line_addr\/home/pascal/depot/filedata/src/epr/epr_band.c4;џџџџџџџџ rasterџџџџџџџџ$const EPR_SRaster*џџџџyџџџџџџџџ ulongџџџџ void*2epr_get_raster_pixel_addr\/home/pascal/depot/filedata/src/epr/epr_band.c+2џџџџџџџџ rasterџџџџџџџџ$const EPR_SRaster*џџџџxџџџџџџџџ ulongџџџџyџџџџџџџџ ulongџџџџ void*(epr_get_raster_width\/home/pascal/depot/filedata/src/epr/epr_band.c=Dџџџџџџџџ rasterџџџџџџџџEPR_SRaster*џџџџ ulong$epr_get_ref_struct\/home/pascal/depot/filedata/src/epr/epr_band.cˆЖT Gets the dataset_id, field_index and elem_index @param product_id the the product file identifier @param str the string with the name, separator ('.') and indexes. @return the dataset_id, field_index and elem_index (-1 if no). <code>NULL</code> if correspondent dataset name was not found.џџџџЕѓќ€product_idџџџџџџџџEPR_SProductId*џџџџstrџџџџџџџџconst char*џџџџEPR_SDatasetRef,epr_get_scaling_factor\/home/pascal/depot/filedata/src/epr/epr_band.ch‡† Gets the scaling factor by the given dataset_id, field_index, elem_index @param product_id the the product file identifier @param str the string with the name, separator ('.') and indexes. @return the dataset_id, field_index and elem_index (-1 if no). <code>NULL</code> if correspondent dataset name was not found.џџџџproduct_idџџџџџџџџEPR_SProductId*џџџџstrџџџџџџџџconst char*џџџџ float,epr_get_scaling_params\/home/pascal/depot/filedata/src/epr/epr_band.cGgЊ Gets the scaling params: factor or offset by the given dataset_id, field_index, elem_index @param product_id the the product file identifier @param str the string with the name, separator ('.') and indexes. @return the dataset_id, field_index and elem_index (-1 if no). <code>NULL</code> if correspondent dataset name was not found.џџџџproduct_idџџџџџџџџEPR_SProductId*џџџџstrџџџџџџџџconst char*џџџџ float"epr_interpolate2D\/home/pascal/depot/filedata/src/epr/epr_band.c‡‰џџџџџџџџwiџџџџџџџџ floatџџџџwjџџџџџџџџ floatџџџџx00џџџџџџџџ floatџџџџx10џџџџџџџџ floatџџџџx01џџџџџџџџ floatџџџџx11џџџџџџџџ floatџџџџ float:epr_read_band_annotation_data\/home/pascal/depot/filedata/src/epr/epr_band.cCМ Reads the annotation data and converts its into physical values. @param band_id the information about properties and quantities of ENVISAT data. @param offset_x X-coordinate in pixel co-ordinates (zero-based) of the upper right corner raster to search @param offset_y Y-coordinate in pixel co-ordinates (zero-based) of the upper right corner raster to search @param raster the instance to the buffer information was used @return zero for success, an error code otherwiseџџџџband_idџџџџџџџџEPR_SBandId*џџџџoffset_xџџџџџџџџintџџџџoffset_yџџџџџџџџintџџџџ rasterџџџџџџџџEPR_SRaster*џџџџint<epr_read_band_measurement_data\/home/pascal/depot/filedata/src/epr/epr_band.cФBО Reads the measurement data and converts its into physical values. @param band_id the information about properties and quantities of ENVISAT data. @param offset_x X-coordinate in pixel co-ordinates (zero-based) of the upper right corner raster to search @param offset_y Y-coordinate in pixel co-ordinates (zero-based) of the upper right corner raster to search @param raster the instance to the buffer information was used @return zero for success, an error code otherwiseџџџџband_idџџџџџџџџEPR_SBandId*џџџџoffset_xџџџџџџџџintџџџџoffset_yџџџџџџџџintџџџџ rasterџџџџџџџџEPR_SRaster*џџџџint(epr_read_band_raster\/home/pascal/depot/filedata/src/epr/epr_band.cbУџџџџџџџџband_idџџџџџџџџEPR_SBandId*џџџџoffset_xџџџџџџџџintџџџџoffset_yџџџџџџџџintџџџџ rasterџџџџџџџџEPR_SRaster*џџџџint0epr_str_to_sample_offset\/home/pascal/depot/filedata/src/epr/epr_band.cЫу Converts the given string into a sample offset identifier. @param str the string to be converted. @return the sample offset identifier represented by the given string. If the string is equal of '*' the value <code>e_none_samoff</code> is returned.џџџџrstrџџџџџџџџconst char*џџџџ EPR_ESampleModel2epr_str_to_scaling_method\/home/pascal/depot/filedata/src/epr/epr_band.cЗЪ Converts the given string into a scaling method identifier. @param str the string to be converted. @return the scaling method identifier represented by the given string. If the string is equal of '*' the value <code>e_non_smid</code> is returned.џџџџstrџџџџџџџџconst char*џџџџ$EPR_EScalingMethod.epr_zero_invalid_pixels\/home/pascal/depot/filedata/src/epr/epr_band.c(eџџџџџџџџЕѕБ rasterџџџџџџџџEPR_SRaster*џџџџbm_rasterџџџџџџџџEPR_SRaster*џџџџvoid$mirror_float_array\/home/pascal/depot/filedata/src/epr/epr_band.cьљџџџџџџџџraster_bufferџџџџџџџџ float*џџџџraster_widthџџџџџџџџuintџџџџraster_heightџџџџџџџџuintџџџџvoid$mirror_uchar_array\/home/pascal/depot/filedata/src/epr/epr_band.cћџџџџџџџџЕє4raster_bufferџџџџџџџџ uchar*џџџџraster_widthџџџџџџџџuintџџџџraster_heightџџџџџџџџuintџџџџvoid$mirror_ulong_array\/home/pascal/depot/filedata/src/epr/epr_band.c&џџџџџџџџraster_bufferџџџџџџџџ ulong*џџџџraster_widthџџџџџџџџuintџџџџraster_heightџџџџџџџџuintџџџџvoid&mirror_ushort_array\/home/pascal/depot/filedata/src/epr/epr_band.c џџџџџџџџraster_bufferџџџџџџџџushort*џџџџraster_widthџџџџџџџџuintџџџџraster_heightџџџџџџџџuintџџџџvoid6select_line_decode_function\/home/pascal/depot/filedata/src/epr/epr_band.cP‘|**************************************************************џџџџband_tidџџџџџџџџEPR_EDataTypeIdџџџџband_smodџџџџџџџџ EPR_ESampleModelџџџџraw_tidџџџџџџџџEPR_EDataTypeIdџџџџ EPR_FLineDecoder>select_transform_array_function\/home/pascal/depot/filedata/src/epr/epr_band.c”Єџџџџџџџџband_tidџџџџџџџџEPR_EDataTypeIdџџџџraw_tidџџџџџџџџEPR_EDataTypeIdџџџџ*EPR_FArrayTransformer:transform_array_long_to_float\/home/pascal/depot/filedata/src/epr/epr_band.cЄЎџџџџџџџџЕі˜€sourceArrayџџџџџџџџ void*џџџџband_idџџџџџџџџEPR_SBandId*џџџџraster_bufferџџџџџџџџ float*џџџџnelџџџџџџџџuintџџџџvoid8transform_array_long_to_long\/home/pascal/depot/filedata/src/epr/epr_band.cдоџџџџџџџџsourceArrayџџџџџџџџ void*џџџџband_idџџџџџџџџEPR_SBandId*џџџџraster_bufferџџџџџџџџ long*џџџџnelџџџџџџџџuintџџџџvoid<transform_array_short_to_float\/home/pascal/depot/filedata/src/epr/epr_band.cŒ–џџџџџџџџsourceArrayџџџџџџџџ void*џџџџband_idџџџџџџџџEPR_SBandId*џџџџraster_bufferџџџџџџџџ float*џџџџnelџџџџџџџџuintџџџџvoid<transform_array_short_to_short\/home/pascal/depot/filedata/src/epr/epr_band.cМЦџџџџџџџџЕёƒ€sourceArrayџџџџџџџџ void*џџџџband_idџџџџџџџџEPR_SBandId*џџџџraster_bufferџџџџџџџџ short*џџџџnelџџџџџџџџuintџџџџvoid<transform_array_ulong_to_float\/home/pascal/depot/filedata/src/epr/epr_band.cАКџџџџџџџџsourceArrayџџџџџџџџ void*џџџџband_idџџџџџџџџEPR_SBandId*џџџџraster_bufferџџџџџџџџ float*џџџџnelџџџџџџџџuintџџџџvoid<transform_array_ulong_to_ulong\/home/pascal/depot/filedata/src/epr/epr_band.cръџџџџџџџџsourceArrayџџџџџџџџ void*џџџџband_idџџџџџџџџEPR_SBandId*џџџџraster_bufferџџџџџџџџ ulong*џџџџnelџџџџџџџџuintџџџџvoid>transform_array_ushort_to_float\/home/pascal/depot/filedata/src/epr/epr_band.c˜ЂџџџџџџџџsourceArrayџџџџџџџџ void*џџџџband_idџџџџџџџџEPR_SBandId*џџџџraster_bufferџџџџџџџџ float*џџџџnelџџџџџџџџuintџџџџvoid@transform_array_ushort_to_ushort\/home/pascal/depot/filedata/src/epr/epr_band.cШвџџџџџџџџЕђ€sourceArrayџџџџџџџџ void*џџџџband_idџџџџџџџџEPR_SBandId*џџџџraster_bufferџџџџџџџџushort*џџџџnelџџџџџџџџuintџџџџvoidepr_ptrarray.hstdio.h\/home/pascal/depot/filedata/src/epr/epr_band.h%yДЂTџџџџ\ˆ"/+__cplusplus1џџџџ\/home/pascal/depot/filedata/src/epr/epr_band.hY“^ьstdio.hЏЬІ‰epr_ptrarray.h;me\/home/pascal/depot/filedata/src/epr/epr_band.hџџџџџџџџџџџџ *EPR_FArrayTransformer\/home/pascal/depot/filedata/src/epr/epr_band.hс ф.џџџџvoid EPR_FLineDecoder\/home/pascal/depot/filedata/src/epr/epr_band.hд к#џџџџvoidšctype.hepr_api.hepr_core.hepr_string.hepr_ptrarray.hepr_swap.hepr_field.hepr_record.hepr_param.hepr_dsd.hepr_msph.hepr_band.hepr_bitmask.hepr_dddb.hb/home/pascal/depot/filedata/src/epr/epr_bitmask.c%yДЂTџџџџepr_core.hHлХepr_bitmask.hˆˆВ'epr_swap.hЌyepr_record.hтˆьћepr_msph.h&xєb/home/pascal/depot/filedata/src/epr/epr_bitmask.cт’epr_band.h! epr_string.hЯфѓepr_field.h)•Жрctype.h˜тюлepr_dddb.hOq:epr_param.h7[F}epr_api.hjk+Іepr_ptrarray.h;meepr_dsd.hjo2Wb/home/pascal/depot/filedata/src/epr/epr_bitmask.cџџџџџџџџџџџџ$epr_resolve_bm_refb/home/pascal/depot/filedata/src/epr/epr_bitmask.c""GџџџџџџџџЕєЧcontextџџџџџџџџ&EPR_SBmEvalContext*џџџџtermџџџџџџџџEPR_SBmTerm*џџџџvoid+"epr_consume_tokenb/home/pascal/depot/filedata/src/epr/epr_bitmask.cJRџџџџџџџџparse_infoџџџџџџџџEPR_SParseInfo*џџџџ char*,epr_create_bm_AND_termb/home/pascal/depot/filedata/src/epr/epr_bitmask.cелџџџџџџџџЖЩ€arg1џџџџџџџџEPR_SBmTerm*џџџџarg2џџџџџџџџEPR_SBmTerm*џџџџEPR_SBmTerm*,epr_create_bm_NOT_termb/home/pascal/depot/filedata/src/epr/epr_bitmask.cЦЫџџџџџџџџargџџџџџџџџEPR_SBmTerm*џџџџEPR_SBmTerm**epr_create_bm_OR_termb/home/pascal/depot/filedata/src/epr/epr_bitmask.cЭгџџџџџџџџЕє—€arg1џџџџџџџџEPR_SBmTerm*џџџџarg2џџџџџџџџEPR_SBmTerm*џџџџEPR_SBmTerm*,epr_create_bm_REF_termb/home/pascal/depot/filedata/src/epr/epr_bitmask.cМФџџџџџџџџЕјband_nameџџџџџџџџ char*џџџџflag_nameџџџџџџџџ char*џџџџEPR_SBmTerm*4epr_create_bm_eval_contextb/home/pascal/depot/filedata/src/epr/epr_bitmask.c&:џџџџџџџџЕѕ.product_idџџџџџџџџEPR_SProductId*џџџџoffset_xџџџџџџџџintџџџџoffset_yџџџџџџџџintџџџџbitmask_rasterџџџџџџџџEPR_SRaster*џџџџ&EPR_SBmEvalContext*$epr_create_bm_exprb/home/pascal/depot/filedata/src/epr/epr_bitmask.co›ю Creates a new bitmask expression from the given bitmask term. <p>The expression returned is a valid in the sense that the epr_parse_bm_expr() applied to the returned string would return an equivalent term. @param term the term to be convertedџџџџtermџџџџџџџџEPR_SBmTerm*џџџџ char*$epr_create_bm_termb/home/pascal/depot/filedata/src/epr/epr_bitmask.cЕКџџџџџџџџЕљР€op_codeџџџџџџџџEPR_EBmOpCodeџџџџEPR_SBmTerm*,epr_create_flag_codingb/home/pascal/depot/filedata/src/epr/epr_bitmask.cL‡џџџџџџџџџџџ€product_idџџџџџџџџEPR_SProductId*џџџџ flag_coding_nameџџџџџџџџconst char*џџџџEPR_SPtrArray*&epr_create_flag_defb/home/pascal/depot/filedata/src/epr/epr_bitmask.cЊџџџџџџџџџџџ€EPR_SFlagDef* epr_eval_bm_termb/home/pascal/depot/filedata/src/epr/epr_bitmask.c­р Evaluates the given bitmask expression. @param term the bitmask term @param x the pixel's x co-ordinate @param y the pixel's y co-ordinateџџџџcontextџџџџџџџџ&EPR_SBmEvalContext*џџџџtermџџџџџџџџEPR_SBmTerm*џџџџxџџџџџџџџintџџџџyџџџџџџџџintџџџџboolean0epr_free_bm_eval_contextb/home/pascal/depot/filedata/src/epr/epr_bitmask.c=aџџџџџџџџЕѓ;contextџџџџџџџџ&EPR_SBmEvalContext*џџџџvoid epr_free_bm_termb/home/pascal/depot/filedata/src/epr/epr_bitmask.cKnL Releases a new bitmask term instance.џџџџtermџџџџџџџџEPR_SBmTerm*џџџџvoid(epr_free_flag_codingb/home/pascal/depot/filedata/src/epr/epr_bitmask.cŠšџџџџџџџџflag_codingџџџџџџџџEPR_SPtrArray*џџџџvoid"epr_free_flag_defb/home/pascal/depot/filedata/src/epr/epr_bitmask.c­Йџџџџџџџџflag_defџџџџџџџџEPR_SFlagDef*џџџџvoid.epr_get_pixel_as_doubleb/home/pascal/depot/filedata/src/epr/epr_bitmask.c.Jџџџџџџџџџџџ€ rasterџџџџџџџџ$const EPR_SRaster*џџџџxџџџџџџџџintџџџџyџџџџџџџџintџџџџ double,epr_get_pixel_as_floatb/home/pascal/depot/filedata/src/epr/epr_bitmask.c,џџџџџџџџ rasterџџџџџџџџ$const EPR_SRaster*џџџџxџџџџџџџџintџџџџyџџџџџџџџintџџџџ float*epr_get_pixel_as_longb/home/pascal/depot/filedata/src/epr/epr_bitmask.cљџџџџџџџџЖ rasterџџџџџџџџ$const EPR_SRaster*џџџџxџџџџџџџџintџџџџyџџџџџџџџintџџџџlong,epr_get_pixel_as_ulongb/home/pascal/depot/filedata/src/epr/epr_bitmask.cпїџџџџџџџџџџџ€ rasterџџџџџџџџ$const EPR_SRaster*џџџџxџџџџџџџџintџџџџyџџџџџџџџintџџџџ ulong$epr_get_token_charb/home/pascal/depot/filedata/src/epr/epr_bitmask.cCHџџџџџџџџparse_infoџџџџџџџџEPR_SParseInfo*џџџџint*epr_is_bm_AND_keywordb/home/pascal/depot/filedata/src/epr/epr_bitmask.c#%џџџџџџџџparse_infoџџџџџџџџEPR_SParseInfo*џџџџboolean,epr_is_bm_AND_operatorb/home/pascal/depot/filedata/src/epr/epr_bitmask.c+-џџџџџџџџparse_infoџџџџџџџџEPR_SParseInfo*џџџџboolean&epr_is_bm_EOS_tokenb/home/pascal/depot/filedata/src/epr/epr_bitmask.c;=џџџџџџџџparse_infoџџџџџџџџEPR_SParseInfo*џџџџboolean*epr_is_bm_NOT_keywordb/home/pascal/depot/filedata/src/epr/epr_bitmask.c')џџџџџџџџЖЃparse_infoџџџџџџџџEPR_SParseInfo*џџџџboolean,epr_is_bm_NOT_operatorb/home/pascal/depot/filedata/src/epr/epr_bitmask.c35џџџџџџџџ€parse_infoџџџџџџџџEPR_SParseInfo*џџџџboolean(epr_is_bm_OR_keywordb/home/pascal/depot/filedata/src/epr/epr_bitmask.c!џџџџџџџџparse_infoџџџџџџџџEPR_SParseInfo*џџџџboolean*epr_is_bm_OR_operatorb/home/pascal/depot/filedata/src/epr/epr_bitmask.c/1џџџџџџџџparse_infoџџџџџџџџEPR_SParseInfo*џџџџboolean(epr_is_bm_expr_errorb/home/pascal/depot/filedata/src/epr/epr_bitmask.c?Aџџџџџџџџparse_infoџџџџџџџџEPR_SParseInfo*џџџџboolean(epr_is_bm_name_tokenb/home/pascal/depot/filedata/src/epr/epr_bitmask.c79џџџџџџџџparse_infoџџџџџџџџEPR_SParseInfo*џџџџboolean,epr_next_bm_expr_tokenb/home/pascal/depot/filedata/src/epr/epr_bitmask.cT]џџџџџџџџparse_infoџџџџџџџџEPR_SParseInfo*џџџџvoid*epr_parse_bm_AND_exprb/home/pascal/depot/filedata/src/epr/epr_bitmask.cжшџџџџџџџџ€parse_infoџџџџџџџџEPR_SParseInfo*џџџџterm_requiredџџџџџџџџbooleanџџџџEPR_SBmTerm*(epr_parse_bm_OR_exprb/home/pascal/depot/filedata/src/epr/epr_bitmask.cТдџџџџџџџџrparse_infoџџџџџџџџEPR_SParseInfo*џџџџterm_requiredџџџџџџџџbooleanџџџџEPR_SBmTerm*"epr_parse_bm_exprb/home/pascal/depot/filedata/src/epr/epr_bitmask.cМОџџџџџџџџparse_infoџџџџџџџџEPR_SParseInfo*џџџџterm_requiredџџџџџџџџbooleanџџџџEPR_SBmTerm**epr_parse_bm_expr_strb/home/pascal/depot/filedata/src/epr/epr_bitmask.c2I„ Parses the bit-mask expression given as character string. @param bm_expr the bit-mask expression given as character string @return the bit-mask term tree representing the bit-mask expression @throws BitmaskExpressionParseException if the given code could not be epr_parse'd @throws IOException if an I/O error occursџџџџЕїZ€bm_exprџџџџџџџџconst char*џџџџEPR_SBmTerm*2epr_parse_bm_primary_exprb/home/pascal/depot/filedata/src/epr/epr_bitmask.cћџџџџџџџџparse_infoџџџџџџџџEPR_SParseInfo*џџџџterm_requiredџџџџџџџџbooleanџџџџEPR_SBmTerm*.epr_parse_bm_unary_exprb/home/pascal/depot/filedata/src/epr/epr_bitmask.cыљџџџџџџџџ parse_infoџџџџџџџџEPR_SParseInfo*џџџџterm_requiredџџџџџџџџbooleanџџџџEPR_SBmTerm*"epr_print_bm_termb/home/pascal/depot/filedata/src/epr/epr_bitmask.cœЃn Prints the given term as an expression to the console.џџџџtermџџџџџџџџEPR_SBmTerm*џџџџvoid6epr_push_back_bm_expr_tokenb/home/pascal/depot/filedata/src/epr/epr_bitmask.c_aџџџџџџџџparse_infoџџџџџџџџEPR_SParseInfo*џџџџvoid.epr_read_bitmask_rasterb/home/pascal/depot/filedata/src/epr/epr_bitmask.cbЌ< Reads bit-mask pixels of the given product for the given bit-mask expression for the given region offset and raster. @param product_id the product ID @param bm_expr the bit-mask expression @param offset_x X-coordinate in pixel co-ordinates (zero-based) of the upper right raster corner to be searched for @param offset_y Y-coordinate in pixel co-ordinates (zero-based) of the upper right raster corner to be searched for @param raster the instance to the buffer information was used @return zero for success, an error code otherwiseџџџџsproduct_idџџџџџџџџEPR_SProductId*џџџџbm_exprџџџџџџџџconst char*џџџџoffset_xџџџџџџџџintџџџџoffset_yџџџџџџџџintџџџџbm_rasterџџџџџџџџEPR_SRaster*џџџџint$epr_resolve_bm_refb/home/pascal/depot/filedata/src/epr/epr_bitmask.cу1џџџџџџџџQЙ€contextџџџџџџџџ&EPR_SBmEvalContext*џџџџtermџџџџџџџџEPR_SBmTerm*џџџџvoid*epr_set_bm_expr_errorb/home/pascal/depot/filedata/src/epr/epr_bitmask.ccwџџџџџџџџparse_infoџџџџџџџџEPR_SParseInfo*џџџџmessageџџџџџџџџconst char*џџџџvoid(epr_tokenize_bm_exprb/home/pascal/depot/filedata/src/epr/epr_bitmask.czВџџџџџџџџbm_exprџџџџџџџџconst char*џџџџbm_expr_posџџџџџџџџint*џџџџ tokenџџџџџџџџ char**џџџџint"epr_write_bm_termb/home/pascal/depot/filedata/src/epr/epr_bitmask.cЄЉ† Writes the given term as an expression to the given output stream.џџџџtermџџџџџџџџEPR_SBmTerm*џџџџostreamџџџџџџџџ FILE*џџџџvoidb/home/pascal/depot/filedata/src/epr/epr_bitmask.h%yДЂTџџџџ\ˆ"/+__cplusplus1џџџџb/home/pascal/depot/filedata/src/epr/epr_bitmask.hт’"b/home/pascal/depot/filedata/src/epr/epr_bitmask.hџџџџџџџџџџџџ"EPR_BmEvalContextb/home/pascal/depot/filedata/src/epr/epr_bitmask.h^} The <code>EPR_BmEvalContext</code> structure represents an evaluation context for bitmask expressions. It is used internally only. <p> An instance of this structure holds the product ID, references to all flag datasets required to evaluate the expression as well as information about the bitmask raster beeing created. @see EPR_SProductId @see EPR_SRaster @see EPR_SPtrArrayџџџџ"EPR_BmFlagDatasetb/home/pascal/depot/filedata/src/epr/epr_bitmask.h„‹^ Represents a flag-field within a flag-record. џџџџEPR_BmTermb/home/pascal/depot/filedata/src/epr/epr_bitmask.h>OD The <code>EPR_BmTerm</code> structure is the union of structures: each of them can contain either the subject (operand) for the logic operators or this operators itself with referd operand(s). Thus they are recursive. The example of term: <code>flags.WATER or flags.LAND</code> here: <i>'flags'</i> is a band_name; <i>'WATER'</i> and <i>'LAND'</i> - flag_name's; <i>'or'</i> - logical operator. @see EPR_SRasterџџџџ(epr_bitmask_0)b/home/pascal/depot/filedata/src/epr/epr_bitmask.h@NџџџџџџџџEPR_BmTerm(epr_bitmask_1)b/home/pascal/depot/filedata/src/epr/epr_bitmask.hAF BMT_REFџџџџEPR_BmTerm(epr_bitmask_0)(epr_bitmask_2)b/home/pascal/depot/filedata/src/epr/epr_bitmask.hGI BMT_NOTџџџџEPR_BmTerm(epr_bitmask_0)(epr_bitmask_3)b/home/pascal/depot/filedata/src/epr/epr_bitmask.hJM $BMT_AND and BMT_ORџџџџEPR_BmTerm(epr_bitmask_0)EPR_ParseInfob/home/pascal/depot/filedata/src/epr/epr_bitmask.h,3џџџџџџџџ BME_EOSb/home/pascal/depot/filedata/src/epr/epr_bitmask.h00 џџџџEPR_TokBME_NAMEb/home/pascal/depot/filedata/src/epr/epr_bitmask.h22 џџџџEPR_TokBME_SPECIALb/home/pascal/depot/filedata/src/epr/epr_bitmask.h11џџџџEPR_TokBME_UNKNOWNb/home/pascal/depot/filedata/src/epr/epr_bitmask.h//џџџџEPR_TokBMT_ANDb/home/pascal/depot/filedata/src/epr/epr_bitmask.h(( џџџџEPR_BmOpCodeBMT_NOTb/home/pascal/depot/filedata/src/epr/epr_bitmask.h** џџџџEPR_BmOpCode BMT_ORb/home/pascal/depot/filedata/src/epr/epr_bitmask.h)) џџџџEPR_BmOpCodeBMT_REFb/home/pascal/depot/filedata/src/epr/epr_bitmask.h'' џџџџEPR_BmOpCodeBMT_UNKNOWNb/home/pascal/depot/filedata/src/epr/epr_bitmask.h&&џџџџEPR_BmOpCode EPR_BmOpCodeb/home/pascal/depot/filedata/src/epr/epr_bitmask.h%+2 private implementations const int EPR_EBmOpCodeb/home/pascal/depot/filedata/src/epr/epr_bitmask.h(5џџџџ"enum EPR_BmOpCode $EPR_SBmEvalContextb/home/pascal/depot/filedata/src/epr/epr_bitmask.h(:џџџџ0struct EPR_BmEvalContext $EPR_SBmFlagDatasetb/home/pascal/depot/filedata/src/epr/epr_bitmask.h(:џџџџ0struct EPR_BmFlagDataset EPR_SBmTermb/home/pascal/depot/filedata/src/epr/epr_bitmask.h(3џџџџ"struct EPR_BmTerm EPR_SParseInfob/home/pascal/depot/filedata/src/epr/epr_bitmask.h66+џџџџ(struct EPR_ParseInfo EPR_Tokb/home/pascal/depot/filedata/src/epr/epr_bitmask.h.3џџџџconst intœassert.herrno.hstdio.hstdlib.hstring.hepr_api.hepr_core.hepr_string.hepr_ptrarray.hepr_swap.hepr_field.hepr_record.hepr_param.hepr_dsd.hepr_msph.hepr_band.hepr_bitmask.hepr_dddb.h\/home/pascal/depot/filedata/src/epr/epr_core.c%yДЂTџџџџepr_core.hHлХepr_bitmask.hˆˆВ'epr_swap.hЌy\/home/pascal/depot/filedata/src/epr/epr_core.cYЛ.Ћerrno.h›2assert.hє(DЈstring.h­Ц‰=epr_record.hтˆьћepr_msph.h&xєepr_band.h! epr_string.hЯфѓepr_field.h)•Жрstdio.hЏЬІ‰epr_dddb.hOq:epr_param.h7[F}epr_api.hjk+Іepr_ptrarray.h;mestdlib.hЌšЅјepr_dsd.hjo2W\/home/pascal/depot/filedata/src/epr/epr_core.cџџџџџџџџџџџџ.epr_check_api_init_flag\/home/pascal/depot/filedata/src/epr/epr_core.cемџџџџџџџџ&booleanepr_clear_err\/home/pascal/depot/filedata/src/epr/epr_core.cђœ Clears the last error. After calling this function, calling <code>epr_get_last_err_code</code> returns <code>e_err_none</code> or zero and <code>epr_get_last_err_message</code> returns <code>NULL</code>.џџџџЕѓvoid.epr_data_type_id_to_str\/home/pascal/depot/filedata/src/epr/epr_core.ccŽ$ Converts the given data type identifier to a string representing the C-type of the data type. @param data_type_id the data type identifier. If the identifier can not be converted, an empty string <code>""</code> is returned. @return the C-type stringџџџџdata_type_idџџџџџџџџEPR_EDataTypeIdџџџџconst char*,epr_get_data_type_size\/home/pascal/depot/filedata/src/epr/epr_core.cС Determines the length of the given data type identifier. @param data_type_id the data type identifier. @return the the length of the data type identifier. If the data type identifier is unknown, <code>e_tid_unknown</code> is returned.џџџџdata_type_idџџџџџџџџEPR_EDataTypeIdџџџџuint*epr_get_last_err_code\/home/pascal/depot/filedata/src/epr/epr_core.c@ Sets the error code of the error that occured during the last API function call. @return the error code, <code>e_err_none</code> or zero if no error occuredџџџџEPR_EErrCode0epr_get_last_err_message\/home/pascal/depot/filedata/src/epr/epr_core.c!0 Sets the error message of the error that occured during the last API function call. @return the error message, <code>NULL</code> if no error occuredџџџџconst char*epr_log\/home/pascal/depot/filedata/src/epr/epr_core.cТзP Logs a message with the given log level. <p> The function calls this API's log handler if it is not <code>NULL</code> and if the given log level is greater than or equal to the global log level. @param log_level the log level (or message type) for the mesage @param log_message the mesageџџџџlog_levelџџџџџџџџEPR_ELogLevelџџџџlog_messageџџџџџџџџconst char*џџџџvoid6epr_make_os_compatible_path\/home/pascal/depot/filedata/src/epr/epr_core.cЛв  Adapts path description to operating system. @param path the path to a file. џџџџpathџџџџџџџџ char*џџџџvoidepr_open_file\/home/pascal/depot/filedata/src/epr/epr_core.c"B Opens a file to read. @param file_path the path to the file. @return the file handle or <code>NULL</code> if an error occured.џџџџfile_pathџџџџџџџџ char*џџџџ FILE*$epr_param_to_value\/home/pascal/depot/filedata/src/epr/epr_core.cЂКд Finds in the param_table the value corresponding to its name. @param str the parameter name @param param_table the pointer to param_table @return the value of the given name or <code>(uint)-1</code> if an error occured.џџџџstrџџџџџџџџconst char*џџџџparam_tableџџџџџџџџEPR_SPtrArray*џџџџuint*epr_parse_value_count\/home/pascal/depot/filedata/src/epr/epr_core.coЁ< Converts the given string into a field length. The string can represent a single integer value or a sequence of integer value and parameter references (names). Integers and value are expected to be separated by the asterisk character ('*'). E.g. the string "3 * 4 * num_pixels_across" is represents a valid field length as long as the parameter name 'num_pixels_across' is found in the given parameter table. @param count the string to be converted @param product_id the Product identifier containing the values for the Product @return the field length computed from the given string or <code>(uint)-1</code> if an error occured.џџџџ product_idџџџџџџџџEPR_SProductId*џџџџ countџџџџџџџџconst char*џџџџuintepr_set_err\/home/pascal/depot/filedata/src/epr/epr_core.cиёŠ Sets the given error code and the associated error message and calls this API's error handler if it is not <code>NULL</code>. @param err_code the error code @param err_message the error mesageџџџџerr_codeџџџџџџџџEPR_EErrCodeџџџџerr_messageџџџџџџџџconst char*џџџџvoid.epr_str_to_data_type_id\/home/pascal/depot/filedata/src/epr/epr_core.c9b$ Converts the given string into a data type identifier. @param str the string to be converted. @return the data type identifier represented by the given string. If the string can not be converted the special value <code>e_tid_unknown</code> is returned.џџџџЕљhstrџџџџџџџџconst char*џџџџEPR_EDataTypeId"epr_str_to_number\/home/pascal/depot/filedata/src/epr/epr_core.cCnъ Converts the given string into a long number. @param str the string to be converted. @return the long type number represented by the given string. If the string can not be converted, the value of <code>1</code> is returned.џџџџstrџџџџџџџџconst char*џџџџlongepr_api\/home/pascal/depot/filedata/src/epr/epr_core.c* *N The one and only ENVISAT API instance.EPR_SAPIstdio.hepr_ptrarray.h\/home/pascal/depot/filedata/src/epr/epr_core.h%yДЂTџџџџ\ˆ"/+__cplusplus1џџџџ\/home/pascal/depot/filedata/src/epr/epr_core.hYЛ.Аstdio.hЏЬІ‰epr_ptrarray.h;me\/home/pascal/depot/filedata/src/epr/epr_core.hџџџџџџџџџџџџEPR_API\/home/pascal/depot/filedata/src/epr/epr_core.hUˆœ The <code>EPR_API</code> structure is a container for all globally required information related to to the ENVISAT product reader API. <p> A single global (but hidden) instance exists for this structure.џџџџ EPR_SAPI\/home/pascal/depot/filedata/src/epr/epr_core.h!!џџџџstruct EPR_API EPR_SParameter\/home/pascal/depot/filedata/src/epr/epr_core.h""+џџџџ(struct EPR_Parameteržassert.herrno.hstdio.hstdlib.hstring.h time.hepr_api.hepr_core.hepr_string.hepr_ptrarray.hepr_swap.hepr_field.hepr_dataset.hepr_record.hepr_param.hepr_dsd.hepr_msph.hepr_band.hepr_bitmask.hepr_dddb.hb/home/pascal/depot/filedata/src/epr/epr_dataset.c%yДЂTџџџџepr_core.hHлХepr_bitmask.hˆˆВ'b/home/pascal/depot/filedata/src/epr/epr_dataset.c]иepr_swap.hЌyerrno.h›2assert.hє(DЈstring.h­Ц‰=epr_record.hтˆьћepr_msph.h&xєepr_band.h! epr_string.hЯфѓepr_field.h)•Жрstdio.hЏЬІ‰epr_dddb.hOq:epr_dataset.hƒБтepr_param.h7[F}epr_api.hjk+Іepr_ptrarray.h;mestdlib.hЌšЅј time.h _žЕepr_dsd.hjo2Wb/home/pascal/depot/filedata/src/epr/epr_dataset.cџџџџџџџџџџџџ *epr_create_dataset_idb/home/pascal/depot/filedata/src/epr/epr_dataset.c)Jџџџџџџџџproduct_idџџџџџџџџEPR_SProductId*џџџџdsdџџџџџџџџconst EPR_SDSD*џџџџdataset_nameџџџџџџџџconst char*џџџџ"record_descriptorџџџџџџџџ<struct const RecordDescriptor*џџџџdsd_nameџџџџџџџџconst char*џџџџdescriptionџџџџџџџџconst char*џџџџEPR_SDatasetId*,epr_create_dataset_idsb/home/pascal/depot/filedata/src/epr/epr_dataset.ceЈ( Creates an array of dataset_id for the given ENVISAT product @param product_id the the product file identifier @return the instance of the arrayџџџџ хW€product_idџџџџџџџџEPR_SProductId*џџџџEPR_SPtrArray*"epr_create_recordb/home/pascal/depot/filedata/src/epr/epr_dataset.c№ Ђ Creates a new record for the dataset given by the specified dataset identifier.џџџџPЯ@€dataset_idџџџџџџџџEPR_SDatasetId*џџџџEPR_SRecord*&epr_free_dataset_idb/home/pascal/depot/filedata/src/epr/epr_dataset.cKdІ Release the memory allocated through a dataset ID. @param product_id the file identifier, if <code>NULL</code> the function immediately returns zero. @return zero for success, an error code otherwiseџџџџdataset_idџџџџџџџџEPR_SDatasetId*џџџџvoid(epr_get_dataset_nameb/home/pascal/depot/filedata/src/epr/epr_dataset.cЋЕџџџџџџџџEdataset_idџџџџџџџџEPR_SDatasetId*џџџџconst char*,epr_get_dataset_offsetb/home/pascal/depot/filedata/src/epr/epr_dataset.cляџџџџџџџџ хW€dataset_idџџџџџџџџEPR_SDatasetId*џџџџuintepr_get_dsdb/home/pascal/depot/filedata/src/epr/epr_dataset.cУЭџџџџџџџџpш€dataset_idџџџџџџџџ*const EPR_SDatasetId*џџџџconst EPR_SDSD* epr_get_dsd_nameb/home/pascal/depot/filedata/src/epr/epr_dataset.cЯйџџџџџџџџhŒЛ€dataset_idџџџџџџџџ*const EPR_SDatasetId*џџџџconst char*&epr_get_num_recordsb/home/pascal/depot/filedata/src/epr/epr_dataset.cЗСџџџџџџџџ хW€dataset_idџџџџџџџџ*const EPR_SDatasetId*џџџџuintepr_read_recordb/home/pascal/depot/filedata/src/epr/epr_dataset.c ^^ Reads a full record from ENVISAT product file.џџџџў<€dataset_idџџџџџџџџEPR_SDatasetId*џџџџrecord_indexџџџџџџџџuintџџџџ recordџџџџџџџџEPR_SRecord*џџџџEPR_SRecord*b/home/pascal/depot/filedata/src/epr/epr_dataset.h%yДЂTџџџџ\ˆ"/+__cplusplus1џџџџb/home/pascal/depot/filedata/src/epr/epr_dataset.h]нb/home/pascal/depot/filedata/src/epr/epr_dataset.hџџџџџџџџџџџџНepr_api.hepr_dddb.h\/home/pascal/depot/filedata/src/epr/epr_dddb.c%tЯVь8џџџџepr_dddb.hOq:\/home/pascal/depot/filedata/src/epr/epr_dddb.cYСФ epr_api.hjk+І\/home/pascal/depot/filedata/src/epr/epr_dddb.cџџџџџџџџџџџџƒ>ASAR_Antenna_ADSR_asar_rec_data\/home/pascal/depot/filedata/src/epr/epr_dddb.c§%џџџџ<struct const RecordDescriptor*:ASAR_Chirp_ADSR_asar_rec_data\/home/pascal/depot/filedata/src/epr/epr_dddb.c%”џџџџ<struct const RecordDescriptor*>ASAR_Dop_Cen_ADSR_asar_rec_data\/home/pascal/depot/filedata/src/epr/epr_dddb.c–%žџџџџ<struct const RecordDescriptor*@ASAR_Geo_Grid_ADSR_asar_rec_data\/home/pascal/depot/filedata/src/epr/epr_dddb.c %Гџџџџ<struct const RecordDescriptor*@ASAR_Image_MDSR_BP_asar_rec_data\/home/pascal/depot/filedata/src/epr/epr_dddb.cЕ%Кџџџџ<struct const RecordDescriptor*BASAR_Image_MDSR_Gen_asar_rec_data\/home/pascal/depot/filedata/src/epr/epr_dddb.cМ%Сџџџџ<struct const RecordDescriptor*BASAR_Image_MDSR_SLC_asar_rec_data\/home/pascal/depot/filedata/src/epr/epr_dddb.cУ%Шџџџџ<struct const RecordDescriptor*8ASAR_Main_ADSR_asar_rec_data\/home/pascal/depot/filedata/src/epr/epr_dddb.cЪ%Їџџџџ<struct const RecordDescriptor*6ASAR_Map_GADS_asar_rec_data\/home/pascal/depot/filedata/src/epr/epr_dddb.cЉ%ьџџџџ<struct const RecordDescriptor*JASAR_Ocean_Spectra_MDSR_asar_rec_data\/home/pascal/depot/filedata/src/epr/epr_dddb.cю% џџџџ<struct const RecordDescriptor*BASAR_SQ1_Image_ADSR_asar_rec_data\/home/pascal/depot/filedata/src/epr/epr_dddb.c.%Vџџџџ<struct const RecordDescriptor*8ASAR_SRGR_ADSR_asar_rec_data\/home/pascal/depot/filedata/src/epr/epr_dddb.cX%_џџџџ<struct const RecordDescriptor*>ASAR_Spectra_MDSR_asar_rec_data\/home/pascal/depot/filedata/src/epr/epr_dddb.c%,џџџџ<struct const RecordDescriptor*PASAR_Wave_Geolocation_ADSR_asar_rec_data\/home/pascal/depot/filedata/src/epr/epr_dddb.ca%gџџџџ<struct const RecordDescriptor*DASAR_Wave_Param_ADSR_asar_rec_data\/home/pascal/depot/filedata/src/epr/epr_dddb.ci%іџџџџ<struct const RecordDescriptor*>ASAR_Wave_SQ_ADSR_asar_rec_data\/home/pascal/depot/filedata/src/epr/epr_dddb.cј%4џџџџ<struct const RecordDescriptor*(ASA_APG_1P_band_data\/home/pascal/depot/filedata/src/epr/epr_dddb.c Ќ# Гџџџџ8struct const BandDescriptor*.ASA_APG_1P_dataset_data\/home/pascal/depot/filedata/src/epr/epr_dddb.c `& lџџџџ>struct const DatasetDescriptor*(ASA_APM_1P_band_data\/home/pascal/depot/filedata/src/epr/epr_dddb.c Е# Мџџџџ8struct const BandDescriptor*.ASA_APM_1P_dataset_data\/home/pascal/depot/filedata/src/epr/epr_dddb.c n& yџџџџ>struct const DatasetDescriptor*(ASA_APP_1P_band_data\/home/pascal/depot/filedata/src/epr/epr_dddb.c О# Хџџџџ8struct const BandDescriptor*.ASA_APP_1P_dataset_data\/home/pascal/depot/filedata/src/epr/epr_dddb.c {& †џџџџ>struct const DatasetDescriptor*(ASA_APS_1P_band_data\/home/pascal/depot/filedata/src/epr/epr_dddb.c Ч# Юџџџџ8struct const BandDescriptor*.ASA_APS_1P_dataset_data\/home/pascal/depot/filedata/src/epr/epr_dddb.c ˆ& ‘џџџџ>struct const DatasetDescriptor*(ASA_AP__BP_band_data\/home/pascal/depot/filedata/src/epr/epr_dddb.c а# жџџџџ8struct const BandDescriptor*.ASA_AP__BP_dataset_data\/home/pascal/depot/filedata/src/epr/epr_dddb.c “& ™џџџџ>struct const DatasetDescriptor*:ASA_CON_AX_GADS_asar_rec_data\/home/pascal/depot/filedata/src/epr/epr_dddb.c6%`џџџџ<struct const RecordDescriptor*.ASA_GM1_1P_dataset_data\/home/pascal/depot/filedata/src/epr/epr_dddb.c ›& Єџџџџ>struct const DatasetDescriptor*(ASA_IMG_1P_band_data\/home/pascal/depot/filedata/src/epr/epr_dddb.c и# оџџџџ8struct const BandDescriptor*.ASA_IMG_1P_dataset_data\/home/pascal/depot/filedata/src/epr/epr_dddb.c І& Аџџџџ>struct const DatasetDescriptor*(ASA_IMM_1P_band_data\/home/pascal/depot/filedata/src/epr/epr_dddb.c р# цџџџџ8struct const BandDescriptor*.ASA_IMM_1P_dataset_data\/home/pascal/depot/filedata/src/epr/epr_dddb.c В& Лџџџџ>struct const DatasetDescriptor*(ASA_IMP_1P_band_data\/home/pascal/depot/filedata/src/epr/epr_dddb.c ш# юџџџџ8struct const BandDescriptor*.ASA_IMP_1P_dataset_data\/home/pascal/depot/filedata/src/epr/epr_dddb.c Н& Цџџџџ>struct const DatasetDescriptor*(ASA_IMS_1P_band_data\/home/pascal/depot/filedata/src/epr/epr_dddb.c №# їџџџџ8struct const BandDescriptor*.ASA_IMS_1P_dataset_data\/home/pascal/depot/filedata/src/epr/epr_dddb.c Ш& Яџџџџ>struct const DatasetDescriptor*(ASA_IM__BP_band_data\/home/pascal/depot/filedata/src/epr/epr_dddb.c љ# џџџџџ8struct const BandDescriptor*.ASA_IM__BP_dataset_data\/home/pascal/depot/filedata/src/epr/epr_dddb.c б& еџџџџ>struct const DatasetDescriptor*:ASA_INS_AX_GADS_asar_rec_data\/home/pascal/depot/filedata/src/epr/epr_dddb.cb% 4џџџџ<struct const RecordDescriptor*(ASA_WSM_1P_band_data\/home/pascal/depot/filedata/src/epr/epr_dddb.c#џџџџ8struct const BandDescriptor*.ASA_WSM_1P_dataset_data\/home/pascal/depot/filedata/src/epr/epr_dddb.c з& рџџџџ>struct const DatasetDescriptor*(ASA_WS__BP_band_data\/home/pascal/depot/filedata/src/epr/epr_dddb.c #џџџџ8struct const BandDescriptor*.ASA_WS__BP_dataset_data\/home/pascal/depot/filedata/src/epr/epr_dddb.c т& шџџџџ>struct const DatasetDescriptor*.ASA_WVI_1P_dataset_data\/home/pascal/depot/filedata/src/epr/epr_dddb.c ъ& €џџџџ>struct const DatasetDescriptor*.ASA_WVS_1P_dataset_data\/home/pascal/depot/filedata/src/epr/epr_dddb.c ‚& ‡џџџџ>struct const DatasetDescriptor*.ASA_WVW_2P_dataset_data\/home/pascal/depot/filedata/src/epr/epr_dddb.c ‰& Žџџџџ>struct const DatasetDescriptor*:ASA_XCA_AX_GADS_asar_rec_data\/home/pascal/depot/filedata/src/epr/epr_dddb.c 6% Vџџџџ<struct const RecordDescriptor*:ASA_XCH_AX_GADS_asar_rec_data\/home/pascal/depot/filedata/src/epr/epr_dddb.c X% ^џџџџ<struct const RecordDescriptor*NATS_AR__2P_MDSR_lr_large_aatsr_rec_data\/home/pascal/depot/filedata/src/epr/epr_dddb.cц%Aџџџџ<struct const RecordDescriptor*NATS_AR__2P_MDSR_lr_small_aatsr_rec_data\/home/pascal/depot/filedata/src/epr/epr_dddb.cC%rџџџџ<struct const RecordDescriptor*PATS_AR__2P_MDSR_lst_large_aatsr_rec_data\/home/pascal/depot/filedata/src/epr/epr_dddb.ct%†џџџџ<struct const RecordDescriptor*PATS_AR__2P_MDSR_lst_small_aatsr_rec_data\/home/pascal/depot/filedata/src/epr/epr_dddb.cˆ%”џџџџ<struct const RecordDescriptor*NATS_AR__2P_MDSR_sr_large_aatsr_rec_data\/home/pascal/depot/filedata/src/epr/epr_dddb.c–%эџџџџ<struct const RecordDescriptor*NATS_AR__2P_MDSR_sr_small_aatsr_rec_data\/home/pascal/depot/filedata/src/epr/epr_dddb.cя%џџџџ<struct const RecordDescriptor*PATS_AR__2P_MDSR_sst_large_aatsr_rec_data\/home/pascal/depot/filedata/src/epr/epr_dddb.c%.џџџџ<struct const RecordDescriptor*PATS_AR__2P_MDSR_sst_small_aatsr_rec_data\/home/pascal/depot/filedata/src/epr/epr_dddb.c0%<џџџџ<struct const RecordDescriptor*.ATS_AR__2P_dataset_data\/home/pascal/depot/filedata/src/epr/epr_dddb.c & Ёџџџџ>struct const DatasetDescriptor*.ATS_MET_2P_dataset_data\/home/pascal/depot/filedata/src/epr/epr_dddb.c Ѓ& Ѕџџџџ>struct const DatasetDescriptor*RATS_MET_2P_meteo_user_prod_aatsr_rec_data\/home/pascal/depot/filedata/src/epr/epr_dddb.c>%Pџџџџ<struct const RecordDescriptor*BATS_NR__2P_ADSR_sq_aatsr_rec_data\/home/pascal/depot/filedata/src/epr/epr_dddb.cR%lџџџџ<struct const RecordDescriptor*BATS_NR__2P_MDSR_dp_aatsr_rec_data\/home/pascal/depot/filedata/src/epr/epr_dddb.cn%vџџџџ<struct const RecordDescriptor*(ATS_NR__2P_band_data\/home/pascal/depot/filedata/src/epr/epr_dddb.c#(џџџџ8struct const BandDescriptor*.ATS_NR__2P_dataset_data\/home/pascal/depot/filedata/src/epr/epr_dddb.c Ї& Аџџџџ>struct const DatasetDescriptor**ATS_NR__2P_flags_data\/home/pascal/depot/filedata/src/epr/epr_dddb.cр#яџџџџ8struct const FlagDescriptor*DATS_TOA_1P_ADSR_loc_aatsr_rec_data\/home/pascal/depot/filedata/src/epr/epr_dddb.cx%…џџџџ<struct const RecordDescriptor*DATS_TOA_1P_ADSR_pix_aatsr_rec_data\/home/pascal/depot/filedata/src/epr/epr_dddb.c‡%Žџџџџ<struct const RecordDescriptor*BATS_TOA_1P_ADSR_sa_aatsr_rec_data\/home/pascal/depot/filedata/src/epr/epr_dddb.c%šџџџџ<struct const RecordDescriptor*FATS_TOA_1P_ADSR_scan_aatsr_rec_data\/home/pascal/depot/filedata/src/epr/epr_dddb.cœ%Єџџџџ<struct const RecordDescriptor*BATS_TOA_1P_ADSR_sq_aatsr_rec_data\/home/pascal/depot/filedata/src/epr/epr_dddb.cІ%Рџџџџ<struct const RecordDescriptor*FATS_TOA_1P_MDSR_brgt_aatsr_rec_data\/home/pascal/depot/filedata/src/epr/epr_dddb.cТ%Шџџџџ<struct const RecordDescriptor*BATS_TOA_1P_MDSR_cl_aatsr_rec_data\/home/pascal/depot/filedata/src/epr/epr_dddb.cЪ%аџџџџ<struct const RecordDescriptor*FATS_TOA_1P_MDSR_conf_aatsr_rec_data\/home/pascal/depot/filedata/src/epr/epr_dddb.cв%иџџџџ<struct const RecordDescriptor*(ATS_TOA_1P_band_data\/home/pascal/depot/filedata/src/epr/epr_dddb.c*#Lџџџџ8struct const BandDescriptor*6ATS_TOA_1P_cloud_flags_data\/home/pascal/depot/filedata/src/epr/epr_dddb.cё#џџџџџ8struct const FlagDescriptor*8ATS_TOA_1P_confid_flags_data\/home/pascal/depot/filedata/src/epr/epr_dddb.c# џџџџ8struct const FlagDescriptor*.ATS_TOA_1P_dataset_data\/home/pascal/depot/filedata/src/epr/epr_dddb.c В& Эџџџџ>struct const DatasetDescriptor*<ATS_VC1_AX_GADS_aatsr_rec_data\/home/pascal/depot/filedata/src/epr/epr_dddb.cк%ћџџџџ<struct const RecordDescriptor*4MER_FR__1P_IODD5_band_data\/home/pascal/depot/filedata/src/epr/epr_dddb.cq#’џџџџ8struct const BandDescriptor*:MER_FR__1P_IODD5_dataset_data\/home/pascal/depot/filedata/src/epr/epr_dddb.c х& љџџџџ>struct const DatasetDescriptor*(MER_FR__1P_band_data\/home/pascal/depot/filedata/src/epr/epr_dddb.cN#oџџџџ8struct const BandDescriptor*.MER_FR__1P_dataset_data\/home/pascal/depot/filedata/src/epr/epr_dddb.c Я& уџџџџ>struct const DatasetDescriptor*4MER_FR__2P_IODD6_band_data\/home/pascal/depot/filedata/src/epr/epr_dddb.cХ#єџџџџ8struct const BandDescriptor*:MER_FR__2P_IODD6_dataset_data\/home/pascal/depot/filedata/src/epr/epr_dddb.c & -џџџџ>struct const DatasetDescriptor*(MER_FR__2P_band_data\/home/pascal/depot/filedata/src/epr/epr_dddb.c”#Уџџџџ8struct const BandDescriptor*.MER_FR__2P_dataset_data\/home/pascal/depot/filedata/src/epr/epr_dddb.c ћ& џџџџ>struct const DatasetDescriptor*NMER_LRC_2P_MDSR_cl_thick_meris_rec_data\/home/pascal/depot/filedata/src/epr/epr_dddb.c%џџџџ<struct const RecordDescriptor*VMER_LRC_2P_MDSR_cl_top_press_meris_rec_data\/home/pascal/depot/filedata/src/epr/epr_dddb.c % џџџџ<struct const RecordDescriptor*FMER_LRC_2P_MDSR_flag_meris_rec_data\/home/pascal/depot/filedata/src/epr/epr_dddb.c%џџџџ<struct const RecordDescriptor*DMER_LRC_2P_MDSR_twv_meris_rec_data\/home/pascal/depot/filedata/src/epr/epr_dddb.c%џџџџ<struct const RecordDescriptor*(MER_LRC_2P_band_data\/home/pascal/depot/filedata/src/epr/epr_dddb.cі# џџџџ8struct const BandDescriptor*.MER_LRC_2P_dataset_data\/home/pascal/depot/filedata/src/epr/epr_dddb.c /& 7џџџџ>struct const DatasetDescriptor*FMER_RRC_2P_GADS_sfgi_meris_rec_data\/home/pascal/depot/filedata/src/epr/epr_dddb.c%#џџџџ<struct const RecordDescriptor*(MER_RRC_2P_band_data\/home/pascal/depot/filedata/src/epr/epr_dddb.c #!џџџџ8struct const BandDescriptor*.MER_RRC_2P_dataset_data\/home/pascal/depot/filedata/src/epr/epr_dddb.c 9& Aџџџџ>struct const DatasetDescriptor*FMER_RRV_2P_GADS_sfgi_meris_rec_data\/home/pascal/depot/filedata/src/epr/epr_dddb.c%%+џџџџ<struct const RecordDescriptor*(MER_RRV_2P_band_data\/home/pascal/depot/filedata/src/epr/epr_dddb.c##6џџџџ8struct const BandDescriptor*.MER_RRV_2P_dataset_data\/home/pascal/depot/filedata/src/epr/epr_dddb.c C& Jџџџџ>struct const DatasetDescriptor*BMER_RR__1P_ADSR_sq_meris_rec_data\/home/pascal/depot/filedata/src/epr/epr_dddb.c-%2џџџџ<struct const RecordDescriptor*JMER_RR__1P_ADSR_tie_pt_meris_rec_data\/home/pascal/depot/filedata/src/epr/epr_dddb.c4%Fџџџџ<struct const RecordDescriptor*FMER_RR__1P_GADS_sfgi_meris_rec_data\/home/pascal/depot/filedata/src/epr/epr_dddb.cH%Uџџџџ<struct const RecordDescriptor*4MER_RR__1P_IODD5_band_data\/home/pascal/depot/filedata/src/epr/epr_dddb.c[#|џџџџ8struct const BandDescriptor*:MER_RR__1P_IODD5_dataset_data\/home/pascal/depot/filedata/src/epr/epr_dddb.c b& vџџџџ>struct const DatasetDescriptor*NMER_RR__1P_MDSR_16_IODD5_meris_rec_data\/home/pascal/depot/filedata/src/epr/epr_dddb.c^%bџџџџ<struct const RecordDescriptor*BMER_RR__1P_MDSR_16_meris_rec_data\/home/pascal/depot/filedata/src/epr/epr_dddb.cW%\џџџџ<struct const RecordDescriptor*FMER_RR__1P_MDSR_1_15_meris_rec_data\/home/pascal/depot/filedata/src/epr/epr_dddb.cd%hџџџџ<struct const RecordDescriptor*(MER_RR__1P_band_data\/home/pascal/depot/filedata/src/epr/epr_dddb.c8#Yџџџџ8struct const BandDescriptor*.MER_RR__1P_dataset_data\/home/pascal/depot/filedata/src/epr/epr_dddb.c L& `џџџџ>struct const DatasetDescriptor**MER_RR__1P_flags_data\/home/pascal/depot/filedata/src/epr/epr_dddb.c#џџџџ8struct const FlagDescriptor*BMER_RR__2P_ADSR_sq_meris_rec_data\/home/pascal/depot/filedata/src/epr/epr_dddb.cj%€џџџџ<struct const RecordDescriptor*FMER_RR__2P_GADS_sfgi_meris_rec_data\/home/pascal/depot/filedata/src/epr/epr_dddb.c‚%Ўџџџџ<struct const RecordDescriptor*4MER_RR__2P_IODD6_band_data\/home/pascal/depot/filedata/src/epr/epr_dddb.cЏ#оџџџџ8struct const BandDescriptor*:MER_RR__2P_IODD6_dataset_data\/home/pascal/depot/filedata/src/epr/epr_dddb.c ’& Њџџџџ>struct const DatasetDescriptor*BMER_RR__2P_MDSR_14_meris_rec_data\/home/pascal/depot/filedata/src/epr/epr_dddb.cА%Дџџџџ<struct const RecordDescriptor*BMER_RR__2P_MDSR_15_meris_rec_data\/home/pascal/depot/filedata/src/epr/epr_dddb.cЖ%Кџџџџ<struct const RecordDescriptor*BMER_RR__2P_MDSR_16_meris_rec_data\/home/pascal/depot/filedata/src/epr/epr_dddb.cМ%Рџџџџ<struct const RecordDescriptor*BMER_RR__2P_MDSR_17_meris_rec_data\/home/pascal/depot/filedata/src/epr/epr_dddb.cТ%Цџџџџ<struct const RecordDescriptor*BMER_RR__2P_MDSR_18_meris_rec_data\/home/pascal/depot/filedata/src/epr/epr_dddb.cШ%Ьџџџџ<struct const RecordDescriptor*NMER_RR__2P_MDSR_19_IODD6_meris_rec_data\/home/pascal/depot/filedata/src/epr/epr_dddb.cд%иџџџџ<struct const RecordDescriptor*BMER_RR__2P_MDSR_19_meris_rec_data\/home/pascal/depot/filedata/src/epr/epr_dddb.cЮ%вџџџџ<struct const RecordDescriptor*FMER_RR__2P_MDSR_1_13_meris_rec_data\/home/pascal/depot/filedata/src/epr/epr_dddb.cк%оџџџџ<struct const RecordDescriptor*BMER_RR__2P_MDSR_20_meris_rec_data\/home/pascal/depot/filedata/src/epr/epr_dddb.cр%фџџџџ<struct const RecordDescriptor*(MER_RR__2P_band_data\/home/pascal/depot/filedata/src/epr/epr_dddb.c~#­џџџџ8struct const BandDescriptor*.MER_RR__2P_dataset_data\/home/pascal/depot/filedata/src/epr/epr_dddb.c x& џџџџ>struct const DatasetDescriptor*6MER_RR__2P_flags_IODD6_data\/home/pascal/depot/filedata/src/epr/epr_dddb.c:#Xџџџџ8struct const FlagDescriptor**MER_RR__2P_flags_data\/home/pascal/depot/filedata/src/epr/epr_dddb.c#8џџџџ8struct const FlagDescriptor**dddb_aatsr_rec_tables\/home/pascal/depot/filedata/src/epr/epr_dddb.cЙ#ЮџџџџFstruct const RecordDescriptorTable*(dddb_asar_rec_tables\/home/pascal/depot/filedata/src/epr/epr_dddb.cа#хџџџџFstruct const RecordDescriptorTable* dddb_band_tables\/home/pascal/depot/filedata/src/epr/epr_dddb.c{!•џџџџBstruct const BandDescriptorTable*.dddb_flag_coding_tables\/home/pascal/depot/filedata/src/epr/epr_dddb.c–!џџџџBstruct const FlagDescriptorTable**dddb_meris_rec_tables\/home/pascal/depot/filedata/src/epr/epr_dddb.cŸ#ЗџџџџFstruct const RecordDescriptorTable*&dddb_product_tables\/home/pascal/depot/filedata/src/epr/epr_dddb.cZ$zџџџџHstruct const DatasetDescriptorTable* epr_api.h\/home/pascal/depot/filedata/src/epr/epr_dddb.h%yЎFiЈџџџџ\ˆ"/+__cplusplus1џџџџ\/home/pascal/depot/filedata/src/epr/epr_dddb.hYСФ%epr_api.hjk+І\/home/pascal/depot/filedata/src/epr/epr_dddb.hџџџџџџџџџџџџBandDescriptor\/home/pascal/depot/filedata/src/epr/epr_dddb.h(џџџџџџџџ&BandDescriptorTable\/home/pascal/depot/filedata/src/epr/epr_dddb.h8=џџџџџџџџ"DatasetDescriptor\/home/pascal/depot/filedata/src/epr/epr_dddb.hџџџџџџџџ,DatasetDescriptorTable\/home/pascal/depot/filedata/src/epr/epr_dddb.h16џџџџџџџџFlagDescriptor\/home/pascal/depot/filedata/src/epr/epr_dddb.h*/џџџџџџџџ&FlagDescriptorTable\/home/pascal/depot/filedata/src/epr/epr_dddb.h?Dџџџџџџџџ RecordDescriptor\/home/pascal/depot/filedata/src/epr/epr_dddb.h џџџџџџџџ*RecordDescriptorTable\/home/pascal/depot/filedata/src/epr/epr_dddb.hFKџџџџџџџџ)assert.herrno.hstdio.hstdlib.hstring.hepr_api.hepr_core.hepr_string.hepr_ptrarray.hepr_swap.hepr_field.hepr_record.hepr_param.hepr_dsd.hepr_msph.hepr_band.hepr_bitmask.hepr_dddb.hZ/home/pascal/depot/filedata/src/epr/epr_dsd.c%yДЂTџџџџ $е"D,K<EPR_LENGTH_DSR_SIZE_IDENTIFIERЬ 10Z/home/pascal/depot/filedata/src/epr/epr_dsd.cOLyЗ0д4EPR_LENGTH_DS_OFFSEN_FIELDб 39Z/home/pascal/depot/filedata/src/epr/epr_dsd.ccˆѕц?c:EPR_LENGTH_DS_SIZE_IDENTIFIERЪ 9Z/home/pascal/depot/filedata/src/epr/epr_dsd.cirІ‡7y8EPR_LENGTH_DS_FILENAME_FIELDа 74Z/home/pascal/depot/filedata/src/epr/epr_dsd.ckрч0д0EPR_LENGTH_DS_NAME_FIELDЮ 39Z/home/pascal/depot/filedata/src/epr/epr_dsd.csA+0ž0EPR_LENGTH_DS_SIZE_FIELDв 37Z/home/pascal/depot/filedata/src/epr/epr_dsd.c”>7?c:EPR_LENGTH_NUM_DSR_IDENTIFIERЫ 9Z/home/pascal/depot/filedata/src/epr/epr_dsd.cŸ2i.0EPR_LENGTH_NUM_DSR_FIELDг 20Z/home/pascal/depot/filedata/src/epr/epr_dsd.cЛП\.ю2EPR_LENGTH_DSR_SIZE_FIELDд 28Z/home/pascal/depot/filedata/src/epr/epr_dsd.cавэа?c:EPR_LENGTH_DS_NAME_IDENTIFIERЦ 9Z/home/pascal/depot/filedata/src/epr/epr_dsd.cпТAж,K<EPR_LENGTH_FILENAME_IDENTIFIERШ 10Z/home/pascal/depot/filedata/src/epr/epr_dsd.cїё ,f>EPR_LENGTH_DS_OFFSEN_IDENTIFIERЩ 11Z/home/pascal/depot/filedata/src/epr/epr_dsd.c§џsЗ?H:EPR_LENGTH_DS_TYPE_IDENTIFIERЧ 8Z/home/pascal/depot/filedata/src/epr/epr_dsd.cepr_core.hHлХepr_bitmask.hˆˆВ'epr_swap.hЌyerrno.h›2assert.hє(DЈstring.h­Ц‰=epr_record.hтˆьћepr_msph.h&xєepr_band.h! epr_string.hЯфѓepr_field.h)•ЖрZ/home/pascal/depot/filedata/src/epr/epr_dsd.cи‘stdio.hЏЬІ‰epr_dddb.hOq:epr_param.h7[F}epr_api.hjk+Іepr_ptrarray.h;mestdlib.hЌšЅјepr_dsd.hjo2WZ/home/pascal/depot/filedata/src/epr/epr_dsd.cџџџџџџџџџџџџ epr_create_dsdZ/home/pascal/depot/filedata/src/epr/epr_dsd.c/:Œ Opens dsd for a dataset description, obtained from an ENVISAT product file. @param dsd_index the number of dsd (zero-based), emrty dsd inclusive @return the the pointer at the dsd information.џџџџdsd_indexџџџџџџџџintџџџџEPR_SDSD*:epr_detect_meris_iodd_versionZ/home/pascal/depot/filedata/src/epr/epr_dsd.c|­џџџџџџџџproduct_idџџџџџџџџEPR_SProductId*џџџџint$epr_find_first_dsdZ/home/pascal/depot/filedata/src/epr/epr_dsd.cАгќ Finds the first dataset description from an ENVISAT product file. @param envisat_source_file the handle of the given ENVISAT product file, must not be <code>NULL</code> @param sph_length [bytes] the length of SPH part from the given ENVISAT product file, must not be <code>NULL</code> @return the offset to first searched for dsd or <code>0</code> if not found.џџџџ&envisat_source_fileџџџџџџџџ FILE*џџџџsph_lengthџџџџџџџџuintџџџџuintepr_free_dsdZ/home/pascal/depot/filedata/src/epr/epr_dsd.cЎрЖ Release the memory allocated through a dataset ID. @param dsd the dataset description identifier, if <code>NULL</code> the function immediately returns zero. @return zero for success, an error code otherwiseџџџџdsdџџџџџџџџEPR_SDSD*џџџџvoid$epr_get_dataset_idZ/home/pascal/depot/filedata/src/epr/epr_dsd.c_zџџџџџџџџproduct_idџџџџџџџџEPR_SProductId*џџџџdataset_nameџџџџџџџџconst char*џџџџEPR_SDatasetId**epr_get_dataset_id_atZ/home/pascal/depot/filedata/src/epr/epr_dsd.cJ]џџџџџџџџproduct_idџџџџџџџџEPR_SProductId*џџџџ indexџџџџџџџџuintџџџџEPR_SDatasetId*epr_get_dsd_atZ/home/pascal/depot/filedata/src/epr/epr_dsd.cfkџџџџџџџџproduct_idџџџџџџџџ*const EPR_SProductId*џџџџdsd_indexџџџџџџџџuintџџџџEPR_SDSD*(epr_get_num_datasetsZ/home/pascal/depot/filedata/src/epr/epr_dsd.c>Hџџџџџџџџlacproduct_idџџџџџџџџEPR_SProductId*џџџџuint epr_get_num_dsdsZ/home/pascal/depot/filedata/src/epr/epr_dsd.cadџџџџџџџџproduct_idџџџџџџџџ*const EPR_SProductId*џџџџuint"epr_read_all_dsdsZ/home/pascal/depot/filedata/src/epr/epr_dsd.cд_ Reads all dataset descriptions from an ENVISAT product file. @param product_id the file identifier, if <code>NULL</code> the function immediately returns <code>NULL</code>. @return an array of dataset descriptions or <code>NULL</code> if an error occured.џџџџproduct_idџџџџџџџџEPR_SProductId*џџџџEPR_SPtrArray*"epr_read_each_dsdZ/home/pascal/depot/filedata/src/epr/epr_dsd.cсЏ~ Reads a dataset description from an ENVISAT product file. @param envisat_source_file the handle of the given ENVISAT product file, must not be <code>NULL</code> @param pos number of the dataset description in ENVISAT product file, @return a new dataset description or <code>NULL</code> if an error occured.џџџџ&envisat_source_fileџџџџџџџџ FILE*џџџџposџџџџџџџџint*џџџџEPR_SDSD*"epr_ptrarray.hstdio.hZ/home/pascal/depot/filedata/src/epr/epr_dsd.h%yДЂTџџџџ\ˆ"/+__cplusplus1џџџџstdio.hЏЬІ‰Z/home/pascal/depot/filedata/src/epr/epr_dsd.hи‘’epr_ptrarray.h;meZ/home/pascal/depot/filedata/src/epr/epr_dsd.hџџџџџџџџџџџџ-assert.herrno.hstdio.hstdlib.hstring.hepr_api.hepr_core.hepr_string.hepr_ptrarray.hepr_swap.hepr_field.hepr_record.hepr_param.hepr_dsd.hepr_msph.hepr_band.hepr_bitmask.h\/home/pascal/depot/filedata/src/epr/epr_dump.c%yДЂTџџџџepr_core.hHлХepr_bitmask.hˆˆВ'epr_swap.hЌyerrno.h›2assert.hє(DЈstring.h­Ц‰=epr_record.hтˆьћepr_msph.h&xєepr_band.h! epr_string.hЯфѓepr_field.h)•Жр\/home/pascal/depot/filedata/src/epr/epr_dump.cYи*јstdio.hЏЬІ‰epr_param.h7[F}epr_api.hjk+Іepr_ptrarray.h;mestdlib.hЌšЅјepr_dsd.hjo2W\/home/pascal/depot/filedata/src/epr/epr_dump.cџџџџџџџџџџџџ epr_dump_element\/home/pascal/depot/filedata/src/epr/epr_dump.c ЊШ Dumps the element content to stdout. @param element the pointer to the element to be printed out.џџџџ recordџџџџџџџџ$const EPR_SRecord*џџџџfield_indexџџџџџџџџuintџџџџelement_indexџџџџџџџџuintџџџџvoidepr_dump_field\/home/pascal/depot/filedata/src/epr/epr_dump.cJTК Dumps the field content to stdout. @param field the pointer to the field to be printed outџџџџ fieldџџџџџџџџ"const EPR_SField*џџџџvoidepr_dump_record\/home/pascal/depot/filedata/src/epr/epr_dump.c,6Т Dumps the record content to stdout. @param record the pointer to the record to be printed out.џџџџ recordџџџџџџџџ$const EPR_SRecord*џџџџvoid"epr_print_element\/home/pascal/depot/filedata/src/epr/epr_dump.cЋяш Dumps the element content to an output FILE stream.. @param element the pointer to the element to be written out.џџџџ recordџџџџџџџџ$const EPR_SRecord*џџџџfield_indexџџџџџџџџuintџџџџelement_indexџџџџџџџџuintџџџџostreamџџџџџџџџ FILE*џџџџvoidepr_print_field\/home/pascal/depot/filedata/src/epr/epr_dump.cUŸ6 Gets the field content to output FILE stream. @param field the pointer to the field to be printed out @param ostream the identifier of the output file.џџџџ fieldџџџџџџџџ"const EPR_SField*џџџџostreamџџџџџџџџ FILE*џџџџvoid epr_print_record\/home/pascal/depot/filedata/src/epr/epr_dump.c7IF Dumps the record content to an output FILE stream. @param record the pointer to the record to be printed out. @param ostream the identifier of the output file.џџџџ recordџџџџџџџџ$const EPR_SRecord*џџџџostreamџџџџџџџџ FILE*џџџџvoid1assert.herrno.hstdio.hstdlib.hstring.hepr_api.hepr_core.hepr_string.hepr_ptrarray.hepr_swap.hepr_field.hepr_record.hepr_param.hepr_dsd.hepr_msph.hepr_band.hepr_bitmask.h^/home/pascal/depot/filedata/src/epr/epr_field.c%yДЂTџџџџepr_core.hHлХepr_bitmask.hˆˆВ'epr_swap.hЌyerrno.h›2assert.hє(DЈstring.h­Ц‰=epr_record.hтˆьћepr_msph.h&xєepr_band.h! epr_string.hЯфѓepr_field.h)•Жрstdio.hЏЬІ‰^/home/pascal/depot/filedata/src/epr/epr_field.cљ-8vepr_param.h7[F}epr_api.hjk+Іepr_ptrarray.h;mestdlib.hЌšЅјepr_dsd.hjo2W^/home/pascal/depot/filedata/src/epr/epr_field.cџџџџџџџџџџџџ  epr_create_field^/home/pascal/depot/filedata/src/epr/epr_field.c’иа Creates a new field instance belongs to the given record_info. @param the pointer at the field information. must not be <code>NULL</code> @return the new field instance or <code>NULL</code> if an error occured.џџџџfield_infoџџџџџџџџEPR_SFieldInfo*џџџџEPR_SField**epr_create_field_info^/home/pascal/depot/filedata/src/epr/epr_field.c3mH Creates the field information of the given record and returns the poiter at it. @param data_type_id the data type identifier @param description the field description @param field_name the field name @param num_elems the number of field elements @param num_bytes the number of bytes in each element @param more_count the number of the element repetition @param unit the unit descrimtion (name) @return the the pointer at the field information, or <code>NULL</code> if the file it is not enough memory for some field_info element.џџџџdata_type_idџџџџџџџџEPR_EDataTypeIdџџџџdescriptionџџџџџџџџ char*џџџџfield_nameџџџџџџџџ char*џџџџnum_elemsџџџџџџџџuintџџџџnum_bytesџџџџџџџџuintџџџџmore_countџџџџџџџџuintџџџџunitџџџџџџџџ char*џџџџEPR_SFieldInfo*epr_free_field^/home/pascal/depot/filedata/src/epr/epr_field.cйѕ^ Frees the memory allocated by the given 'field'. <p> After calling this function the give field pointer should not be used anymore. @param field the field to be releasedџџџџ fieldџџџџџџџџEPR_SField*џџџџvoid&epr_free_field_info^/home/pascal/depot/filedata/src/epr/epr_field.cn‘† Frees the memory allocated by the given 'field_info'. <p> After calling this function the give field_info pointer should not be used anymore. @param field_info the field_info to be releasedџџџџfield_infoџџџџџџџџEPR_SFieldInfo*џџџџvoidepr_get_field^/home/pascal/depot/filedata/src/epr/epr_field.cію Gets a full field from the given record. <p> The field is hier identified through the given name. <br>It contains the field info and all corresponding values. @param record the record identifier, must not be <code>NULL</code> @param field_name the the name of required field, must not be <code>NULL</code>. @return the field or <code>NULL</code> if an error occured.џџџџ recordџџџџџџџџ$const EPR_SRecord*џџџџfield_nameџџџџџџџџconst char*џџџџ"const EPR_SField*2epr_get_field_description^/home/pascal/depot/filedata/src/epr/epr_field.cEOџџџџџџџџ fieldџџџџџџџџ"const EPR_SField*џџџџconst char*$epr_get_field_name^/home/pascal/depot/filedata/src/epr/epr_field.c *џџџџџџџџ fieldџџџџџџџџ"const EPR_SField*џџџџconst char*.epr_get_field_num_elems^/home/pascal/depot/filedata/src/epr/epr_field.cџџџџџџџџ fieldџџџџџџџџ"const EPR_SField*џџџџuint$epr_get_field_type^/home/pascal/depot/filedata/src/epr/epr_field.c-7џџџџџџџџ fieldџџџџџџџџ"const EPR_SField*џџџџEPR_EDataTypeId$epr_get_field_unit^/home/pascal/depot/filedata/src/epr/epr_field.c9Cџџџџџџџџ fieldџџџџџџџџ"const EPR_SField*џџџџconst char*$stdio.h^/home/pascal/depot/filedata/src/epr/epr_field.h%yДЂTџџџџ\ˆ"/+__cplusplus1џџџџstdio.hЏЬІ‰^/home/pascal/depot/filedata/src/epr/epr_field.hљ-8{^/home/pascal/depot/filedata/src/epr/epr_field.hџџџџџџџџџџџџEPR_FieldInfo^/home/pascal/depot/filedata/src/epr/epr_field.h@Ъ The <code>EPR_FieldInfo</code> structure contains meta information about a particular record field.џџџџ5assert.herrno.hstdio.hstdlib.hstring.hepr_api.hepr_core.hepr_string.hepr_ptrarray.hepr_swap.hepr_field.hepr_record.hepr_param.hepr_dsd.hepr_msph.hepr_band.hepr_bitmask.h\/home/pascal/depot/filedata/src/epr/epr_msph.c%yДЂTџџџџepr_core.hHлХepr_bitmask.hˆˆВ'epr_swap.hЌyerrno.h›2assert.hє(DЈstring.h­Ц‰=epr_record.hтˆьћepr_msph.h&xєepr_band.h! epr_string.hЯфѓ\/home/pascal/depot/filedata/src/epr/epr_msph.cZ˜Ыкepr_field.h)•Жрstdio.hЏЬІ‰epr_param.h7[F}epr_api.hjk+Іepr_ptrarray.h;mestdlib.hЌšЅјepr_dsd.hjo2W\/home/pascal/depot/filedata/src/epr/epr_msph.cџџџџџџџџџџџџ "epr_compare_param\/home/pascal/depot/filedata/src/epr/epr_msph.c%џџџџџџџџproduct_idџџџџџџџџEPR_SProductId*џџџџ ulong,epr_parse_double_token\/home/pascal/depot/filedata/src/epr/epr_msph.ce€џџџџџџџџheader_valuesџџџџџџџџEPR_SPtrArray*џџџџtoken_valueџџџџџџџџ char*џџџџnum_elemsџџџџџџџџ uint*џџџџnum_bytesџџџџџџџџ uint*џџџџtpџџџџџџџџ EPR_EDataTypeId*џџџџvoid epr_parse_header\/home/pascal/depot/filedata/src/epr/epr_msph.c­EЎ Parses the header ASCII information. @param header_name name of the header ascii information; @param ascii_source the header ascii information was read; @param record the identifier of header ascii information.џџџџheader_nameџџџџџџџџconst char*џџџџascii_sourceџџџџџџџџconst char*џџџџEPR_SRecord*(epr_parse_long_token\/home/pascal/depot/filedata/src/epr/epr_msph.cƒхџџџџџџџџheader_valuesџџџџџџџџEPR_SPtrArray*џџџџtoken_valueџџџџџџџџ char*џџџџnum_elemsџџџџџџџџ uint*џџџџnum_bytesџџџџџџџџ uint*џџџџtpџџџџџџџџ EPR_EDataTypeId*џџџџvoid,epr_parse_string_token\/home/pascal/depot/filedata/src/epr/epr_msph.cHcџџџџџџџџheader_valuesџџџџџџџџEPR_SPtrArray*џџџџtoken_valueџџџџџџџџ char*џџџџnum_elemsџџџџџџџџ uint*џџџџnum_bytesџџџџџџџџ uint*џџџџtpџџџџџџџџ EPR_EDataTypeId*џџџџvoidepr_read_mph\/home/pascal/depot/filedata/src/epr/epr_msph.c.ZR Reads the full main product header (MPH) of the ENVISAT product file by the given product identifier. @param product_id the product identifier, must not be <code>NULL</code> @return a record representing the MPH of the specified product file or <code>NULL</code> if an error occured.џџџџproduct_idџџџџџџџџEPR_SProductId*џџџџEPR_SRecord*epr_read_sph\/home/pascal/depot/filedata/src/epr/epr_msph.c[šZ Reads the full specific product header (SPH) of the ENVISAT product file by the given product identifier. @param product_id the product identifier, must not be <code>NULL</code> @return a record representing the MPH of the specified product file or <code>NULL</code> if an error occured.џџџџproduct_idџџџџџџџџEPR_SProductId*џџџџEPR_SRecord*6epr_set_header_field_values\/home/pascal/depot/filedata/src/epr/epr_msph.cцH Fills the record for the header ASCII information. @param record to fill; @param header_values values from the given product file; @param record beeng filling.џџџџ recordџџџџџџџџEPR_SRecord*џџџџheader_valuesџџџџџџџџEPR_SPtrArray*џџџџvoid epr_store_header\/home/pascal/depot/filedata/src/epr/epr_msph.cœЌџџџџџџџџheader_nameџџџџџџџџconst char*џџџџascii_sourceџџџџџџџџconst char*џџџџvoid&stdio.h\/home/pascal/depot/filedata/src/epr/epr_msph.h%yДЂTџџџџ\ˆ"/+__cplusplus1џџџџ\/home/pascal/depot/filedata/src/epr/epr_msph.hZ˜Ыпstdio.hЏЬІ‰\/home/pascal/depot/filedata/src/epr/epr_msph.hџџџџџџџџџџџџ9assert.herrno.hstdio.hstdlib.hstring.hepr_api.hepr_core.hepr_string.hepr_ptrarray.hepr_swap.hepr_field.hepr_record.hepr_param.hepr_dsd.hepr_msph.hepr_band.hepr_bitmask.h^/home/pascal/depot/filedata/src/epr/epr_param.c%yДЂTџџџџepr_core.hHлХepr_bitmask.hˆˆВ'epr_swap.hЌyerrno.h›2assert.hє(DЈstring.h­Ц‰=epr_record.hтˆьћepr_msph.h&xєepr_band.h! epr_string.hЯфѓepr_field.h)•Жр^/home/pascal/depot/filedata/src/epr/epr_param.cђШstdio.hЏЬІ‰epr_param.h7[F}epr_api.hjk+Іepr_ptrarray.h;mestdlib.hЌšЅјepr_dsd.hjo2W^/home/pascal/depot/filedata/src/epr/epr_param.cџџџџџџџџџџџџ*epr_create_param_elem^/home/pascal/depot/filedata/src/epr/epr_param.c-Cі Creates a new element (pair 'name-value') for the parameter table. @param param_name the name of the parameter, @param param_value the value of this parameter, @return the pointer at this element or <code>NULL</code> if an error occured.џџџџЕш2param_nameџџџџџџџџconst char*џџџџparam_valueџџџџџџџџlongџџџџEPR_SParamElem*,epr_create_param_table^/home/pascal/depot/filedata/src/epr/epr_param.cETџџџџџџџџЕш?EPR_SPtrArray*&epr_free_param_elem^/home/pascal/depot/filedata/src/epr/epr_param.coz Frees the memory allocated by the given param_elem. <p> After calling this function the give record_info pointer gets invalid and should not be used anymore. @param param_table the table to be released, if <code>NULL</code> the function immediately returnsџџџџparam_elemџџџџџџџџEPR_SParamElem*џџџџvoid(epr_free_param_table^/home/pascal/depot/filedata/src/epr/epr_param.cUn Frees the memory allocated by the given param_table. <p> After calling this function the give record_info pointer gets invalid and should not be used anymore. @param param_table the table to be released, if <code>NULL</code> the function immediately returnsџџџџЕш?param_tableџџџџџџџџEPR_SPtrArray*џџџџvoid.epr_set_dyn_dddb_params^/home/pascal/depot/filedata/src/epr/epr_param.c}Чџџџџџџџџproduct_idџџџџџџџџEPR_SProductId*џџџџint(stdio.h^/home/pascal/depot/filedata/src/epr/epr_param.h%yДЂTџџџџ\ˆ"/+__cplusplus1џџџџ^/home/pascal/depot/filedata/src/epr/epr_param.hђШstdio.hЏЬІ‰^/home/pascal/depot/filedata/src/epr/epr_param.hџџџџџџџџџџџџEPR_ParamElem^/home/pascal/depot/filedata/src/epr/epr_param.h*і The <code>EPR_ParamElem</code> structure contains meta information how many time is a correspondent parameter represents.џџџџ=assert.herrno.hstdio.hstdlib.hstring.h time.hepr_api.hepr_core.hepr_string.hepr_ptrarray.hepr_swap.hepr_field.hepr_record.hepr_dataset.hepr_param.hepr_dsd.hepr_msph.hepr_band.hepr_bitmask.hepr_dddb.hb/home/pascal/depot/filedata/src/epr/epr_product.c%yДЂTџџџџepr_core.hHлХepr_bitmask.hˆˆВ'epr_swap.hЌyerrno.h›2assert.hє(DЈstring.h­Ц‰=epr_record.hтˆьћepr_msph.h&xєepr_band.h! epr_string.hЯфѓepr_field.h)•Жрstdio.hЏЬІ‰epr_dddb.hOq:epr_dataset.hƒБтb/home/pascal/depot/filedata/src/epr/epr_product.csлЬ“epr_param.h7[F}epr_api.hjk+Іepr_ptrarray.h;mestdlib.hЌšЅј time.h _žЕepr_dsd.hjo2Wb/home/pascal/depot/filedata/src/epr/epr_product.cџџџџџџџџџџџџ0epr_compute_scene_heightb/home/pascal/depot/filedata/src/epr/epr_product.c))@џџџџџџџџproduct_idџџџџџџџџ*const EPR_SProductId*џџџџ ulong.epr_compute_scene_widthb/home/pascal/depot/filedata/src/epr/epr_product.c((?џџџџџџџџproduct_idџџџџџџџџ*const EPR_SProductId*џџџџ ulong "epr_close_productb/home/pascal/depot/filedata/src/epr/epr_product.cѕ” Closes the ENVISAT product file determined by the gibven file identifier.џџџџproduct_idџџџџџџџџEPR_SProductId*џџџџint0epr_compute_scene_heightb/home/pascal/depot/filedata/src/epr/epr_product.cлі Computes the scene height in pixel of a product. The scene height is the minimum number of records in all measurement datasets. @param product_id the product identifier, must not be <code>NULL</code> @return height pixel number, or <code>0</code> if an error occured.џџџџproduct_idџџџџџџџџ*const EPR_SProductId*џџџџ ulong.epr_compute_scene_widthb/home/pascal/depot/filedata/src/epr/epr_product.cЖк\ Gets the scene width in pixel. @param product_id the product identifier, must not be <code>NULL</code> @return width pixel number, or <code>0</code> if an error occured.џџџџproduct_idџџџџџџџџ*const EPR_SProductId*џџџџ ulong&epr_free_product_idb/home/pascal/depot/filedata/src/epr/epr_product.ct Destructor for an <code>EPR_SProductId</code> structure instance. @param product_id the product file identifier to be destructedџџџџproduct_idџџџџџџџџEPR_SProductId*џџџџvoidepr_get_mphb/home/pascal/depot/filedata/src/epr/epr_product.cЂЕџџџџџџџџproduct_idџџџџџџџџ*const EPR_SProductId*џџџџEPR_SRecord*(epr_get_scene_heightb/home/pascal/depot/filedata/src/epr/epr_product.c‡”P^ Gets the scene height in pixel. @param product_id the product identifier, must not be <code>NULL</code> @return height pixel number, or <code>0</code> if an error occured.џџџџproduct_idџџџџџџџџ*const EPR_SProductId*џџџџ ulong&epr_get_scene_widthb/home/pascal/depot/filedata/src/epr/epr_product.cu†Z Gets the scene width in pixel. @param product_id the product identifier, must not be <code>NULL</code> @return width pixel number, or <code>0</code> if an error occured.џџџџproduct_idџџџџџџџџ*const EPR_SProductId*џџџџ ulongepr_get_sphb/home/pascal/depot/filedata/src/epr/epr_product.c– ”********************************* RECORD *********************************џџџџproduct_idџџџџџџџџ*const EPR_SProductId*џџџџEPR_SRecord* epr_open_productb/home/pascal/depot/filedata/src/epr/epr_product.c5єp Opens the ENVISAT product file with the given file pathџџџџ"product_file_pathџџџџџџџџconst char*џџџџEPR_SProductId*Aassert.herrno.hstdio.hstdlib.hstring.hepr_api.hepr_ptrarray.hepr_string.hd/home/pascal/depot/filedata/src/epr/epr_ptrarray.c%yДЂTџџџџ errno.h›2d/home/pascal/depot/filedata/src/epr/epr_ptrarray.c6 ДЗassert.hє(DЈstring.h­Ц‰=epr_string.hЯфѓstdio.hЏЬІ‰epr_api.hjk+Іepr_ptrarray.h;mestdlib.hЌšЅјd/home/pascal/depot/filedata/src/epr/epr_ptrarray.cџџџџџџџџџџџџ,epr_add_ptr_array_elemd/home/pascal/depot/filedata/src/epr/epr_ptrarray.cJWџџџџџџџџptr_arrayџџџџџџџџEPR_SPtrArray*џџџџelemџџџџџџџџ void*џџџџint(epr_create_ptr_arrayd/home/pascal/depot/filedata/src/epr/epr_ptrarray.c0џџџџџџџџЕшs€capacityџџџџџџџџunsigned intџџџџEPR_SPtrArray*.epr_free_char_ptr_arrayd/home/pascal/depot/filedata/src/epr/epr_ptrarray.c@Gџџџџџџџџrchar_ptr_arrayџџџџџџџџEPR_SPtrArray*џџџџvoid$epr_free_ptr_arrayd/home/pascal/depot/filedata/src/epr/epr_ptrarray.c2<џџџџџџџџeptr_arrayџџџџџџџџEPR_SPtrArray*џџџџvoid2epr_get_ptr_array_elem_atd/home/pascal/depot/filedata/src/epr/epr_ptrarray.cyџџџџџџџџptr_arrayџџџџџџџџ(const EPR_SPtrArray*џџџџ indexџџџџџџџџunsigned intџџџџ void*0epr_get_ptr_array_lengthd/home/pascal/depot/filedata/src/epr/epr_ptrarray.crvџџџџџџџџptr_arrayџџџџџџџџ(const EPR_SPtrArray*џџџџunsigned int$epr_grow_ptr_arrayd/home/pascal/depot/filedata/src/epr/epr_ptrarray.cZoџџџџџџџџptr_arrayџџџџџџџџEPR_SPtrArray*џџџџcapacityџџџџџџџџunsigned intџџџџint*stdlib.hd/home/pascal/depot/filedata/src/epr/epr_ptrarray.h%yДЂTџџџџ\ˆ"/+__cplusplus1џџџџd/home/pascal/depot/filedata/src/epr/epr_ptrarray.h6 ДМstdlib.hЌšЅјd/home/pascal/depot/filedata/src/epr/epr_ptrarray.hџџџџџџџџџџџџEPR_PtrArrayd/home/pascal/depot/filedata/src/epr/epr_ptrarray.h'Ђ The <code>EPR_PtrArray</code> structure represents a dynamic array of pointers.џџџџ EPR_SPtrArrayd/home/pascal/depot/filedata/src/epr/epr_ptrarray.h)))џџџџ&struct EPR_PtrArrayEassert.herrno.hstdio.hstdlib.hstring.hepr_api.hepr_core.hepr_string.hepr_ptrarray.hepr_swap.hepr_field.hepr_record.hepr_param.hepr_dsd.hepr_msph.hepr_band.hepr_bitmask.hepr_dddb.h`/home/pascal/depot/filedata/src/epr/epr_record.c%yДЂWјџџџџepr_core.hHлХepr_bitmask.hˆˆВ'epr_swap.hЌyerrno.h›2assert.hє(DЈstring.h­Ц‰=epr_record.hтˆьћepr_msph.h&xєepr_band.h! epr_string.hЯфѓepr_field.h)•Жрstdio.hЏЬІ‰epr_dddb.hOq:`/home/pascal/depot/filedata/src/epr/epr_record.cЋ˜ˆAepr_param.h7[F}epr_api.hjk+Іepr_ptrarray.h;mestdlib.hЌšЅјepr_dsd.hjo2W`/home/pascal/depot/filedata/src/epr/epr_record.cџџџџџџџџџџџџ6epr_create_record_from_info`/home/pascal/depot/filedata/src/epr/epr_record.c7aў Creates a new record instance from the dataset specified by the given dataset name. @param the pointer at the record information. must not be <code>NULL</code> @return the new record instance or <code>NULL</code> if an error occured.џџџџrecord_infoџџџџџџџџ EPR_SRecordInfo*џџџџEPR_SRecord*,epr_create_record_info`/home/pascal/depot/filedata/src/epr/epr_record.c<kJ Creates a new record_info for the record by the given dataset name. @param dataset_name the name of the dataset, to which the record belongs to, must not be <code>NULL</code> @param field_infos the pointer at the strucrure with information of all fields wich belong to record, must not be <code>NULL</code> @return the new record instance or <code>NULL</code> if an error occured.џџџџdataset_nameџџџџџџџџconst char*џџџџfield_infosџџџџџџџџEPR_SPtrArray*џџџџ EPR_SRecordInfo*epr_free_record`/home/pascal/depot/filedata/src/epr/epr_record.c‘­ Frees the memory allocated by the given record. <p> After calling this function the give record pointer gets invalid and should not be used anymore. @param record the record to be released, if <code>NULL</code> the function immediately returnsџџџџ recordџџџџџџџџEPR_SRecord*џџџџvoid(epr_free_record_info`/home/pascal/depot/filedata/src/epr/epr_record.cl• Frees the memory allocated by the given record_info. <p> After calling this function the give record_info pointer gets invalid and should not be used anymore. @param record_info the record to be released, if <code>NULL</code> the function immediately returnsџџџџrecord_infoџџџџџџџџ EPR_SRecordInfo*џџџџvoid epr_get_field_at`/home/pascal/depot/filedata/src/epr/epr_record.cdxџџџџџџџџ recordџџџџџџџџ$const EPR_SRecord*џџџџfield_indexџџџџџџџџuintџџџџ"const EPR_SField*$epr_get_num_fields`/home/pascal/depot/filedata/src/epr/epr_record.c{џџџџџџџџ recordџџџџџџџџ$const EPR_SRecord*џџџџuint&epr_get_record_info`/home/pascal/depot/filedata/src/epr/epr_record.c–Йм Returns information about the structure of the records contained in a dataset specified by the given <code>dataset_id</code>. @param dataset_id the the dataset identifier @return the the pointer for the record structure information.џџџџdataset_idџџџџџџџџEPR_SDatasetId*џџџџ EPR_SRecordInfo*(epr_read_record_info`/home/pascal/depot/filedata/src/epr/epr_record.cН6џџџџџџџџproduct_idџџџџџџџџEPR_SProductId*џџџџdataset_idџџџџџџџџEPR_SDatasetId*џџџџ EPR_SRecordInfo*,stdio.h`/home/pascal/depot/filedata/src/epr/epr_record.h%yДЂWјџџџџ\ˆ"/+__cplusplus1џџџџstdio.hЏЬІ‰`/home/pascal/depot/filedata/src/epr/epr_record.hЋ˜ˆF`/home/pascal/depot/filedata/src/epr/epr_record.hџџџџџџџџџџџџEPR_RecordInfo`/home/pascal/depot/filedata/src/epr/epr_record.h1Р The <code>EPR_RecordInfo</code> structure contains meta information about a particular record.џџџџI assert.herrno.hstdio.hstdlib.hctype.hstring.hepr_api.hepr_core.hepr_string.h`/home/pascal/depot/filedata/src/epr/epr_string.c%yДЂWјџџџџ epr_core.hHлХerrno.h›2assert.hє(DЈstring.h­Ц‰=epr_string.hЯфѓ`/home/pascal/depot/filedata/src/epr/epr_string.cкп€9stdio.hЏЬІ‰ctype.h˜тюлepr_api.hjk+Іstdlib.hЌšЅј`/home/pascal/depot/filedata/src/epr/epr_string.cџџџџџџџџџџџџ"epr_assign_string`/home/pascal/depot/filedata/src/epr/epr_string.c"џџџџџџџџstr_cloneџџџџџџџџ char**џџџџstrџџџџџџџџconst char*џџџџ char* epr_clone_string`/home/pascal/depot/filedata/src/epr/epr_string.c*2џџџџџџџџstrџџџџџџџџconst char*џџџџ char*"epr_create_string`/home/pascal/depot/filedata/src/epr/epr_string.c$'џџџџџџџџ lengthџџџџџџџџunsigned intџџџџ char*epr_cut_string`/home/pascal/depot/filedata/src/epr/epr_string.c5:џџџџџџџџsub_strџџџџџџџџ char**џџџџstrџџџџџџџџconst char*џџџџ startџџџџџџџџintџџџџ lengthџџџџџџџџintџџџџvoidepr_equal_names`/home/pascal/depot/filedata/src/epr/epr_string.cZ` Compares the two given names and returns <code>TRUE</code> if they are equal ignoring the case of each letter. <p> This function is used to compare names throughout the ENVISAT product reader API. @param name1 the first name, must not be NULL @param name2 the second name, must not be NULL @return <code>TRUE</code> if the names are equal, <code>FALSE</code> otherwiseџџџџ name1џџџџџџџџconst char*џџџџ name2џџџџџџџџconst char*џџџџboolean0epr_find_first_not_white`/home/pascal/depot/filedata/src/epr/epr_string.cмхџџџџџџџџstrџџџџџџџџconst char*џџџџint.epr_find_last_not_white`/home/pascal/depot/filedata/src/epr/epr_string.cчѓџџџџџџџџstrџџџџџџџџconst char*џџџџint0epr_free_and_null_string`/home/pascal/depot/filedata/src/epr/epr_string.cqvџџџџџџџџstrџџџџџџџџ char**џџџџvoidepr_free_string`/home/pascal/depot/filedata/src/epr/epr_string.ccxџџџџџџџџstrџџџџџџџџ char*џџџџvoid(epr_get_positive_int`/home/pascal/depot/filedata/src/epr/epr_string.cMY"џџџџџџџџstrџџџџџџџџconst char*џџџџint"epr_if_no_letters`/home/pascal/depot/filedata/src/epr/epr_string.cAJџџџџџџџџstrџџџџџџџџconst char*џџџџint"epr_if_no_scaling`/home/pascal/depot/filedata/src/epr/epr_string.cgnџџџџџџџџstrџџџџџџџџconst char*џџџџint*epr_numeral_suspicion`/home/pascal/depot/filedata/src/epr/epr_string.cZd<'Verdacht': if float-or-doubleџџџџstrџџџџџџџџconst char*џџџџintepr_str_tok`/home/pascal/depot/filedata/src/epr/epr_string.cyЏ& Findes substrings between separators. @param str the string to search @param seps the separator simbols string @param pos position with a search begin @return the next substring (or own string) of the found name or <code>(uint)NULL</code> if an error occured.џџџџstrџџџџџџџџconst char*џџџџsepsџџџџџџџџconst char*џџџџposџџџџџџџџint*џџџџ char*epr_str_tok_tok`/home/pascal/depot/filedata/src/epr/epr_string.cАй4 Findes substrings between double separators. @param str the string to search @param seps the separator simbols string @param pos position with a search begin @return the next substring (or own string) of the found name or <code>(uint)NULL</code> if an error occured.џџџџstrџџџџџџџџconst char*џџџџsepsџџџџџџџџconst char*џџџџexceptionsџџџџџџџџconst char*џџџџposџџџџџџџџ uint*џџџџ char*$epr_strip_string_r`/home/pascal/depot/filedata/src/epr/epr_string.c%?џџџџџџџџstrџџџџџџџџ char*џџџџ char*epr_sub_string`/home/pascal/depot/filedata/src/epr/epr_string.c=Yџџџџџџџџstrџџџџџџџџconst char*џџџџ startџџџџџџџџintџџџџ lengthџџџџџџџџintџџџџ char*epr_trim_string`/home/pascal/depot/filedata/src/epr/epr_string.cі"џџџџџџџџstrџџџџџџџџ char*џџџџ char*stricmp`/home/pascal/depot/filedata/src/epr/epr_string.cyˆџџџџџџџџs1џџџџџџџџconst char*џџџџs2џџџџџџџџconst char*џџџџint.stdlib.hstring.hassert.h`/home/pascal/depot/filedata/src/epr/epr_string.h%yДЂWјџџџџ\ˆ"/+__cplusplus1џџџџstring.h­Ц‰=assert.hє(DЈ`/home/pascal/depot/filedata/src/epr/epr_string.hкп€>stdlib.hЌšЅј`/home/pascal/depot/filedata/src/epr/epr_string.hџџџџџџџџџџџџMassert.herrno.hstdio.hstdlib.hstring.hepr_api.hepr_core.hepr_field.h\/home/pascal/depot/filedata/src/epr/epr_swap.c%yДЂWјџџџџ epr_core.hHлХerrno.h›2\/home/pascal/depot/filedata/src/epr/epr_swap.c[Ыэassert.hє(DЈstring.h­Ц‰=epr_field.h)•Жрstdio.hЏЬІ‰epr_api.hjk+Іstdlib.hЌšЅј\/home/pascal/depot/filedata/src/epr/epr_swap.cџџџџџџџџџџџџbyte_swap_float\/home/pascal/depot/filedata/src/epr/epr_swap.c‚–в Swaps bytes within NUMBER_OF_SWAPS four-byte words, starting at address BUFFER. @param buffer the one element typed buffer to convert for a little endian order machine @param number_of_swaps number of elements to convert џџџџ bufferџџџџџџџџ float*џџџџnumber_of_swapsџџџџџџџџuintџџџџvoidbyte_swap_long\/home/pascal/depot/filedata/src/epr/epr_swap.c@[В Swaps bytes within NUMBER_OF_SWAPS four-byte words, starting at address BUFFER. џџџџЕшЋ bufferџџџџџџџџ long*џџџџnumber_of_swapsџџџџџџџџuintџџџџvoidbyte_swap_short\/home/pascal/depot/filedata/src/epr/epr_swap.c*?Ь Swaps bytes within NUMBER_OF_SWAPS two-byte words, starting at address BUFFER. @param buffer the one element typed buffer to convert for a little endian order machine @param number_of_swaps number of elements to convert џџџџ bufferџџџџџџџџ short*џџџџnumber_of_swapsџџџџџџџџuintџџџџvoidbyte_swap_ulong\/home/pascal/depot/filedata/src/epr/epr_swap.coв Swaps bytes within NUMBER_OF_SWAPS four-byte words, starting at address BUFFER. @param buffer the one element typed buffer to convert for a little endian order machine @param number_of_swaps number of elements to convert џџџџ bufferџџџџџџџџ ulong*џџџџnumber_of_swapsџџџџџџџџuintџџџџvoid byte_swap_ushort\/home/pascal/depot/filedata/src/epr/epr_swap.c\nЬ Swaps bytes within NUMBER_OF_SWAPS two-byte words, starting at address BUFFER. @param buffer the one element typed buffer to convert for a little endian order machine @param number_of_swaps number of elements to convert џџџџЖ)І€ bufferџџџџџџџџushort*џџџџnumber_of_swapsџџџџџџџџuintџџџџvoid.epr_is_big_endian_order\/home/pascal/depot/filedata/src/epr/epr_swap.cЊО\ Returns a oolean value indicating whether this code run's on a little endian order machine or not. <p><code>1</code> stands for little endian (BE), <code>0/code> otherwiseџџџџint4epr_is_little_endian_order\/home/pascal/depot/filedata/src/epr/epr_swap.c—Љ\ Returns a oolean value indicating whether this code run's on a little endian order machine or not. <p><code>1</code> stands for little endian (LE), <code>0/code> otherwiseџџџџint*epr_swap_endian_order\/home/pascal/depot/filedata/src/epr/epr_swap.cПфР Converts bytes for a little endian order machine @param field the pointer at data reading in џџџџ fieldџџџџџџџџ"const EPR_SField*џџџџvoid0stdio.h\/home/pascal/depot/filedata/src/epr/epr_swap.h%yДЂWјџџџџ\ˆ"/+__cplusplus1џџџџ\/home/pascal/depot/filedata/src/epr/epr_swap.h[Ыђstdio.hЏЬІ‰\/home/pascal/depot/filedata/src/epr/epr_swap.hџџџџџџџџџџџџQassert.herrno.hstdio.hstdlib.hstring.hepr_api.hepr_core.hepr_field.hb/home/pascal/depot/filedata/src/epr/epr_typconv.c%yДЂWјџџџџ epr_core.hHлХerrno.h›2assert.hє(DЈstring.h­Ц‰=b/home/pascal/depot/filedata/src/epr/epr_typconv.cŸŠљ•epr_field.h)•Жрstdio.hЏЬІ‰epr_api.hjk+Іstdlib.hЌšЅјb/home/pascal/depot/filedata/src/epr/epr_typconv.cџџџџџџџџџџџџ>epr_copy_field_elems_as_doublesb/home/pascal/depot/filedata/src/epr/epr_typconv.cз’ Copies the data of the given field into the given buffer of <code>double</code> elements. The actual number of elements copied is the minimum of the given number of elements (the buffer's size) and the actual number of elements contained in the field. <p>If the actual field data type is not <code>double</code> the function automatically performs the conversion. @param field the field from which to copy the elements @param buffer the buffer in which to copy the data @param num_elems the number of elements in the given buffer @return the actual number of elements copiedџџџџ fieldџџџџџџџџ"const EPR_SField*џџџџ bufferџџџџџџџџdouble*џџџџnum_elemsџџџџџџџџuintџџџџuint<epr_copy_field_elems_as_floatsb/home/pascal/depot/filedata/src/epr/epr_typconv.cиŽ Copies the data of the given field into the given buffer of <code>float</code> elements. The actual number of elements copied is the minimum of the given number of elements (the buffer's size) and the actual number of elements contained in the field. <p>If the actual field data type is not <code>float</code> the function automatically performs the conversion. @param field the field from which to copy the elements @param buffer the buffer in which to copy the data @param num_elems the number of elements in the given buffer @return the actual number of elements copiedџџџџ fieldџџџџџџџџ"const EPR_SField*џџџџ bufferџџџџџџџџ float*џџџџnum_elemsџџџџџџџџuintџџџџuint:epr_copy_field_elems_as_longsb/home/pascal/depot/filedata/src/epr/epr_typconv.cWŠ Copies the data of the given field into the given buffer of <code>long</code> elements. The actual number of elements copied is the minimum of the given number of elements (the buffer's size) and the actual number of elements contained in the field. <p>If the actual field data type is not <code>long</code> the function automatically performs the conversion. @param field the field from which to copy the elements @param buffer the buffer in which to copy the data @param num_elems the number of elements in the given buffer @return the actual number of elements copiedџџџџ fieldџџџџџџџџ"const EPR_SField*џџџџ bufferџџџџџџџџ long*џџџџnum_elemsџџџџџџџџuintџџџџuint<epr_copy_field_elems_as_ulongsb/home/pascal/depot/filedata/src/epr/epr_typconv.cX†YŽ Copies the data of the given field into the given buffer of <code>ulong</code> elements. The actual number of elements copied is the minimum of the given number of elements (the buffer's size) and the actual number of elements contained in the field. <p>If the actual field data type is not <code>ulong</code> the function automatically performs the conversion. @param field the field from which to copy the elements @param buffer the buffer in which to copy the data @param num_elems the number of elements in the given buffer @return the actual number of elements copiedџџџџ fieldџџџџџџџџ"const EPR_SField*џџџџ bufferџџџџџџџџ ulong*џџџџnum_elemsџџџџџџџџuintџџџџuint4epr_get_field_elem_as_charb/home/pascal/depot/filedata/src/epr/epr_typconv.c(E. Interprates a memory as a <code>char</code> value @param field the pointer at the array to convert @param elem_index the index of the element in the given array to convert @return the <code>char</code> typed element or <code>error_code</code> if an error occured.џџџџ fieldџџџџџџџџ"const EPR_SField*џџџџelem_indexџџџџџџџџuintџџџџchar8epr_get_field_elem_as_doubleb/home/pascal/depot/filedata/src/epr/epr_typconv.c76 Interprates a memory as a <code>double</code> value @param field the pointer at the array to convert @param elem_index the index of the element in the given array to convert @return the <code>double</code> typed element or <code>error_code</code> if an error occured.џџџџ fieldџџџџџџџџ"const EPR_SField*џџџџelem_indexџџџџџџџџuintџџџџ double6epr_get_field_elem_as_floatb/home/pascal/depot/filedata/src/epr/epr_typconv.cВх2 Interprates a memory as a <code>float</code> value @param field the pointer at the array to convert @param elem_index the index of the element in the given array to convert @return the <code>float</code> typed element or <code>error_code</code> if an error occured.џџџџ fieldџџџџџџџџ"const EPR_SField*џџџџelem_indexџџџџџџџџuintџџџџ float4epr_get_field_elem_as_longb/home/pascal/depot/filedata/src/epr/epr_typconv.c"N8 Interprates a memory as a <code>long</code> value. <p> If an error occurs the method returns <code>0</code> (zero). Whether an error really occured when zero is returned can by determined by using the <code>epr_get_last_err_code</code> function. @param field the pointer at the array to convert @param elem_index the index of the element in the given array to convert @return a <code>long</code> valueџџџџ fieldџџџџџџџџ"const EPR_SField*џџџџelem_indexџџџџџџџџuintџџџџlong2epr_get_field_elem_as_mjdb/home/pascal/depot/filedata/src/epr/epr_typconv.cSn Interprates a memory data as a <code>short</code> data @param field the pointer at the array to convert @param time the pointer at the time structure to get @return the time [days, seconds, microseconds] or <code>NULL</code> if an error occured.џџџџ fieldџџџџџџџџ"const EPR_SField*џџџџ const EPR_STime*6epr_get_field_elem_as_shortb/home/pascal/depot/filedata/src/epr/epr_typconv.cšС2 Interprates a memory as a <code>short</code> value @param field the pointer at the array to convert @param elem_index the index of the element in the given array to convert @return the <code>short</code> typed element or <code>error_code</code> if an error occured.џџџџ fieldџџџџџџџџ"const EPR_SField*џџџџelem_indexџџџџџџџџuintџџџџ short2epr_get_field_elem_as_strb/home/pascal/depot/filedata/src/epr/epr_typconv.cov Interprates a memory data as a string. @param field the pointer at the array to convert @return the <code>char</code> typed element or <code>NULL</code> if an error occured.џџџџ fieldџџџџџџџџ"const EPR_SField*џџџџconst char*6epr_get_field_elem_as_ucharb/home/pascal/depot/filedata/src/epr/epr_typconv.ca~2 Interprates a memory as a <code>uchar</code> value @param field the pointer at the array to convert @param elem_index the index of the element in the given array to convert @return the <code>uchar</code> typed element or <code>error_code</code> if an error occured.џџџџ fieldџџџџџџџџ"const EPR_SField*џџџџelem_indexџџџџџџџџuintџџџџ uchar6epr_get_field_elem_as_ulongb/home/pascal/depot/filedata/src/epr/epr_typconv.cj–2 Interprates a memory as a <code>ulong</code> value @param field the pointer at the array to convert @param elem_index the index of the element in the given array to convert @return the <code>ulong</code> typed element or <code>error_code</code> if an error occured.џџџџ fieldџџџџџџџџ"const EPR_SField*џџџџelem_indexџџџџџџџџuintџџџџ ulong8epr_get_field_elem_as_ushortb/home/pascal/depot/filedata/src/epr/epr_typconv.cн6 Interprates a memory as a <code>ushort</code> value @param field the pointer at the array to convert @param elem_index the index of the element in the given array to convert @return the <code>ushort</code> typed element or <code>error_code</code> if an error occured.џџџџ fieldџџџџџџџџ"const EPR_SField*џџџџelem_indexџџџџџџџџuintџџџџ ushort0epr_get_field_elems_charb/home/pascal/depot/filedata/src/epr/epr_typconv.cF`” Interprates a memory data as a <code>char</code> data @param field the pointer at the array to convert @return the <code>char</code> typed element or <code>NULL</code> if an error occured.џџџџ fieldџџџџџџџџ"const EPR_SField*џџџџconst char*4epr_get_field_elems_doubleb/home/pascal/depot/filedata/src/epr/epr_typconv.c8Rœ Interprates a memory data as a <code>double</code> data @param field the pointer at the array to convert @return the <code>double</code> typed element or <code>NULL</code> if an error occured.џџџџ fieldџџџџџџџџ"const EPR_SField*џџџџconst double*2epr_get_field_elems_floatb/home/pascal/depot/filedata/src/epr/epr_typconv.cц˜ Interprates a memory data as a <code>float</code> data @param field the pointer at the array to convert @return the <code>float</code> typed element or <code>NULL</code> if an error occured.џџџџ fieldџџџџџџџџ"const EPR_SField*џџџџconst float*0epr_get_field_elems_longb/home/pascal/depot/filedata/src/epr/epr_typconv.cOi” Interprates a memory data as a <code>long</code> data @param field the pointer at the array to convert @return the <code>long</code> typed element or <code>NULL</code> if an error occured.џџџџ fieldџџџџџџџџ"const EPR_SField*џџџџconst long*2epr_get_field_elems_shortb/home/pascal/depot/filedata/src/epr/epr_typconv.cТм˜ Interprates a memory data as a <code>short</code> data @param field the pointer at the array to convert @return the <code>short</code> typed element or <code>NULL</code> if an error occured.џџџџ fieldџџџџџџџџ"const EPR_SField*џџџџconst short*2epr_get_field_elems_ucharb/home/pascal/depot/filedata/src/epr/epr_typconv.c™˜ Interprates a memory data as a <code>uchar</code> data @param field the pointer at the array to convert @return the <code>uchar</code> typed element or <code>NULL</code> if an error occured.џџџџ fieldџџџџџџџџ"const EPR_SField*џџџџconst uchar*2epr_get_field_elems_ulongb/home/pascal/depot/filedata/src/epr/epr_typconv.c—Б˜ Interprates a memory data as a <code>ulong</code> data @param field the pointer at the array to convert @return the <code>ulong</code> typed element or <code>NULL</code> if an error occured.џџџџ fieldџџџџџџџџ"const EPR_SField*џџџџconst ulong*4epr_get_field_elems_ushortb/home/pascal/depot/filedata/src/epr/epr_typconv.c!œ Interprates a memory data as a <code>ushort</code> data @param field the pointer at the array to convert @return the <code>ushort</code> typed element or <code>NULL</code> if an error occured.џџџџ fieldџџџџџџџџ"const EPR_SField*џџџџconst ushort*2 stringexceptioniostreamtools.hb/home/pascal/depot/filedata/src/file_exceptions.h%yДшаИџџџџ string XaчiostreamВ$Bєtools.hАох7exceptionOb/home/pascal/depot/filedata/src/file_exceptions.hйА<b/home/pascal/depot/filedata/src/file_exceptions.hџџџџџџџџџџџџbad_fileb/home/pascal/depot/filedata/src/file_exceptions.hjв@class bad_file exception : the specified file couldn't be opened : it doesn't exist, or isn't an HDF oneџџџџexceptionbad_fileb/home/pascal/depot/filedata/src/file_exceptions.hlnџџџџџџџџbad_fileџџџ€_sџџџџџџџџconst string&џџџџџџџџwhatb/home/pascal/depot/filedata/src/file_exceptions.ht{€ @brief accessor to the error message @return the error messageџџџџbad_fileџџџЄconst char*~ bad_fileb/home/pascal/depot/filedata/src/file_exceptions.hooџџџџџџџџbad_fileџџџџbad_fileb/home/pascal/depot/filedata/src/file_exceptions.hlnџџџџџџџџbad_fileџџџ€_sџџџџџџџџconst string&џџџџџџџџwhatb/home/pascal/depot/filedata/src/file_exceptions.ht{€ @brief accessor to the error message @return the error messageџџџџbad_fileџџџЄconst char*~ bad_fileb/home/pascal/depot/filedata/src/file_exceptions.hooџџџџџџџџbad_fileџџџџmodeb/home/pascal/depot/filedata/src/file_exceptions.h~ ~џџџџ stringsb/home/pascal/depot/filedata/src/file_exceptions.h} } џџџџ string*bad_file_opening_modeb/home/pascal/depot/filedata/src/file_exceptions.h…—Žbad_file bad_file_opening_mode : the specified file couldn't be opened.џџџџexception*bad_file_opening_modeb/home/pascal/depot/filedata/src/file_exceptions.h‡Šџџџџџџџџ*bad_file_opening_modeџџџ€ _fileџџџџџџџџconst string&џџџџ _modeџџџџџџџџconst string&џџџџџџџџwhatb/home/pascal/depot/filedata/src/file_exceptions.h“€ @brief accessor to the error message @return the error messageџџџџ*bad_file_opening_modep$const char*.~ bad_file_opening_modeb/home/pascal/depot/filedata/src/file_exceptions.h‹‹'џџџџџџџџ*bad_file_opening_modeЖџџџџ*bad_file_opening_modeb/home/pascal/depot/filedata/src/file_exceptions.h‡Šџџџџџџџџ*bad_file_opening_modeџџџ€ _fileџџџџџџџџconst string&џџџџ _modeџџџџџџџџconst string&џџџџџџџџwhatb/home/pascal/depot/filedata/src/file_exceptions.h“€ @brief accessor to the error message @return the error messageџџџџ*bad_file_opening_modep$const char*.~ bad_file_opening_modeb/home/pascal/depot/filedata/src/file_exceptions.h‹‹'џџџџџџџџ*bad_file_opening_modeЖџџџџfileb/home/pascal/depot/filedata/src/file_exceptions.h• •џџџџ stringmodeb/home/pascal/depot/filedata/src/file_exceptions.h– –џџџџ stringbad_open_fileb/home/pascal/depot/filedata/src/file_exceptions.hАПvException thrown when an error occurs during a file openingџџџџexceptionbad_open_fileb/home/pascal/depot/filedata/src/file_exceptions.hВВXџџџџџџџџbad_open_fileџџџ€filenameџџџџџџџџconst stringџџџџmodeџџџџџџџџ stringџџџџџџџџwhatb/home/pascal/depot/filedata/src/file_exceptions.hИЛ€ @brief accessor to the error message @return the error messageџџџџbad_open_fileџџџЄconst char*~ bad_open_fileb/home/pascal/depot/filedata/src/file_exceptions.hГГџџџџџџџџbad_open_fileџџџџbad_open_fileb/home/pascal/depot/filedata/src/file_exceptions.hВВXџџџџџџџџbad_open_fileџџџ€filenameџџџџџџџџconst stringџџџџmodeџџџџџџџџ stringџџџџџџџџwhatb/home/pascal/depot/filedata/src/file_exceptions.hИЛ€ @brief accessor to the error message @return the error messageџџџџbad_open_fileџџџЄconst char*~ bad_open_fileb/home/pascal/depot/filedata/src/file_exceptions.hГГџџџџџџџџbad_open_fileџџџџfilenameb/home/pascal/depot/filedata/src/file_exceptions.hН Нџџџџ stringmodeb/home/pascal/depot/filedata/src/file_exceptions.hО Оџџџџ stringbad_temp_fileb/home/pascal/depot/filedata/src/file_exceptions.h=SЮ @class bad_temp_file thrown when a temporary file can't be created using the stdlib's mkstemp functionџџџџexceptionbad_temp_fileb/home/pascal/depot/filedata/src/file_exceptions.hEEЉџџџџџџџџbad_temp_fileџџџ€src_fileџџџџџџџџconst string&џџџџsrc_lineџџџџџџџџconst intџџџџ filename_patternџџџџџџџџconst string&џџџџџџџџwhatb/home/pascal/depot/filedata/src/file_exceptions.hKN€ @brief accessor to the error message @return the error messageџџџџbad_temp_fileџџџЄconst char*~ bad_temp_fileb/home/pascal/depot/filedata/src/file_exceptions.hFFџџџџџџџџbad_temp_fileџџџ€џџџџbad_temp_fileb/home/pascal/depot/filedata/src/file_exceptions.hEEЉџџџџџџџџbad_temp_fileџџџ€src_fileџџџџџџџџconst string&џџџџsrc_lineџџџџџџџџconst intџџџџ filename_patternџџџџџџџџconst string&џџџџџџџџwhatb/home/pascal/depot/filedata/src/file_exceptions.hKN€ @brief accessor to the error message @return the error messageџџџџbad_temp_fileџџџЄconst char*~ bad_temp_fileb/home/pascal/depot/filedata/src/file_exceptions.hFFџџџџџџџџbad_temp_fileџџџ€џџџџ filename_patternb/home/pascal/depot/filedata/src/file_exceptions.hR Rџџџџ stringsrc_fileb/home/pascal/depot/filedata/src/file_exceptions.hP Pџџџџ stringsrc_lineb/home/pascal/depot/filedata/src/file_exceptions.hQQџџџџint$empty_parasol_fileb/home/pascal/depot/filedata/src/file_exceptions.hРЮџџџџџџџџexception$empty_parasol_fileb/home/pascal/depot/filedata/src/file_exceptions.hТТEџџџџџџџџ$empty_parasol_fileџџџ€filenameџџџџџџџџconst stringџџџџџџџџwhatb/home/pascal/depot/filedata/src/file_exceptions.hШЫ€ @brief accessor to the error message @return the error messageџџџџ$empty_parasol_file$const char*(~ empty_parasol_fileb/home/pascal/depot/filedata/src/file_exceptions.hУУ$џџџџџџџџ$empty_parasol_fileџџџ€џџџџ$empty_parasol_fileb/home/pascal/depot/filedata/src/file_exceptions.hТТEџџџџџџџџ$empty_parasol_fileџџџ€filenameџџџџџџџџconst stringџџџџџџџџwhatb/home/pascal/depot/filedata/src/file_exceptions.hШЫ€ @brief accessor to the error message @return the error messageџџџџ$empty_parasol_file$const char*(~ empty_parasol_fileb/home/pascal/depot/filedata/src/file_exceptions.hУУ$џџџџџџџџ$empty_parasol_fileџџџ€џџџџfilenameb/home/pascal/depot/filedata/src/file_exceptions.hЭ Эџџџџ string&file_creation_errorb/home/pascal/depot/filedata/src/file_exceptions.hœЌаfile_creation_error : the specified file couldn't be created : already exists exist, or bad acces rightsџџџџexception&file_creation_errorb/home/pascal/depot/filedata/src/file_exceptions.hž џџџџџџџџ&file_creation_errorџџџ€_filenameџџџџџџџџ$const std::string&џџџџџџџџwhatb/home/pascal/depot/filedata/src/file_exceptions.hІЉ€ @brief accessor to the error message @return the error messageџџџџ&file_creation_errorџџџЄconst char**~ file_creation_errorb/home/pascal/depot/filedata/src/file_exceptions.hЁЁ%џџџџџџџџ&file_creation_errorџџџ€џџџџ&file_creation_errorb/home/pascal/depot/filedata/src/file_exceptions.hž џџџџџџџџ&file_creation_errorџџџ€_filenameџџџџџџџџ$const std::string&џџџџџџџџwhatb/home/pascal/depot/filedata/src/file_exceptions.hІЉ€ @brief accessor to the error message @return the error messageџџџџ&file_creation_errorџџџЄconst char**~ file_creation_errorb/home/pascal/depot/filedata/src/file_exceptions.hЁЁ%џџџџџџџџ&file_creation_errorџџџ€џџџџfilenameb/home/pascal/depot/filedata/src/file_exceptions.hЋЋџџџџstd::stringfile_not_openedb/home/pascal/depot/filedata/src/file_exceptions.hXfІ @class file_not_opened thrown when an error occurs when trying to write to an fileџџџџexceptionfile_not_openedb/home/pascal/depot/filedata/src/file_exceptions.hZZAџџџџџџџџfile_not_openedџџџ€filenameџџџџџџџџconst string&џџџџџџџџwhatb/home/pascal/depot/filedata/src/file_exceptions.h`c€ @brief accessor to the error message @return the error messageџџџџfile_not_openedr$const char*"~ file_not_openedb/home/pascal/depot/filedata/src/file_exceptions.h[[!џџџџџџџџfile_not_openedџџџ€џџџџfile_not_openedb/home/pascal/depot/filedata/src/file_exceptions.hZZAџџџџџџџџfile_not_openedџџџ€filenameџџџџџџџџconst string&џџџџџџџџwhatb/home/pascal/depot/filedata/src/file_exceptions.h`c€ @brief accessor to the error message @return the error messageџџџџfile_not_openedr$const char*"~ file_not_openedb/home/pascal/depot/filedata/src/file_exceptions.h[[!џџџџџџџџfile_not_openedџџџ€џџџџfilenameb/home/pascal/depot/filedata/src/file_exceptions.he eџџџџ stringopen_file_errorb/home/pascal/depot/filedata/src/file_exceptions.h!8x @class bad_hdf_type thrown when an invalid hdf type is usedџџџџexceptionopen_file_errorb/home/pascal/depot/filedata/src/file_exceptions.h))‡џџџџџџџџopen_file_error%y€src_fileџџџџџџџџconst string&џџџџsrc_lineџџџџџџџџconst intџџџџfileџџџџџџџџconst string&џџџџџџџџwhatb/home/pascal/depot/filedata/src/file_exceptions.h03€ @brief accessor to the error message @return the error messageџџџџopen_file_errorџџџЄconst char*"~ open_file_errorb/home/pascal/depot/filedata/src/file_exceptions.h**!џџџџџџџџopen_file_errorџџџ€џџџџopen_file_errorb/home/pascal/depot/filedata/src/file_exceptions.h))‡џџџџџџџџopen_file_error%y€src_fileџџџџџџџџconst string&џџџџsrc_lineџџџџџџџџconst intџџџџfileџџџџџџџџconst string&џџџџџџџџwhatb/home/pascal/depot/filedata/src/file_exceptions.h03€ @brief accessor to the error message @return the error messageџџџџopen_file_errorџџџЄconst char*"~ open_file_errorb/home/pascal/depot/filedata/src/file_exceptions.h**!џџџџџџџџopen_file_errorџџџ€џџџџfileb/home/pascal/depot/filedata/src/file_exceptions.h7 7џџџџ stringsrc_fileb/home/pascal/depot/filedata/src/file_exceptions.h5 5џџџџ stringsrc_lineb/home/pascal/depot/filedata/src/file_exceptions.h66џџџџintstdb/home/pascal/depot/filedata/src/file_exceptions.hUfile_tools.h\/home/pascal/depot/filedata/src/file_tools.cpp%yДшаИџџџџfile_tools.hгЦ\/home/pascal/depot/filedata/src/file_tools.cpp›їf\/home/pascal/depot/filedata/src/file_tools.cppџџџџџџџџџџџџbasename\/home/pascal/depot/filedata/src/file_tools.cppSVџџџџџџџџ"path_and_filenameџџџџџџџџconst string&џџџџconst stringexists_dir\/home/pascal/depot/filedata/src/file_tools.cpp.<џџџџџџџџdir_pathџџџџџџџџconst string&џџџџboolexists_file\/home/pascal/depot/filedata/src/file_tools.cpp+-џџџџџџџџЕшў"path_and_filenameџџџџџџџџconst string&џџџџbool*file_can_be_opened_as\/home/pascal/depot/filedata/src/file_tools.cpp*џџџџџџџџ"path_and_filenameџџџџџџџџconst string&џџџџmodeџџџџџџџџconst string&џџџџboolget_directory\/home/pascal/depot/filedata/src/file_tools.cppKRџџџџџџџџ"path_and_filenameџџџџџџџџconst string&џџџџconst stringget_filename\/home/pascal/depot/filedata/src/file_tools.cpp=Jџџџџџџџџ"path_and_filenameџџџџџџџџconst string&џџџџconst stringget_tail\/home/pascal/depot/filedata/src/file_tools.cppW_џџџџџџџџ"path_and_filenameџџџџџџџџconst string&џџџџconst stringget_tmp_dir\/home/pascal/depot/filedata/src/file_tools.cpp`uџџџџџџџџconst string4 stringiostream cstdiosys/types.hdirent.hX/home/pascal/depot/filedata/src/file_tools.h%yДшаИџџџџdirent.h/ cstdioќ— string XaчiostreamВ$BєX/home/pascal/depot/filedata/src/file_tools.htЫsys/types.h,дсйX/home/pascal/depot/filedata/src/file_tools.hџџџџџџџџџџџџbad_tmp_dirX/home/pascal/depot/filedata/src/file_tools.h%џџџџџџџџbad_tmp_dirX/home/pascal/depot/filedata/src/file_tools.h  џџџџџџџџbad_tmp_dirџџџџwhatX/home/pascal/depot/filedata/src/file_tools.h"$џџџџџџџџbad_tmp_dir void~ bad_tmp_dirX/home/pascal/depot/filedata/src/file_tools.h!!џџџџџџџџbad_tmp_dirџџџџbad_tmp_dirX/home/pascal/depot/filedata/src/file_tools.h  џџџџџџџџbad_tmp_dirџџџџwhatX/home/pascal/depot/filedata/src/file_tools.h"$џџџџџџџџbad_tmp_dir void~ bad_tmp_dirX/home/pascal/depot/filedata/src/file_tools.h!!џџџџџџџџbad_tmp_dirџџџџbasenameX/home/pascal/depot/filedata/src/file_tools.hT T2$ @brief extract the tail of a filename (the name without its directory path) If @a filename doesn't contain a '/' char, the method will return it unchanged @param filename the full filename (directory path + name) @return the file name's tail (without starting '/' char).џџџџџџџ€filenameџџџџџџџџconst string&џџџџconst stringexists_dirX/home/pascal/depot/filedata/src/file_tools.h??'test the existence of a directory. In test if the directory is accessible @param dir_path the directory's path @return true if the file existsџџџџџџџ€dir_pathџџџџџџџџconst string&џџџџboolexists_fileX/home/pascal/depot/filedata/src/file_tools.h996цtest the existence of a file. @param path_and_filename the file's path+"/"+filename @return true if the file existsџџџџџџџ€"path_and_filenameџџџџџџџџconst string&џџџџbool*file_can_be_opened_asX/home/pascal/depot/filedata/src/file_tools.h22[ztest if the file can be opened in the given mode. @param path_and_filename the file's path+"/"+filename @param mode the opening mode @return true if the file can be opened in the given modeџџџџџџџ€"path_and_filenameџџџџџџџџconst string&џџџџmodeџџџџџџџџconst string&џџџџboolget_directoryX/home/pascal/depot/filedata/src/file_tools.hF F@М Extract a path from a full filename. If @a filename doesn't contain a '/' char, the method will return it unchanged @param path_and_filename the file's path+"/"+filename @return the directory path with ending '/' char.џџџџџџџ€"path_and_filenameџџџџџџџџconst string&џџџџconst stringget_tailX/home/pascal/depot/filedata/src/file_tools.hM M2$ @brief extract the tail of a filename (the name without its directory path) If @a filename doesn't contain a '/' char, the method will return it unchanged @param filename the full filename (directory path + name) @return the file name's tail (without starting '/' char).џџџџџџџ€filenameџџџџџџџџconst string&џџџџconst stringget_tmp_dirX/home/pascal/depot/filedata/src/file_tools.h[ [<@brief find a temporary directory The return string doesn't contains the trailing '/' char At this time, it only tries to read the TMPDIR variable. This method can be enhanced to be more portable, like the stdio tempnam() fucnction. Throws a bad_temp_dir exception if it can't be found.џџџџџџџ€const stringstdX/home/pascal/depot/filedata/src/file_tools.hYiostream stringfiledata.hHdf_file.hpp&filedataexception.hstatistic.h filedatareader.hX/home/pascal/depot/filedata/src/filedata.cpp%yЧП€џџџџstatistic.hjŽfiledata.hХ) string XaчiostreamВ$Bє&filedataexception.h<ЩпHdf_file.hppэЋоX/home/pascal/depot/filedata/src/filedata.cppwОPP filedatareader.hт§ƒX/home/pascal/depot/filedata/src/filedata.cppџџџџџџџџџџџџFileDataX/home/pascal/depot/filedata/src/filedata.cpp)џџџџџџџџFileDatanameџџџџџџџџconst string&џџџџmodeџџџџџџџџconst string&џџџџџџџџFileDataX/home/pascal/depot/filedata/src/filedata.cpp-2џџџџџџџџFileDatafdџџџџџџџџconst FileData&џџџџџџџџ"check_geolocationX/home/pascal/depot/filedata/src/filedata.cppKTЮvoid * FileData::read_data(const char sds_name[], int * start, int * stride, int * edges, int rank) { }џџџџFileDatalatџџџџџџџџconst floatџџџџlonџџџџџџџџconst floatџџџџvoidcontain_timeX/home/pascal/depot/filedata/src/filedata.cpp?IџџџџџџџџFileData timeџџџџџџџџconst doubleџџџџconst booloperator =X/home/pascal/depot/filedata/src/filedata.cpp4=џџџџџџџџFileDatafdџџџџџџџџconst FileData&џџџџFileData&~ FileDataX/home/pascal/depot/filedata/src/filedata.cpp*,џџџџџџџџFileDataџџџџstdX/home/pascal/depot/filedata/src/filedata.cpp6g_exception.h&filedataexception.hstatistic.hgeometry.hobservation.hT/home/pascal/depot/filedata/src/filedata.h%yЧшџџџџstatistic.hjŽobservation.h%Sf‚&filedataexception.h<Щпgeometry.h7\<вg_exception.hTСћT/home/pascal/depot/filedata/src/filedata.hxтŠuT/home/pascal/depot/filedata/src/filedata.hџџџџџџџџџџџџFileDataT/home/pascal/depot/filedata/src/filedata.h'ДGeneric class managing the reading. It describes the data generally @author Nicolas PASCALџџџџFileDataT/home/pascal/depot/filedata/src/filedata.hPP>џџџџџџџџFileData ЊЁ€nameџџџџџџџџconst string&џџџџmodeџџџџџџџџconst string&џџџџџџџџFileDataT/home/pascal/depot/filedata/src/filedata.hUU џџџџџџџџFileData Ћ$€fdџџџџџџџџconst FileData&џџџџџџџџ"check_geolocationT/home/pascal/depot/filedata/src/filedata.hККD` @brief check the validity of the (lat, lon) coordinates. If @a lat not in [-90, 90] or @a lon not in [-180, 180], raise an exception @param lat latitude @param lon longitudeџџџџFileDatalatџџџџџџџџconst floatџџџџlonџџџџџџџџconst floatџџџџvoidclose_data_fileT/home/pascal/depot/filedata/src/filedata.hŽ‘№ @brief closes the file @warning here for interface implementation prupose. All subclasses should implement this methodџџџџFileDatavoidcontain_dataT/home/pascal/depot/filedata/src/filedata.hБД‚ @brief check if the file has possible (lat,lon) coincidence @warning it's an EVENTUAL coincidence. That is not a proof !!! @warning here for interface implementation prupose. All subclasses should implement this method @param lat latitude @param lon longitude @param time time @param colocation_tolerance the acceptable bias (in km or degrees. Supposed to be in, a plane approximation) between [lat,lon] and the nearest data point. @return true if can eventually contain a coincidence with the point. @warning at this time always true. I don't have a good way to do itџџџџFileDatalatџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџtimeџџџџџџџџconst double&џџџџ(colocation_toleranceџџџџџџџџconst double&џџџџconst bool contain_locationT/home/pascal/depot/filedata/src/filedata.hЂЅP @brief check if this file has eventually data coincident with (lat,lon) @warning here for interface implementation prupose. All subclasses should implement this method @param lat the latitude of the event @param lon the longitude of the event @param tolerance acceptable bias between the nearest point in the data and the given (lat,lon) point @return true if a point in the data has been found in the colocation frameџџџџFileDatalatџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџtoleranceџџџџџџџџconst double&џџџџconst boolcontain_timeT/home/pascal/depot/filedata/src/filedata.hxx8 @brief test if the file contains data that occur at @a time If @a time is -1 (deault), always return true @param time a measure time using TAI93 convention (number of seconds since 1993/01/01 at 00:00:00) @return true if the file has data time stamped with timeџџџџFileData timeџџџџџџџџconst doubleџџџџconst bool*free_geolocation_dataT/home/pascal/depot/filedata/src/filedata.hШЫ @brief free eventually loaded geolocation data @warning here for interface implementation prupose. All subclasses should implement this methodџџџџFileDatavoid8free_viewing_directions_dataT/home/pascal/depot/filedata/src/filedata.h ˆ @brief free the data requested for computing the viewing directionsџџџџFileDatavoid*get_dataset_dimensionT/home/pascal/depot/filedata/src/filedata.hуц @brief return the given dataset size along each axis @param ds_name [IN] dataset name @return the axis dimensions in ordering [..., Z, Y, X]џџџџFileDataisds_nameџџџџџџџџconst string&џџџџvector< int >,get_dataset_fill_valueT/home/pascal/depot/filedata/src/filedata.hкн @brief read the given dataset's fill value TODO Same method with many names of this method transfered from filedatareader. Need to be reformatted after functionnal tests with Data2Grid/MapsOperator @param ds_name [IN] dataset name @param fillvalue [OUT] fill value.џџџџFileDataџџџ„ds_nameџџџџџџџџconst string&џџџџfillvalueџџџџџџџџ void*џџџџvoidget_dateT/home/pascal/depot/filedata/src/filedata.hqw  @brief return the date of data' acquisition start @return the acquisition dateџџџџFileData const Dateget_filenameT/home/pascal/depot/filedata/src/filedata.hjlЈ @brief alias to get_name method, dfor data2grid/mapsoperator compatibility @returnџџџџFileData„ stringget_fillValueT/home/pascal/depot/filedata/src/filedata.hэят @brief read the given dataset's fill value @param ds_name [IN] dataset name @param fillvalue [OUT] fill value.џџџџXџџџџFileData Ћds_nameџџџџџџџџconst string&џџџџfillValueџџџџџџџџX&џџџџvoidget_fillValueT/home/pascal/depot/filedata/src/filedata.h№ѓџџџџџџџџFileDatads_nameџџџџџџџџconst string&џџџџfillValueџџџџџџџџ void*џџџџvoidget_fill_valueT/home/pascal/depot/filedata/src/filedata.hѕїџџџџџџџџXџџџџFileDatads_nameџџџџџџџџconst string&џџџџfillValueџџџџџџџџX&џџџџvoidget_fill_valueT/home/pascal/depot/filedata/src/filedata.hјњџџџџџџџџFileDatads_nameџџџџџџџџconst string&џџџџfillValueџџџџџџџџ void*џџџџvoidget_nameT/home/pascal/depot/filedata/src/filedata.hee2~ @brief file name accessor @return the name with its full pathџџџџFileData const string"get_time_coverageT/home/pascal/depot/filedata/src/filedata.h‡‰џџџџџџџџFileData double,get_viewing_directionsT/home/pascal/depot/filedata/src/filedata.hB @brief constucts the viewing directions observations for the given pixel @param ipix pixel indice(s) @param v_obs vector of observation(s) for the given pixelџџџџFileDataipixџџџџџџџџ(const vector< int >&џџџџ v_obsџџџџџџџџ,vector< Observation >&џџџџvoid4is_geolocation_data_loadedT/home/pascal/depot/filedata/src/filedata.hаг> @brief check if the geolocation data have been already loaded @warning here for interface implementation prupose. All subclasses should implement this methodџџџџFileDataџџџЄconst boolBis_viewing_directions_data_loadedT/home/pascal/depot/filedata/src/filedata.hўЎ @brief test if the data requested for computing the viewing directions has been loadedџџџџFileDatabool*load_geolocation_dataT/home/pascal/depot/filedata/src/filedata.hРУт @brief read the geolocations data and put it in memory @warning here for interface implementation prupose. All subclasses should implement this method This method is used to make the search of the indexes of a (lat,lon,time) point faster.џџџџFileDatavoid8load_viewing_directions_dataT/home/pascal/depot/filedata/src/filedata.hˆ @brief load the data requested for computing the viewing directionsџџџџFileDatavoidopen_data_fileT/home/pascal/depot/filedata/src/filedata.h–™ь @brief open the file @warning here for interface implementation prupose. All subclasses should implement this methodџџџџFileDatavoidoperator =T/home/pascal/depot/filedata/src/filedata.h\ \,” @brief Affectation operator @param fd the FileData to copy @return thisџџџџFileDatafdџџџџџџџџconst FileData&џџџџFileData&read_dataT/home/pascal/depot/filedata/src/filedata.h……ш @brief Read the selected data in the file. @warning If you delegate the allocation of the buffer at this method, you need to call <i>delete[] data<i> yourself. @param data the buffer to fill with the read values. Can be NULL. In this case, the allocation is done by the method @param sds_name the name of the sds (Scientific Data Set) we want to access. @param start begining of the selection. If NULL, start at (0,0) if rank is 2 ; (0,0,0) if rank is 3... @param stride step between 2 interesting values. If NULL, this step is set to 1 in each dimension (ie all values will be read) @param edges number of values to be read in each dimension. if NULL, it will be all data along each dimension. @param rank the dimension of start, stride and edges @return a pointer to the read data array. It is useful when you let this method manage the allocation to update the allocated pointer to the data. If you've done it yourself or you are using a static buffer, it isn't necessary to catch this return pointerџџџџFileDataDdataџџџџџџџџ void*џџџџsds_nameџџџџџџџџconst char*џџџџ startџџџџџџџџint*џџџџ strideџџџџџџџџint*џџџџ edgesџџџџџџџџint*џџџџrankџџџџџџџџintџџџџ void*set_dateT/home/pascal/depot/filedata/src/filedata.hBEb set the acquisition date @param _x the new dateџџџџFileDataџџџ€dџџџџџџџџconst Date&џџџџvoidset_nameT/home/pascal/depot/filedata/src/filedata.h===h set the name of the file @param _name the new nameџџџџFileDataџџџ€nameџџџџџџџџconst string&џџџџvoid~ FileDataT/home/pascal/depot/filedata/src/filedata.h` `џџџџџџџџFileDataџџџџclose_data_fileT/home/pascal/depot/filedata/src/filedata.hŽ‘№ @brief closes the file @warning here for interface implementation prupose. All subclasses should implement this methodџџџџFileDatavoidcontain_dataT/home/pascal/depot/filedata/src/filedata.hБД‚ @brief check if the file has possible (lat,lon) coincidence @warning it's an EVENTUAL coincidence. That is not a proof !!! @warning here for interface implementation prupose. All subclasses should implement this method @param lat latitude @param lon longitude @param time time @param colocation_tolerance the acceptable bias (in km or degrees. Supposed to be in, a plane approximation) between [lat,lon] and the nearest data point. @return true if can eventually contain a coincidence with the point. @warning at this time always true. I don't have a good way to do itџџџџFileDatalatџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџtimeџџџџџџџџconst double&џџџџ(colocation_toleranceџџџџџџџџconst double&џџџџconst bool contain_locationT/home/pascal/depot/filedata/src/filedata.hЂЅP @brief check if this file has eventually data coincident with (lat,lon) @warning here for interface implementation prupose. All subclasses should implement this method @param lat the latitude of the event @param lon the longitude of the event @param tolerance acceptable bias between the nearest point in the data and the given (lat,lon) point @return true if a point in the data has been found in the colocation frameџџџџFileDatalatџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџtoleranceџџџџџџџџconst double&џџџџconst bool*free_geolocation_dataT/home/pascal/depot/filedata/src/filedata.hШЫ @brief free eventually loaded geolocation data @warning here for interface implementation prupose. All subclasses should implement this methodџџџџFileDatavoid8free_viewing_directions_dataT/home/pascal/depot/filedata/src/filedata.h ˆ @brief free the data requested for computing the viewing directionsџџџџFileDatavoid*get_dataset_dimensionT/home/pascal/depot/filedata/src/filedata.hуц @brief return the given dataset size along each axis @param ds_name [IN] dataset name @return the axis dimensions in ordering [..., Z, Y, X]џџџџFileDataisds_nameџџџџџџџџconst string&џџџџvector< int >,get_dataset_fill_valueT/home/pascal/depot/filedata/src/filedata.hкн @brief read the given dataset's fill value TODO Same method with many names of this method transfered from filedatareader. Need to be reformatted after functionnal tests with Data2Grid/MapsOperator @param ds_name [IN] dataset name @param fillvalue [OUT] fill value.џџџџFileDataџџџ„ds_nameџџџџџџџџconst string&џџџџfillvalueџџџџџџџџ void*џџџџvoidget_dateT/home/pascal/depot/filedata/src/filedata.hqw  @brief return the date of data' acquisition start @return the acquisition dateџџџџFileData const Dateget_filenameT/home/pascal/depot/filedata/src/filedata.hjlЈ @brief alias to get_name method, dfor data2grid/mapsoperator compatibility @returnџџџџFileData„ stringget_fillValueT/home/pascal/depot/filedata/src/filedata.hэят @brief read the given dataset's fill value @param ds_name [IN] dataset name @param fillvalue [OUT] fill value.џџџџXџџџџFileData Ћds_nameџџџџџџџџconst string&џџџџfillValueџџџџџџџџX&џџџџvoidget_fillValueT/home/pascal/depot/filedata/src/filedata.h№ѓџџџџџџџџFileDatads_nameџџџџџџџџconst string&џџџџfillValueџџџџџџџџ void*џџџџvoidget_fill_valueT/home/pascal/depot/filedata/src/filedata.hѕїџџџџџџџџXџџџџFileDatads_nameџџџџџџџџconst string&џџџџfillValueџџџџџџџџX&џџџџvoidget_fill_valueT/home/pascal/depot/filedata/src/filedata.hјњџџџџџџџџFileDatads_nameџџџџџџџџconst string&џџџџfillValueџџџџџџџџ void*џџџџvoidget_nameT/home/pascal/depot/filedata/src/filedata.hee2~ @brief file name accessor @return the name with its full pathџџџџFileData const string"get_time_coverageT/home/pascal/depot/filedata/src/filedata.h‡‰џџџџџџџџFileData double,get_viewing_directionsT/home/pascal/depot/filedata/src/filedata.hB @brief constucts the viewing directions observations for the given pixel @param ipix pixel indice(s) @param v_obs vector of observation(s) for the given pixelџџџџFileDataipixџџџџџџџџ(const vector< int >&џџџџ v_obsџџџџџџџџ,vector< Observation >&џџџџvoid4is_geolocation_data_loadedT/home/pascal/depot/filedata/src/filedata.hаг> @brief check if the geolocation data have been already loaded @warning here for interface implementation prupose. All subclasses should implement this methodџџџџFileDataџџџЄconst boolBis_viewing_directions_data_loadedT/home/pascal/depot/filedata/src/filedata.hўЎ @brief test if the data requested for computing the viewing directions has been loadedџџџџFileDatabool*load_geolocation_dataT/home/pascal/depot/filedata/src/filedata.hРУт @brief read the geolocations data and put it in memory @warning here for interface implementation prupose. All subclasses should implement this method This method is used to make the search of the indexes of a (lat,lon,time) point faster.џџџџFileDatavoid8load_viewing_directions_dataT/home/pascal/depot/filedata/src/filedata.hˆ @brief load the data requested for computing the viewing directionsџџџџFileDatavoidopen_data_fileT/home/pascal/depot/filedata/src/filedata.h–™ь @brief open the file @warning here for interface implementation prupose. All subclasses should implement this methodџџџџFileDatavoidset_dateT/home/pascal/depot/filedata/src/filedata.hBEb set the acquisition date @param _x the new dateџџџџFileDataџџџ€dџџџџџџџџconst Date&џџџџvoidset_nameT/home/pascal/depot/filedata/src/filedata.h===h set the name of the file @param _name the new nameџџџџFileDataџџџ€nameџџџџџџџџconst string&џџџџvoiddateT/home/pascal/depot/filedata/src/filedata.h4 4Z the date when the data have been acquired Date*modeT/home/pascal/depot/filedata/src/filedata.h0 0l the opening mode : only "r" supported at this time stringnameT/home/pascal/depot/filedata/src/filedata.h, ,P the name of the file (with its path) stringtime_coverageT/home/pascal/depot/filedata/src/filedata.h8 8@ the duration of the acquisition double8 date.hfile_tools.htools.h"file_exceptions.hg_exception.hf/home/pascal/depot/filedata/src/filedataexception.h%yУэИџџџџf/home/pascal/depot/filedata/src/filedataexception.hпž,"file_exceptions.h„јйЇfile_tools.hгЦtools.hАох7g_exception.hTСћ date.hћMєf/home/pascal/depot/filedata/src/filedataexception.hџџџџџџџџџџџџ&UnimplementedMethodf/home/pascal/depot/filedata/src/filedataexception.hA]† @class UnimplementedMethod thrown when an invalid hdf type is usedџџџџexception&UnimplementedMethodf/home/pascal/depot/filedata/src/filedataexception.hIIžџџџџџџџџ&UnimplementedMethodsrc_fileџџџџџџџџconst string&џџџџsrc_lineџџџџџџџџconst intџџџџsrc_methodџџџџџџџџconst string&џџџџџџџџwhatf/home/pascal/depot/filedata/src/filedataexception.hRU€ @brief accessor to the error message @return the error messageџџџџ&UnimplementedMethod$const char**~ UnimplementedMethodf/home/pascal/depot/filedata/src/filedataexception.hMM%џџџџџџџџ&UnimplementedMethodџџџџ&UnimplementedMethodf/home/pascal/depot/filedata/src/filedataexception.hIIžџџџџџџџџ&UnimplementedMethodsrc_fileџџџџџџџџconst string&џџџџsrc_lineџџџџџџџџconst intџџџџsrc_methodџџџџџџџџconst string&џџџџџџџџwhatf/home/pascal/depot/filedata/src/filedataexception.hRU€ @brief accessor to the error message @return the error messageџџџџ&UnimplementedMethod$const char**~ UnimplementedMethodf/home/pascal/depot/filedata/src/filedataexception.hMM%џџџџџџџџ&UnimplementedMethodџџџџsrc_filef/home/pascal/depot/filedata/src/filedataexception.hX XJ source file where the error occured  stringsrc_linef/home/pascal/depot/filedata/src/filedataexception.hZZJ line number where the error occured intsrc_methodf/home/pascal/depot/filedata/src/filedataexception.h\ \@ method where the error occured  string(UnimplementedProductf/home/pascal/depot/filedata/src/filedataexception.h <ˆ @class UnimplementedProduct thrown when an invalid hdf type is usedџџџџexception(UnimplementedProductf/home/pascal/depot/filedata/src/filedataexception.h((Ÿџџџџџџџџ(UnimplementedProductQЙ€src_fileџџџџџџџџconst string&џџџџsrc_lineџџџџџџџџconst intџџџџsrc_methodџџџџџџџџconst string&џџџџџџџџwhatf/home/pascal/depot/filedata/src/filedataexception.h14€ @brief accessor to the error message @return the error messageџџџџ(UnimplementedProductt$const char*,~ UnimplementedProductf/home/pascal/depot/filedata/src/filedataexception.h,,&џџџџџџџџ(UnimplementedProductiџџџџ(UnimplementedProductf/home/pascal/depot/filedata/src/filedataexception.h((Ÿџџџџџџџџ(UnimplementedProductQЙ€src_fileџџџџџџџџconst string&џџџџsrc_lineџџџџџџџџconst intџџџџsrc_methodџџџџџџџџconst string&џџџџџџџџwhatf/home/pascal/depot/filedata/src/filedataexception.h14€ @brief accessor to the error message @return the error messageџџџџ(UnimplementedProductt$const char*,~ UnimplementedProductf/home/pascal/depot/filedata/src/filedataexception.h,,&џџџџџџџџ(UnimplementedProductiџџџџsrc_filef/home/pascal/depot/filedata/src/filedataexception.h7 7J source file where the error occured  stringsrc_linef/home/pascal/depot/filedata/src/filedataexception.h99J line number where the error occured intsrc_methodf/home/pascal/depot/filedata/src/filedataexception.h; ;@ method where the error occured  stringbad_hdf_typef/home/pascal/depot/filedata/src/filedataexception.hawx @class bad_hdf_type thrown when an invalid hdf type is usedџџџџexceptionbad_hdf_typef/home/pascal/depot/filedata/src/filedataexception.hii…џџџџџџџџbad_hdf_typesrc_fileџџџџџџџџconst string&џџџџsrc_lineџџџџџџџџconst intџџџџtypeџџџџџџџџconst string&џџџџџџџџwhatf/home/pascal/depot/filedata/src/filedataexception.hor€ @brief accessor to the error message @return the error messageџџџџbad_hdf_type$const char*~ bad_hdf_typef/home/pascal/depot/filedata/src/filedataexception.hjjџџџџџџџџbad_hdf_typeџџџџbad_hdf_typef/home/pascal/depot/filedata/src/filedataexception.hii…џџџџџџџџbad_hdf_typesrc_fileџџџџџџџџconst string&џџџџsrc_lineџџџџџџџџconst intџџџџtypeџџџџџџџџconst string&џџџџџџџџwhatf/home/pascal/depot/filedata/src/filedataexception.hor€ @brief accessor to the error message @return the error messageџџџџbad_hdf_type$const char*~ bad_hdf_typef/home/pascal/depot/filedata/src/filedataexception.hjjџџџџџџџџbad_hdf_typeџџџџsrc_filef/home/pascal/depot/filedata/src/filedataexception.ht tџџџџ stringsrc_linef/home/pascal/depot/filedata/src/filedataexception.huuџџџџinttypef/home/pascal/depot/filedata/src/filedataexception.hv vџџџџ stringbad_indexf/home/pascal/depot/filedata/src/filedataexception.h-Ž @class bad_index Exception Index overflow when accessing to a sds dataџџџџexceptionbad_indexf/home/pascal/depot/filedata/src/filedataexception.h џџџџџџџџbad_index€ _indexџџџџџџџџ const long long&џџџџ_index_maxџџџџџџџџ const long long&џџџџџџџџwhatf/home/pascal/depot/filedata/src/filedataexception.h&)€ @brief accessor to the error message @return the error messageџџџџbad_indexЄconst char*~ bad_indexf/home/pascal/depot/filedata/src/filedataexception.h!!џџџџџџџџbad_indexџџџ€џџџџbad_indexf/home/pascal/depot/filedata/src/filedataexception.h џџџџџџџџbad_index€ _indexџџџџџџџџ const long long&џџџџ_index_maxџџџџџџџџ const long long&џџџџџџџџwhatf/home/pascal/depot/filedata/src/filedataexception.h&)€ @brief accessor to the error message @return the error messageџџџџbad_indexЄconst char*~ bad_indexf/home/pascal/depot/filedata/src/filedataexception.h!!џџџџџџџџbad_indexџџџ€џџџџ indexf/home/pascal/depot/filedata/src/filedataexception.h++џџџџlong longindex_maxf/home/pascal/depot/filedata/src/filedataexception.h,,џџџџlong longbad_levelf/home/pascal/depot/filedata/src/filedataexception.hВРЖ @class bad_level exception thrown when trying to access a product using a bad level numberџџџџexceptionbad_levelf/home/pascal/depot/filedata/src/filedataexception.hДД0џџџџџџџџbad_levelЖ~ levelџџџџџџџџconst int&џџџџџџџџwhatf/home/pascal/depot/filedata/src/filedataexception.hКН€ @brief accessor to the error message @return the error messageџџџџbad_level$const char*~ bad_levelf/home/pascal/depot/filedata/src/filedataexception.hЕЕџџџџџџџџbad_levelџџџџbad_levelf/home/pascal/depot/filedata/src/filedataexception.hДД0џџџџџџџџbad_levelЖ~ levelџџџџџџџџconst int&џџџџџџџџwhatf/home/pascal/depot/filedata/src/filedataexception.hКН€ @brief accessor to the error message @return the error messageџџџџbad_level$const char*~ bad_levelf/home/pascal/depot/filedata/src/filedataexception.hЕЕџџџџџџџџbad_levelџџџџ levelf/home/pascal/depot/filedata/src/filedataexception.hПП џџџџintbad_netcdf_filef/home/pascal/depot/filedata/src/filedataexception.h„’Ф @class bad_netcdf_file Thrown when a netcdf filename doesn't seem to be valid and can't be openedџџџџexceptionbad_netcdf_filef/home/pascal/depot/filedata/src/filedataexception.h††Aџџџџџџџџbad_netcdf_file€filenameџџџџџџџџconst string&џџџџџџџџwhatf/home/pascal/depot/filedata/src/filedataexception.hŒ€ @brief accessor to the error message @return the error messageџџџџbad_netcdf_fileЖ+Єconst char*"~ bad_netcdf_filef/home/pascal/depot/filedata/src/filedataexception.h‡‡!џџџџџџџџbad_netcdf_fileџџџџbad_netcdf_filef/home/pascal/depot/filedata/src/filedataexception.h††Aџџџџџџџџbad_netcdf_file€filenameџџџџџџџџconst string&џџџџџџџџwhatf/home/pascal/depot/filedata/src/filedataexception.hŒ€ @brief accessor to the error message @return the error messageџџџџbad_netcdf_fileЖ+Єconst char*"~ bad_netcdf_filef/home/pascal/depot/filedata/src/filedataexception.h‡‡!џџџџџџџџbad_netcdf_fileџџџџfilenamef/home/pascal/depot/filedata/src/filedataexception.h‘ ‘џџџџ stringbad_parametref/home/pascal/depot/filedata/src/filedataexception.hицІ @class bad_parametre exception thrown when a parametre can't be retieved in a fileџџџџexceptionbad_parametref/home/pascal/depot/filedata/src/filedataexception.hккCџџџџџџџџbad_parametreparametreџџџџџџџџconst string&џџџџџџџџwhatf/home/pascal/depot/filedata/src/filedataexception.hру€ @brief accessor to the error message @return the error messageџџџџbad_parametreџџџЄconst char*~ bad_parametref/home/pascal/depot/filedata/src/filedataexception.hллџџџџџџџџbad_parametreџџџџbad_parametref/home/pascal/depot/filedata/src/filedataexception.hккCџџџџџџџџbad_parametreparametreџџџџџџџџconst string&џџџџџџџџwhatf/home/pascal/depot/filedata/src/filedataexception.hру€ @brief accessor to the error message @return the error messageџџџџbad_parametreџџџЄconst char*~ bad_parametref/home/pascal/depot/filedata/src/filedataexception.hллџџџџџџџџbad_parametreџџџџparametref/home/pascal/depot/filedata/src/filedataexception.hх хџџџџ string"bad_parametre_idxf/home/pascal/depot/filedata/src/filedataexception.hъјЎ @class bad_parametre_idx exception thrown when a parametre can't be retieved in a fileџџџџexception"bad_parametre_idxf/home/pascal/depot/filedata/src/filedataexception.hььVџџџџџџџџ"bad_parametre_idxparametre_indexџџџџџџџџconst int&џџџџџџџџwhatf/home/pascal/depot/filedata/src/filedataexception.hђѕ€ @brief accessor to the error message @return the error messageџџџџ"bad_parametre_idxџџџЄconst char*&~ bad_parametre_idxf/home/pascal/depot/filedata/src/filedataexception.hээ#џџџџџџџџ"bad_parametre_idxџџџџ"bad_parametre_idxf/home/pascal/depot/filedata/src/filedataexception.hььVџџџџџџџџ"bad_parametre_idxparametre_indexџџџџџџџџconst int&џџџџџџџџwhatf/home/pascal/depot/filedata/src/filedataexception.hђѕ€ @brief accessor to the error message @return the error messageџџџџ"bad_parametre_idxџџџЄconst char*&~ bad_parametre_idxf/home/pascal/depot/filedata/src/filedataexception.hээ#џџџџџџџџ"bad_parametre_idxџџџџparametre_indexf/home/pascal/depot/filedata/src/filedataexception.hїїџџџџintbad_product_idf/home/pascal/depot/filedata/src/filedataexception.hХгВ @class bad_level exception thrown when trying to access a product using a bad product idџџџџexceptionbad_product_idf/home/pascal/depot/filedata/src/filedataexception.hЧЧDџџџџџџџџbad_product_idproduct_idџџџџџџџџconst int&џџџџџџџџwhatf/home/pascal/depot/filedata/src/filedataexception.hЭа€ @brief accessor to the error message @return the error messageџџџџbad_product_id$const char* ~ bad_product_idf/home/pascal/depot/filedata/src/filedataexception.hШШ џџџџџџџџbad_product_idЖ­€џџџџbad_product_idf/home/pascal/depot/filedata/src/filedataexception.hЧЧDџџџџџџџџbad_product_idproduct_idџџџџџџџџconst int&џџџџџџџџwhatf/home/pascal/depot/filedata/src/filedataexception.hЭа€ @brief accessor to the error message @return the error messageџџџџbad_product_id$const char* ~ bad_product_idf/home/pascal/depot/filedata/src/filedataexception.hШШ џџџџџџџџbad_product_idЖ­€џџџџproduct_idf/home/pascal/depot/filedata/src/filedataexception.hввџџџџintbad_rankf/home/pascal/depot/filedata/src/filedataexception.hќ’ @class bad_rank Exception bad given rank when reading the data of a fileџџџџexceptionbad_rankf/home/pascal/depot/filedata/src/filedataexception.h~џџџџџџџџbad_rankrgiven_rankџџџџџџџџconst int&џџџџauthorized_rankџџџџџџџџconst int&џџџџџџџџwhatf/home/pascal/depot/filedata/src/filedataexception.h  € @brief accessor to the error message @return the error messageџџџџbad_rankџџџЄconst char*~ bad_rankf/home/pascal/depot/filedata/src/filedataexception.hџџџџџџџџbad_rankџџџ€џџџџbad_rankf/home/pascal/depot/filedata/src/filedataexception.h~џџџџџџџџbad_rankrgiven_rankџџџџџџџџconst int&џџџџauthorized_rankџџџџџџџџconst int&џџџџџџџџwhatf/home/pascal/depot/filedata/src/filedataexception.h  € @brief accessor to the error message @return the error messageџџџџbad_rankџџџЄconst char*~ bad_rankf/home/pascal/depot/filedata/src/filedataexception.hџџџџџџџџbad_rankџџџ€џџџџauthorized_rankf/home/pascal/depot/filedata/src/filedataexception.hџџџџintgiven_rankf/home/pascal/depot/filedata/src/filedataexception.hџџџџintbad_read_filef/home/pascal/depot/filedata/src/filedataexception.hr€  @class bad_read_file Exception thrown when an error occurs while reading a fileџџџџexceptionbad_read_filef/home/pascal/depot/filedata/src/filedataexception.htt@џџџџџџџџbad_read_fileџџџ€filenameџџџџџџџџconst string&џџџџџџџџwhatf/home/pascal/depot/filedata/src/filedataexception.hz}€ @brief accessor to the error message @return the error messageџџџџbad_read_fileџџџЄconst char*~ bad_read_filef/home/pascal/depot/filedata/src/filedataexception.huuџџџџџџџџbad_read_fileџџџ€џџџџbad_read_filef/home/pascal/depot/filedata/src/filedataexception.htt@џџџџџџџџbad_read_fileџџџ€filenameџџџџџџџџconst string&џџџџџџџџwhatf/home/pascal/depot/filedata/src/filedataexception.hz}€ @brief accessor to the error message @return the error messageџџџџbad_read_fileџџџЄconst char*~ bad_read_filef/home/pascal/depot/filedata/src/filedataexception.huuџџџџџџџџbad_read_fileџџџ€џџџџfilenamef/home/pascal/depot/filedata/src/filedataexception.h џџџџ string bad_record_indexf/home/pascal/depot/filedata/src/filedataexception.h›ЎЪ @class bad_record_index exception thrown when an invalid record index is specified in a PARASOL fileџџџџexception bad_record_indexf/home/pascal/depot/filedata/src/filedataexception.h џџџџџџџџ bad_record_indexfilenameџџџџџџџџconst string&џџџџrecord_idxџџџџџџџџconst intџџџџnb_record_maxџџџџџџџџconst intџџџџsource_fileџџџџџџџџconst string&џџџџsource_lineџџџџџџџџconst intџџџџџџџџwhatf/home/pascal/depot/filedata/src/filedataexception.hЃЇ€ @brief accessor to the error message @return the error messageџџџџ bad_record_index$const char*$~ bad_record_indexf/home/pascal/depot/filedata/src/filedataexception.hžž"џџџџџџџџ bad_record_indexџџџџ bad_record_indexf/home/pascal/depot/filedata/src/filedataexception.h џџџџџџџџ bad_record_indexfilenameџџџџџџџџconst string&џџџџrecord_idxџџџџџџџџconst intџџџџnb_record_maxџџџџџџџџconst intџџџџsource_fileџџџџџџџџconst string&џџџџsource_lineџџџџџџџџconst intџџџџџџџџwhatf/home/pascal/depot/filedata/src/filedataexception.hЃЇ€ @brief accessor to the error message @return the error messageџџџџ bad_record_index$const char*$~ bad_record_indexf/home/pascal/depot/filedata/src/filedataexception.hžž"џџџџџџџџ bad_record_indexџџџџfilenamef/home/pascal/depot/filedata/src/filedataexception.hЉ Љџџџџ stringnb_record_maxf/home/pascal/depot/filedata/src/filedataexception.hЋЋџџџџintrecord_idxf/home/pascal/depot/filedata/src/filedataexception.hЊЊџџџџintsource_filef/home/pascal/depot/filedata/src/filedataexception.hЌ Ќџџџџ stringsource_linef/home/pascal/depot/filedata/src/filedataexception.h­­џџџџintbad_typef/home/pascal/depot/filedata/src/filedataexception.h3GŒ @class bad_type Type incompatibility when accessing to a sds data. For example, calling the template method getValue\<long int\> on an sds that contains \<double\> values will throw this exceptionџџџџexceptionbad_typef/home/pascal/depot/filedata/src/filedataexception.h59џџџџџџџџbad_typet1џџџџџџџџconst string&џџџџt2џџџџџџџџconst string&џџџџ_sdsџџџџџџџџconst string&џџџџџџџџwhatf/home/pascal/depot/filedata/src/filedataexception.h?B€ @brief accessor to the error message @return the error messageџџџџbad_type$const char*~ bad_typef/home/pascal/depot/filedata/src/filedataexception.h::џџџџџџџџbad_typeџџџџbad_typef/home/pascal/depot/filedata/src/filedataexception.h59џџџџџџџџbad_typet1џџџџџџџџconst string&џџџџt2џџџџџџџџconst string&џџџџ_sdsџџџџџџџџconst string&џџџџџџџџwhatf/home/pascal/depot/filedata/src/filedataexception.h?B€ @brief accessor to the error message @return the error messageџџџџbad_type$const char*~ bad_typef/home/pascal/depot/filedata/src/filedataexception.h::џџџџџџџџbad_typeџџџџinvocatedTypef/home/pascal/depot/filedata/src/filedataexception.hD Dџџџџ stringrealTypef/home/pascal/depot/filedata/src/filedataexception.hE Eџџџџ stringsdsf/home/pascal/depot/filedata/src/filedataexception.hF Fџџџџ string invalid_filenamef/home/pascal/depot/filedata/src/filedataexception.h{—Ц @class invalid_filename thrown when a satellite file doesn't have a name matching the nomenclaturaџџџџexception invalid_filenamef/home/pascal/depot/filedata/src/filedataexception.h„„Йџџџџџџџџ invalid_filenamesrc_fileџџџџџџџџconst string&џџџџsrc_lineџџџџџџџџconst intџџџџfilenameџџџџџџџџconst string&џџџџ sensorџџџџџџџџconst string&џџџџџџџџwhatf/home/pascal/depot/filedata/src/filedataexception.hŽ‘€ @brief accessor to the error message @return the error messageџџџџ invalid_filename$const char*$~ invalid_filenamef/home/pascal/depot/filedata/src/filedataexception.hˆˆ"џџџџџџџџ invalid_filenameџџџџ invalid_filenamef/home/pascal/depot/filedata/src/filedataexception.h„„Йџџџџџџџџ invalid_filenamesrc_fileџџџџџџџџconst string&џџџџsrc_lineџџџџџџџџconst intџџџџfilenameџџџџџџџџconst string&џџџџ sensorџџџџџџџџconst string&џџџџџџџџwhatf/home/pascal/depot/filedata/src/filedataexception.hŽ‘€ @brief accessor to the error message @return the error messageџџџџ invalid_filename$const char*$~ invalid_filenamef/home/pascal/depot/filedata/src/filedataexception.hˆˆ"џџџџџџџџ invalid_filenameџџџџfilenamef/home/pascal/depot/filedata/src/filedataexception.h• •џџџџ string sensorf/home/pascal/depot/filedata/src/filedataexception.h– –џџџџ stringsrc_filef/home/pascal/depot/filedata/src/filedataexception.h“ “џџџџ stringsrc_linef/home/pascal/depot/filedata/src/filedataexception.h””џџџџint(latitude_out_of_filef/home/pascal/depot/filedata/src/filedataexception.h^mІ @class latitude_out_of_file Thrown when a latitude can't be found in a file's dataџџџџexception(latitude_out_of_filef/home/pascal/depot/filedata/src/filedataexception.h``cџџџџџџџџ(latitude_out_of_fileџџџ€filenameџџџџџџџџconst string&џџџџlatџџџџџџџџconst double&џџџџџџџџwhatf/home/pascal/depot/filedata/src/filedataexception.hfi€ @brief accessor to the error message @return the error messageџџџџ(latitude_out_of_file$const char*,~ latitude_out_of_filef/home/pascal/depot/filedata/src/filedataexception.haa&џџџџџџџџ(latitude_out_of_fileџџџџ(latitude_out_of_filef/home/pascal/depot/filedata/src/filedataexception.h``cџџџџџџџџ(latitude_out_of_fileџџџ€filenameџџџџџџџџconst string&џџџџlatџџџџџџџџconst double&џџџџџџџџwhatf/home/pascal/depot/filedata/src/filedataexception.hfi€ @brief accessor to the error message @return the error messageџџџџ(latitude_out_of_file$const char*,~ latitude_out_of_filef/home/pascal/depot/filedata/src/filedataexception.haa&џџџџџџџџ(latitude_out_of_fileџџџџfilenamef/home/pascal/depot/filedata/src/filedataexception.hk kџџџџ stringlatf/home/pascal/depot/filedata/src/filedataexception.hl lџџџџ double*longitude_out_of_filef/home/pascal/depot/filedata/src/filedataexception.hKZЊ @class longitude_out_of_file Thrown when a longitude can't be found in a file's dataџџџџexception*longitude_out_of_filef/home/pascal/depot/filedata/src/filedataexception.hMMfџџџџџџџџ*longitude_out_of_filei_filenameџџџџџџџџconst string&џџџџ_lonџџџџџџџџconst double&џџџџџџџџwhatf/home/pascal/depot/filedata/src/filedataexception.hSV€ @brief accessor to the error message @return the error messageџџџџ*longitude_out_of_fileџџџЄconst char*.~ longitude_out_of_filef/home/pascal/depot/filedata/src/filedataexception.hNN'џџџџџџџџ*longitude_out_of_fileџџџџ*longitude_out_of_filef/home/pascal/depot/filedata/src/filedataexception.hMMfџџџџџџџџ*longitude_out_of_filei_filenameџџџџџџџџconst string&џџџџ_lonџџџџџџџџconst double&џџџџџџџџwhatf/home/pascal/depot/filedata/src/filedataexception.hSV€ @brief accessor to the error message @return the error messageџџџџ*longitude_out_of_fileџџџЄconst char*.~ longitude_out_of_filef/home/pascal/depot/filedata/src/filedataexception.hNN'џџџџџџџџ*longitude_out_of_fileџџџџfilenamef/home/pascal/depot/filedata/src/filedataexception.hX Xџџџџ stringlonf/home/pascal/depot/filedata/src/filedataexception.hY Yџџџџ double] filedatareader.hd/home/pascal/depot/filedata/src/filedatareader.cpp%yДшаИџџџџd/home/pascal/depot/filedata/src/filedatareader.cppпнЉ filedatareader.hт§ƒd/home/pascal/depot/filedata/src/filedatareader.cppџџџџџџџџџџџџFileDataReaderd/home/pascal/depot/filedata/src/filedatareader.cpp џџџџџџџџFileDataReadernameџџџџџџџџconst string&џџџџmodeџџџџџџџџconst string&џџџџџџџџhas_sdsd/home/pascal/depot/filedata/src/filedatareader.cpp!џџџџџџџџFileDataReadersds_nameџџџџџџџџconst string&џџџџbool ~ FileDataReaderd/home/pascal/depot/filedata/src/filedatareader.cppџџџџџџџџFileDataReaderџџџџ:filedata.h cmath cfloat hdfi.h string`/home/pascal/depot/filedata/src/filedatareader.h%yДшаИџџџџ cmath†Ьfiledata.hХ)`/home/pascal/depot/filedata/src/filedatareader.hBS%Ш string Xaч cfloatыx hdfi.h TСб`/home/pascal/depot/filedata/src/filedatareader.hџџџџџџџџџџџџFileDataReader`/home/pascal/depot/filedata/src/filedatareader.h@J@author Nicolas PASCAL ; James MANLEYџџџџFileDataFileDataReader`/home/pascal/depot/filedata/src/filedatareader.h:џџџџџџџџFileDataReaderQЙ€nameџџџџџџџџconst string&џџџџmodeџџџџџџџџconst string&џџџџџџџџget_calibration`/home/pascal/depot/filedata/src/filedatareader.h=?џџџџџџџџFileDataReadersds_nameџџџџџџџџconst string&џџџџ scaleџџџџџџџџfloat64&џџџџ offsetџџџџџџџџfloat64&џџџџvoid*get_dataset_data_type`/home/pascal/depot/filedata/src/filedatareader.h""8џџџџџџџџFileDataReaderDsds_nameџџџџџџџџ stringџџџџint get_dataset_name`/home/pascal/depot/filedata/src/filedatareader.h  ,џџџџџџџџFileDataReaderDiџџџџџџџџintџџџџ stringget_file_attr`/home/pascal/depot/filedata/src/filedatareader.h**VџџџџџџџџFileDataReader„attr_nameџџџџџџџџ stringџџџџ stringget_n_dataset`/home/pascal/depot/filedata/src/filedatareader.h!џџџџџџџџFileDataReaderiDintget_product`/home/pascal/depot/filedata/src/filedatareader.h25џџџџџџџџFileDataReaderЖ­„ stringget_scaling`/home/pascal/depot/filedata/src/filedatareader.h7;џџџџџџџџFileDataReadersds_nameџџџџџџџџconst string&џџџџ scaleџџџџџџџџfloat64&џџџџ offsetџџџџџџџџfloat64&џџџџvoidget_values_attr`/home/pascal/depot/filedata/src/filedatareader.h((@џџџџџџџџFileDataReader„attr_nameџџџџџџџџ stringџџџџ string.get_values_attr_dataset`/home/pascal/depot/filedata/src/filedatareader.h$$IџџџџџџџџFileDataReaderФsds_nameџџџџџџџџ stringџџџџattrџџџџџџџџ stringџџџџ stringhas_attr`/home/pascal/depot/filedata/src/filedatareader.h,,:џџџџџџџџFileDataReader„attr_nameџџџџџџџџ stringџџџџbool has_attr_dataset`/home/pascal/depot/filedata/src/filedatareader.h&&@џџџџџџџџFileDataReaderDsds_nameџџџџџџџџ stringџџџџattrџџџџџџџџ stringџџџџboolhas_file_attr`/home/pascal/depot/filedata/src/filedatareader.h..MџџџџџџџџFileDataReaderattr_nameџџџџџџџџ stringџџџџboolhas_sds`/home/pascal/depot/filedata/src/filedatareader.h0 0(џџџџџџџџFileDataReaderЖ&€sds_nameџџџџџџџџconst string&џџџџbool ~ FileDataReader`/home/pascal/depot/filedata/src/filedatareader.h џџџџџџџџFileDataReaderЖдџџџџget_calibration`/home/pascal/depot/filedata/src/filedatareader.h=?џџџџџџџџFileDataReadersds_nameџџџџџџџџconst string&џџџџ scaleџџџџџџџџfloat64&џџџџ offsetџџџџџџџџfloat64&џџџџvoidget_file_attr`/home/pascal/depot/filedata/src/filedatareader.h**VџџџџџџџџFileDataReader„attr_nameџџџџџџџџ stringџџџџ stringget_product`/home/pascal/depot/filedata/src/filedatareader.h25џџџџџџџџFileDataReaderЖ­„ stringget_scaling`/home/pascal/depot/filedata/src/filedatareader.h7;џџџџџџџџFileDataReadersds_nameџџџџџџџџconst string&џџџџ scaleџџџџџџџџfloat64&џџџџ offsetџџџџџџџџfloat64&џџџџvoidget_values_attr`/home/pascal/depot/filedata/src/filedatareader.h((@џџџџџџџџFileDataReader„attr_nameџџџџџџџџ stringџџџџ stringhas_attr`/home/pascal/depot/filedata/src/filedatareader.h,,:џџџџџџџџFileDataReader„attr_nameџџџџџџџџ stringџџџџboolhas_file_attr`/home/pascal/depot/filedata/src/filedatareader.h..MџџџџџџџџFileDataReaderattr_nameџџџџџџџџ stringџџџџbool<exceptiontools.hZ/home/pascal/depot/filedata/src/g_exception.h%yУуцџџџџtools.hАох7Z/home/pascal/depot/filedata/src/g_exception.hpqГPexceptionOZ/home/pascal/depot/filedata/src/g_exception.hџџџџџџџџџџџџg_exceptionZ/home/pascal/depot/filedata/src/g_exception.h@‚ @class g_exception g_exception.h @brief Generic exception classџџџџexceptiong_exceptionZ/home/pascal/depot/filedata/src/g_exception.h&(џџџџџџџџg_exceptionfileџџџџџџџџconst char*џџџџlineџџџџџџџџintџџџџmsgџџџџџџџџ stringџџџџџџџџsetZ/home/pascal/depot/filedata/src/g_exception.h/3 @brief generic setter @param file file of the exception @param line line of the exception @param msg message of the exceptionџџџџg_exceptionfileџџџџџџџџconst char*џџџџlineџџџџџџџџintџџџџmsgџџџџџџџџ stringџџџџvoidwhatZ/home/pascal/depot/filedata/src/g_exception.h<?Ј @brief print the message of the exception @return the description of the exceptionџџџџg_exceptionџџџЄconst char*~ g_exceptionZ/home/pascal/depot/filedata/src/g_exception.h77&џџџџџџџџg_exceptionџџџџg_exceptionZ/home/pascal/depot/filedata/src/g_exception.h&(џџџџџџџџg_exceptionfileџџџџџџџџconst char*џџџџlineџџџџџџџџintџџџџmsgџџџџџџџџ stringџџџџџџџџsetZ/home/pascal/depot/filedata/src/g_exception.h/3 @brief generic setter @param file file of the exception @param line line of the exception @param msg message of the exceptionџџџџg_exceptionfileџџџџџџџџconst char*џџџџlineџџџџџџџџintџџџџmsgџџџџџџџџ stringџџџџvoidwhatZ/home/pascal/depot/filedata/src/g_exception.h<?Ј @brief print the message of the exception @return the description of the exceptionџџџџg_exceptionџџџЄconst char*~ g_exceptionZ/home/pascal/depot/filedata/src/g_exception.h77&џџџџџџџџg_exceptionџџџџfileZ/home/pascal/depot/filedata/src/g_exception.h T file where the exception has been raised  stringlineZ/home/pascal/depot/filedata/src/g_exception.h T line where the exception has been raised intmsgZ/home/pascal/depot/filedata/src/g_exception.h & exception message  stringstdZ/home/pascal/depot/filedata/src/g_exception.ha earth_geometry.hv/home/pascal/depot/filedata/src/geometry/earth_geometry.cpp%yКСЛ џџџџ earth_geometry.h”DpUv/home/pascal/depot/filedata/src/geometry/earth_geometry.cpp.v/home/pascal/depot/filedata/src/geometry/earth_geometry.cppџџџџџџџџџџџџ get_Nv/home/pascal/depot/filedata/src/geometry/earth_geometry.cpp"џџџџџџџџ Earth WGS84latџџџџџџџџ doubleџџџџ doubleget_radiusv/home/pascal/depot/filedata/src/geometry/earth_geometry.cppџџџџџџџџ EarthЕщp€ double>"geometry_common.hr/home/pascal/depot/filedata/src/geometry/earth_geometry.h%yКСЪРџџџџr/home/pascal/depot/filedata/src/geometry/earth_geometry.hђЪ№5"geometry_common.hŒсЗJr/home/pascal/depot/filedata/src/geometry/earth_geometry.hџџџџџџџџџџџџ Earthr/home/pascal/depot/filedata/src/geometry/earth_geometry.hˆџџџџџџџџget_radiusr/home/pascal/depot/filedata/src/geometry/earth_geometry.hH HА @brief return the distance to the center of the earth in meters Based on the WGS84 conventions, if the earth is considered as : - a sphere, it will have a radius of 6371007.2 m - an ellipsoid, the equatorial radius will be 6378137.0 m and the polar 6356752.3142 m @return the radius of the earth in meters, eventually at the given latitudeџџџџ Earthџџџ€ doubleauthalic_radiusr/home/pascal/depot/filedata/src/geometry/earth_geometry.h3  if earth is considered as a perfect sphere, authalic radius ("equal aera") (m) const doubleg0r/home/pascal/depot/filedata/src/geometry/earth_geometry.h$` gravity constant as defined by the WMO (m.s-2) const double Modelr/home/pascal/depot/filedata/src/geometry/earth_geometry.h!! џџџџ Model WGS84r/home/pascal/depot/filedata/src/geometry/earth_geometry.h&Gџџџџџџџџ Earth get_Nr/home/pascal/depot/filedata/src/geometry/earth_geometry.h??"д @brief computes N the radius of curvature in the prime vertical at the given latitude, equal to a/sqrt(1 - e^2 sin^2 B) @param theta the colatitude, in radians @return radius of curvature in the prime vertical at the given latitudeџџџџ Earth WGS84.yr thetaџџџџџџџџ doubleџџџџ double Ime2r/home/pascal/depot/filedata/src/geometry/earth_geometry.h99#џџџџconst doublear/home/pascal/depot/filedata/src/geometry/earth_geometry.h(("P equatorial radius, semi-major axis (m) const doublea2r/home/pascal/depot/filedata/src/geometry/earth_geometry.h,,6 square of semi-major axis const doublea4r/home/pascal/depot/filedata/src/geometry/earth_geometry.h..!< 4th power of semi-major axis const doubleabr/home/pascal/depot/filedata/src/geometry/earth_geometry.h77 џџџџconst doublebr/home/pascal/depot/filedata/src/geometry/earth_geometry.h**'H polare radius, semi-minor axis (m) const doubleb2r/home/pascal/depot/filedata/src/geometry/earth_geometry.h006 square of semi-minor axis const doubleb4r/home/pascal/depot/filedata/src/geometry/earth_geometry.h22!< 4th power of semi-minor axis const doubleer/home/pascal/depot/filedata/src/geometry/earth_geometry.h66"< eccentricity ( eccentricity)const doublee2r/home/pascal/depot/filedata/src/geometry/earth_geometry.h44(8 square of the eccentricity const doublee22r/home/pascal/depot/filedata/src/geometry/earth_geometry.h88)џџџџconst doubleegeometry.hj/home/pascal/depot/filedata/src/geometry/geometry.cpp%yЛљ јџџџџj/home/pascal/depot/filedata/src/geometry/geometry.cppШЭѓ-geometry.h7\<вj/home/pascal/depot/filedata/src/geometry/geometry.cppџџџџџџџџџџџџ=Matrix3Dj/home/pascal/depot/filedata/src/geometry/geometry.cpp>@џџџџџџџџCarthesianMatrix3D xxџџџџџџџџ doubleџџџџxyџџџџџџџџ doubleџџџџxzџџџџџџџџ doubleџџџџyxџџџџџџџџ doubleџџџџyyџџџџџџџџ doubleџџџџyzџџџџџџџџ doubleџџџџzxџџџџџџџџ doubleџџџџzyџџџџџџџџ doubleџџџџzzџџџџџџџџ doubleџџџџџџџџMatrix3Dj/home/pascal/depot/filedata/src/geometry/geometry.cppBDџџџџџџџџCarthesianMatrix3Dmџџџџџџџџconst Matrix3D&џџџџџџџџPoint3Dj/home/pascal/depot/filedata/src/geometry/geometry.cpp!џџџџџџџџCarthesianPoint3Dxџџџџџџџџ doubleџџџџyџџџџџџџџ doubleџџџџzџџџџџџџџ doubleџџџџџџџџPoint3Dj/home/pascal/depot/filedata/src/geometry/geometry.cpp#%џџџџџџџџCarthesianPoint3Dpџџџџџџџџ4const Carthesian::Point3D&џџџџџџџџPoint3Dj/home/pascal/depot/filedata/src/geometry/geometry.cpp`bџџџџџџџџSphericalPoint3Drџџџџџџџџ doubleџџџџ thetaџџџџџџџџ doubleџџџџphiџџџџџџџџ doubleџџџџџџџџPoint3Dj/home/pascal/depot/filedata/src/geometry/geometry.cppdfџџџџџџџџSphericalPoint3Dpџџџџџџџџ2const Spherical::Point3D&џџџџџџџџPoint3Dj/home/pascal/depot/filedata/src/geometry/geometry.cpp|~џџџџџџџџGeocentricPoint3Dlatџџџџџџџџ doubleџџџџlonџџџџџџџџ doubleџџџџaltџџџџџџџџ doubleџџџџџџџџPoint3Dj/home/pascal/depot/filedata/src/geometry/geometry.cpp€‚џџџџџџџџGeocentricPoint3Dpџџџџџџџџ4const Geocentric::Point3D&џџџџџџџџPoint3Dj/home/pascal/depot/filedata/src/geometry/geometry.cpp—™џџџџџџџџGeodeticPoint3Dlatџџџџџџџџ doubleџџџџlonџџџџџџџџ doubleџџџџaltџџџџџџџџ doubleџџџџџџџџPoint3Dj/home/pascal/depot/filedata/src/geometry/geometry.cpp›џџџџџџџџGeodeticPoint3Dpџџџџџџџџ0const Geodetic::Point3D&џџџџџџџџSegment3Dj/home/pascal/depot/filedata/src/geometry/geometry.cpp?AџџџџџџџџCarthesianSegment3Dp1џџџџџџџџconst Point3D&џџџџp2џџџџџџџџconst Point3D&џџџџџџџџSegment3Dj/home/pascal/depot/filedata/src/geometry/geometry.cppCIџџџџџџџџCarthesianSegment3Dsџџџџџџџџ8const Carthesian::Segment3D&џџџџџџџџSegment3Dj/home/pascal/depot/filedata/src/geometry/geometry.cppKMџџџџџџџџCarthesianSegment3Dp1џџџџџџџџ0const Geodetic::Point3D&џџџџp2џџџџџџџџ0const Geodetic::Point3D&џџџџџџџџVector3Dj/home/pascal/depot/filedata/src/geometry/geometry.cppхчџџџџџџџџCarthesianVector3Dxџџџџџџџџ doubleџџџџyџџџџџџџџ doubleџџџџzџџџџџџџџ doubleџџџџџџџџVector3Dj/home/pascal/depot/filedata/src/geometry/geometry.cppщыџџџџџџџџCarthesianVector3Dvџџџџџџџџ6const Carthesian::Vector3D&џџџџџџџџVector3Dj/home/pascal/depot/filedata/src/geometry/geometry.cppџџџџџџџџCarthesianVector3Dp1џџџџџџџџ4const Carthesian::Point3D&џџџџp2џџџџџџџџ4const Carthesian::Point3D&џџџџџџџџ anglej/home/pascal/depot/filedata/src/geometry/geometry.cppџџџџџџџџCarthesianv1џџџџџџџџ6const Carthesian::Vector3D&џџџџv2џџџџџџџџ6const Carthesian::Vector3D&џџџџ doublecrossproductj/home/pascal/depot/filedata/src/geometry/geometry.cpp џџџџџџџџCarthesianv1џџџџџџџџ6const Carthesian::Vector3D&џџџџv2џџџџџџџџ6const Carthesian::Vector3D&џџџџvoutџџџџџџџџ*Carthesian::Vector3D&џџџџvoidcrossproductj/home/pascal/depot/filedata/src/geometry/geometry.cppџџџџџџџџCarthesianv1џџџџџџџџ6const Carthesian::Vector3D&џџџџv2џџџџџџџџ6const Carthesian::Vector3D&џџџџ(Carthesian::Vector3Ddotproductj/home/pascal/depot/filedata/src/geometry/geometry.cpp џџџџџџџџCarthesianv1џџџџџџџџ6const Carthesian::Vector3D&џџџџv2џџџџџџџџ6const Carthesian::Vector3D&џџџџ doubledotproductj/home/pascal/depot/filedata/src/geometry/geometry.cppLQџџџџџџџџCarthesianmџџџџџџџџ6const Carthesian::Matrix3D&џџџџvџџџџџџџџ6const Carthesian::Vector3D&џџџџvoutџџџџџџџџ*Carthesian::Vector3D&џџџџvoiddotproductj/home/pascal/depot/filedata/src/geometry/geometry.cppSWџџџџџџџџCarthesianmџџџџџџџџ6const Carthesian::Matrix3D&џџџџvџџџџџџџџ6const Carthesian::Vector3D&џџџџ(Carthesian::Vector3D$get_haversine_distj/home/pascal/depot/filedata/src/geometry/geometry.cpp8<џџџџџџџџGeocentriclat1џџџџџџџџ doubleџџџџlon1џџџџџџџџ doubleџџџџlat2џџџџџџџџ doubleџџџџlon2џџџџџџџџ doubleџџџџconst double*get_orthodormic_anglej/home/pascal/depot/filedata/src/geometry/geometry.cpp+џџџџџџџџGeocentriclat1џџџџџџџџ doubleџџџџlon1џџџџџџџџ doubleџџџџlat2џџџџџџџџ doubleџџџџlon2џџџџџџџџ doubleџџџџconst double*get_square_plane_distj/home/pascal/depot/filedata/src/geometry/geometry.cpp-0џџџџџџџџGeocentricdlatџџџџџџџџconst doubleџџџџdlonџџџџџџџџconst doubleџџџџconst double*get_square_plane_distj/home/pascal/depot/filedata/src/geometry/geometry.cpp26џџџџџџџџGeocentriclat1џџџџџџџџconst doubleџџџџlon1џџџџџџџџconst doubleџџџџlat2џџџџџџџџconst doubleџџџџlon2џџџџџџџџconst doubleџџџџconst doubleintersectionj/home/pascal/depot/filedata/src/geometry/geometry.cppЊзџџџџџџџџCarthesianp1џџџџџџџџ4const Carthesian::Point3D&џџџџp2џџџџџџџџ4const Carthesian::Point3D&џџџџp3џџџџџџџџ4const Carthesian::Point3D&џџџџp4џџџџџџџџ4const Carthesian::Point3D&џџџџpaџџџџџџџџ(Carthesian::Point3D&џџџџpbџџџџџџџџ(Carthesian::Point3D&џџџџmuaџџџџџџџџdouble&џџџџmubџџџџџџџџdouble&џџџџboolintersectionj/home/pascal/depot/filedata/src/geometry/geometry.cppќўџџџџџџџџCarthesianp1p2џџџџџџџџ8const Carthesian::Segment3D&џџџџp3p4џџџџџџџџ8const Carthesian::Segment3D&џџџџpapbџџџџџџџџ,Carthesian::Segment3D&џџџџmuaџџџџџџџџdouble&џџџџmubџџџџџџџџdouble&џџџџboolnormj/home/pascal/depot/filedata/src/geometry/geometry.cppјњџџџџџџџџCarthesianVector3D doubleoperator *j/home/pascal/depot/filedata/src/geometry/geometry.cpp-1џџџџџџџџCarthesianVector3Dvalџџџџџџџџconst double&џџџџ4const Carthesian::Vector3Doperator +j/home/pascal/depot/filedata/src/geometry/geometry.cpp‘•џџџџџџџџCarthesianPoint3D vџџџџџџџџ6const Carthesian::Vector3D&џџџџ2const Carthesian::Point3Doperator /j/home/pascal/depot/filedata/src/geometry/geometry.cpp37џџџџџџџџCarthesianVector3Dvalџџџџџџџџconst double&џџџџ4const Carthesian::Vector3Doperator =j/home/pascal/depot/filedata/src/geometry/geometry.cpp'+џџџџџџџџCarthesianPoint3Dpџџџџџџџџ4const Carthesian::Point3D&џџџџ(Carthesian::Point3D&operator =j/home/pascal/depot/filedata/src/geometry/geometry.cppOSџџџџџџџџCarthesianSegment3Dsџџџџџџџџ8const Carthesian::Segment3D&џџџџ,Carthesian::Segment3D&operator =j/home/pascal/depot/filedata/src/geometry/geometry.cpphlџџџџџџџџSphericalPoint3Dpџџџџџџџџ2const Spherical::Point3D&џџџџ&Spherical::Point3D&operator =j/home/pascal/depot/filedata/src/geometry/geometry.cpp„ˆџџџџџџџџGeocentricPoint3Dpџџџџџџџџ4const Geocentric::Point3D&џџџџ(Geocentric::Point3D&operator =j/home/pascal/depot/filedata/src/geometry/geometry.cppэёџџџџџџџџCarthesianVector3Dvџџџџџџџџ6const Carthesian::Vector3D&џџџџ*Carthesian::Vector3D&operator =j/home/pascal/depot/filedata/src/geometry/geometry.cppFJџџџџџџџџCarthesianMatrix3Dmџџџџџџџџ6const Carthesian::Matrix3D&џџџџ*Carthesian::Matrix3D&operator =j/home/pascal/depot/filedata/src/geometry/geometry.cppŸЃџџџџџџџџGeodeticPoint3Dpџџџџџџџџ0const Geodetic::Point3D&џџџџ$Geodetic::Point3D& rotatej/home/pascal/depot/filedata/src/geometry/geometry.cpp~‚џџџџџџџџCarthesianvџџџџџџџџ6const Carthesian::Vector3D&џџџџaxisџџџџџџџџ6const Carthesian::Vector3D&џџџџ thetaџџџџџџџџconst doubleџџџџ(Carthesian::Vector3D rotatej/home/pascal/depot/filedata/src/geometry/geometry.cpp„‰џџџџџџџџCarthesianvџџџџџџџџ6const Carthesian::Vector3D&џџџџaxisџџџџџџџџ6const Carthesian::Vector3D&џџџџ thetaџџџџџџџџconst doubleџџџџvoutџџџџџџџџ*Carthesian::Vector3D&џџџџvoidrotation_matrixj/home/pascal/depot/filedata/src/geometry/geometry.cppe|џџџџџџџџCarthesianaxisџџџџџџџџ6const Carthesian::Vector3D&џџџџ thetaџџџџџџџџconst doubleџџџџ matrixџџџџџџџџ*Carthesian::Matrix3D&џџџџvoidsetj/home/pascal/depot/filedata/src/geometry/geometry.cpp9=џџџџџџџџCarthesianPoint3Dxџџџџџџџџ doubleџџџџyџџџџџџџџ doubleџџџџzџџџџџџџџ doubleџџџџvoidsetj/home/pascal/depot/filedata/src/geometry/geometry.cppTWџџџџџџџџCarthesianSegment3Dp1џџџџџџџџ4const Carthesian::Point3D&џџџџp2џџџџџџџџ4const Carthesian::Point3D&џџџџvoidsetj/home/pascal/depot/filedata/src/geometry/geometry.cppnrџџџџџџџџSphericalPoint3Drџџџџџџџџ doubleџџџџ thetaџџџџџџџџ doubleџџџџphiџџџџџџџџ doubleџџџџvoidsetj/home/pascal/depot/filedata/src/geometry/geometry.cppŠŽџџџџџџџџGeocentricPoint3Dlatџџџџџџџџ doubleџџџџlonџџџџџџџџ doubleџџџџaltџџџџџџџџ doubleџџџџvoidsetj/home/pascal/depot/filedata/src/geometry/geometry.cppђіџџџџџџџџCarthesianVector3Dxџџџџџџџџ doubleџџџџyџџџџџџџџ doubleџџџџzџџџџџџџџ doubleџџџџvoidsetj/home/pascal/depot/filedata/src/geometry/geometry.cppYcџџџџџџџџCarthesianMatrix3D xxџџџџџџџџ doubleџџџџxyџџџџџџџџ doubleџџџџxzџџџџџџџџ doubleџџџџyxџџџџџџџџ doubleџџџџyyџџџџџџџџ doubleџџџџyzџџџџџџџџ doubleџџџџzxџџџџџџџџ doubleџџџџzyџџџџџџџџ doubleџџџџzzџџџџџџџџ doubleџџџџvoidsetj/home/pascal/depot/filedata/src/geometry/geometry.cppЅЉџџџџџџџџGeodeticPoint3Dlatџџџџџџџџ doubleџџџџlonџџџџџџџџ doubleџџџџaltџџџџџџџџ doubleџџџџvoidto_carthesianj/home/pascal/depot/filedata/src/geometry/geometry.cpptzџџџџџџџџSphericalPoint3D џџџџџџџџџџџџvoidџџџџ&Carthesian::Point3Dto_carthesianj/home/pascal/depot/filedata/src/geometry/geometry.cpp—šџџџџџџџџGeocentricPoint3D &Carthesian::Point3Dto_carthesianj/home/pascal/depot/filedata/src/geometry/geometry.cppВТџџџџџџџџGeodeticPoint3D &Carthesian::Point3Dto_geocentricj/home/pascal/depot/filedata/src/geometry/geometry.cppœЃџџџџџџџџSphericalPoint3D џџџџџџџџџџџџvoidџџџџ&Geocentric::Point3Dto_geocentricj/home/pascal/depot/filedata/src/geometry/geometry.cppЅЈџџџџџџџџCarthesianPoint3D џџџџџџџџџџџџvoidџџџџ&Geocentric::Point3Dto_geodeticj/home/pascal/depot/filedata/src/geometry/geometry.cppФћџџџџџџџџCarthesianPoint3D џџџџџџџџџџџџvoidџџџџ"Geodetic::Point3Dto_sphericalj/home/pascal/depot/filedata/src/geometry/geometry.cppY^џџџџџџџџCarthesianPoint3D џџџџџџџџџџџџvoidџџџџ$Spherical::Point3Dto_sphericalj/home/pascal/depot/filedata/src/geometry/geometry.cpp•џџџџџџџџGeocentricPoint3D џџџџџџџџџџџџvoidџџџџ$Spherical::Point3Dto_sphericalj/home/pascal/depot/filedata/src/geometry/geometry.cppЋАџџџџџџџџGeodeticPoint3D џџџџџџџџџџџџvoidџџџџ$Spherical::Point3Dto_unit_vectorj/home/pascal/depot/filedata/src/geometry/geometry.cppруџџџџџџџџCarthesianSegment3D (Carthesian::Vector3Dto_vectorj/home/pascal/depot/filedata/src/geometry/geometry.cppйоџџџџџџџџCarthesianSegment3D (Carthesian::Vector3Dtranslatej/home/pascal/depot/filedata/src/geometry/geometry.cpp‹џџџџџџџџCarthesianPoint3Dvџџџџџџџџ6const Carthesian::Vector3D&џџџџvoid@ cmath cfloatiostream string earth_geometry.hf/home/pascal/depot/filedata/src/geometry/geometry.h%yЦо1 џџџџ cmath†Ьf/home/pascal/depot/filedata/src/geometry/geometry.h” (В earth_geometry.h”DpU string XaчiostreamВ$Bє cfloatыxf/home/pascal/depot/filedata/src/geometry/geometry.hџџџџџџџџџџџџCarthesianf/home/pascal/depot/filedata/src/geometry/geometry.h1:џџџџџџџџMatrix3Df/home/pascal/depot/filedata/src/geometry/geometry.h‘аN @class Vector3D represents a 3D vectorџџџџCarthesianMatrix3Df/home/pascal/depot/filedata/src/geometry/geometry.hЈЊDџџџџџџџџCarthesianMatrix3Dџџџ€ xxџџџџџџџџ doubleџџџџxyџџџџџџџџ doubleџџџџxzџџџџџџџџ doubleџџџџyxџџџџџџџџ doubleџџџџyyџџџџџџџџ doubleџџџџyzџџџџџџџџ doubleџџџџzxџџџџџџџџ doubleџџџџzyџџџџџџџџ doubleџџџџzzџџџџџџџџ doubleџџџџџџџџMatrix3Df/home/pascal/depot/filedata/src/geometry/geometry.hЏЏ$џџџџџџџџCarthesianMatrix3Dvџџџџџџџџconst Matrix3D&џџџџџџџџoperator <<f/home/pascal/depot/filedata/src/geometry/geometry.hЪЯ  @brief content printer @param os output flux @param m current oject alias @return the content description added to the output fluxџџџџCarthesianMatrix3D Џ†osџџџџџџџџstd::ostream&џџџџmџџџџџџџџconst Matrix3D&џџџџstd::ostream&operator =f/home/pascal/depot/filedata/src/geometry/geometry.hДД/p @brief affectation constructor @param v object to copyџџџџCarthesianMatrix3Dvџџџџџџџџconst Matrix3D&џџџџMatrix3D&setf/home/pascal/depot/filedata/src/geometry/geometry.hС УDЖ @brief geneal setter @param xx xx element @param xy xy element @param xz xz element @param yx yx element @param yy yy element @param yz yz element @param zx zx element @param zy zy element @param zz zz elementџџџџCarthesianMatrix3D Ћv xxџџџџџџџџ doubleџџџџxyџџџџџџџџ doubleџџџџxzџџџџџџџџ doubleџџџџyxџџџџџџџџ doubleџџџџyyџџџџџџџџ doubleџџџџyzџџџџџџџџ doubleџџџџzxџџџџџџџџ doubleџџџџzyџџџџџџџџ doubleџџџџzzџџџџџџџџ doubleџџџџvoidoperator <<f/home/pascal/depot/filedata/src/geometry/geometry.hЪЯ  @brief content printer @param os output flux @param m current oject alias @return the content description added to the output fluxџџџџCarthesianMatrix3D Џ†osџџџџџџџџstd::ostream&џџџџmџџџџџџџџconst Matrix3D&џџџџstd::ostream& xxf/home/pascal/depot/filedata/src/geometry/geometry.h““џџџџ doublexyf/home/pascal/depot/filedata/src/geometry/geometry.h””џџџџ doublexzf/home/pascal/depot/filedata/src/geometry/geometry.h••џџџџ doubleyxf/home/pascal/depot/filedata/src/geometry/geometry.h––џџџџ doubleyyf/home/pascal/depot/filedata/src/geometry/geometry.h——џџџџ doubleyzf/home/pascal/depot/filedata/src/geometry/geometry.h˜˜џџџџ doublezxf/home/pascal/depot/filedata/src/geometry/geometry.h™™џџџџ doublezyf/home/pascal/depot/filedata/src/geometry/geometry.hššџџџџ doublezzf/home/pascal/depot/filedata/src/geometry/geometry.h››џџџџ doublePoint3Df/home/pascal/depot/filedata/src/geometry/geometry.hЊы` @class Point3D represents a 3D carthesian pointџџџџCarthesian Point3Df/home/pascal/depot/filedata/src/geometry/geometry.hЕЕ@џџџџџџџџCarthesianPoint3D€xџџџџџџџџ doubleџџџџyџџџџџџџџ doubleџџџџzџџџџџџџџ doubleџџџџџџџџPoint3Df/home/pascal/depot/filedata/src/geometry/geometry.hКК.џџџџџџџџCarthesianPoint3D€pџџџџџџџџ4const Carthesian::Point3D&џџџџџџџџoperator +f/home/pascal/depot/filedata/src/geometry/geometry.hХХG @brief translation operator @param v translation vector @return the point resulting of the translation of self by the vector vџџџџCarthesianPoint3D vџџџџџџџџ6const Carthesian::Vector3D&џџџџconst Point3Doperator <<f/home/pascal/depot/filedata/src/geometry/geometry.hЬЯ  @brief content printer @param os output flux @param pixel current oject alias @return the content description added to the output fluxџџџџCarthesianPoint3D osџџџџџџџџstd::ostream&џџџџpџџџџџџџџconst Point3D&џџџџstd::ostream&operator =f/home/pascal/depot/filedata/src/geometry/geometry.hПП9n @brief affectation constructor @param p point to copyџџџџCarthesianPoint3Dџџџ€pџџџџџџџџ4const Carthesian::Point3D&џџџџPoint3D&setf/home/pascal/depot/filedata/src/geometry/geometry.hж жAЖ @brief general setter @param x x coordinate @param y y coordinate @param z z coordinateџџџџCarthesianPoint3Dxџџџџџџџџ doubleџџџџyџџџџџџџџ doubleџџџџzџџџџџџџџ doubleџџџџvoidto_geocentricf/home/pascal/depot/filedata/src/geometry/geometry.hрр6œ @brief convert to Geocentric coordinates @return P in Geocentric coordinatesџџџџCarthesianPoint3D/ џџџџџџџџџџџџvoidџџџџ&Geocentric::Point3Dto_geodeticf/home/pascal/depot/filedata/src/geometry/geometry.hхх2Ф @brief convert to geodetic coordinates (earth as an ellipsoid) @return P in geodetic coordinatesџџџџCarthesianPoint3D џџџџџџџџџџџџvoidџџџџ"Geodetic::Point3Dto_sphericalf/home/pascal/depot/filedata/src/geometry/geometry.hлл4˜ @brief convert to spherical coordinates @return P in spherical coordinatesџџџџCarthesianPoint3D Ћ џџџџџџџџџџџџvoidџџџџ$Spherical::Point3Dtranslatef/home/pascal/depot/filedata/src/geometry/geometry.hъ ъ6˜ @brief translate the point by the given vector @param v translation vectorџџџџCarthesianPoint3Dvџџџџџџџџ6const Carthesian::Vector3D&џџџџvoidoperator <<f/home/pascal/depot/filedata/src/geometry/geometry.hЬЯ  @brief content printer @param os output flux @param pixel current oject alias @return the content description added to the output fluxџџџџCarthesianPoint3D osџџџџџџџџstd::ostream&џџџџpџџџџџџџџconst Point3D&џџџџstd::ostream&xf/home/pascal/depot/filedata/src/geometry/geometry.hЌЌџџџџ doubleyf/home/pascal/depot/filedata/src/geometry/geometry.h­­џџџџ doublezf/home/pascal/depot/filedata/src/geometry/geometry.hЎЎџџџџ doubleSegment3Df/home/pascal/depot/filedata/src/geometry/geometry.h№LR @class Segment3D represents a 3D segmentџџџџCarthesian Segment3Df/home/pascal/depot/filedata/src/geometry/geometry.h€џџџџџџџџCarthesianSegment3Dp1џџџџџџџџ4const Carthesian::Point3D&џџџџp2џџџџџџџџ4const Carthesian::Point3D&џџџџџџџџSegment3Df/home/pascal/depot/filedata/src/geometry/geometry.h  LџџџџџџџџCarthesianSegment3Dp1џџџџџџџџ0const Geodetic::Point3D&џџџџp2џџџџџџџџ0const Geodetic::Point3D&џџџџџџџџSegment3Df/home/pascal/depot/filedata/src/geometry/geometry.h&џџџџџџџџCarthesianSegment3Dsџџџџџџџџ const Segment3D&џџџџџџџџ get_p1f/home/pascal/depot/filedata/src/geometry/geometry.h-3 œ @brief accessor to origin of the segment @return point origin of the segmentџџџџCarthesianSegment3D Point3D get_p2f/home/pascal/depot/filedata/src/geometry/geometry.h4:  @brief accessor to end of the segment @return point end of the segmentџџџџCarthesianSegment3D Point3D lengthf/home/pascal/depot/filedata/src/geometry/geometry.h;E – @brief return the length of the segment @return the length of the segmentџџџџCarthesianSegment3Dџџџ  doubleoperator <<f/home/pascal/depot/filedata/src/geometry/geometry.h$(  @brief content printer @param os output flux @param pixel current oject alias @return the content description added to the output fluxџџџџCarthesianSegment3Dџџџ€osџџџџџџџџstd::ostream&џџџџpџџџџџџџџ const Segment3D&џџџџstd::ostream&operator =f/home/pascal/depot/filedata/src/geometry/geometry.h1p @brief affectation constructor @param s object to copyџџџџCarthesianSegment3Dsџџџџџџџџ const Segment3D&џџџџSegment3D&setf/home/pascal/depot/filedata/src/geometry/geometry.h OŠ @brief geneal setter @param p1 point of origin @param p2 end pointџџџџCarthesianSegment3D€p1џџџџџџџџ4const Carthesian::Point3D&џџџџp2џџџџџџџџ4const Carthesian::Point3D&џџџџvoidto_unit_vectorf/home/pascal/depot/filedata/src/geometry/geometry.hKK4 @brief construct the unit vector corresponding to the segment @return the vector having the same orientation and a length of 1џџџџCarthesianSegment3D (Carthesian::Vector3Dto_vectorf/home/pascal/depot/filedata/src/geometry/geometry.hFF/ @brief construct the vector corresponding to the segment @return the vector having the same orientation and the same length than the segmentџџџџCarthesianSegment3D (Carthesian::Vector3D get_p1f/home/pascal/depot/filedata/src/geometry/geometry.h-3 œ @brief accessor to origin of the segment @return point origin of the segmentџџџџCarthesianSegment3D Point3D get_p2f/home/pascal/depot/filedata/src/geometry/geometry.h4:  @brief accessor to end of the segment @return point end of the segmentџџџџCarthesianSegment3D Point3D lengthf/home/pascal/depot/filedata/src/geometry/geometry.h;E – @brief return the length of the segment @return the length of the segmentџџџџCarthesianSegment3Dџџџ  doubleoperator <<f/home/pascal/depot/filedata/src/geometry/geometry.h$(  @brief content printer @param os output flux @param pixel current oject alias @return the content description added to the output fluxџџџџCarthesianSegment3Dџџџ€osџџџџџџџџstd::ostream&џџџџpџџџџџџџџ const Segment3D&џџџџstd::ostream&p1f/home/pascal/depot/filedata/src/geometry/geometry.hѓѓ. origin of the segment Point3Dp2f/home/pascal/depot/filedata/src/geometry/geometry.hѕѕ end of segment Point3DVector3Df/home/pascal/depot/filedata/src/geometry/geometry.hQN @class Vector3D represents a 3D vectorџџџџCarthesian Vector3Df/home/pascal/depot/filedata/src/geometry/geometry.h\\AџџџџџџџџCarthesianVector3Dxџџџџџџџџ doubleџџџџyџџџџџџџџ doubleџџџџzџџџџџџџџ doubleџџџџџџџџVector3Df/home/pascal/depot/filedata/src/geometry/geometry.hbbOџџџџџџџџCarthesianVector3Dџџџ€p1џџџџџџџџ4const Carthesian::Point3D&џџџџp2џџџџџџџџ4const Carthesian::Point3D&џџџџџџџџVector3Df/home/pascal/depot/filedata/src/geometry/geometry.hgg$џџџџџџџџCarthesianVector3Dvџџџџџџџџconst Vector3D&џџџџџџџџnormf/home/pascal/depot/filedata/src/geometry/geometry.hŒŒ– @brief return the length of the segment @return the length of the segmentџџџџCarthesianVector3D doubleoperator *f/home/pascal/depot/filedata/src/geometry/geometry.hqq6x @brief dilation operator @param val dilatation coefficientџџџџCarthesianVector3Dvalџџџџџџџџconst double&џџџџconst Vector3Doperator /f/home/pascal/depot/filedata/src/geometry/geometry.hvv6v @brief reduction operator @param val redution coefficientџџџџCarthesianVector3Dvalџџџџџџџџconst double&џџџџconst Vector3Doperator <<f/home/pascal/depot/filedata/src/geometry/geometry.h„‡  @brief content printer @param os output flux @param pixel current oject alias @return the content description added to the output fluxџџџџCarthesianVector3Dosџџџџџџџџstd::ostream&џџџџpџџџџџџџџconst Vector3D&џџџџstd::ostream&operator =f/home/pascal/depot/filedata/src/geometry/geometry.hll0p @brief affectation constructor @param v object to copyџџџџCarthesianVector3Dvџџџџџџџџconst Vector3D&џџџџVector3D&setf/home/pascal/depot/filedata/src/geometry/geometry.h} }AЎ @brief geneal setter @param x x component @param y y component @param z z componentџџџџCarthesianVector3Dxџџџџџџџџ doubleџџџџyџџџџџџџџ doubleџџџџzџџџџџџџџ doubleџџџџvoidoperator <<f/home/pascal/depot/filedata/src/geometry/geometry.h„‡  @brief content printer @param os output flux @param pixel current oject alias @return the content description added to the output fluxџџџџCarthesianVector3Dosџџџџџџџџstd::ostream&џџџџpџџџџџџџџconst Vector3D&џџџџstd::ostream&xf/home/pascal/depot/filedata/src/geometry/geometry.hSSџџџџ doubleyf/home/pascal/depot/filedata/src/geometry/geometry.hTTџџџџ doublezf/home/pascal/depot/filedata/src/geometry/geometry.hUUџџџџ double  anglef/home/pascal/depot/filedata/src/geometry/geometry.hi iS @brief compute the angle in radians between 2 vectors @param v1 first vector @param v2 second vector @return the oriented angle in radiansџџџџCarthesianv1џџџџџџџџ6const Carthesian::Vector3D&џџџџv2џџџџџџџџ6const Carthesian::Vector3D&џџџџ doublecrossproductf/home/pascal/depot/filedata/src/geometry/geometry.h… …u4 @brief compute the cross product between 2 vectors @param v1 [IN] first vector @param v2 [IN] second vector @param vout [OUT] the cross product vectorџџџџCarthesian хW€v1џџџџџџџџ6const Carthesian::Vector3D&џџџџv2џџџџџџџџ6const Carthesian::Vector3D&џџџџvoutџџџџџџџџ*Carthesian::Vector3D&џџџџvoidcrossproductf/home/pascal/depot/filedata/src/geometry/geometry.hŒŒh @brief compute the cross product between 2 vectors @param v1 first vector @param v2 second vector @return the cross product vectorџџџџCarthesianv1џџџџџџџџ6const Carthesian::Vector3D&џџџџv2џџџџџџџџ6const Carthesian::Vector3D&џџџџ(Carthesian::Vector3Ddotproductf/home/pascal/depot/filedata/src/geometry/geometry.hp pX @brief compute the scalar product between 2 vectors @param v1 first vector @param v2 second vector @return the scalar productџџџџCarthesianџџџ€v1џџџџџџџџ6const Carthesian::Vector3D&џџџџv2џџџџџџџџ6const Carthesian::Vector3D&џџџџ doubledotproductf/home/pascal/depot/filedata/src/geometry/geometry.hw wp" @brief compute the dot product between a matrix and a vector @param m [IN] a matrix @param v [IN] a vector @param vout [OUT] resulting vectorџџџџCarthesianmџџџџџџџџ6const Carthesian::Matrix3D&џџџџvџџџџџџџџ6const Carthesian::Vector3D&џџџџvoutџџџџџџџџ*Carthesian::Vector3D&џџџџvoiddotproductf/home/pascal/depot/filedata/src/geometry/geometry.h~~d @brief compute the dot product between a matrix and a vector @param m a matrix @param v a vector @return the resulting vectorџџџџCarthesianemџџџџџџџџ6const Carthesian::Matrix3D&џџџџvџџџџџџџџ6const Carthesian::Vector3D&џџџџ(Carthesian::Vector3Dintersectionf/home/pascal/depot/filedata/src/geometry/geometry.hM P2ю @brief Calculate the line segment PaPb that is the shortest route between the segments P1P2 and P3P4. Calculate the line segment PaPb that is the shortest route between two lines P1P2 and P3P4. Calculate also the values of mua and mub where Pa = P1 + mua (P2 - P1) Pb = P3 + mub (P4 - P3) source : http://paulbourke.net/geometry/lineline3d @param p1 [IN] first segment start point @param p2 [IN] first segment end point @param p3 [IN] 2nd segment start point @param p4 [IN] 2nd segment end point @param pa [OUT] intersection point on P1P2 @param pb [OUT] intersection point on P3P4 @param mua [OUT] ratio as Pa = P1 + mua (P2 - P1) @param mub [OUT] ratio as Pb = P3 + mub (P4 - P3) @return Return false if no solution exists, true elseџџџџCarthesian5S€p1џџџџџџџџ4const Carthesian::Point3D&џџџџp2џџџџџџџџ4const Carthesian::Point3D&џџџџp3џџџџџџџџ4const Carthesian::Point3D&џџџџp4џџџџџџџџ4const Carthesian::Point3D&џџџџpaџџџџџџџџ(Carthesian::Point3D&џџџџpbџџџџџџџџ(Carthesian::Point3D&џџџџmuaџџџџџџџџdouble&џџџџmubџџџџџџџџdouble&џџџџboolintersectionf/home/pascal/depot/filedata/src/geometry/geometry.h_ b2т @brief Calculate the line segment PaPb that is the shortest route between the segments P1P2 and P3P4. Calculate the line segment PaPb that is the shortest route between two lines P1P2 and P3P4. Calculate also the values of mua and mub where Pa = P1 + mua (P2 - P1) Pb = P3 + mub (P4 - P3) source : http://paulbourke.net/geometry/lineline3d @param p1p2 [IN] first segment @param p3p4 [IN] 2nd segment start point @param papb [OUT] intersection segment @param mua [OUT] ratio as Pa = P1 + mua (P2 - P1) @param mub [OUT] ratio as Pb = P3 + mub (P4 - P3) @return Return false if no solution exists, true elseџџџџCarthesianџџџ€p1p2џџџџџџџџ8const Carthesian::Segment3D&џџџџp3p4џџџџџџџџ8const Carthesian::Segment3D&џџџџpapbџџџџџџџџ,Carthesian::Segment3D&џџџџmuaџџџџџџџџdouble&џџџџmubџџџџџџџџdouble&џџџџbool rotatef/home/pascal/depot/filedata/src/geometry/geometry.h „4 @brief construct the vector issued of the rotation of @a v by an angle @a theta in radians using the vector @a axis as rotation axis Uses the Rodrigues' Rotation Formula set in http://mathworld.wolfram.com/RodriguesRotationFormula.html @param v [IN] vector to rotate @param axis [IN] vector used as rotation axis @param theta [IN] rotation angle in radians @param vout [OUT] vector issued of the rotationџџџџCarthesianvџџџџџџџџ6const Carthesian::Vector3D&џџџџaxisџџџџџџџџ6const Carthesian::Vector3D&џџџџ thetaџџџџџџџџconst doubleџџџџvoutџџџџџџџџ*Carthesian::Vector3D&џџџџvoid rotatef/home/pascal/depot/filedata/src/geometry/geometry.hІІw @brief construct the vector issued of the rotation of @a v by an angle @a theta in radians using the vector @a axis as rotation axis Uses the Rodrigues' Rotation Formula set in http://mathworld.wolfram.com/RodriguesRotationFormula.html @param v1 vector to rotate @param axis vector used as rotation axis @param theta rotation angle in radians @return the vector issued of the rotationџџџџCarthesianvџџџџџџџџ6const Carthesian::Vector3D&џџџџaxisџџџџџџџџ6const Carthesian::Vector3D&џџџџ thetaџџџџџџџџconst doubleџџџџ(Carthesian::Vector3Drotation_matrixf/home/pascal/depot/filedata/src/geometry/geometry.h” ”nА @brief construct the rotation matrix of an angle @a theta in radians using the vector @a axis as rotation axis Uses the Rodrigues' Rotation Formula set in http://mathworld.wolfram.com/RodriguesRotationFormula.html @param axis [IN] vector used as rotation axis @param theta [IN] rotation angle in radians @param matrix [OUT] rotation matrixџџџџCarthesianaxisџџџџџџџџ6const Carthesian::Vector3D&џџџџ thetaџџџџџџџџconst doubleџџџџ matrixџџџџџџџџ*Carthesian::Matrix3D&џџџџvoidGeocentricf/home/pascal/depot/filedata/src/geometry/geometry.h+-џџџџџџџџPoint3Df/home/pascal/depot/filedata/src/geometry/geometry.hCwТ @class Point3D represents a 3D point in Geocentric coordinates. Spherical earth model is assumedџџџџGeocentricPoint3Df/home/pascal/depot/filedata/src/geometry/geometry.hQQFџџџџџџџџGeocentricPoint3Dlatџџџџџџџџ doubleџџџџlonџџџџџџџџ doubleџџџџaltџџџџџџџџ doubleџџџџџџџџPoint3Df/home/pascal/depot/filedata/src/geometry/geometry.hVV.џџџџџџџџGeocentricPoint3Dџџџ€pџџџџџџџџ4const Geocentric::Point3D&џџџџџџџџoperator <<f/home/pascal/depot/filedata/src/geometry/geometry.hbe  @brief content printer @param os output flux @param pixel current oject alias @return the content description added to the output fluxџџџџGeocentricPoint3D€osџџџџџџџџstd::ostream&џџџџpџџџџџџџџconst Point3D&џџџџstd::ostream&operator =f/home/pascal/depot/filedata/src/geometry/geometry.h[[9n @brief affectation constructor @param p point to copyџџџџGeocentricPoint3Dџџџ€pџџџџџџџџ4const Geocentric::Point3D&џџџџPoint3D&setf/home/pascal/depot/filedata/src/geometry/geometry.hl lGf @brief general setter @param lat latitude in degrees from north pole @param lon longitude in degrees from greenwich meridian @param alt altitude above mean-sea level in metersџџџџGeocentricPoint3Dlatџџџџџџџџ doubleџџџџlonџџџџџџџџ doubleџџџџaltџџџџџџџџ doubleџџџџvoidto_carthesianf/home/pascal/depot/filedata/src/geometry/geometry.hvv2р @brief convert to carthesian coordinates. Spherical earth model is assumed @return P in carthesian coordinatesџџџџGeocentricPoint3D &Carthesian::Point3Dto_sphericalf/home/pascal/depot/filedata/src/geometry/geometry.hqq4˜ @brief convert to spherical coordinates @return P in spherical coordinatesџџџџGeocentricPoint3D џџџџџџџџџџџџvoidџџџџ$Spherical::Point3Doperator <<f/home/pascal/depot/filedata/src/geometry/geometry.hbe  @brief content printer @param os output flux @param pixel current oject alias @return the content description added to the output fluxџџџџGeocentricPoint3D€osџџџџџџџџstd::ostream&џџџџpџџџџџџџџconst Point3D&џџџџstd::ostream&altf/home/pascal/depot/filedata/src/geometry/geometry.hJJR altitude above mean-sea level in meters doublelatf/home/pascal/depot/filedata/src/geometry/geometry.hFFJ latitude in degrees from north pole doublelonf/home/pascal/depot/filedata/src/geometry/geometry.hHH\ longitude in degrees from greenwich meridian double$get_haversine_distf/home/pascal/depot/filedata/src/geometry/geometry.h??Xš @brief compute the Haversine distance in km between 2 points P1 and P2 on the earth, represented by their (latitude, longitude) coordinates. Here, the earth is considered as an ideal sphere, using the authalic radius ("equal aera"), from http://en.wikipedia.org/wiki/Earth_radius Source : http://www.faqs.org/faqs/geography/infosystems-faq/ ; Q5.1 Uses the Haversine Formula (from R.W. Sinnott, "Virtues of the Haversine", Sky and Telescope, vol. 68, no. 2, 1984, p. 159): @param lat1 latitude of the 1st point, in degrees. In the range [ -90, 90 ] @param lon1 longitude of the 1st point, in degrees. In the range ] -180, 180 ] @param lat2 latitude of the 2nd point, in degrees. In the range [ -90, 90 ] @param lon2 longitude of the 2nd point, in degrees. In the range ] -180, 180 ] @return the Haversine distance between P1 and P2 in mџџџџGeocentricџџџ€lat1џџџџџџџџ doubleџџџџlon1џџџџџџџџ doubleџџџџlat2џџџџџџџџ doubleџџџџlon2џџџџџџџџ doubleџџџџconst double*get_orthodormic_anglef/home/pascal/depot/filedata/src/geometry/geometry.h!"Bb @brief compute the angle in radians between 2 points P1 and P2 on a sphere, represented by their (latitude, longitude) coordinates Source : http://www.faqs.org/faqs/geography/infosystems-faq/ ; Q5.1 Uses the Haversine Formula (from R.W. Sinnott, "Virtues of the Haversine", Sky and Telescope, vol. 68, no. 2, 1984, p. 159): @param lat1 latitude of the 1st point, in degrees. In the range [ -90, 90 ] @param lon1 longitude of the 1st point, in degrees. In the range ] -180, 180 ] @param lat2 latitude of the 2nd point, in degrees. In the range [ -90, 90 ] @param lon2 longitude of the 2nd point, in degrees. In the range ] -180, 180 ] @return the angle between P1 and P2 in radiansџџџџGeocentricџџџ€lat1џџџџџџџџ doubleџџџџlon1џџџџџџџџ doubleџџџџlat2џџџџџџџџ doubleџџџџlon2џџџџџџџџ doubleџџџџconst double*get_square_plane_distf/home/pascal/depot/filedata/src/geometry/geometry.h))O @brief return the square plane distance between 2 points using their latitude and longitude difference @param dlat latitude difference, in degrees. In the range [ -90, 90 ] @param dlon longitude difference, in degrees. In the range ] -180, 180 ] @return the distance between the 2 points using the square plane approximationџџџџGeocentricџџџ€dlatџџџџџџџџconst doubleџџџџdlonџџџџџџџџconst doubleџџџџconst double*get_square_plane_distf/home/pascal/depot/filedata/src/geometry/geometry.h23Oи @brief return the square plane distance between 2 points using their latitudes and longitudes @param lat1 latitude of the first point, in degrees. In the range [ -90, 90 ] @param lon1 longitude of the first point, in degrees. In the range ] -180, 180 ] @param lat2 latitude of the 2nd point, in degrees. In the range [ -90, 90 ] @param lon2 longitude of the 2nd point, in degrees. In the range ] -180, 180 ] @return the distance between the 2 points using the square plane approximationџџџџGeocentricџџџ€lat1џџџџџџџџconst doubleџџџџlon1џџџџџџџџconst doubleџџџџlat2џџџџџџџџconst doubleџџџџlon2џџџџџџџџconst doubleџџџџconst doubleGeodeticf/home/pascal/depot/filedata/src/geometry/geometry.h.0џџџџџџџџPoint3Df/home/pascal/depot/filedata/src/geometry/geometry.hЕ| @class Point3D represents a 3D point in geodetic coordinates.џџџџGeodeticPoint3Df/home/pascal/depot/filedata/src/geometry/geometry.hFџџџџџџџџGeodeticPoint3Dlatџџџџџџџџ doubleџџџџlonџџџџџџџџ doubleџџџџaltџџџџџџџџ doubleџџџџџџџџPoint3Df/home/pascal/depot/filedata/src/geometry/geometry.h””,џџџџџџџџGeodeticPoint3Dpџџџџџџџџ0const Geodetic::Point3D&џџџџџџџџoperator <<f/home/pascal/depot/filedata/src/geometry/geometry.h Ѓ  @brief content printer @param os output flux @param pixel current oject alias @return the content description added to the output fluxџџџџGeodeticPoint3D А€osџџџџџџџџstd::ostream&џџџџpџџџџџџџџ0const Geodetic::Point3D&џџџџstd::ostream&operator =f/home/pascal/depot/filedata/src/geometry/geometry.h™™7n @brief affectation constructor @param p point to copyџџџџGeodeticPoint3Dpџџџџџџџџ0const Geodetic::Point3D&џџџџPoint3D&setf/home/pascal/depot/filedata/src/geometry/geometry.hЊ ЊGf @brief general setter @param lat latitude in degrees from north pole @param lon longitude in degrees from greenwich meridian @param alt altitude above mean-sea level in metersџџџџGeodeticPoint3D Ў!€latџџџџџџџџ doubleџџџџlonџџџџџџџџ doubleџџџџaltџџџџџџџџ doubleџџџџvoidto_carthesianf/home/pascal/depot/filedata/src/geometry/geometry.hДД2№ @brief convert to carthesian coordinates. WGS84 ellipsoidal earth model is assumed @return P in carthesian coordinatesџџџџGeodeticPoint3D ­  &Carthesian::Point3Dto_sphericalf/home/pascal/depot/filedata/src/geometry/geometry.hЏЏ4˜ @brief convert to spherical coordinates @return P in spherical coordinatesџџџџGeodeticPoint3Dср џџџџџџџџџџџџvoidџџџџ$Spherical::Point3Doperator <<f/home/pascal/depot/filedata/src/geometry/geometry.h Ѓ  @brief content printer @param os output flux @param pixel current oject alias @return the content description added to the output fluxџџџџGeodeticPoint3D А€osџџџџџџџџstd::ostream&џџџџpџџџџџџџџ0const Geodetic::Point3D&џџџџstd::ostream&altf/home/pascal/depot/filedata/src/geometry/geometry.hˆˆl altitude above mean-sea level of ellipsoid in meters doublelatf/home/pascal/depot/filedata/src/geometry/geometry.h„„J latitude in degrees from north pole doublelonf/home/pascal/depot/filedata/src/geometry/geometry.h††\ longitude in degrees from greenwich meridian doubleSphericalf/home/pascal/depot/filedata/src/geometry/geometry.h(*џџџџџџџџPoint3Df/home/pascal/depot/filedata/src/geometry/geometry.hкv @class Point3D represents a 3D point in spherical geometryџџџџSphericalPoint3Df/home/pascal/depot/filedata/src/geometry/geometry.hшшFџџџџџџџџSphericalPoint3D ЏLrџџџџџџџџ doubleџџџџ thetaџџџџџџџџ doubleџџџџphiџџџџџџџџ doubleџџџџџџџџPoint3Df/home/pascal/depot/filedata/src/geometry/geometry.hээ-џџџџџџџџSphericalPoint3Dpџџџџџџџџ2const Spherical::Point3D&џџџџџџџџoperator <<f/home/pascal/depot/filedata/src/geometry/geometry.hљ  @brief content printer @param os output flux @param pixel current oject alias @return the content description added to the output fluxџџџџSphericalPoint3Dosџџџџџџџџstd::ostream&џџџџpџџџџџџџџconst Point3D&џџџџstd::ostream&operator =f/home/pascal/depot/filedata/src/geometry/geometry.hђђ8n @brief affectation constructor @param p point to copyџџџџSphericalPoint3Dpџџџџџџџџ2const Spherical::Point3D&џџџџPoint3D&setf/home/pascal/depot/filedata/src/geometry/geometry.h G4 @brief general setter @param r the radius from center @param theta the zenith angle in radians (ie colatitude) @param phi the azimuth angle in radiansџџџџSphericalPoint3Drџџџџџџџџ doubleџџџџ thetaџџџџџџџџ doubleџџџџphiџџџџџџџџ doubleџџџџvoidto_carthesianf/home/pascal/depot/filedata/src/geometry/geometry.h  6œ @brief convert to carthesian coordinates @return P in carthesian coordinatesџџџџSphericalPoint3D џџџџџџџџџџџџvoidџџџџ&Carthesian::Point3Dto_geocentricf/home/pascal/depot/filedata/src/geometry/geometry.h6œ @brief convert to Geocentric coordinates @return P in Geocentric coordinatesџџџџSphericalPoint3Dџџџ џџџџџџџџџџџџvoidџџџџ&Geocentric::Point3Doperator <<f/home/pascal/depot/filedata/src/geometry/geometry.hљ  @brief content printer @param os output flux @param pixel current oject alias @return the content description added to the output fluxџџџџSphericalPoint3Dosџџџџџџџџstd::ostream&џџџџpџџџџџџџџconst Point3D&џџџџstd::ostream&phif/home/pascal/depot/filedata/src/geometry/geometry.hсс4 azimuth angle in radians doublerf/home/pascal/depot/filedata/src/geometry/geometry.hнн( radius from center double thetaf/home/pascal/depot/filedata/src/geometry/geometry.hппL zenith angle in radians (colatitude) doubleB cmatht/home/pascal/depot/filedata/src/geometry/geometry_common.h%yКљ†џџџџ cmath†Ьt/home/pascal/depot/filedata/src/geometry/geometry_common.hга5*t/home/pascal/depot/filedata/src/geometry/geometry_common.hџџџџџџџџџџџџdegreest/home/pascal/depot/filedata/src/geometry/geometry_common.h8:ш @brief convert an angle in radians to degrees @param radians angle to convert in radians @return angle in degreesџџџџ alphaџџџџџџџџconst doubleџџџџconst doubleformat_latt/home/pascal/depot/filedata/src/geometry/geometry_common.hAGј @brief format a latitude to be in the range [-90, 90] @param lat any latitude @return the latitude in the range [-90, 90]џџџџFlatџџџџџџџџ doubleџџџџ doubleformat_lont/home/pascal/depot/filedata/src/geometry/geometry_common.hNT @brief format a longitude to be in the range [-180, 180[ @param lon any longitude @return the longitude in the range [-180, 180[џџџџХ3&€lonџџџџџџџџ doubleџџџџ doubleradianst/home/pascal/depot/filedata/src/geometry/geometry_common.h02ш @brief convert an angle in degrees to radians @param degrees angle to convert in degrees @return angle in radiansџџџџ alphaџџџџџџџџconst doubleџџџџconst doubleDEG2RADt/home/pascal/depot/filedata/src/geometry/geometry_common.h' '7P degrees to radians conversion constant const double M_2PIt/home/pascal/depot/filedata/src/geometry/geometry_common.h""%( PI multiplied by 2 const doubleRAD2DEGt/home/pascal/depot/filedata/src/geometry/geometry_common.h) ):P radians to degrees conversion constant const doublei$viewing_geometry.hz/home/pascal/depot/filedata/src/geometry/viewing_geometry.cpp%yК—иxџџџџ$viewing_geometry.h”gZz/home/pascal/depot/filedata/src/geometry/viewing_geometry.cppM†fЕz/home/pascal/depot/filedata/src/geometry/viewing_geometry.cppџџџџџџџџџџџџalt_to_rangez/home/pascal/depot/filedata/src/geometry/viewing_geometry.cpp8:џџџџџџџџViewingЕщƒp_vџџџџџџџџ4const Carthesian::Point3D&џџџџtheta_vџџџџџџџџconst double&џџџџalt_satџџџџџџџџconst double&џџџџ doublealt_to_rangez/home/pascal/depot/filedata/src/geometry/viewing_geometry.cpp<CџџџџџџџџViewingЕщ„€p_vџџџџџџџџ0const Geodetic::Point3D&џџџџtheta_vџџџџџџџџconst double&џџџџalt_satџџџџџџџџconst double&џџџџ double*earth_to_sat_from_altz/home/pascal/depot/filedata/src/geometry/viewing_geometry.cppEKџџџџџџџџViewingp_vџџџџџџџџ4const Carthesian::Point3D&џџџџtheta_vџџџџџџџџconst double&џџџџ phi_vџџџџџџџџconst double&џџџџalt_satџџџџџџџџconst double&џџџџp_sџџџџџџџџ(Carthesian::Point3D&џџџџvoid*earth_to_sat_from_altz/home/pascal/depot/filedata/src/geometry/viewing_geometry.cppMQџџџџџџџџViewingp_vџџџџџџџџ0const Geodetic::Point3D&џџџџtheta_vџџџџџџџџconst double&џџџџ phi_vџџџџџџџџconst double&џџџџalt_satџџџџџџџџconst double&џџџџp_sџџџџџџџџ(Carthesian::Point3D&џџџџvoid.earth_to_sat_from_rangez/home/pascal/depot/filedata/src/geometry/viewing_geometry.cpp џџџџџџџџViewingp_vџџџџџџџџ4const Carthesian::Point3D&џџџџtheta_vџџџџџџџџconst double&џџџџ phi_vџџџџџџџџconst double&џџџџslant_rangeџџџџџџџџconst double&џџџџp_sџџџџџџџџ(Carthesian::Point3D&џџџџvoid.earth_to_sat_from_rangez/home/pascal/depot/filedata/src/geometry/viewing_geometry.cpp6џџџџџџџџViewingp_vџџџџџџџџ0const Geodetic::Point3D&џџџџtheta_vџџџџџџџџconst double&џџџџ phi_vџџџџџџџџconst double&џџџџslant_rangeџџџџџџџџconst double&џџџџp_sџџџџџџџџ(Carthesian::Point3D&џџџџvoidD earth_geometry.hgeometry.hv/home/pascal/depot/filedata/src/geometry/viewing_geometry.h%yК—Ž@џџџџ earth_geometry.h”DpUgeometry.h7\<вv/home/pascal/depot/filedata/src/geometry/viewing_geometry.h5jУ:v/home/pascal/depot/filedata/src/geometry/viewing_geometry.hџџџџџџџџџџџџViewingv/home/pascal/depot/filedata/src/geometry/viewing_geometry.hlџџџџџџџџalt_to_rangev/home/pascal/depot/filedata/src/geometry/viewing_geometry.hH HiB @brief computes the earth to satellite slant range, when the altitude of the satellite is given Earth is supposed to be a perfect shere having an authalic radius of 6371007.2 m, as specified by the WGS84 @param p_v [IN] observer's position in carthesian coordinates in ECR system, in meters @param theta_v [IN] zenithal angle in degrees. If observer at earth surface, from normal to line of sight @param alt_sat [IN] altitude of the satellite above sea mean level, in meters @return earth observer to observed satellite distance, in metersџџџџViewingp_vџџџџџџџџ4const Carthesian::Point3D&џџџџtheta_vџџџџџџџџconst double&џџџџalt_satџџџџџџџџconst double&џџџџ doublealt_to_rangev/home/pascal/depot/filedata/src/geometry/viewing_geometry.hQ Qg@ @brief computes the earth to satellite slant range, when the altitude of the satellite is given Earth is supposed to be a perfect shere having an authalic radius of 6371007.2 m, as specified by the WGS84 @param p_v [IN] observer's position in (lat, lon, alt) coordinates, in degrees/meters @param theta_v [IN] zenithal angle in degrees. If observer at earth surface, from normal to line of sight @param alt_sat [IN] altitude of the satellite above sea mean level, in meters @return earth observer to observed satellite distance, in metersџџџџViewingp_vџџџџџџџџ0const Geodetic::Point3D&џџџџtheta_vџџџџџџџџconst double&џџџџalt_satџџџџџџџџconst double&џџџџ double*earth_to_sat_from_altv/home/pascal/depot/filedata/src/geometry/viewing_geometry.h[ ^>p @brief compute the location of a satellite (in Carthesian Geocentric coordinates), using the the observer position (in ECR Geocentric coordinates), the viewing zenith and azimuth angles and the satellite altitude above mean sea level Earth is supposed to be a perfect shere having an authalic radius of 6371007.2 m, as specified by the WGS84 @param p_v [IN] observer's position in carthesian coordinates in ECR system, in meters @param theta_v [IN] zenithal angle in degrees. If observer at earth surface, from normal to line of sight @param phi_v [IN] azimutal angle in degrees. If observer at earth surface, from north to line of sight projection on surface @param alt_sat [IN] altitude of the satellite above sea mean level, in meters @param p_s [OUT] observed point in carthesian Geocentric coordinates, in metersџџџџViewingp_vџџџџџџџџ4const Carthesian::Point3D&џџџџtheta_vџџџџџџџџconst double&џџџџ phi_vџџџџџџџџconst double&џџџџalt_satџџџџџџџџconst double&џџџџp_sџџџџџџџџ(Carthesian::Point3D&џџџџvoid*earth_to_sat_from_altv/home/pascal/depot/filedata/src/geometry/viewing_geometry.hh k>^ @brief compute the location of a satellite (in Carthesian Geocentric coordinates), using the the observer position (in ECR Geocentric coordinates), the viewing zenith and azimuth angles and the satellite altitude above mean sea level Earth is supposed to be a perfect shere having an authalic radius of 6371007.2 m, as specified by the WGS84 @param p_v [IN] observer's position in (lat, lon, alt) coordinates, in meters @param theta_v [IN] zenithal angle in degrees. If observer at earth surface, from normal to line of sight @param phi_v [IN] azimutal angle in degrees. If observer at earth surface, from north to line of sight projection on surface @param alt_sat [IN] altitude of the satellite above sea mean level, in meters @param p_s [OUT] observed point in carthesian Geocentric coordinates, in metersџџџџViewingp_vџџџџџџџџ0const Geodetic::Point3D&џџџџtheta_vџџџџџџџџconst double&џџџџ phi_vџџџџџџџџconst double&џџџџalt_satџџџџџџџџconst double&џџџџp_sџџџџџџџџ(Carthesian::Point3D&џџџџvoid.earth_to_sat_from_rangev/home/pascal/depot/filedata/src/geometry/viewing_geometry.h" %>h @brief compute the location of a satellite (in Carthesian Geocentric coordinates), using the the observer position (in ECR Geocentric coordinates), the viewing zenith and azimuth angles and the slant range to the observed point Earth is supposed to be a perfect shere having an authalic radius of 6371007.2 m, as specified by the WGS84 @param p_v [IN] observer's position in (lat, lon, alt) coordinates, in degrees/meters @param theta_v [IN] zenithal angle in degrees. If observer at earth surface, from normal to line of sight @param phi_v [IN] azimutal angle in degrees. If observer at earth surface, from north to line of sight projection on surface @param slant_range [IN] earth observer to observed satellite distance, in meters @param p_s [OUT] observed point in carthesian Geocentric coordinates, in metersџџџџViewingp_vџџџџџџџџ0const Geodetic::Point3D&џџџџtheta_vџџџџџџџџconst double&џџџџ phi_vџџџџџџџџconst double&џџџџslant_rangeџџџџџџџџconst double&џџџџp_sџџџџџџџџ(Carthesian::Point3D&џџџџvoid.earth_to_sat_from_rangev/home/pascal/depot/filedata/src/geometry/viewing_geometry.h/ 2>j @brief compute the location of a satellite (in Carthesian Geocentric coordinates), using the the observer position (in ECR Geocentric coordinates), the viewing zenith and azimuth angles and the slant range to the observed point Earth is supposed to be a perfect shere having an authalic radius of 6371007.2 m, as specified by the WGS84 @param p_v [IN] observer's position in carthesian coordinates in ECR system, in meters @param theta_v [IN] zenithal angle in degrees. If observer at earth surface, from normal to line of sight @param phi_v [IN] azimutal angle in degrees. If observer at earth surface, from north to line of sight projection on surface @param slant_range [IN] earth observer to observed satellite distance, in meters @param p_s [OUT] observed point in carthesian Geocentric coordinates, in metersџџџџViewingEp_vџџџџџџџџ4const Carthesian::Point3D&џџџџtheta_vџџџџџџџџconst double&џџџџ phi_vџџџџџџџџconst double&џџџџslant_rangeџџџџџџџџconst double&џџџџp_sџџџџџџџџ(Carthesian::Point3D&џџџџvoid.earth_to_sat_from_rangev/home/pascal/depot/filedata/src/geometry/viewing_geometry.h< ?>h @brief compute the location of a satellite (in Carthesian Geocentric coordinates), using the the observer position (in ECR Geocentric coordinates), the viewing zenith and azimuth angles and the slant range to the observed point Earth is supposed to be a perfect shere having an authalic radius of 6371007.2 m, as specified by the WGS84 @param p_v [IN] observer's position in (lat, lon, alt) coordinates, in degrees/meters @param theta_v [IN] zenithal angle in degrees. If observer at earth surface, from normal to line of sight @param phi_v [IN] azimutal angle in degrees. If observer at earth surface, from north to line of sight projection on surface @param slant_range [IN] earth observer to observed satellite distance, in meters @param p_s [OUT] observed point in carthesian Geocentric coordinates, in metersџџџџViewingp_vџџџџџџџџ0const Geodetic::Point3D&џџџџtheta_vџџџџџџџџconst double&џџџџ phi_vџџџџџџџџconst double&џџџџslant_rangeџџџџџџџџconst double&џџџџp_sџџџџџџџџ(Carthesian::Point3D&џџџџvoidmgmaofiledata.h`/home/pascal/depot/filedata/src/gmaofiledata.cpp%yДшаИџџџџ`/home/pascal/depot/filedata/src/gmaofiledata.cpp*0э4gmaofiledata.h-ро4`/home/pascal/depot/filedata/src/gmaofiledata.cppџџџџџџџџџџџџ GMAOFileData`/home/pascal/depot/filedata/src/gmaofiledata.cpp&џџџџџџџџGMAOFileDatanameџџџџџџџџconst string&џџџџgeos_versionџџџџџџџџconst intџџџџџџџџcheck_filename`/home/pascal/depot/filedata/src/gmaofiledata.cpppЖџџџџџџџџGMAOFileData filenameџџџџџџџџconst string&џџџџbool$get_sds_fill_value`/home/pascal/depot/filedata/src/gmaofiledata.cppЪЬџџџџџџџџGMAOFileDatasds_nameџџџџџџџџconst string&џџџџfill_valueџџџџџџџџ void*џџџџvoidinit`/home/pascal/depot/filedata/src/gmaofiledata.cpp'lџџџџџџџџGMAOFileDatamvoid"load_height_level`/home/pascal/depot/filedata/src/gmaofiledata.cppЭвџџџџџџџџGMAOFileDatavoidload_time_level`/home/pascal/depot/filedata/src/gmaofiledata.cppгиџџџџџџџџGMAOFileDatavoidparse_filename`/home/pascal/depot/filedata/src/gmaofiledata.cppЗЩџџџџџџџџGMAOFileDatafilenameџџџџџџџџconst string&џџџџvoid set_geos_version`/home/pascal/depot/filedata/src/gmaofiledata.cppйуџџџџџџџџGMAOFileDatageos_versionџџџџџџџџconst intџџџџvoid~ GMAOFileData`/home/pascal/depot/filedata/src/gmaofiledata.cppmoџџџџџџџџGMAOFileDataџџџџFmeteofiledata.hhdffiledata.h\/home/pascal/depot/filedata/src/gmaofiledata.h%yУущјџџџџ\/home/pascal/depot/filedata/src/gmaofiledata.h“6йmeteofiledata.h/‘jhdffiledata.h˜vТ\/home/pascal/depot/filedata/src/gmaofiledata.hџџџџџџџџџџџџGMAOFileData\/home/pascal/depot/filedata/src/gmaofiledata.h)–@class GMAOFileData generic class to manage the reading of GMAO meteo filesџџџџFileDataMeteoFileDataHDFFileData GMAOFileData\/home/pascal/depot/filedata/src/gmaofiledata.hGGCџџџџџџџџGMAOFileDataџџџ€nameџџџџџџџџconst string&џџџџgeos_versionџџџџџџџџconst intџџџџџџџџcheck_filename\/home/pascal/depot/filedata/src/gmaofiledata.hm m=b Check is a the file is a valid meteo data file ( the analysis is done with a filename parsing, not with parsing the data inside ) @param short_filename string : the filename without its path @return bool : true if the filename seems to be valid, false else or in case of problem (exception...)џџџџGMAOFileDataџџџ short_filenameџџџџџџџџconst string&џџџџbool get_geos_version\/home/pascal/depot/filedata/src/gmaofiledata.h_a– @brief Accessor to the GEOS version @return the GEOS major version numberџџџџGMAOFileDataџџџ intget_product_id\/home/pascal/depot/filedata/src/gmaofiledata.hX^t @brief Accessor to the product ID @return the product IDџџџџGMAOFileDataџџџ  string$get_sds_fill_value\/home/pascal/depot/filedata/src/gmaofiledata.hR RF€ @brief read the fill value of the sds given in parametre This overrides the hdffiledata get_sds_fill_value method because in GMAO files, the fill value has a non standard name "missing_value" @param sds_name the name of the sds where to read the fill value @param fill_value (output) the read value. Must not be NULLџџџџGMAOFileDataџџџ€sds_nameџџџџџџџџconst string&џџџџfill_valueџџџџџџџџ void*џџџџvoidinit\/home/pascal/depot/filedata/src/gmaofiledata.h: :D @brief Initialize some attributesџџџџGMAOFileDataџџџ€void"load_height_level\/home/pascal/depot/filedata/src/gmaofiledata.hy y6 @brief if not already set, read the pressure levels in the file If the product is a 2D one, no pressure levels are defined. In this case, nothing's done.џџџџGMAOFileDataЖEvoidload_time_level\/home/pascal/depot/filedata/src/gmaofiledata.h~ ~& @brief if not already set, read the time levels in the file If the product is a 2D one, no time levels are defined. In this case, nothing's done.џџџџGMAOFileDataЖovoidparse_filename\/home/pascal/depot/filedata/src/gmaofiledata.ht t7ђ Once the filename has been checked (that's a precondition : no verification on it are done in this method), some informations can be extracted of it : - the date - the hour @param short_filename string : the filename without its pathџџџџGMAOFileDataџџџ€short_filenameџџџџџџџџconst string&џџџџvoid set_geos_version\/home/pascal/depot/filedata/src/gmaofiledata.h@ @1Ю @brief set the GEOS version of the file If @a geos_version is 0, the method tries to guess it using the filename. If not null, only set it to the given value @param geos_version the GEOS version of the product. If null, guess itџџџџGMAOFileDataџџџ€geos_versionџџџџџџџџconst intџџџџvoid~ GMAOFileData\/home/pascal/depot/filedata/src/gmaofiledata.hKKџџџџџџџџGMAOFileDataџџџ€џџџџ get_geos_version\/home/pascal/depot/filedata/src/gmaofiledata.h_a– @brief Accessor to the GEOS version @return the GEOS major version numberџџџџGMAOFileDataџџџ intget_product_id\/home/pascal/depot/filedata/src/gmaofiledata.hX^t @brief Accessor to the product ID @return the product IDџџџџGMAOFileDataџџџ  stringgeos_version\/home/pascal/depot/filedata/src/gmaofiledata.h33L The GEOS version of the GMAO product intheight_name\/home/pascal/depot/filedata/src/gmaofiledata.h//(l The name of the field that contains the heights data "const std::string"lat_lon_index_max\/home/pascal/depot/filedata/src/gmaofiledata.hggЈ @brief the bigger valid indexes for the geolocation : format {lat_index, lon_index}int*latitude_name\/home/pascal/depot/filedata/src/gmaofiledata.h++*p The name of the field that contains the latitudes data "const std::stringlongitude_name\/home/pascal/depot/filedata/src/gmaofiledata.h--+r The name of the field that contains the longitudes data "const std::stringproduct_id\/home/pascal/depot/filedata/src/gmaofiledata.h5 5b The GMAO product ID extracted from the filename  stringtime_name\/home/pascal/depot/filedata/src/gmaofiledata.h11&h The name of the field that contains the times data "const std::stringбgribfiledata.h`/home/pascal/depot/filedata/src/gribfiledata.cpp%yїjЃџџџџgribfiledata.h(XT`/home/pascal/depot/filedata/src/gribfiledata.cppсЫT`/home/pascal/depot/filedata/src/gribfiledata.cppџџџџџџџџџџџџGribFileData`/home/pascal/depot/filedata/src/gribfiledata.cpp$.џџџџџџџџGribFileDataџџџ€nameџџџџџџџџconst string&џџџџmodeџџџџџџџџconst string&џџџџopen_fileџџџџџџџџconst boolџџџџџџџџGribFileData`/home/pascal/depot/filedata/src/gribfiledata.cpp5;џџџџџџџџGribFileDataQЙ€ fdataџџџџџџџџ&const GribFileData&џџџџџџџџcheck_selector`/home/pascal/depot/filedata/src/gribfiledata.cppw›џџџџџџџџGribFileDataџџџ€ds_nameџџџџџџџџconst char*џџџџ startџџџџџџџџint*џџџџ strideџџџџџџџџint*џџџџ edgesџџџџџџџџint*џџџџrankџџџџџџџџconst intџџџџvoidclose_data_file`/home/pascal/depot/filedata/src/gribfiledata.cppTYџџџџџџџџGribFileDatavoidfree_selector`/home/pascal/depot/filedata/src/gribfiledata.cppœЄџџџџџџџџGribFileData€*is_selector_allocatedџџџџџџџџconst bool*џџџџ startџџџџџџџџint*џџџџ strideџџџџџџџџint*џџџџ edgesџџџџџџџџint*џџџџvoid*get_dataset_dimension`/home/pascal/depot/filedata/src/gribfiledata.cppџџџџџџџџGribFileData€ds_nameџџџџџџџџconst string&џџџџvector< int >,get_dataset_fill_value`/home/pascal/depot/filedata/src/gribfiledata.cpp"џџџџџџџџGribFileDatadataset_nameџџџџџџџџconst string&џџџџfill_valueџџџџџџџџ void*џџџџvoidget_handle`/home/pascal/depot/filedata/src/gribfiledata.cppg‘џџџџџџџџGribFileData ZІ€ i_msgџџџџџџџџintџџџџgrib_handle*get_msg_key`/home/pascal/depot/filedata/src/gribfiledata.cppšЇџџџџџџџџGribFileData i_msgџџџџџџџџintџџџџsearched_keyџџџџџџџџconst string&џџџџ stringget_msg_keys`/home/pascal/depot/filedata/src/gribfiledata.cppЈЭџџџџџџџџGribFileData Z­€ i_msgџџџџџџџџintџџџџ v_keysџџџџџџџџFvector< pair < string , string > >&џџџџkeys_filterџџџџџџџџunsigned intџџџџvoidinit_n_msg`/home/pascal/depot/filedata/src/gribfiledata.cppџџџџџџџџGribFileDatavoid init_param_table`/home/pascal/depot/filedata/src/gribfiledata.cppЯџџџџџџџџGribFileDataџџџџџџџџџџџџvoidџџџџvoidinit_selector`/home/pascal/depot/filedata/src/gribfiledata.cpp_vџџџџџџџџGribFileData€ds_nameџџџџџџџџconst char*џџџџ startџџџџџџџџ int*&џџџџ strideџџџџџџџџ int*&џџџџ edgesџџџџџџџџ int*&џџџџrankџџџџџџџџint&џџџџ.is_selector_allocated[]џџџџџџџџ bool*џџџџvoidis_file_loaded`/home/pascal/depot/filedata/src/gribfiledata.cpp[]џџџџџџџџGribFileDataџџџ€const boolopen_data_file`/home/pascal/depot/filedata/src/gribfiledata.cppGRџџџџџџџџGribFileDatavoidoperator =`/home/pascal/depot/filedata/src/gribfiledata.cpp=EџџџџџџџџGribFileData€ fdataџџџџџџџџ&const GribFileData&џџџџGribFileData&print_keys`/home/pascal/depot/filedata/src/gribfiledata.cpp$[џџџџџџџџGribFileData€keys_filterџџџџџџџџunsigned intџџџџvoidprint_msg_data`/home/pascal/depot/filedata/src/gribfiledata.cpp%0џџџџџџџџGribFileData g€ i_msgџџџџџџџџconst intџџџџconst voidprint_msg_keys`/home/pascal/depot/filedata/src/gribfiledata.cpp]eџџџџџџџџGribFileData i_msgџџџџџџџџintџџџџkeys_filterџџџџџџџџunsigned intџџџџvoid"print_param_table`/home/pascal/depot/filedata/src/gribfiledata.cpp #џџџџџџџџGribFileDataџџџџџџџџџџџџvoidџџџџvoidread_data`/home/pascal/depot/filedata/src/gribfiledata.cppЅџџџџџџџџGribFileDatadataџџџџџџџџ void*џџџџds_nameџџџџџџџџconst char*џџџџ startџџџџџџџџint*џџџџ strideџџџџџџџџint*џџџџ edgesџџџџџџџџint*џџџџrankџџџџџџџџintџџџџ void*release_handle`/home/pascal/depot/filedata/src/gribfiledata.cpp“™џџџџџџџџGribFileDataџџџ€ handleџџџџџџџџgrib_handle*џџџџvoid~ GribFileData`/home/pascal/depot/filedata/src/gribfiledata.cpp03џџџџџџџџGribFileDataџџџ€џџџџH cstdio stringmapgrib_api.h filedatareader.h\/home/pascal/depot/filedata/src/gribfiledata.h%yУђ„@џџџџ cstdioќ—mapю string Xaч\/home/pascal/depot/filedata/src/gribfiledata.hёкАљgrib_api.hБkИc filedatareader.hт§ƒ\/home/pascal/depot/filedata/src/gribfiledata.hџџџџџџџџџџџџGribFileData\/home/pascal/depot/filedata/src/gribfiledata.hЎќ\ @class GribFileData manage the read access in a GRIB1 or GRIB2 file There is some specific words used in GRIB files : - Message : a message is one record of 2D data. A 3D dataset will be composed of many messages - Key : many keys are associated to a message. They can be the name of the parametre, the pressure levels if any, etc... It is a dataset attribute @author Nicolas PASCAL (nicolas.pascal@icare.univ-lille1.fr)џџџџFileData#GribFileData\/home/pascal/depot/filedata/src/gribfiledata.hссaџџџџџџџџGribFileData хW€nameџџџџџџџџconst string&џџџџmodeџџџџџџџџconst string&џџџџopen_fileџџџџџџџџconst boolџџџџџџџџGribFileData\/home/pascal/depot/filedata/src/gribfiledata.hцц+џџџџџџџџGribFileDataЖ„ fdataџџџџџџџџ&const GribFileData&џџџџџџџџcheck_selector\/home/pascal/depot/filedata/src/gribfiledata.hЊ Њa< @brief check the validity of the start, stride and edges selectors for the given datasets. It mainly checks if one is out of bounds. @throw g_exception in case of mismatch @param ds_name name of the variable @param start indices of extraction start. If NULL, start at (0,0) if rank is 2 ; (0,0,0) if rank is 3... @param stride step between 2 read values. Ignored at this time @param edges number of values to read along each dimension. if NULL, it will be all data along each dimension. @param rank number of dimensions of the datasetџџџџGribFileDataЖds_nameџџџџџџџџconst char*џџџџ startџџџџџџџџint*џџџџ strideџџџџџџџџint*џџџџ edgesџџџџџџџџint*џџџџrankџџџџџџџџconst intџџџџvoidclose_data_file\/home/pascal/depot/filedata/src/gribfiledata.hї їr @brief close the file and free the ressources used by itџџџџGribFileDatavoidfree_selector\/home/pascal/depot/filedata/src/gribfiledata.hŸ Ÿ^Р @brief frees the selectors that have been internally allocated @param is_selector_allocated tells which selector between start, stride and edges are internally allocated, and so, which one to free @param start indices of extraction start. If NULL, start at (0,0) if rank is 2 ; (0,0,0) if rank is 3... @param stride step between 2 read values. Ignored at this time @param edges number of values to read along each dimension. if NULL, it will be all data along each dimensionџџџџGribFileData *is_selector_allocatedџџџџџџџџconst bool*џџџџ startџџџџџџџџint*џџџџ strideџџџџџџџџint*џџџџ edgesџџџџџџџџint*џџџџvoid*get_dataset_data_type\/home/pascal/depot/filedata/src/gribfiledata.hZZ2і @brief retrieve the native data type of the specified dataset @param dataset_name name of a dataset @return the datatypeџџџџGribFileDatadataset_nameџџџџџџџџ stringџџџџint get_dataset_desc\/home/pascal/depot/filedata/src/gribfiledata.h  і @brief return a reference the related variable descriptor @param ds_name name of a dataset @return a variable descriptorџџџџGribFileDatads_nameџџџџџџџџconst string&џџџџ,const t_grib_var_desc&*get_dataset_dimension\/home/pascal/depot/filedata/src/gribfiledata.hBR @brief access the size of the given dataset @param dataset_name the name of the dataset @return a vector that contains the dimensions of the dataset in each directionџџџџGribFileDatadataset_nameџџџџџџџџconst string&џџџџvector< int >,get_dataset_fill_value\/home/pascal/depot/filedata/src/gribfiledata.hU‚ @brief read the fill value of the dataset given in parametre @param dataset_name the name of the dataset where to read the fill value @param fill_value (output) where to store the read valueџџџџGribFileData„dataset_nameџџџџџџџџconst string&џџџџfill_valueџџџџџџџџ void*џџџџvoid"get_dataset_level\/home/pascal/depot/filedata/src/gribfiledata.h<> @brief get the level of the record at index i @param i_dataset index of the dataset @return the level of the dataset as a stringџџџџGribFileDataai_datasetџџџџџџџџintџџџџ string*get_dataset_long_name\/home/pascal/depot/filedata/src/gribfiledata.h46& @brief get the extended name of the record at index i @param i_dataset index of the dataset @return the extended name of the dataset as a stringџџџџGribFileDataЖi_datasetџџџџџџџџintџџџџ string get_dataset_name\/home/pascal/depot/filedata/src/gribfiledata.h,. @brief get the short name of the record at index i @param i_dataset index of the dataset @return the name of the dataset as a stringџџџџGribFileDatai_datasetџџџџџџџџintџџџџ stringget_handle\/home/pascal/depot/filedata/src/gribfiledata.hвв(Œ @brief place the Grib API handle on the message numbered i_msg @a i_msg starts from 0 @param i_msg indice of the searched message @return a not NULL grib_handle to the message. NULL if not foundџџџџGribFileDataџџџ€ i_msgџџџџџџџџintџџџџgrib_handle*get_msg_data\/home/pascal/depot/filedata/src/gribfiledata.h‡‡Q’ @brief read the whole data buffer of a GRIB message Due to the GRIB format, the message is always read as double. The cast to T is done in a second time @warning returned buffer. If allocated internally (ie outdata is NULL), the caller must manage the deallocation @param i_msg indice of the message to read @param sz_dim number of values in the buffer along each dimensions, as [Y,X] @param outdata output buffer. If NULL, allocation is done internally. If not NULL, it is supposed to already have the good size and no control will be done on it @return the message data bufferџџџџTџџџџGribFileDatae i_msgџџџџџџџџconst intџџџџ sz_dimџџџџџџџџvector< int >&џџџџoutdataџџџџџџџџT*џџџџT*get_msg_key\/home/pascal/depot/filedata/src/gribfiledata.h 6˜ @brief for a given message, search the value of a key Raise an exception if the key does not exist @param i_msg indice of the searched message @param key the searched key @return the value of the keyџџџџGribFileData€ i_msgџџџџџџџџintџџџџkeyџџџџџџџџconst string&џџџџ stringget_msg_keys\/home/pascal/depot/filedata/src/gribfiledata.hM N?H @brief print the keys of the message number @a i_msg The @a keys_filter parametre is set using the GRIB API constants as described in http://www.ecmwf.int/publications/manuals/grib_api/group__keys__iterator.html @param i_msg indice of the message to read @param v_keys [OUT] vector that stores the key = value pairs as strings @param keys_filter sets which type of keys should be printed. All are printed by defaultџџџџGribFileData€ i_msgџџџџџџџџintџџџџ v_keysџџџџџџџџFvector< pair < string , string > >&џџџџkeys_filterџџџџџџџџunsigned intџџџџvoidget_n_dataset\/home/pascal/depot/filedata/src/gribfiledata.h$&Ђ @brief return the number of datasets in the file @return the number of datasetsџџџџGribFileDataintget_n_msg\/home/pascal/depot/filedata/src/gribfiledata.hУХд @brief return the number of messages (ie records) in the file @return the number of messages in the fileџџџџGribFileData const intget_scaling\/home/pascal/depot/filedata/src/gribfiledata.hЙО6 @brief retrieve the scaling factors of the given message @param i_msg indice of the searched message @param scale scale factor @param offset add offsetџџџџGribFileData i_msgџџџџџџџџintџџџџ scaleџџџџџџџџdouble&џџџџ offsetџџџџџџџџdouble&џџџџvoidinit_n_msg\/home/pascal/depot/filedata/src/gribfiledata.hЫ Ыx @brief read the number of messages (ie records) in the fileџџџџGribFileDatavoid init_param_table\/home/pascal/depot/filedata/src/gribfiledata.hл л † @brief fill in a hash map that constructs the variables descriptorџџџџGribFileData€џџџџџџџџџџџџvoidџџџџvoidinit_selector\/home/pascal/depot/filedata/src/gribfiledata.h– –~. @brief guess the Region Of Interest selectors start, stride and edges if their are NULL @param ds_name [IN] name of the variable to read @param start [INOUT] indices of extraction start. If NULL, start at (0,0) if rank is 2 ; (0,0,0) if rank is 3... @param stride [INOUT] step between 2 read values. Ignored at this time @param edges [INOUT] number of values to read along each dimension. if NULL, it will be all data along each dimension. @param rank [INOUT] the number of dimensions of the dataset @param is_selector_allocated [INOUT] tells which selector between start, stride and edges are allocated in the method. Used to correctly free them after useџџџџGribFileDatads_nameџџџџџџџџconst char*џџџџ startџџџџџџџџ int*&џџџџ strideџџџџџџџџ int*&џџџџ edgesџџџџџџџџ int*&џџџџrankџџџџџџџџint&џџџџ.is_selector_allocated[]џџџџџџџџ bool*џџџџvoid&is_existing_dataset\/home/pascal/depot/filedata/src/gribfiledata.h№ @brief check if @a ds_name is an existing dataset @param ds_name name of a dataset @return true if the dataset existsџџџџGribFileDataЖds_nameџџџџџџџџconst string&џџџџconst boolis_file_loaded\/home/pascal/depot/filedata/src/gribfiledata.hћћb @brief Check if the file has already been loadedџџџџGribFileDataconst boolopen_data_file\/home/pascal/depot/filedata/src/gribfiledata.hѓ ѓz @brief open the file in read mode and create the API handleџџџџGribFileDataср€voidoperator =\/home/pascal/depot/filedata/src/gribfiledata.hяя7Ž @brief Affectation. @param fd the GribFileData object to be recopied.џџџџGribFileDataџџџ€ fdataџџџџџџџџ&const GribFileData&џџџџGribFileData&parse_type_id\/home/pascal/depot/filedata/src/gribfiledata.hэњn @brief constructs the data type ID of a variale, as a string like int16, float32, etc using the keys dataFlag and dataWidth read in a message @warning only valid for GRIB1 files dataFlag table description at : http://www.ecmwf.int/publications/manuals/d/gribapi/fm92/grib1/detail/ctables/11/ @param data_flag bitmask describing the binary values @param data_width number of bits used to code a value @return the data type as a stringџџџџGribFileDatadata_flagџџџџџџџџ$const unsigned intџџџџdata_widthџџџџџџџџconst intџџџџ stringprint_keys\/home/pascal/depot/filedata/src/gribfiledata.hT TKD @brief display the keys of all messages The @a keys_filter parametre is set using the GRIB API constants as described in http://www.ecmwf.int/publications/manuals/grib_api/group__keys__iterator.html @param keys_filter sets which type of keys should be printed. All are printed by defaultџџџџGribFileDataЖŒkeys_filterџџџџџџџџunsigned intџџџџvoidprint_msg_data\/home/pascal/depot/filedata/src/gribfiledata.hŒŒ/Ь @brief print out the data buffer (as double) of a message @param i_msg indice of the message to readџџџџGribFileData i_msgџџџџџџџџconst intџџџџconst voidprint_msg_keys\/home/pascal/depot/filedata/src/gribfiledata.hE E[Ж @brief print the keys of the message number @a i_msg The @a keys_filter parametre is set using the GRIB API constants as described in http://www.ecmwf.int/publications/manuals/grib_api/group__keys__iterator.html @param i_msg indice of the message to read @param keys_filter sets which type of keys should be printed. All are printed by defaultџџџџGribFileDatae i_msgџџџџџџџџintџџџџkeys_filterџџџџџџџџunsigned intџџџџvoid"print_param_table\/home/pascal/depot/filedata/src/gribfiledata.h^ ^!F @brief print all variables entriesџџџџGribFileDataџџџџџџџџџџџџvoidџџџџvoidprint_var_desc\/home/pascal/depot/filedata/src/gribfiledata.hруЪ @brief print the content of a variable descriptor @param it_var_desc pointer to a t_var_desc objectџџџџGribFileDatavar_table_eltџџџџџџџџLconst pair< string, t_grib_var_desc >&џџџџvoidread_data\/home/pascal/depot/filedata/src/gribfiledata.h{ {‰ў @brief read a variable data @warning due to the GRIB basic types, all data will be returned as double @param data the output buffer of read values as float64 (void* is used for interfaces compatibility). If NULL, allocation is done internally @param dataset_name name of the variable to read @param start indices of extraction start. If NULL, start at (0,0) if rank is 2 ; (0,0,0) if rank is 3... @param stride step between 2 interesting values. Ignored at this time @param edges number of values to read along each dimension. if NULL, it will be all data along each dimension. @param rank the dimension of start, stride and edges @return a pointer to the read data array. It is useful when you let this method manage the allocation to update the allocated pointer to the data. If you've done it yourself or you are using a static buffer, it isn't necessary to catch this return pointerџџџџGribFileDataЖœdataџџџџџџџџ void*џџџџdataset_nameџџџџџџџџconst char*џџџџ startџџџџџџџџint*џџџџ strideџџџџџџџџint*џџџџ edgesџџџџџџџџint*џџџџrankџџџџџџџџintџџџџ void*release_handle\/home/pascal/depot/filedata/src/gribfiledata.hз з-Њ @brief free a GRIB handle and rewind the file @param handle a valid GRIB API handleџџџџGribFileDataџџџ€ handleџџџџџџџџgrib_handle*џџџџvoid~ GribFileData\/home/pascal/depot/filedata/src/gribfiledata.hъ ъџџџџџџџџGribFileDataџџџџ  get_dataset_desc\/home/pascal/depot/filedata/src/gribfiledata.h  і @brief return a reference the related variable descriptor @param ds_name name of a dataset @return a variable descriptorџџџџGribFileDatads_nameџџџџџџџџconst string&џџџџ,const t_grib_var_desc&"get_dataset_level\/home/pascal/depot/filedata/src/gribfiledata.h<> @brief get the level of the record at index i @param i_dataset index of the dataset @return the level of the dataset as a stringџџџџGribFileDataai_datasetџџџџџџџџintџџџџ string*get_dataset_long_name\/home/pascal/depot/filedata/src/gribfiledata.h46& @brief get the extended name of the record at index i @param i_dataset index of the dataset @return the extended name of the dataset as a stringџџџџGribFileDataЖi_datasetџџџџџџџџintџџџџ string get_dataset_name\/home/pascal/depot/filedata/src/gribfiledata.h,. @brief get the short name of the record at index i @param i_dataset index of the dataset @return the name of the dataset as a stringџџџџGribFileDatai_datasetџџџџџџџџintџџџџ stringget_n_dataset\/home/pascal/depot/filedata/src/gribfiledata.h$&Ђ @brief return the number of datasets in the file @return the number of datasetsџџџџGribFileDataintget_n_msg\/home/pascal/depot/filedata/src/gribfiledata.hУХд @brief return the number of messages (ie records) in the file @return the number of messages in the fileџџџџGribFileData const intget_scaling\/home/pascal/depot/filedata/src/gribfiledata.hЙО6 @brief retrieve the scaling factors of the given message @param i_msg indice of the searched message @param scale scale factor @param offset add offsetџџџџGribFileData i_msgџџџџџџџџintџџџџ scaleџџџџџџџџdouble&џџџџ offsetџџџџџџџџdouble&џџџџvoid&is_existing_dataset\/home/pascal/depot/filedata/src/gribfiledata.h№ @brief check if @a ds_name is an existing dataset @param ds_name name of a dataset @return true if the dataset existsџџџџGribFileDataЖds_nameџџџџџџџџconst string&џџџџconst boolparse_type_id\/home/pascal/depot/filedata/src/gribfiledata.hэњn @brief constructs the data type ID of a variale, as a string like int16, float32, etc using the keys dataFlag and dataWidth read in a message @warning only valid for GRIB1 files dataFlag table description at : http://www.ecmwf.int/publications/manuals/d/gribapi/fm92/grib1/detail/ctables/11/ @param data_flag bitmask describing the binary values @param data_width number of bits used to code a value @return the data type as a stringџџџџGribFileDatadata_flagџџџџџџџџ$const unsigned intџџџџdata_widthџџџџџџџџconst intџџџџ stringprint_var_desc\/home/pascal/depot/filedata/src/gribfiledata.hруЪ @brief print the content of a variable descriptor @param it_var_desc pointer to a t_var_desc objectџџџџGribFileDatavar_table_eltџџџџџџџџLconst pair< string, t_grib_var_desc >&џџџџvoidadd_offset_id\/home/pascal/depot/filedata/src/gribfiledata.hММ%* scale offset key ID const stringdata_flag_id\/home/pascal/depot/filedata/src/gribfiledata.hЦЦ$J binary data description flag key ID const stringdata_id\/home/pascal/depot/filedata/src/gribfiledata.hЪЪ6 data values access key ID const stringdata_width_id\/home/pascal/depot/filedata/src/gribfiledata.hШШ%N number of bits used by a value key ID const stringfd\/home/pascal/depot/filedata/src/gribfiledata.hЭ Э 6 low level file descriptor  FILE*fill_value_id\/home/pascal/depot/filedata/src/gribfiledata.hИИ%& fill value key ID const stringlevel_id\/home/pascal/depot/filedata/src/gribfiledata.hФФ . pressure level key ID const stringlevel_type_id\/home/pascal/depot/filedata/src/gribfiledata.hТТ%œ pressure type of level key ID. Type can be surface, isobaricInhPa or hybrid const string n_msg\/home/pascal/depot/filedata/src/gribfiledata.hбб 4 total number of messages int"parameter_code_id\/home/pascal/depot/filedata/src/gribfiledata.hДД)B name of a parameter code key ID const string"parameter_name_id\/home/pascal/depot/filedata/src/gribfiledata.hЖЖ)2 int name of a parameter const stringscale_factor_id\/home/pascal/depot/filedata/src/gribfiledata.hКК'* scale factor key ID const stringvar_name_id\/home/pascal/depot/filedata/src/gribfiledata.hВВ#8 name of a parameter key ID const stringvar_table\/home/pascal/depot/filedata/src/gribfiledata.hжжџџџџt_var_tablex_dim_id\/home/pascal/depot/filedata/src/gribfiledata.hОО 8 longitude dimension key ID const stringy_dim_id\/home/pascal/depot/filedata/src/gribfiledata.hРР 6 latitude dimension key ID const string t_var_table\/home/pascal/depot/filedata/src/gribfiledata.hе,е7ˆ maps the parametres, using their names, to its variable descriptor <map< string, t_grib_var_desc >t_grib_var_desc\/home/pascal/depot/filedata/src/gribfiledata.h&Ѕж @class t_grib_var a GRIB variable descriptor It is mainly sets which message(s) are related to a variableџџџџadd_msg\/home/pascal/depot/filedata/src/gribfiledata.h’™ @brief add the given message to the list of variable's messages @param i_msg indice of the message @param z_lvl vertical level valueџџџџt_grib_var_desc€ i_msgџџџџџџџџconst intџџџџ z_lvlџџџџџџџџconst intџџџџvoidget_sz_dims\/home/pascal/depot/filedata/src/gribfiledata.hšЄ @brief access to the variable dimensions size, in [Z,Y,X] order for multi levels variables. [Y,X] for 2D @return the dimensions sizeџџџџt_grib_var_descџџџ€џџџџџџџџџџџџvoidџџџџvector< int >operator <<\/home/pascal/depot/filedata/src/gribfiledata.hqwl @brief return content description as an output streamџџџџt_grib_var_desc€ streamџџџџџџџџstd::ostream&џџџџgrib_var_descџџџџџџџџ,const t_grib_var_desc&џџџџstd::ostream&t_grib_var_desc\/home/pascal/depot/filedata/src/gribfiledata.hNfџџџџџџџџt_grib_var_desc nameџџџџџџџџconst string&џџџџlong_nameџџџџџџџџconst string&џџџџparam_idџџџџџџџџconst intџџџџtype_idџџџџџџџџconst string&џџџџsz_xџџџџџџџџconst intџџџџsz_yџџџџџџџџconst intџџџџz_level_typeџџџџџџџџconst string&џџџџfill_valueџџџџџџџџconst doubleџџџџ scaleџџџџџџџџconst doubleџџџџ offsetџџџџџџџџconst doubleџџџџџџџџto_string\/home/pascal/depot/filedata/src/gribfiledata.hxŒ\ @brief return content description as a stringџџџџt_grib_var_desc џџџџџџџџџџџџvoidџџџџconst string"~ t_grib_var_desc\/home/pascal/depot/filedata/src/gribfiledata.hjmџџџџџџџџt_grib_var_descџџџџadd_msg\/home/pascal/depot/filedata/src/gribfiledata.h’™ @brief add the given message to the list of variable's messages @param i_msg indice of the message @param z_lvl vertical level valueџџџџt_grib_var_desc€ i_msgџџџџџџџџconst intџџџџ z_lvlџџџџџџџџconst intџџџџvoidget_sz_dims\/home/pascal/depot/filedata/src/gribfiledata.hšЄ @brief access to the variable dimensions size, in [Z,Y,X] order for multi levels variables. [Y,X] for 2D @return the dimensions sizeџџџџt_grib_var_descџџџ€џџџџџџџџџџџџvoidџџџџvector< int >operator <<\/home/pascal/depot/filedata/src/gribfiledata.hqwl @brief return content description as an output streamџџџџt_grib_var_desc€ streamџџџџџџџџstd::ostream&џџџџgrib_var_descџџџџџџџџ,const t_grib_var_desc&џџџџstd::ostream&t_grib_var_desc\/home/pascal/depot/filedata/src/gribfiledata.hNfџџџџџџџџt_grib_var_desc nameџџџџџџџџconst string&џџџџlong_nameџџџџџџџџconst string&џџџџparam_idџџџџџџџџconst intџџџџtype_idџџџџџџџџconst string&џџџџsz_xџџџџџџџџconst intџџџџsz_yџџџџџџџџconst intџџџџz_level_typeџџџџџџџџconst string&џџџџfill_valueџџџџџџџџconst doubleџџџџ scaleџџџџџџџџconst doubleџџџџ offsetџџџџџџџџconst doubleџџџџџџџџto_string\/home/pascal/depot/filedata/src/gribfiledata.hxŒ\ @brief return content description as a stringџџџџt_grib_var_desc џџџџџџџџџџџџvoidџџџџconst string"~ t_grib_var_desc\/home/pascal/depot/filedata/src/gribfiledata.hjmџџџџџџџџt_grib_var_descџџџџ fill_value\/home/pascal/depot/filedata/src/gribfiledata.h7 7 fill value doublelong_name\/home/pascal/depot/filedata/src/gribfiledata.h+ +4 int name of the variable stringname\/home/pascal/depot/filedata/src/gribfiledata.h) ), name of the variable string offset\/home/pascal/depot/filedata/src/gribfiledata.h; ;( scaling add offset doubleparam_id\/home/pascal/depot/filedata/src/gribfiledata.h--& GRIB parameter ID int scale\/home/pascal/depot/filedata/src/gribfiledata.h9 9 scaling factor doublesz_x\/home/pascal/depot/filedata/src/gribfiledata.h11 4 longitude dimension size intsz_y\/home/pascal/depot/filedata/src/gribfiledata.h33 2 latitude dimension size inttype_id\/home/pascal/depot/filedata/src/gribfiledata.h/ /˜ type of the packed binary data in a numpy-like format : uint16, float32... string v_lvl\/home/pascal/depot/filedata/src/gribfiledata.h??Ž vertical level of the messages, with the same indice than in @a v_msg vector< int > v_msg\/home/pascal/depot/filedata/src/gribfiledata.h==Є indices of messages related to the variable. As many messages as vertical levels vector< int >z_level_type\/home/pascal/depot/filedata/src/gribfiledata.h5 5" type of z level stringget_msg_data\/home/pascal/depot/filedata/src/gribfiledata.hџ0џџџџџџџџTџџџџGribFileDataср€ i_msgџџџџџџџџconst intџџџџ sz_dimџџџџџџџџvector< int >&џџџџoutdataџџџџџџџџT*џџџџT*std\/home/pascal/depot/filedata/src/gribfiledata.hhdf5filedata.hH5Fpublic.hH5public.hH5Spublic.hH5Apublic.hH5LTpublic.hHdf_sds.hpp`/home/pascal/depot/filedata/src/hdf5filedata.cpp%yЦg‚Pџџџџ`/home/pascal/depot/filedata/src/hdf5filedata.cppma—H5Apublic.h}5“H5Fpublic.h1mDHdf_sds.hpp>eэСhdf5filedata.hўD7H5public.hu1H5Spublic.hNЊ6ЅH5LTpublic.hР#`/home/pascal/depot/filedata/src/hdf5filedata.cppџџџџџџџџџџџџHDF5FileData`/home/pascal/depot/filedata/src/hdf5filedata.cpp;џџџџџџџџHDF5FileDataџџџ€filenameџџџџџџџџconst string&џџџџmodeџџџџџџџџconst string&џџџџџџџџ.check_read_write_limits`/home/pascal/depot/filedata/src/hdf5filedata.cpp`yџџџџџџџџHDF5FileDataџџџ€sds_nameџџџџџџџџconst char*џџџџ startџџџџџџџџint*џџџџ strideџџџџџџџџint*џџџџ edgesџџџџџџџџint*џџџџrankџџџџџџџџconst intџџџџconst boolclose_data_file`/home/pascal/depot/filedata/src/hdf5filedata.cppLUџџџџџџџџHDF5FileDataџџџ€void6free_read_write_allocations`/home/pascal/depot/filedata/src/hdf5filedata.cppX_џџџџџџџџHDF5FileDataџџџ€,are_limits_initializedџџџџџџџџconst bool*џџџџ startџџџџџџџџint*џџџџ strideџџџџџџџџint*џџџџ edgesџџџџџџџџint*џџџџvoid*get_dataset_data_type`/home/pascal/depot/filedata/src/hdf5filedata.cppџџџџџџџџHDF5FileDataџџџ€sds_nameџџџџџџџџ stringџџџџint*get_dataset_dimension`/home/pascal/depot/filedata/src/hdf5filedata.cppнэџџџџџџџџHDF5FileDataQЙ€sds_nameџџџџџџџџconst string&џџџџvector< int >,get_dataset_fill_value`/home/pascal/depot/filedata/src/hdf5filedata.cpp№їџџџџџџџџHDF5FileDataЅ€sds_nameџџџџџџџџconst string&џџџџfill_valueџџџџџџџџ void*џџџџvoid get_dataset_name`/home/pascal/depot/filedata/src/hdf5filedata.cppџџџџџџџџџHDF5FileDataeiџџџџџџџџintџџџџ stringget_fillValue`/home/pascal/depot/filedata/src/hdf5filedata.cppЫвџџџџџџџџHDF5FileDataџџџ€sds_nameџџџџџџџџconst string&џџџџfillValueџџџџџџџџ void*џџџџvoidget_n_dataset`/home/pascal/depot/filedata/src/hdf5filedata.cppљ§џџџџџџџџHDF5FileDataQЙ€intget_scaling`/home/pascal/depot/filedata/src/hdf5filedata.cppеоџџџџџџџџHDF5FileDataџџџ€sds_nameџџџџџџџџconst string&џџџџ scaleџџџџџџџџfloat64&џџџџ offsetџџџџџџџџfloat64&џџџџvoidget_values_attr`/home/pascal/depot/filedata/src/hdf5filedata.cpp14џџџџџџџџHDF5FileDataЕџ4attr_nameџџџџџџџџ stringџџџџ string.get_values_attr_dataset`/home/pascal/depot/filedata/src/hdf5filedata.cpp(џџџџџџџџHDF5FileDataЖ:sds_nameџџџџџџџџ stringџџџџattr_nameџџџџџџџџ stringџџџџ stringhas_attr`/home/pascal/depot/filedata/src/hdf5filedata.cpp69џџџџџџџџHDF5FileDataџџџ€attr_nameџџџџџџџџ stringџџџџbool has_attr_dataset`/home/pascal/depot/filedata/src/hdf5filedata.cpp*/џџџџџџџџHDF5FileDatakеsds_nameџџџџџџџџ stringџџџџattr_nameџџџџџџџџ stringџџџџbool@init_read_write_null_input_param`/home/pascal/depot/filedata/src/hdf5filedata.cppzœџџџџџџџџHDF5FileDataџџџ€sds_nameџџџџџџџџconst char*џџџџ startџџџџџџџџ int*&џџџџ strideџџџџџџџџ int*&џџџџ edgesџџџџџџџџ int*&џџџџrankџџџџџџџџint&џџџџ$initialized_valuesџџџџџџџџ bool*џџџџvoidopen_data_file`/home/pascal/depot/filedata/src/hdf5filedata.cppFJџџџџџџџџHDF5FileDataџџџ€void read_all_dataset`/home/pascal/depot/filedata/src/hdf5filedata.cpp;vџџџџџџџџHDF5FileDatavoidread_data`/home/pascal/depot/filedata/src/hdf5filedata.cppлџџџџџџџџHDF5FileDataџџџ€dataџџџџџџџџ void*џџџџsds_nameџџџџџџџџconst char*џџџџ startџџџџџџџџint*џџџџ strideџџџџџџџџint*џџџџ edgesџџџџџџџџint*џџџџrankџџџџџџџџintџџџџ void*read_line`/home/pascal/depot/filedata/src/hdf5filedata.cppœЈџџџџџџџџHDF5FileDatalineџџџџџџџџ stringџџџџtagџџџџџџџџstring&џџџџ valueџџџџџџџџstring&џџџџvoidread_metadata`/home/pascal/depot/filedata/src/hdf5filedata.cppy˜џџџџџџџџHDF5FileDataџџџ€void split`/home/pascal/depot/filedata/src/hdf5filedata.cppЙЩџџџџџџџџHDF5FileDatastrџџџџџџџџconst string&џџџџ tokensџџџџџџџџ"vector< string >&џџџџdelimitersџџџџџџџџconst string&џџџџvoidtrim`/home/pascal/depot/filedata/src/hdf5filedata.cppЊЗџџџџџџџџHDF5FileDataџџџ€sџџџџџџџџstring&џџџџvoid~ HDF5FileData`/home/pascal/depot/filedata/src/hdf5filedata.cpp=DџџџџџџџџHDF5FileDataџџџ€џџџџJstring.h vectormap filedatareader.h hdf5.h\/home/pascal/depot/filedata/src/hdf5filedata.h%yУюЧ8џџџџ vector …/Гstring.h­Ц‰=mapю hdf5.h T‡ filedatareader.hт§ƒ\/home/pascal/depot/filedata/src/hdf5filedata.hцАœм\/home/pascal/depot/filedata/src/hdf5filedata.hџџџџџџџџџџџџHDF5FileData\/home/pascal/depot/filedata/src/hdf5filedata.h[(@author James MANLEYџџџџFileDataReaderHDF5FileData\/home/pascal/depot/filedata/src/hdf5filedata.hSџџџџџџџџHDF5FileDataџџџ€nameџџџџџџџџconst string&џџџџmodeџџџџџџџџconst string&џџџџџџџџ.check_read_write_limits\/home/pascal/depot/filedata/src/hdf5filedata.hTTqџџџџџџџџHDF5FileDatasds_nameџџџџџџџџconst char*џџџџ startџџџџџџџџint*џџџџ strideџџџџџџџџint*џџџџ edgesџџџџџџџџint*џџџџrankџџџџџџџџconst intџџџџconst boolclose_data_file\/home/pascal/depot/filedata/src/hdf5filedata.h;;". @brief closes the fileџџџџHDF5FileDatavoid6free_read_write_allocations\/home/pascal/depot/filedata/src/hdf5filedata.hS SoџџџџџџџџHDF5FileData,are_limits_initializedџџџџџџџџconst bool*џџџџ startџџџџџџџџint*џџџџ strideџџџџџџџџint*џџџџ edgesџџџџџџџџint*џџџџvoid*get_dataset_data_type\/home/pascal/depot/filedata/src/hdf5filedata.h..6џџџџџџџџHDF5FileDataџџџ„sds_nameџџџџџџџџ stringџџџџint*get_dataset_dimension\/home/pascal/depot/filedata/src/hdf5filedata.h&&EџџџџџџџџHDF5FileData5S„sds_nameџџџџџџџџconst string&џџџџvector< int >,get_dataset_fill_value\/home/pascal/depot/filedata/src/hdf5filedata.h((QџџџџџџџџHDF5FileDataQЙ„sds_nameџџџџџџџџconst string&џџџџfill_valueџџџџџџџџ void*џџџџvoid get_dataset_name\/home/pascal/depot/filedata/src/hdf5filedata.h,,*џџџџџџџџHDF5FileDatadiџџџџџџџџintџџџџ stringget_fillValue\/home/pascal/depot/filedata/src/hdf5filedata.hB B?џџџџџџџџHDF5FileDatasds_nameџџџџџџџџconst string&џџџџfillValueџџџџџџџџ void*џџџџvoidget_n_dataset\/home/pascal/depot/filedata/src/hdf5filedata.h**џџџџџџџџHDF5FileDataM•intget_scaling\/home/pascal/depot/filedata/src/hdf5filedata.hD DMџџџџџџџџHDF5FileDatasds_nameџџџџџџџџconst string&џџџџ scaleџџџџџџџџfloat64&џџџџ offsetџџџџџџџџfloat64&џџџџvoidget_values_attr\/home/pascal/depot/filedata/src/hdf5filedata.h444џџџџџџџџHDF5FileDataџџџ„attr_nameџџџџџџџџ stringџџџџ string.get_values_attr_dataset\/home/pascal/depot/filedata/src/hdf5filedata.h00LџџџџџџџџHDF5FileDataџџџ„sds_nameџџџџџџџџ stringџџџџattr_nameџџџџџџџџ stringџџџџ stringhas_attr\/home/pascal/depot/filedata/src/hdf5filedata.h66+џџџџџџџџHDF5FileDataattr_nameџџџџџџџџ stringџџџџbool has_attr_dataset\/home/pascal/depot/filedata/src/hdf5filedata.h22CџџџџџџџџHDF5FileDataџџџ„sds_nameџџџџџџџџ stringџџџџattr_nameџџџџџџџџ stringџџџџbool@init_read_write_null_input_param\/home/pascal/depot/filedata/src/hdf5filedata.hU UџџџџџџџџHDF5FileData Џ5sds_nameџџџџџџџџconst char*џџџџ startџџџџџџџџ int*&џџџџ strideџџџџџџџџ int*&џџџџ edgesџџџџџџџџ int*&џџџџrankџџџџџџџџint&џџџџ$initialized_valuesџџџџџџџџ bool*џџџџvoidopen_data_file\/home/pascal/depot/filedata/src/hdf5filedata.h@@!* @brief open the fileџџџџHDF5FileDataџџџ„void read_all_dataset\/home/pascal/depot/filedata/src/hdf5filedata.hI IџџџџџџџџHDF5FileData ­F€voidread_data\/home/pascal/depot/filedata/src/hdf5filedata.h$(џџџџџџџџHDF5FileDataџџџ„dataџџџџџџџџ void*џџџџsds_nameџџџџџџџџconst char*џџџџ startџџџџџџџџint*џџџџ strideџџџџџџџџint*џџџџ edgesџџџџџџџџint*џџџџrankџџџџџџџџintџџџџ void*read_line\/home/pascal/depot/filedata/src/hdf5filedata.hV V;џџџџџџџџHDF5FileDataџџџ€lineџџџџџџџџ stringџџџџtagџџџџџџџџstring&џџџџ valueџџџџџџџџstring&џџџџvoidread_metadata\/home/pascal/depot/filedata/src/hdf5filedata.hW WџџџџџџџџHDF5FileDatavoid split\/home/pascal/depot/filedata/src/hdf5filedata.hZ ZTџџџџџџџџHDF5FileDatastrџџџџџџџџconst string&џџџџ tokensџџџџџџџџ"vector< string >&џџџџdelimitersџџџџџџџџconst string&џџџџvoidtrim\/home/pascal/depot/filedata/src/hdf5filedata.hY YџџџџџџџџHDF5FileData tokenџџџџџџџџstring&џџџџvoid~ HDF5FileData\/home/pascal/depot/filedata/src/hdf5filedata.h џџџџџџџџHDF5FileDataџџџ€џџџџattribute\/home/pascal/depot/filedata/src/hdf5filedata.hPP џџџџ*map< string, string >attributes\/home/pascal/depot/filedata/src/hdf5filedata.hOO џџџџvector< hid_t >dataset_map\/home/pascal/depot/filedata/src/hdf5filedata.hMM!џџџџ(map< string, hid_t >dataset_vect\/home/pascal/depot/filedata/src/hdf5filedata.hNN"џџџџ vector< string >file_id\/home/pascal/depot/filedata/src/hdf5filedata.hK Kџџџџ hid_tname\/home/pascal/depot/filedata/src/hdf5filedata.hG Gџџџџ string"read_dataset_done\/home/pascal/depot/filedata/src/hdf5filedata.hQ Qџџџџboolstd\/home/pascal/depot/filedata/src/hdf5filedata.hhdffiledata.hHdf_common.hppHdf_sds.hppHdf_attr.hpptools.hmfhdf.h^/home/pascal/depot/filedata/src/hdffiledata.cpp%yУђё џџџџhdffiledata.h˜vТHdf_attr.hppƒђЯвmfhdf.hІ(ЛHdf_sds.hpp>eэСHdf_common.hppbдtools.hАох7^/home/pascal/depot/filedata/src/hdffiledata.cppЊѕі2^/home/pascal/depot/filedata/src/hdffiledata.cppџџџџџџџџџџџџHDFFileData^/home/pascal/depot/filedata/src/hdffiledata.cpp#џџџџџџџџHDFFileData€nameџџџџџџџџconst string&џџџџmodeџџџџџџџџconst string&џџџџopen_fileџџџџџџџџconst boolџџџџџџџџHDFFileData^/home/pascal/depot/filedata/src/hdffiledata.cpp28џџџџџџџџHDFFileData љKhfdџџџџџџџџ$const HDFFileData&џџџџџџџџ.check_read_write_limits^/home/pascal/depot/filedata/src/hdffiledata.cppJcџџџџџџџџHDFFileDatasds_nameџџџџџџџџconst char*џџџџ startџџџџџџџџint*џџџџ strideџџџџџџџџint*џџџџ edgesџџџџџџџџint*џџџџrankџџџџџџџџconst intџџџџconst boolfree_hdf_file^/home/pascal/depot/filedata/src/hdffiledata.cppЧЪџџџџџџџџHDFFileData Эvoid"free_hdf_metadata^/home/pascal/depot/filedata/src/hdffiledata.cppкнџџџџџџџџHDFFileDataџџџ€void6free_read_write_allocations^/home/pascal/depot/filedata/src/hdffiledata.cppBIџџџџџџџџHDFFileData€,are_limits_initializedџџџџџџџџconst bool*џџџџ startџџџџџџџџint*џџџџ strideџџџџџџџџint*џџџџ edgesџџџџџџџџint*џџџџvoid,get_dataset_fill_value^/home/pascal/depot/filedata/src/hdffiledata.cpp-1џџџџџџџџHDFFileDatasds_nameџџџџџџџџconst string&џџџџfill_valueџџџџџџџџ void*џџџџvoidget_file_attr^/home/pascal/depot/filedata/src/hdffiledata.cppџџџџџџџџHDFFileDataџџџ€attr_nameџџџџџџџџ stringџџџџ stringget_fillValue^/home/pascal/depot/filedata/src/hdffiledata.cppЄЈџџџџџџџџHDFFileDatasds_nameџџџџџџџџconst string&џџџџfillValueџџџџџџџџ void*џџџџvoidget_hdf_file^/home/pascal/depot/filedata/src/hdffiledata.cppОТџџџџџџџџHDFFileData ўHdf_file*get_metadata^/home/pascal/depot/filedata/src/hdffiledata.cppЫЯџџџџџџџџHDFFileData€ HDFFileMetaData*get_scaling^/home/pascal/depot/filedata/src/hdffiledata.cppЋГџџџџџџџџHDFFileData љKsds_nameџџџџџџџџconst string&џџџџ scaleџџџџџџџџfloat64&џџџџ offsetџџџџџџџџfloat64&џџџџvoid"get_sds_dimension^/home/pascal/depot/filedata/src/hdffiledata.cppфїџџџџџџџџHDFFileDatasds_nameџџџџџџџџconst string&џџџџvector< int >"get_sds_type_code^/home/pascal/depot/filedata/src/hdffiledata.cpp(,џџџџџџџџHDFFileData€sds_nameџџџџџџџџconst string&џџџџconst int32get_values_attr^/home/pascal/depot/filedata/src/hdffiledata.cpp џџџџџџџџHDFFileDataattr_nameџџџџџџџџ stringџџџџ string.get_values_attr_dataset^/home/pascal/depot/filedata/src/hdffiledata.cpp*™џџџџџџџџHDFFileDatasds_nameџџџџџџџџ stringџџџџattr_nameџџџџџџџџ stringџџџџ string&get_vdata_dimension^/home/pascal/depot/filedata/src/hdffiledata.cppјџџџџџџџџHDFFileDatakеvdata_nameџџџџџџџџconst string&џџџџvector< int >has_attr^/home/pascal/depot/filedata/src/hdffiledata.cpp!џџџџџџџџHDFFileDataattr_nameџџџџџџџџ stringџџџџbool has_attr_dataset^/home/pascal/depot/filedata/src/hdffiledata.cppœЁџџџџџџџџHDFFileDataosds_nameџџџџџџџџ stringџџџџattr_nameџџџџџџџџ stringџџџџboolhas_file_attr^/home/pascal/depot/filedata/src/hdffiledata.cpp$(џџџџџџџџHDFFileData €attr_nameџџџџџџџџ stringџџџџbool@init_read_write_null_input_param^/home/pascal/depot/filedata/src/hdffiledata.cppd|џџџџџџџџHDFFileData љKsds_nameџџџџџџџџconst char*џџџџ startџџџџџџџџ int*&џџџџ strideџџџџџџџџ int*&џџџџ edgesџџџџџџџџ int*&џџџџrankџџџџџџџџint&џџџџ$initialized_valuesџџџџџџџџ bool*џџџџvoid$is_hdf_file_loaded^/home/pascal/depot/filedata/src/hdffiledata.cppорџџџџџџџџHDFFileDataconst bool,is_hdf_metadata_loaded^/home/pascal/depot/filedata/src/hdffiledata.cppсуџџџџџџџџHDFFileData€const boolload_hdf_file^/home/pascal/depot/filedata/src/hdffiledata.cppУЦџџџџџџџџHDFFileDatapvoid"load_hdf_metadata^/home/pascal/depot/filedata/src/hdffiledata.cppайџџџџџџџџHDFFileDatavoidoperator =^/home/pascal/depot/filedata/src/hdffiledata.cpp9AџџџџџџџџHDFFileDataџџџ€hfdџџџџџџџџ$const HDFFileData&џџџџHDFFileData&read_data^/home/pascal/depot/filedata/src/hdffiledata.cpp}—џџџџџџџџHDFFileData ўI€dataџџџџџџџџ void*џџџџsds_nameџџџџџџџџconst char*џџџџ startџџџџџџџџint*џџџџ strideџџџџџџџџint*џџџџ edgesџџџџџџџџint*џџџџrankџџџџџџџџintџџџџ void*read_vdata^/home/pascal/depot/filedata/src/hdffiledata.cpp˜НџџџџџџџџHDFFileDatadataџџџџџџџџ void*џџџџvdata_nameџџџџџџџџconst char*џџџџvdata_fieldџџџџџџџџconst char*џџџџ startџџџџџџџџintџџџџ edgesџџџџџџџџintџџџџ void*~ HDFFileData^/home/pascal/depot/filedata/src/hdffiledata.cpp$'џџџџџџџџHDFFileDataџџџџL filedatareader.hHdf_file.hpp"hdffilemetadata.hnetcdf.h cmath cfloatZ/home/pascal/depot/filedata/src/hdffiledata.h%yУэЭ8џџџџ cmath†ЬZ/home/pascal/depot/filedata/src/hdffiledata.h9Hš"hdffilemetadata.hЎ(RйHdf_file.hppэЋо cfloatыxnetcdf.h uj filedatareader.hт§ƒZ/home/pascal/depot/filedata/src/hdffiledata.hџџџџџџџџџџџџHDFFileDataZ/home/pascal/depot/filedata/src/hdffiledata.hHт ќManage the opening, reading, and accessing to the data in a HDF File. This class encapsulates the Hdf_file class, developped by Fabrice Ducos (fabrice.ducos@icare.univ-lille1.fr), which is a lower level interface to HDF. How to do some useful actions :<br> <div align="center"><strong>load the data of a whole sds</strong></div> <p> <ul>-> in a C way (with static arrays)</ul><br><br> <code> HDFFileData my_hdf=HDFFileData("path_to_desired_hdf_file"); <i>// open the file for reading </i><br> float32 *data =NULL; <i>// define buffer where to put the read data</i><br> data=read_data(static_cast<void*>(data),"Name_Of_The_Sds"); <i>// read the sds' data</i><br> <i>make your stuff with the data here</i><br> delete[] data; <i>// don't forget to free the data after use</i><br> </code> Some remarks : <br> - data can either be NULL or allocated by the user. If NULL, the method manages the allocations, but the caller must free the data after use.<br> </p> <p><ul>-> in a C++ way (with STL's vectors)</ul><br><br> <code> HDFFileData my_hdf=HDFFileData("path_to_desired_hdf_file"); <i>// open the file for reading </i><br> Vector \< T \> *v_data=get_value_XD\<T\>("Name_Of_The_Sds"); <i>// fill a vector with the read data</i><br> <i>make your stuff with the data vector here</i><br> delete v_data; <i>// don't forget to free the data after use</i><br> </code> Some remarks : <br> - X is 1,2 or 3 : the dimension of the returned vector (in fact it returns a pointer to a vector). If 1, it will be a vector<\T> *, if 2 a vector\< vector \<T> > *... - T is the type of the read data. </p> @author Nicolas PASCAL (nicolas.pascal@icare.univ-lille1.fr) @version 1.0џџџџFileDataReader-HDFFileDataZ/home/pascal/depot/filedata/src/hdffiledata.h[џџџџџџџџHDFFileDataџџџ€nameџџџџџџџџconst string&џџџџmodeџџџџџџџџconst string&џџџџopen_fileџџџџџџџџconst boolџџџџџџџџHDFFileDataZ/home/pascal/depot/filedata/src/hdffiledata.h””'џџџџџџџџHDFFileDataџџџ€hfdџџџџџџџџ$const HDFFileData&џџџџџџџџ.check_read_write_limitsZ/home/pascal/depot/filedata/src/hdffiledata.h„„qџџџџџџџџHDFFileDatasds_nameџџџџџџџџconst char*џџџџ startџџџџџџџџint*џџџџ strideџџџџџџџџint*џџџџ edgesџџџџџџџџint*џџџџrankџџџџџџџџconst intџџџџconst boolclose_data_fileZ/home/pascal/depot/filedata/src/hdffiledata.h№№,. @brief closes the fileџџџџHDFFileDataЖr€voidfree_hdf_fileZ/home/pascal/depot/filedata/src/hdffiledata.hЋ Ћ| @brief close the hdf file, and free the ressources used by itџџџџHDFFileDatavoid"free_hdf_metadataZ/home/pascal/depot/filedata/src/hdffiledata.hН НЌ @brief Release the metadata tree If the metadata haven't been loaded, nothing's doneџџџџHDFFileDataср€void6free_read_write_allocationsZ/home/pascal/depot/filedata/src/hdffiledata.hƒ ƒo” free the allocations made by the init_read_write_null_input_param methodsџџџџHDFFileData,are_limits_initializedџџџџџџџџconst bool*џџџџ startџџџџџџџџint*џџџџ strideџџџџџџџџint*џџџџ edgesџџџџџџџџint*џџџџvoidget_datasetZ/home/pascal/depot/filedata/src/hdffiledata.hффaџџџџџџџџHDFFileData хW€sds_nameџџџџџџџџ stringџџџџHdf_sds*get_dataset_data_typeZ/home/pascal/depot/filedata/src/hdffiledata.hцчGџџџџџџџџHDFFileData€sds_nameџџџџџџџџ stringџџџџint*get_dataset_dimensionZ/home/pascal/depot/filedata/src/hdffiledata.hезŠ @brief return the given dataset size along each axis @param ds_name [IN] dataset name @return the axis dimensions in ordering [..., Z, Y, X]. Use return_vector.size() to know the rank of the sdsџџџџHDFFileDataЖн„sds_nameџџџџџџџџconst string&џџџџvector< int >,get_dataset_fill_valueZ/home/pascal/depot/filedata/src/hdffiledata.hЩЩQj @brief read the fill value of the sds given in parametre @param sds_name the name of the sds where to read the fill value @param fill_value (output) where to store the read valueџџџџHDFFileDatasds_nameџџџџџџџџconst string&џџџџfill_valueџџџџџџџџ void*џџџџvoid get_dataset_nameZ/home/pascal/depot/filedata/src/hdffiledata.hттQџџџџџџџџHDFFileData хW€iџџџџџџџџintџџџџ stringget_file_attrZ/home/pascal/depot/filedata/src/hdffiledata.hљ љ*џџџџџџџџHDFFileDataattr_nameџџџџџџџџ stringџџџџ stringget_fillValueZ/home/pascal/depot/filedata/src/hdffiledata.hп п?т @brief read the given dataset's fill value @param ds_name [IN] dataset name @param fillvalue [OUT] fill value.џџџџHDFFileDatasds_nameџџџџџџџџconst string&џџџџfillValueџџџџџџџџ void*џџџџvoidget_hdf_fileZ/home/pascal/depot/filedata/src/hdffiledata.hЂ ЂЈ @brief accessor to the Hdf_file object. @return a pointer to Hdf_file object used.џџџџHDFFileDataHdf_file*get_metadataZ/home/pascal/depot/filedata/src/hdffiledata.hДД#^ @brief access to the HDF file metadata. @return a pointer to HDFFileMetaData object. If the metadata haven't been loaded using the load_metadata method, it will return NULL.џџџџHDFFileData€ HDFFileMetaData*get_n_datasetZ/home/pascal/depot/filedata/src/hdffiledata.hррBџџџџџџџџHDFFileDataџџџ€int"get_nearest_indexZ/home/pascal/depot/filedata/src/hdffiledata.hffU find the indexes of the values that are the nearest to val. REM if the return vector have many indexes, the values at those indexes are equal. @param v_data the vector that contains the data to be processed @param val the value we are searching for the nearest values in v_data @return a vector containing the indexes of the values that are the nearest to val in v_dataџџџџTџџџџHDFFileDataџџџ€ v_dataџџџџџџџџ$const vector< T >&џџџџvalџџџџџџџџconst T&џџџџ&const vector< int >"get_nearest_indexZ/home/pascal/depot/filedata/src/hdffiledata.hnnDD search in a vector the nearest value to val, and retrun its index @param data the vector where must be processed the search @param val the value wa are searching for the nearset one @return the index of the nearest vector value. -1 in case of problem, for example if the data are empty.џџџџTџџџџHDFFileDatadataџџџџџџџџ$const vector< T >*џџџџvalџџџџџџџџconst Tџџџџconst int"get_nearest_indexZ/home/pascal/depot/filedata/src/hdffiledata.hwwbЊ search in a vector the nearest value to val, and retrun its index @param data the array where must be processed the search @param data_size the number of values of the array @param val the value wa are searching for the nearset one @return the index of the nearest vector value. -1 in case of problem, for example if the data are empty.џџџџTџџџџHDFFileDatadataџџџџџџџџconst T*џџџџdata_sizeџџџџџџџџconst intџџџџvalџџџџџџџџconst Tџџџџconst intget_scalingZ/home/pascal/depot/filedata/src/hdffiledata.hс сMџџџџџџџџHDFFileDatasds_nameџџџџџџџџconst string&џџџџ scaleџџџџџџџџfloat64&џџџџ offsetџџџџџџџџfloat64&џџџџvoid"get_sds_dimensionZ/home/pascal/depot/filedata/src/hdffiledata.hЯЯ9ž @brief access the size of the given sds @param sds_name the name of the sds @return a vector that contains the dimensions of the sds in each direction. Use return_vector.size() to know the rank of the sdsџџџџHDFFileDatasds_nameџџџџџџџџconst string&џџџџvector< int >"get_sds_type_codeZ/home/pascal/depot/filedata/src/hdffiledata.hSS<ž Returns the HDF type_code of the sds named "sds_name". Returns -1 if this sds doesn't exist. @param sds_name string : the name of the desired sds @return the HDF type_code of the given sds int32.џџџџHDFFileDatasds_nameџџџџџџџџconst string&џџџџconst int32get_valueZ/home/pascal/depot/filedata/src/hdffiledata.hMM|И generic methods called by get_value_0D,get_value_1D,get_value_2D. Don't use it directly.џџџџTџџџџHDFFileDatasds_nameџџџџџџџџconst char*џџџџ startџџџџџџџџint*џџџџ strideџџџџџџџџint*џџџџ edgesџџџџџџџџint*џџџџrankџџџџџџџџintџџџџT*get_value_0DZ/home/pascal/depot/filedata/src/hdffiledata.h  In the opened file, read the value of the sds called "sds_name" at the point "start". BE CAREFUL : this array must be given using the order ...[Z][Y][X]. This method is a template, so you have also to precise the data type of the read value while calling it. If you are trying to read a value in a 2D sds, please refer to the get_var_value method. It's a simplest front-end to this method. An examples is clearest : <br><b>long start[] = {16,25};</b> // start position<br> <b>long rank = 2;</b> // the dimension of start<br> <b>float32 val = hfd.get_value_0D<float32>("Latitude",start,NULL,NULL,rank);</b><br> It will read the data of the sds "Latitude", that is composed of float32 values at the position (16,25) using (Y,X) convention (ie (lat,lon)). @param sds_name the name of the sds (Scientific Data Set) we want to access. @param start begining of the selection. If NULL, start at (0,0) if rank is 2 ; (0,0,0) if rank is 3... @param stride step between 2 interesting values. If NULL, this step is set to 1 in each dimension (ie all values will be read) @param edges number of values to be read in each dimension. if NULL, it will be all data along each dimension. @param rank the dimension of start @return a pointer to a 1D vector containing the selected values of type T. Allocated with new inside, and so must be deleted by the caller after being used.џџџџTџџџџHDFFileDatasds_nameџџџџџџџџconst char*џџџџ startџџџџџџџџint*џџџџ strideџџџџџџџџint*џџџџ edgesџџџџџџџџint*џџџџrankџџџџџџџџint&џџџџTget_value_1DZ/home/pascal/depot/filedata/src/hdffiledata.hJJˆJ In the opened file, read the values of the sds called "sds_name", starting at the point "start", reading "edges" values, with a step of "stride" between each values. BE CAREFUL : those array values must be given using the order ...[Z][Y][X]. The result data must be a 1D array. If it isn't the case, an error message will prevent you. This method is a template, so you have also to precise the data type of the read values while calling it. Some examples are clearest : ----------------------------- EXAMPLE 1 ---------------------------- <br><b>long start[] = {3,0};</b> // start position<br> <b>long stride[] = {2,1};</b> // step between 2 values<br> <b>long edges[] = {35,1};</b> // number of values to be read<br> <b>long rank = 2;</b> // the dimension of start,stride and edges<br> <b>vector<float32> *v = hfd.get_value_1D<float32>("Latitude",start,stride,edges,rank);</b><br> It will read the data of the sds "Latitude", that is composed of float32 values. - Along X, 1 value (edges[1]) will be read, starting at the position 0 (start[1]), with a step of 1 (stride[1]) between 2 values. In this case, the step isn't useful because we read only 1 value. - Along Y, 35 values (edges[0]) will be read, starting at the position 3 (start[0]), with a step of 2 (stride[0]) between 2 values. The method will return a POINTER to an 1D vector. So, to access the read data, use <b>(*v)[0]</b> instead of v[0] if it wasn't a pointer. ----------------------------- EXAMPLE 2 ---------------------------- <br><b>long start[] = {0,0,0};</b> // start position<br> <b>long stride[] = {1,1,1};</b> // same result if NULL, and even a little bit faster : by default, the step between 2 values is 1<br> <b>long edges[] = {20,1,1};</b> // number of values to be read<br> <b>long rank = 3;</b> // the dimension of start,stride and edges<br> <b>vector<uint8> *v = hfd.get_value_1D<uint8>("Nb_Layer_Found",start,stride,edges,rank);</b><br> It will read the data of the sds "Nb_Layer_Found", that is composed of uint8 values. - Along X, 1 value (edges[2]) will be read, starting at the position 0 (start[2]), with a step of 1 (stride[2]). - Along Y, 1 values (edges[1]) will be read, starting at the position 0 (start[1]), with a step of 1 (stride[1]). - Along Z, 20 values (edges[0]) will be read, starting at the position 0 (start[0]), with a step of 1 (stride[0]). The method will return a POINTER to an 1D vector. TODO----------------------------- EXAMPLE 3 : USING DEFAULT VALUES (not available yet) ---------------------------- TODO <br><b>vector<float32> *v = get_value_1D<float32>("Top_Layer_Height",NULL,NULL,NULL,1);</b><br> TODO It will return the whole data of type float32 contained in the sds named "Top_Layer_Height". TODO REM : In this case, the sds "Top_Layer_Height" must have a dimension of 1, because the read values' vector must have a dimension of 1. @param sds_name the name of the sds (Scientific Data Set) we want to access. @param start begining of the selection. If NULL, start at (0,0) if rank is 2 ; (0,0,0) if rank is 3... @param stride step between 2 interesting values. If NULL, this step is set to 1 in each dimension (ie all values will be read) @param edges number of values to be read in each dimension. if NULL, it will be all data along each dimension. @param rank the dimension of start, stride and edges @return a pointer to a 1D vector containing the selected values of type T. Allocated with new inside, and so must be deleted by the caller after being used.џџџџTџџџџHDFFileDataџџџ€sds_nameџџџџџџџџconst char*џџџџ startџџџџџџџџint*џџџџ strideџџџџџџџџint*џџџџ edgesџџџџџџџџint*џџџџrankџџџџџџџџint&џџџџvector< T >*get_value_2DZ/home/pascal/depot/filedata/src/hdffiledata.hxx‘ј In the opened file, read the values of the sds called "sds_name", starting at the point "start", reading "edges" values, with a step of "stride" between each values. BE CAREFUL : those array values must be given using the order ...[Z][Y][X]. The result data must be a 1D array. If it isn't the case, an error message will prevent you. This method is a template, so you have also to precise the data type of the read values while calling it. Some examples are clearest : ----------------------------- EXAMPLE 1 ---------------------------- <br><b>long start[] = {3,0};</b> // start position<br> <b>long stride[] = {2,1};</b> // step between 2 values<br> <b>long edges[] = {35,2};</b> // number of values to be read<br> <b>long rank = 2;</b> // the dimension of start,stride and edges<br> <b>vector<float32> *v = hfd.get_value_2D<float32>("Latitude",start,stride,edges,rank);</b><br> It will read the data of the sds "Latitude", that is composed of float32 values. - Along X, 2 value (edges[1]) will be read, starting at the position 0 (start[1]), with a step of 1 (stride[1]) between 2 values. - Along Y, 35 values (edges[0]) will be read, starting at the position 3 (start[0]), with a step of 2 (stride[0]) between 2 values. The method will return a POINTER to an 2D vector. So, to access the read data, use <b>(*v)[0][0]</b>. ----------------------------- EXAMPLE 2 ---------------------------- <br><b>long start[] = {0,0,0};</b> // start position<br> <b>long stride[] = {1,1,1};</b> // same result if NULL, and even a little bit faster : by default, the step between 2 values is 1<br> <b>long edges[] = {1,20,15};</b> // number of values to be read<br> <b>long rank = 3;</b> // the dimension of start,stride and edges<br> <b>vector<uint8> *v = hfd.get_value_2D<uint8>("Nb_Layer_Found",start,stride,edges,rank);</b><br> It will read the data of the sds "Nb_Layer_Found", that is composed of uint8 values. - Along X (the longitude for ex), 15 values (edges[2]) will be read, starting at the position 0 (start[2]), with a step of 1 (stride[2]). - Along Y (the latitude for ex), 20 values (edges[1]) will be read, starting at the position 0 (start[1]), with a step of 1 (stride[1]). - Along Z (the number of layers found for ex), 1 value (edges[0]) will be read, starting at the position 0 (start[0]), with a step of 1 (stride[0]). The method will return a POINTER to an 2D vector. In this example, the sense of the return vector will be : the number of cloud's layers found along (20,15) lat_lon mesures. TODO----------------------------- EXAMPLE 3 : USING DEFAULT VALUES (not available yet) ---------------------------- TODO<br><b>vector<float32> *v = get_value_2D<float32>("Longitude",NULL,NULL,NULL,2);</b><br> TODO It will return the whole data of type float32 contained in the sds named "Longitude". TODO REM : In this case, the sds "Longitude" must have a dimension of 2, because the read values' vector must have a dimension of 2. @param sds_name the name of the sds (Scientific Data Set) we want to access. @param start begining of the selection. If NULL, start at (0,0) if rank is 2 ; (0,0,0) if rank is 3... @param stride step between 2 interesting values. If NULL, this step is set to 1 in each dimension (ie all values will be read) @param edges number of values to be read in each dimension. if NULL, it will be all data along each dimension. @param rank the dimension of start, stride and edges @return a pointer to a 2D vector containing the selected values of type T. Allocated with new inside, and so must be deleted by the caller after being used.џџџџTџџџџHDFFileDatasds_nameџџџџџџџџconst char*џџџџ startџџџџџџџџint*џџџџ strideџџџџџџџџint*џџџџ edgesџџџџџџџџint*џџџџrankџџџџџџџџint&џџџџ.vector< vector < T > >*get_values_attrZ/home/pascal/depot/filedata/src/hdffiledata.hї ї,џџџџџџџџHDFFileData€attr_nameџџџџџџџџ stringџџџџ string.get_values_attr_datasetZ/home/pascal/depot/filedata/src/hdffiledata.hщщ@џџџџџџџџHDFFileDatasds_nameџџџџџџџџ stringџџџџattr_nameџџџџџџџџ stringџџџџ stringget_var_valueZ/home/pascal/depot/filedata/src/hdffiledata.h  Q@ Read a value in a sds directly using its y_index and x_index. This method is a convenience method to access to a 2D sds. This method is a template, so you have also to precise the data type of the read value while calling it. Ex : <br><b>float32 v = get_var_value<float32>("Latitude",12,1);</b><br> will read in the sds "Latitude" the value at (12,1) using (Y,X) convention @return the read valueџџџџTџџџџHDFFileDatasds_nameџџџџџџџџconst stringџџџџy_indexџџџџџџџџconst int&џџџџx_indexџџџџџџџџconst int&џџџџT&get_vdata_dimensionZ/home/pascal/depot/filedata/src/hdffiledata.hоо=( @brief access the size of a vdata It returns a 2 values vector like this {nb of vdata records, nb of fields}. It doesn't change if the fields have an order bigger than one. @param vdata_name the name of the vdata @return a vector that contains the dimensions of the vdata.џџџџHDFFileDatavdata_nameџџџџџџџџconst string&џџџџvector< int >has_attrZ/home/pascal/depot/filedata/src/hdffiledata.hћ ћ#џџџџџџџџHDFFileDataattr_nameџџџџџџџџ stringџџџџbool has_attr_datasetZ/home/pascal/depot/filedata/src/hdffiledata.hы ы;џџџџџџџџHDFFileDataџџџ€sds_nameџџџџџџџџ stringџџџџattr_nameџџџџџџџџ stringџџџџboolhas_file_attrZ/home/pascal/depot/filedata/src/hdffiledata.h§ §(џџџџџџџџHDFFileData€attr_nameџџџџџџџџ stringџџџџbool@init_read_write_null_input_paramZ/home/pascal/depot/filedata/src/hdffiledata.h – initialize NULL parametres in read_data methods for a specific sds : - set rank size to the sds one - allocate edges and set it to hte whole sds size - allocate start to the rank size and set it to 0џџџџHDFFileData sdsds_nameџџџџџџџџconst char*џџџџ startџџџџџџџџ int*&џџџџ strideџџџџџџџџ int*&џџџџ edgesџџџџџџџџ int*&џџџџrankџџџџџџџџint&џџџџ$initialized_valuesџџџџџџџџ bool*џџџџvoid$is_hdf_file_loadedZ/home/pascal/depot/filedata/src/hdffiledata.hЏЏ#j @brief Check if the hdf file has already been loadedџџџџHDFFileDataconst bool,is_hdf_metadata_loadedZ/home/pascal/depot/filedata/src/hdffiledata.hУУ'№ @brief Check if the metadata' tree have already been constructed @return true if the metadata have already been loadedџџџџHDFFileDataconst boolload_hdf_fileZ/home/pascal/depot/filedata/src/hdffiledata.hЇ Ї– @brief open the hdf file in reading mode. Instantiates a Hdf_file object.џџџџHDFFileDatavoid"load_hdf_metadataZ/home/pascal/depot/filedata/src/hdffiledata.hИ И– @brief Read the metadata contained in the hdf file and put them in a tree.џџџџHDFFileDatavoidopen_data_fileZ/home/pascal/depot/filedata/src/hdffiledata.hѕѕ+* @brief open the fileџџџџHDFFileDataЖvoidoperator =Z/home/pascal/depot/filedata/src/hdffiledata.h3Ž @brief Affectation. @param hfd the HDFFileData object to be recopied.џџџџHDFFileDataЖPhfdџџџџџџџџ$const HDFFileData&џџџџHDFFileData&read_dataZ/home/pascal/depot/filedata/src/hdffiledata.hЎЎŒ Read the data in a HDF file. Similar to get_value_nD methods, but in a C way : this method fills an array and doesn't use a std::vector. Some examples are clearest : ----------------------------- EXAMPLE 1 ---------------------------- <code> <br><b>long Y_LENGTH = 2;</b><br> <b>long X_LENGTH = 35;</b><br> <b>long start[] = {3,0};</b> // start position<br> <b>long stride[] = {2,1};</b> // step between 2 values<br> <b>long edges[] = {X_LENGTH,Y_LENGTH};</b> // number of values to be read<br> <b>long rank = 2;</b> // the dimension of start,stride and edges<br> <b>float32 data[Y_LENGTH][X_LENGTH];</b> // buffer where to put the read data<br> <b>hfd.read_data((void*)data,"Latitude",start,stride,edges,rank);</b><br> </code> It will read the data of the sds "Latitude", that is composed of float32 values. - Along X, 2 value (edges[1]) will be read, starting at the position 0 (start[1]), with a step of 1 (stride[1]) between 2 values. - Along Y, 35 values (edges[0]) will be read, starting at the position 3 (start[0]), with a step of 2 (stride[0]) between 2 values. ----------------------------- EXAMPLE 2 ---------------------------- <code> <br><b>long Z_LENGTH = 1;</b><br> <b>long Y_LENGTH = 20;</b><br> <b>long X_LENGTH = 15;</b><br> <b>long start[] = {0,0,0};</b> // start position<br> <b>long stride[] = {1,1,1};</b> // same result if NULL, and even a little bit faster : by default, the step between 2 values is 1<br> <b>long edges[] = {Z_LENGTH,Y_LENGTH,X_LENGTH};</b> // number of values to be read<br> <b>long rank = 3;</b> // the dimension of start,stride and edges<br> <b>uint8 data[Z_LENGTH][Y_LENGTH][X_LENGTH]; // buffer where to put the read data</b><br> <b>hfd.read_data((void*)data,"Nb_Layer_Found",start,stride,edges,rank);</b><br> </code> It will read the data of the sds "Nb_Layer_Found", that is composed of uint8 values. - Along X (the longitude for ex), 15 values (edges[2]) will be read, starting at the position 0 (start[2]), with a step of 1 (stride[2]). - Along Y (the latitude for ex), 20 values (edges[1]) will be read, starting at the position 0 (start[1]), with a step of 1 (stride[1]). - Along Z (the number of layers found for ex), 1 value (edges[0]) will be read, starting at the position 0 (start[0]), with a step of 1 (stride[0]). ----------------------------- EXAMPLE 3 : USING DEFAULT VALUES ---------------------------- <code> <b>float32 *data = NULL;</b> // buffer where to put the read data<br> <b>data=(float32*)hfd.read_data((void*)data,"Longitude");</b>// the method allocates the needed memory<br> <i>// Do what you have to do with data here </i><br> <b>delete[] data;</b>// Don't forget to free the memory once used<br> </code> It will read the whole data of type float32 contained in the sds named "Longitude". The method manages the allocation of the data' array @param data the buffer to fill with the read values @param sds_name the name of the sds (Scientific Data Set) we want to access. @param start begining of the selection. If NULL, start at (0,0) if rank is 2 ; (0,0,0) if rank is 3... @param stride step between 2 interesting values. If NULL, this step is set to 1 in each dimension (ie all values will be read) @param edges number of values to be read in each dimension. if NULL, it will be all data along each dimension. @param rank the dimension of start, stride and edges @return a pointer to the read data array. It is useful when you let this method manage the allocation to update the allocated pointer to the data. If you've done it yourself or you are using a static buffer, it isn't necessary to catch this return pointerџџџџHDFFileDataџџџ„dataџџџџџџџџ void*џџџџsds_nameџџџџџџџџconst char*џџџџ startџџџџџџџџint*џџџџ strideџџџџџџџџint*џџџџ edgesџџџџџџџџint*џџџџrankџџџџџџџџintџџџџ void*read_dataZ/home/pascal/depot/filedata/src/hdffiledata.hН НŒ$ @brief method to read the data of an sds similar to <code>void* read_data(...)</code> This method add a test on the validity of the ouput buffer type compared to the sds one. @warning this method can only be used with 1D output buffers (you can use an indexation like [j*nb_i+i] to simulate a 2D buffer ) @param data @param sds_name @param start @param stride @param edges @param rank @returnџџџџDataTypeџџџџHDFFileDatadataџџџџџџџџDataType*џџџџsds_nameџџџџџџџџconst char*џџџџ startџџџџџџџџint*џџџџ strideџџџџџџџџint*џџџџ edgesџџџџџџџџint*џџџџrankџџџџџџџџintџџџџDataType*read_vdataZ/home/pascal/depot/filedata/src/hdffiledata.hииq ќ @brief read the data of an hdf VData Field - for a multi_order field, all order will be loaded. See the HDF documentation for more details about it.<br> ----------------------------- USING DEFAULT VALUES ----------------------------<br> Like the read_data method, you can use the default values to read all the data.<br> Nevertheless, some precautions have to be taken if you let the method do the allocation (ie data parametre is NULL) <br> <ol> <li>Set your data buffer to the return value of the method to update its adress <li>Don't forget to delete the data buffer once used using the delete[] operator </ol> Here is a example :<br> <code> <b>float32 *data = NULL;</b> // buffer where to put the read data. Set it to NULL to let the method allocate it<br> <b>data=(float32)hfd.read_vdata((VOIDP)data,"Longitude");</b>// the method allocates the needed memory. Remark that data s set to the method's return value. It works in a malloc way. That's why you also have to cast it<br> <i>// Do what you have to do with data</i><br> <b>delete[] data;</b>// Don't forget to free the memory once used<br> </code> @param data the data buffer. Can be NULL. In this case, the allocation is done by the method. In this case, the caller MUST delete the buffer once @param vdata_name the name of the VData @param vdata_field the name of the field @param start the start point. default : 0 : the record start @param edges the number of values to read in all direction. If -1 (default), will read all records @return a pointer to the buffer. Useful only if the dynamic allocation is done by the method џџџџHDFFileDataЖF€dataџџџџџџџџ void*џџџџvdata_nameџџџџџџџџconst char*џџџџvdata_fieldџџџџџџџџconst char*џџџџ startџџџџџџџџintџџџџ edgesџџџџџџџџintџџџџ void*~ HDFFileDataZ/home/pascal/depot/filedata/src/hdffiledata.h˜ ˜џџџџџџџџHDFFileDataџџџ€џџџџclose_data_fileZ/home/pascal/depot/filedata/src/hdffiledata.h№№,. @brief closes the fileџџџџHDFFileDataЖr€voidget_datasetZ/home/pascal/depot/filedata/src/hdffiledata.hффaџџџџџџџџHDFFileData хW€sds_nameџџџџџџџџ stringџџџџHdf_sds*get_dataset_data_typeZ/home/pascal/depot/filedata/src/hdffiledata.hцчGџџџџџџџџHDFFileData€sds_nameџџџџџџџџ stringџџџџint*get_dataset_dimensionZ/home/pascal/depot/filedata/src/hdffiledata.hезŠ @brief return the given dataset size along each axis @param ds_name [IN] dataset name @return the axis dimensions in ordering [..., Z, Y, X]. Use return_vector.size() to know the rank of the sdsџџџџHDFFileDataЖн„sds_nameџџџџџџџџconst string&џџџџvector< int > get_dataset_nameZ/home/pascal/depot/filedata/src/hdffiledata.hттQџџџџџџџџHDFFileData хW€iџџџџџџџџintџџџџ stringget_n_datasetZ/home/pascal/depot/filedata/src/hdffiledata.hррBџџџџџџџџHDFFileDataџџџ€intopen_data_fileZ/home/pascal/depot/filedata/src/hdffiledata.hѕѕ+* @brief open the fileџџџџHDFFileDataЖvoidhdf_fileZ/home/pascal/depot/filedata/src/hdffiledata.hY Y, the lower level access class to the file we are working on. Can be NULL. In this case, to access the data, call the load_hdf_file method firstHdf_file*metadataZ/home/pascal/depot/filedata/src/hdffiledata.h^^ a tree representing the metadata of the file. Can be NULL. In this case, to access the data, call the load_hdf_metadata method first HDFFileMetaData* "get_nearest_indexZ/home/pascal/depot/filedata/src/hdffiledata.hUgџџџџџџџџTџџџџHDFFileData v_dataџџџџџџџџ$const vector< T >&џџџџvalџџџџџџџџconst T&џџџџ&const vector< int >"get_nearest_indexZ/home/pascal/depot/filedata/src/hdffiledata.hi{џџџџџџџџTџџџџHDFFileDatadataџџџџџџџџ$const vector< T >*џџџџvalџџџџџџџџconst Tџџџџconst int"get_nearest_indexZ/home/pascal/depot/filedata/src/hdffiledata.h}>џџџџџџџџTџџџџHDFFileDatadataџџџџџџџџconst T*џџџџdata_sizeџџџџџџџџconst intџџџџvalџџџџџџџџconst Tџџџџconst intget_valueZ/home/pascal/depot/filedata/src/hdffiledata.hшZ*********************************************џџџџTџџџџHDFFileDataџџџ€sds_nameџџџџџџџџconst char*џџџџ startџџџџџџџџint*џџџџ strideџџџџџџџџint*џџџџ edgesџџџџџџџџint*џџџџrankџџџџџџџџintџџџџT*get_value_0DZ/home/pascal/depot/filedata/src/hdffiledata.h џџџџџџџџTџџџџHDFFileDatasds_nameџџџџџџџџconst char*џџџџ startџџџџџџџџint*џџџџ strideџџџџџџџџint*џџџџ edgesџџџџџџџџint*џџџџrankџџџџџџџџint&џџџџTget_value_1DZ/home/pascal/depot/filedata/src/hdffiledata.h.џџџџџџџџTџџџџHDFFileData€sds_nameџџџџџџџџconst char*џџџџ startџџџџџџџџint*џџџџ strideџџџџџџџџint*џџџџ edgesџџџџџџџџint*џџџџrankџџџџџџџџint&џџџџvector< T >*get_value_2DZ/home/pascal/depot/filedata/src/hdffiledata.h0LџџџџџџџџTџџџџHDFFileData€sds_nameџџџџџџџџconst char*џџџџ startџџџџџџџџint*џџџџ strideџџџџџџџџint*џџџџ edgesџџџџџџџџint*џџџџrankџџџџџџџџint&џџџџ.vector< vector < T > >*get_var_valueZ/home/pascal/depot/filedata/src/hdffiledata.hNSџџџџџџџџTџџџџHDFFileDatavar_nameџџџџџџџџconst stringџџџџy_indexџџџџџџџџconst int&џџџџx_indexџџџџџџџџconst int&џџџџTread_dataZ/home/pascal/depot/filedata/src/hdffiledata.h“Еx ostream& operator << (ostream& o, const HDFFileData& _hdf);џџџџTџџџџHDFFileDatadataџџџџџџџџT*џџџџsds_nameџџџџџџџџconst char*џџџџ startџџџџџџџџint*џџџџ strideџџџџџџџџint*џџџџ edgesџџџџџџџџint*џџџџrankџџџџџџџџintџџџџT*VAR_FILL_VALUEZ/home/pascal/depot/filedata/src/hdffiledata.h&&,T************************************************************************* History : * 25/07/05 : start * *************************************************************************const float32"hdffilemetadata.hf/home/pascal/depot/filedata/src/hdffilemetadata.cpp%yУ`Пџџџџf/home/pascal/depot/filedata/src/hdffilemetadata.cpp>Z'i"hdffilemetadata.hЎ(Rйf/home/pascal/depot/filedata/src/hdffilemetadata.cppџџџџџџџџџџџџHDFFileMetaDataf/home/pascal/depot/filedata/src/hdffilemetadata.cppџџџџџџџџHDFFileMetaDataџџџ€_hdf_fileџџџџџџџџconst Hdf_file*џџџџџџџџHDFFileMetaDataf/home/pascal/depot/filedata/src/hdffilemetadata.cpp$џџџџџџџџHDFFileMetaDatat_hdf_file_nameџџџџџџџџconst char*џџџџџџџџHDFFileMetaDataf/home/pascal/depot/filedata/src/hdffilemetadata.cpp%*џџџџџџџџHDFFileMetaData_hdf_file_nameџџџџџџџџconst string&џџџџџџџџ"build_array_valuef/home/pascal/depot/filedata/src/hdffilemetadata.cppzžџџџџџџџџHDFFileMetaDatavalџџџџџџџџ void*џџџџ s_valџџџџџџџџconst string&џџџџvoidbuild_treef/home/pascal/depot/filedata/src/hdffilemetadata.cppwџџџџџџџџHDFFileMetaDataџџџ€voidextract_tag_valf/home/pascal/depot/filedata/src/hdffilemetadata.cppmvџџџџџџџџHDFFileMetaData€tagџџџџџџџџstring&џџџџvalџџџџџџџџstring&џџџџlineџџџџџџџџ6vector< string >::iterator&џџџџvoidfind_end_tagf/home/pascal/depot/filedata/src/hdffilemetadata.cppclџџџџџџџџHDFFileMetaData startџџџџџџџџ4vector< string >::iteratorџџџџtagџџџџџџџџconst string&џџџџvalџџџџџџџџconst string&џџџџ4vector< string >::iteratorget_array_typef/home/pascal/depot/filedata/src/hdffilemetadata.cppСЫџџџџџџџџHDFFileMetaDataЖл€ s_valџџџџџџџџconst string&џџџџBconst HDFMetadataNode::value_typeget_elt_typef/home/pascal/depot/filedata/src/hdffilemetadata.cppЕРџџџџџџџџHDFFileMetaDataџџџ€ s_valџџџџџџџџconst string&џџџџBconst HDFMetadataNode::value_typeget_node_valuef/home/pascal/depot/filedata/src/hdffilemetadata.cpp.џџџџџџџџHDFFileMetaDataџџџ€nodeџџџџџџџџ HDFMetadataNode*џџџџvalџџџџџџџџ void*џџџџtag_nameџџџџџџџџconst string&џџџџconst bool*get_node_value_stringf/home/pascal/depot/filedata/src/hdffilemetadata.cppтџџџџџџџџHDFFileMetaDatanodeџџџџџџџџ HDFMetadataNode*џџџџvalџџџџџџџџstring&џџџџtag_nameџџџџџџџџconst string&џџџџconst boolget_tree_valuef/home/pascal/depot/filedata/src/hdffilemetadata.cppлнџџџџџџџџHDFFileMetaDatavalџџџџџџџџ void*џџџџtag_nameџџџџџџџџconst string&џџџџconst bool*get_tree_value_stringf/home/pascal/depot/filedata/src/hdffilemetadata.cppорџџџџџџџџHDFFileMetaDatavalџџџџџџџџstring&џџџџtag_nameџџџџџџџџconst string&џџџџconst boolget_val_typef/home/pascal/depot/filedata/src/hdffilemetadata.cppŸДџџџџџџџџHDFFileMetaDataџџџ€sџџџџџџџџconst string&џџџџBconst HDFMetadataNode::value_typeget_valuef/home/pascal/depot/filedata/src/hdffilemetadata.cppwyџџџџџџџџHDFFileMetaDataЖ{€valџџџџџџџџ void*џџџџtag_nameџџџџџџџџconst char*џџџџvoidinitf/home/pascal/depot/filedata/src/hdffilemetadata.cpp џџџџџџџџHDFFileMetaDatavoid&init_input_hdf_filef/home/pascal/depot/filedata/src/hdffilemetadata.cpp;>џџџџџџџџHDFFileMetaDatainput_file_nameџџџџџџџџconst char*џџџџvoid init_output_filef/home/pascal/depot/filedata/src/hdffilemetadata.cpp?cџџџџџџџџHDFFileMetaData _output_filenameџџџџџџџџconst stringџџџџoverwriteџџџџџџџџconst boolџџџџ create_temp_fileџџџџџџџџconst boolџџџџvoid0load_input_file_metadataf/home/pascal/depot/filedata/src/hdffilemetadata.cppЫдџџџџџџџџHDFFileMetaData€void&load_metadata_namedf/home/pascal/depot/filedata/src/hdffilemetadata.cppе џџџџџџџџHDFFileMetaData€meta_nameџџџџџџџџconst char*џџџџvoidparse_stringf/home/pascal/depot/filedata/src/hdffilemetadata.cpp‚ЪџџџџџџџџHDFFileMetaData€ startџџџџџџџџ4vector< string >::iteratorџџџџendџџџџџџџџ4vector< string >::iteratorџџџџ HDFMetadataNode*&parse_string_to_xmlf/home/pascal/depot/filedata/src/hdffilemetadata.cpp"bџџџџџџџџHDFFileMetaData startџџџџџџџџ4vector< string >::iteratorџџџџendџџџџџџџџ4vector< string >::iteratorџџџџrankџџџџџџџџintџџџџvoid to_xmlf/home/pascal/depot/filedata/src/hdffilemetadata.cpp!џџџџџџџџHDFFileMetaData€ _output_filenameџџџџџџџџconst char*џџџџoverwriteџџџџџџџџconst boolџџџџvoidview_nodef/home/pascal/depot/filedata/src/hdffilemetadata.cppЯкџџџџџџџџHDFFileMetaDatanodeџџџџџџџџ,const HDFMetadataNode*џџџџrankџџџџџџџџconst intџџџџvoidview_treef/home/pascal/depot/filedata/src/hdffilemetadata.cppЬЮџџџџџџџџHDFFileMetaDatavoidwrite_xml_filef/home/pascal/depot/filedata/src/hdffilemetadata.cppdvџџџџџџџџHDFFileMetaDataqg€"s_output_filenameџџџџџџџџconst stringџџџџoverwriteџџџџџџџџconst boolџџџџ create_temp_fileџџџџџџџџconst boolџџџџvoid"~ HDFFileMetaDataf/home/pascal/depot/filedata/src/hdffilemetadata.cpp+:џџџџџџџџHDFFileMetaDatasџџџџN string vectorfstreamiostream cstdioHdf_file.hppfile_tools.htools.h"hdfmetadatanode.hb/home/pascal/depot/filedata/src/hdffilemetadata.h%yУ`Пџџџџ "hdfmetadatanode.h<вkŸ vector …/Г cstdioќ— string Xaчb/home/pascal/depot/filedata/src/hdffilemetadata.hп‰nfile_tools.hгЦiostreamВ$Bєtools.hАох7Hdf_file.hppэЋоfstream§2b/home/pascal/depot/filedata/src/hdffilemetadata.hџџџџџџџџџџџџHDFFileMetaDatab/home/pascal/depot/filedata/src/hdffilemetadata.h&‡Give methods to read and access to the metadata of an HDF file. For that, build a tree with those metadata. @author Nicolas PASCALџџџџHDFFileMetaDatab/home/pascal/depot/filedata/src/hdffilemetadata.hXX5џџџџџџџџHDFFileMetaDataџџџ€_hdf_fileџџџџџџџџconst Hdf_file*џџџџџџџџHDFFileMetaDatab/home/pascal/depot/filedata/src/hdffilemetadata.h]]6џџџџџџџџHDFFileMetaDataџџџ€_hdf_file_nameџџџџџџџџconst char*џџџџџџџџHDFFileMetaDatab/home/pascal/depot/filedata/src/hdffilemetadata.hbb=џџџџџџџџHDFFileMetaDataџџџ€_hdf_file_nameџџџџџџџџ$const std::string&џџџџџџџџ"build_array_valueb/home/pascal/depot/filedata/src/hdffilemetadata.hB B:џџџџџџџџHDFFileMetaDataџџџ€valџџџџџџџџ void*џџџџ s_valџџџџџџџџconst string&џџџџvoidbuild_treeb/home/pascal/depot/filedata/src/hdffilemetadata.hC CџџџџџџџџHDFFileMetaDataџџџ€voidextract_tag_valb/home/pascal/depot/filedata/src/hdffilemetadata.h9 9SџџџџџџџџHDFFileMetaDataџџџ€tagџџџџџџџџstring&џџџџvalџџџџџџџџstring&џџџџlineџџџџџџџџ6vector< string >::iterator&џџџџvoidfind_end_tagb/home/pascal/depot/filedata/src/hdffilemetadata.h88pџџџџџџџџHDFFileMetaDataџџџ€ startџџџџџџџџ4vector< string >::iteratorџџџџtagџџџџџџџџconst string&џџџџvalџџџџџџџџconst string&џџџџ4vector< string >::iteratorget_array_typeb/home/pascal/depot/filedata/src/hdffilemetadata.hA&AIџџџџџџџџHDFFileMetaDataџџџ€ s_valџџџџџџџџconst string&џџџџBconst HDFMetadataNode::value_typeget_elt_typeb/home/pascal/depot/filedata/src/hdffilemetadata.h@&@G^ elt is a stand alone value or an array elementџџџџHDFFileMetaDataџџџ€ s_valџџџџџџџџconst string&џџџџBconst HDFMetadataNode::value_typeget_node_valueb/home/pascal/depot/filedata/src/hdffilemetadata.hLLYT used to recursively search for a node in the metadata tree @param node @param val the value to write (must be of the good type) @param tag_name @return true if foundџџџџHDFFileMetaDataџџџ€nodeџџџџџџџџ HDFMetadataNode*џџџџvalџџџџџџџџ void*џџџџtag_nameџџџџџџџџconst string&џџџџconst bool*get_node_value_stringb/home/pascal/depot/filedata/src/hdffilemetadata.hNNbџџџџџџџџHDFFileMetaDataџџџ€nodeџџџџџџџџ HDFMetadataNode*џџџџvalџџџџџџџџstring&џџџџtag_nameџџџџџџџџconst string&џџџџconst boolget_tree_valueb/home/pascal/depot/filedata/src/hdffilemetadata.hyyBN find the first node in the metadata tree having the tag "tag_name". In fact, it finds the first leaf that is child of the node called tag_name. @param val the value to write (must be of the good type) @param tag_name the tag we are searching for the value @return true if the value was foundџџџџHDFFileMetaDataџџџ€valџџџџџџџџ void*џџџџtag_nameџџџџџџџџconst string&џџџџconst bool*get_tree_value_stringb/home/pascal/depot/filedata/src/hdffilemetadata.hK find the first node in the metadata tree having the tag "tag_name". In fact, it finds the first leaf that is child of the node called tag_name. @param val the value to write @param tag_name the tag we are searching for the value @return true if the value was foundџџџџHDFFileMetaDataџџџ€valџџџџџџџџstring&џџџџtag_nameџџџџџџџџconst string&џџџџconst boolget_val_typeb/home/pascal/depot/filedata/src/hdffilemetadata.h?&?CџџџџџџџџHDFFileMetaDataџџџ€sџџџџџџџџconst string&џџџџBconst HDFMetadataNode::value_typeget_valueb/home/pascal/depot/filedata/src/hdffilemetadata.hr rBФ Permit to retrieve a metadata value using a tag_name. It returns the value of the first crossed tag with this name. @param tag_name the tag name of the node @param val the searched value, or NULL in case of problemџџџџHDFFileMetaDataџџџ€valџџџџџџџџ void*џџџџtag_nameџџџџџџџџconst char*џџџџvoidinitb/home/pascal/depot/filedata/src/hdffilemetadata.h= =џџџџџџџџHDFFileMetaDataџџџ€void&init_input_hdf_fileb/home/pascal/depot/filedata/src/hdffilemetadata.h< <AџџџџџџџџHDFFileMetaDataџџџ€input_file_nameџџџџџџџџconst char*џџџџvoid init_output_fileb/home/pascal/depot/filedata/src/hdffilemetadata.h4 4{T open output file, and write xml headerџџџџHDFFileMetaDataџџџ€ _output_filenameџџџџџџџџconst stringџџџџoverwriteџџџџџџџџconst boolџџџџ create_temp_fileџџџџџџџџconst boolџџџџvoid0load_input_file_metadatab/home/pascal/depot/filedata/src/hdffilemetadata.h: :#џџџџџџџџHDFFileMetaDataџџџ€void&load_metadata_namedb/home/pascal/depot/filedata/src/hdffilemetadata.h; ;DџџџџџџџџHDFFileMetaDataџџџ€meta_nameџџџџџџџџconst char*џџџџvoidparse_stringb/home/pascal/depot/filedata/src/hdffilemetadata.h77`џџџџџџџџHDFFileMetaDataџџџ€ startџџџџџџџџ4vector< string >::iteratorџџџџendџџџџџџџџ4vector< string >::iteratorџџџџ HDFMetadataNode*&parse_string_to_xmlb/home/pascal/depot/filedata/src/hdffilemetadata.h6 6gџџџџџџџџHDFFileMetaDataџџџ€ startџџџџџџџџ4vector< string >::iteratorџџџџendџџџџџџџџ4vector< string >::iteratorџџџџrankџџџџџџџџintџџџџvoidparse_xml_fileb/home/pascal/depot/filedata/src/hdffilemetadata.h> >џџџџџџџџHDFFileMetaDataџџџ€void to_xmlb/home/pascal/depot/filedata/src/hdffilemetadata.hl lQ Dump the metadata to an XML file @param output_filename the name of the output xml file. If not given, add the extension, and if NULL, build the output name with the pattern : "input_file_without_extension"+".xml" @param overwrite when true, if the output file already exists, overwrite it. (and so, if false, don't)џџџџHDFFileMetaDataџџџ€output_filenameџџџџџџџџconst char*џџџџoverwriteџџџџџџџџconst boolџџџџvoidview_nodeb/home/pascal/depot/filedata/src/hdffilemetadata.hD DCџџџџџџџџHDFFileMetaDataџџџ€nodeџџџџџџџџ,const HDFMetadataNode*џџџџrankџџџџџџџџconst intџџџџvoidview_treeb/home/pascal/depot/filedata/src/hdffilemetadata.h† †8 print out the build treeџџџџHDFFileMetaDataџџџ€voidwrite_xml_fileb/home/pascal/depot/filedata/src/hdffilemetadata.h5 5yџџџџџџџџHDFFileMetaDataџџџ€ _output_filenameџџџџџџџџconst stringџџџџoverwriteџџџџџџџџconst boolџџџџ create_temp_fileџџџџџџџџconst boolџџџџvoid"~ HDFFileMetaDatab/home/pascal/depot/filedata/src/hdffilemetadata.hffџџџџџџџџHDFFileMetaDataџџџ€џџџџ hdf_fileb/home/pascal/depot/filedata/src/hdffilemetadata.h' 'џџџџHdf_file* input_file_linesb/home/pascal/depot/filedata/src/hdffilemetadata.h**$џџџџ vector< string >output_fileb/home/pascal/depot/filedata/src/hdffilemetadata.h( (џџџџofstreamoutput_filenameb/home/pascal/depot/filedata/src/hdffilemetadata.h) )џџџџ string&persistent_xml_fileb/home/pascal/depot/filedata/src/hdffilemetadata.h. .џџџџboolroot_nodeb/home/pascal/depot/filedata/src/hdffilemetadata.h++џџџџ HDFMetadataNode* stand_alone_readb/home/pascal/depot/filedata/src/hdffilemetadata.h- -T used to know if the Hdf_file has been initialized by this class, or outside of it. If init from outside, at the destruction of the object, the Hdf_file musn't be deletedbooltab_incrementb/home/pascal/depot/filedata/src/hdffilemetadata.h0 0џџџџ stringxml_headerb/home/pascal/depot/filedata/src/hdffilemetadata.h//џџџџ string!"hdfmetadatanode.hf/home/pascal/depot/filedata/src/hdfmetadatanode.cpp%yДшаИџџџџ"hdfmetadatanode.h<вkŸf/home/pascal/depot/filedata/src/hdfmetadatanode.cppL`яf/home/pascal/depot/filedata/src/hdfmetadatanode.cppџџџџџџџџџџџџ HDFMetadataNodef/home/pascal/depot/filedata/src/hdfmetadatanode.cpp џџџџџџџџHDFMetadataNode€ _valueџџџџџџџџ void*џџџџ_typecodeџџџџџџџџ6HDFMetadataNode::value_typeџџџџџџџџHDFMetadataNodef/home/pascal/depot/filedata/src/hdfmetadatanode.cpp!&џџџџџџџџHDFMetadataNodeџџџ€џџџџget_childf/home/pascal/depot/filedata/src/hdfmetadatanode.cpp')џџџџџџџџHDFMetadataNode HDFMetadataNode* get_next_siblingf/home/pascal/depot/filedata/src/hdfmetadatanode.cppџџџџџџџџHDFMetadataNode  HDFMetadataNode*get_typecodef/home/pascal/depot/filedata/src/hdfmetadatanode.cpp‚ˆџџџџџџџџHDFMetadataNodeџџџ 6HDFMetadataNode::value_typeget_valuef/home/pascal/depot/filedata/src/hdfmetadatanode.cpp‰‹џџџџџџџџHDFMetadataNode  void*is_leaff/home/pascal/depot/filedata/src/hdfmetadatanode.cppadџџџџџџџџHDFMetadataNodeџџџ const boolprint_valf/home/pascal/depot/filedata/src/hdfmetadatanode.cppJ`џџџџџџџџHDFMetadataNoded voidread_node_valuef/home/pascal/depot/filedata/src/hdfmetadatanode.cppeџџџџџџџџHDFMetadataNode€valџџџџџџџџ void*џџџџvoidset_childf/home/pascal/depot/filedata/src/hdfmetadatanode.cpp*,џџџџџџџџHDFMetadataNodeџџџ€valџџџџџџџџ HDFMetadataNode*џџџџvoid set_next_siblingf/home/pascal/depot/filedata/src/hdfmetadatanode.cppџџџџџџџџHDFMetadataNodeџџџ€valџџџџџџџџ HDFMetadataNode*џџџџvoid"~ HDFMetadataNodef/home/pascal/depot/filedata/src/hdfmetadatanode.cpp-IџџџџџџџџHDFMetadataNodeџџџџP string vectoriostreamb/home/pascal/depot/filedata/src/hdfmetadatanode.h%yДшаИџџџџ vector …/Г string XaчiostreamВ$Bєb/home/pascal/depot/filedata/src/hdfmetadatanode.h‘‰Ђ4b/home/pascal/depot/filedata/src/hdfmetadatanode.hџџџџџџџџџџџџHDFMetadataNodeb/home/pascal/depot/filedata/src/hdfmetadatanode.h&o2Tree node like xml's DOM Tree Node. One node contain one metadata hierarchie level. Computingly talking, it's a binary tree node. A node is define by : - its value (void* to be generic) - the type_code of the value - one next sibling node - one child one @author nicolas PASCALџџџџ HDFMetadataNodeb/home/pascal/depot/filedata/src/hdfmetadatanode.h22џџџџџџџџHDFMetadataNodeQЙ€џџџџHDFMetadataNodeb/home/pascal/depot/filedata/src/hdfmetadatanode.h88HџџџџџџџџHDFMetadataNodeџџџ€ _valueџџџџџџџџ void*џџџџ_typecodeџџџџџџџџ6HDFMetadataNode::value_typeџџџџџџџџget_childb/home/pascal/depot/filedata/src/hdfmetadatanode.hPP&~ access to the child node @return the child node (can be NULL)џџџџHDFMetadataNode HDFMetadataNode* get_next_siblingb/home/pascal/depot/filedata/src/hdfmetadatanode.hFF-† access to the next sibling @return the next sibling (can be NULL)џџџџHDFMetadataNodeџџџ  HDFMetadataNode*get_typecodeb/home/pascal/depot/filedata/src/hdfmetadatanode.hc c4Ў access to the type_code of the node's value @return the type_code of the node's valueџџџџHDFMetadataNodeM• 6HDFMetadataNode::value_typeget_valueb/home/pascal/depot/filedata/src/hdfmetadatanode.hhh” access to the value itself, via a pointer @return a pointer to the valueџџџџHDFMetadataNodeџџџ  void*is_leafb/home/pascal/depot/filedata/src/hdfmetadatanode.hYYђ Check is a node is a leaf. In other words, if the node has no child and no sibling. @return true if the node is a leaf.џџџџHDFMetadataNodeџџџ const boolprint_valb/home/pascal/depot/filedata/src/hdfmetadatanode.hT T@ print out the value of the nodeџџџџHDFMetadataNode voidread_node_valueb/home/pascal/depot/filedata/src/hdfmetadatanode.h^ ^*в Fill val with the node value. @param val (output) the value (or buffer if the node's value is an array)џџџџHDFMetadataNodeџџџ€valџџџџџџџџ void*џџџџvoidset_childb/home/pascal/depot/filedata/src/hdfmetadatanode.hK K(\ set the child node @param val the child nodeџџџџHDFMetadataNodeџџџ€valџџџџџџџџ HDFMetadataNode*џџџџvoid set_next_siblingb/home/pascal/depot/filedata/src/hdfmetadatanode.hAA.x set the next sibling node @param val the next sibling nodeџџџџHDFMetadataNodeџџџ€valџџџџџџџџ HDFMetadataNode*џџџџvoid"~ HDFMetadataNodeb/home/pascal/depot/filedata/src/hdfmetadatanode.h<<џџџџџџџџHDFMetadataNodeџџџ€џџџџ ARRAY_FLOATb/home/pascal/depot/filedata/src/hdfmetadatanode.h-/-:џџџџvalue_typeARRAY_INTEGERb/home/pascal/depot/filedata/src/hdfmetadatanode.h-!-.џџџџvalue_typeARRAY_STRINGb/home/pascal/depot/filedata/src/hdfmetadatanode.h-;-Gџџџџvalue_typeBADb/home/pascal/depot/filedata/src/hdfmetadatanode.h-- џџџџvalue_type FLOATb/home/pascal/depot/filedata/src/hdfmetadatanode.h-- џџџџvalue_typeINTEGERb/home/pascal/depot/filedata/src/hdfmetadatanode.h--џџџџvalue_type STRINGb/home/pascal/depot/filedata/src/hdfmetadatanode.h- -џџџџvalue_type childb/home/pascal/depot/filedata/src/hdfmetadatanode.hnnџџџџ HDFMetadataNode*next_siblingb/home/pascal/depot/filedata/src/hdfmetadatanode.hmm!џџџџ HDFMetadataNode*typecodeb/home/pascal/depot/filedata/src/hdfmetadatanode.hl l(џџџџ6HDFMetadataNode::value_type valueb/home/pascal/depot/filedata/src/hdfmetadatanode.hkkT the value of the node. If pure Node, NULL void* value_typeb/home/pascal/depot/filedata/src/hdfmetadatanode.h,.Ў define the type of values that can be found in hdf metadata. FLOAT means doubleconst intstdb/home/pascal/depot/filedata/src/hdfmetadatanode.h_iirfiledata.h^/home/pascal/depot/filedata/src/iirfiledata.cpp%yЦf€џџџџiirfiledata.hЩPC„^/home/pascal/depot/filedata/src/iirfiledata.cpp…t4^/home/pascal/depot/filedata/src/iirfiledata.cppџџџџџџџџџџџџIIRFileData^/home/pascal/depot/filedata/src/iirfiledata.cppџџџџџџџџIIRFileDataenameџџџџџџџџconst string&џџџџmodeџџџџџџџџconst string&џџџџџџџџcheck_filename^/home/pascal/depot/filedata/src/iirfiledata.cpp@UџџџџџџџџIIRFileData short_filenameџџџџџџџџconst string&џџџџvoidcontain_data^/home/pascal/depot/filedata/src/iirfiledata.cppFHџџџџџџџџIIRFileDatalatџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџtimeџџџџџџџџconst double&џџџџ(colocation_toleranceџџџџџџџџconst double&џџџџconst bool contain_location^/home/pascal/depot/filedata/src/iirfiledata.cppBEџџџџџџџџIIRFileDatalatџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџtoleranceџџџџџџџџconst double&џџџџconst bool contains_data_at^/home/pascal/depot/filedata/src/iirfiledata.cppтщџџџџџџџџIIRFileData latџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџtimeџџџџџџџџconst double&џџџџconst bool*free_geolocation_data^/home/pascal/depot/filedata/src/iirfiledata.cppэњџџџџџџџџIIRFileDatavoidget_index^/home/pascal/depot/filedata/src/iirfiledata.cppІжџџџџџџџџIIRFileDataqg€latџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџtimeџџџџџџџџconst double&џџџџnearest_pix_idxџџџџџџџџ long*џџџџcoloc_toleranceџџџџџџџџconst floatџџџџconst boolget_index^/home/pascal/depot/filedata/src/iirfiledata.cpp$/џџџџџџџџIIRFileData€latџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџnearest_pix_idxџџџџџџџџint&џџџџcoloc_toleranceџџџџџџџџconst floatџџџџconst bool"get_latitude_data^/home/pascal/depot/filedata/src/iirfiledata.cppvzџџџџџџџџIIRFileData_dataџџџџџџџџ float*џџџџvoid$get_longitude_data^/home/pascal/depot/filedata/src/iirfiledata.cpp{џџџџџџџџIIRFileDataadataџџџџџџџџ float*џџџџvoid4get_nearest_point_distance^/home/pascal/depot/filedata/src/iirfiledata.cpp1@џџџџџџџџIIRFileDatalatџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџcoloc_toleranceџџџџџџџџconst floatџџџџconst float.get_nearest_point_index^/home/pascal/depot/filedata/src/iirfiledata.cppˆЄџџџџџџџџIIRFileData€latџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџlidar_shot_timeџџџџџџџџconst double&џџџџconst intget_swath_size^/home/pascal/depot/filedata/src/iirfiledata.cpppuџџџџџџџџIIRFileDataS const intget_time_data^/home/pascal/depot/filedata/src/iirfiledata.cpp€„џџџџџџџџIIRFileData€dataџџџџџџџџdouble*џџџџvoidget_track_size^/home/pascal/depot/filedata/src/iirfiledata.cppmoџџџџџџџџIIRFileDataO const intinit^/home/pascal/depot/filedata/src/iirfiledata.cpp 3џџџџџџџџIIRFileDataevoid is_day^/home/pascal/depot/filedata/src/iirfiledata.cpp…‡џџџџџџџџIIRFileData const bool4is_geolocation_data_loaded^/home/pascal/depot/filedata/src/iirfiledata.cppъьџџџџџџџџIIRFileData const bool*load_geolocation_data^/home/pascal/depot/filedata/src/iirfiledata.cppћџџџџџџџџIIRFileDataivoidload_v_pixel^/home/pascal/depot/filedata/src/iirfiledata.cpp"џџџџџџџџIIRFileData€voidparse_filename^/home/pascal/depot/filedata/src/iirfiledata.cppVlџџџџџџџџIIRFileDataY€short_filenameџџџџџџџџconst string&џџџџvoid*set_lat_lon_index_max^/home/pascal/depot/filedata/src/iirfiledata.cpp9?џџџџџџџџIIRFileDatavoid"set_time_coverage^/home/pascal/depot/filedata/src/iirfiledata.cppзсџџџџџџџџIIRFileDataџџџ€void~ IIRFileData^/home/pascal/depot/filedata/src/iirfiledata.cpp48џџџџџџџџIIRFileDataџџџ€џџџџRhdffiledata.hpixel.h&satellitefiledata.hZ/home/pascal/depot/filedata/src/iirfiledata.h%yУюЧ8џџџџhdffiledata.h˜vТZ/home/pascal/depot/filedata/src/iirfiledata.hхfй&satellitefiledata.hщ"Fзpixel.hЊІ“иZ/home/pascal/depot/filedata/src/iirfiledata.hџџџџџџџџџџџџIIRFileDataZ/home/pascal/depot/filedata/src/iirfiledata.h" Bmanage the reading of the CALIPSO IIR files. At this time, treats only L2 Track files. For Swath files, some methods need to be completed. @author Nicolas PASCALџџџџ"SatelliteFileDataHDFFileDataIIRFileDataZ/home/pascal/depot/filedata/src/iirfiledata.hnn?џџџџџџџџIIRFileDataџџџ€ _nameџџџџџџџџconst string&џџџџmodeџџџџџџџџconst string&џџџџџџџџcheck_filenameZ/home/pascal/depot/filedata/src/iirfiledata.hW W= @brief Check is a the file is a valid IIR data file ( the analysis is done with a filename parsing, not on the data ) @throw invalid_filename if the filename does not match the file pattern @param short_filename string : the filename without its pathџџџџIIRFileDataЖш short_filenameџџџџџџџџconst string&џџџџvoidclose_data_fileZ/home/pascal/depot/filedata/src/iirfiledata.hџ0 @brief closes the file.џџџџIIRFileDataџџџ„voidcontain_dataZ/home/pascal/depot/filedata/src/iirfiledata.hтт™Р @brief check if the file has possible (lat,lon) coincidence @warning it's an EVENTUAL coincidence. That is not a proof !!! @param lat latitude @param lon longitude @param time time @param colocation_tolerance the acceptable bias (in km or degrees. Supposed to be in, a plane approximation) between [lat,lon] and the nearest data point. @return true if can eventually contain a coincidence with the point. @warning at this time always true. I don't have a good way to do itџџџџIIRFileDataџџџ€latџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџtimeџџџџџџџџconst double&џџџџ(colocation_toleranceџџџџџџџџconst double&џџџџconst bool contain_locationZ/home/pascal/depot/filedata/src/iirfiledata.hзз}8 @brief check if this file has eventually data coincident with (lat,lon) Actually, it only tests if (lat,lon) is contained in the data's bounding rectangle. @param lat the latitude of the event @param lon the longitude of the event @param tolerance acceptable bias between the nearest point in the data and the given (lat,lon) point @return true if a point in the data has been found in the colocation frameџџџџIIRFileDatalatџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџtoleranceџџџџџџџџconst double&џџџџconst bool contains_data_atZ/home/pascal/depot/filedata/src/iirfiledata.hЌЌ\h check if this file has data coincident with (lat,lon,time) @param lat the latitude of the event @param lon the longitude of the event @param time the time of the event @returnџџџџIIRFileDataџџџ latџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџtimeџџџџџџџџconst double&џџџџconst bool*free_geolocation_dataZ/home/pascal/depot/filedata/src/iirfiledata.hД Д V free eventually loaded geolocation dataџџџџIIRFileDataџџџ€voidget_indexZ/home/pascal/depot/filedata/src/iirfiledata.hœœЅ< @brief search the index of the nearest point in the data to (@a lat , @a lon ) If @a coloc_tolerance is given, it will compute only the distance of the points that have a distance to ( @a lat, @a lon ) inferior to @a coloc_tolerance @param near_point_idx the indexes of the nearest point found (or {-1,-1} if not found) @param lat the latitude @param lon the longitude @param time the time of the observation. If -1., skipped @param coloc_tolerance the -/+ maximal tolerance for 2 points considered as colocated @return true if foundџџџџIIRFileDatalatџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџtimeџџџџџџџџconst double&џџџџnear_point_idxџџџџџџџџint*џџџџcoloc_toleranceџџџџџџџџconst floatџџџџconst boolget_indexZ/home/pascal/depot/filedata/src/iirfiledata.hФФ–ь @brief find the index of the nearest point to (lat,lon) in the data. If (lat,lon) is not found or out of the colocalisation_frame, returned indexes are [-1,-1] @param lat the latitude @param lon the longitude @param nearest_pix_idx the index of the nearest measure. -1 if no coincidence found. @param colocation_tolerance the acceptable bias (in km or degrees. Supposed to be in, a plane approximation) between [lat,lon] and the nearest data point. @return true if the coincidence has been foundџџџџIIRFileDataџџџ€latџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџnearest_pix_idxџџџџџџџџint&џџџџ(colocation_toleranceџџџџџџџџconst floatџџџџconst bool"get_latitude_dataZ/home/pascal/depot/filedata/src/iirfiledata.h| |'$ read the latitudes data in this file, and fill data with it @param data the array that will contain the latitudes once the method is endedџџџџIIRFileData€dataџџџџџџџџ float*џџџџvoid$get_longitude_dataZ/home/pascal/depot/filedata/src/iirfiledata.h (& read the longitudes data in this file, and fill data with it @param data the array that will contain the latitudes once the method is endedџџџџIIRFileDatadataџџџџџџџџ float*џџџџvoid4get_nearest_point_distanceZ/home/pascal/depot/filedata/src/iirfiledata.hЮЮ‹В @brief compute the distance to (lat,lon) of the nearest point in the data If @a coloc_tolerance is given, it will compute only the distance of the points that have a distance to ( @a lat, @a lon ) inferior to @a coloc_tolerance @param lat the latitude @param lon the longitude @param coloc_tolerance the -/+ maximal tolerance for 2 points considered as colocated @return the distance to the nearest point, or -1 if no point in the colocalisation frame has been found.џџџџIIRFileDataџџџ€latџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџcoloc_toleranceџџџџџџџџconst floatџџџџconst float.get_nearest_point_indexZ/home/pascal/depot/filedata/src/iirfiledata.hЄЄ^* find the row index of the nearest point in the data of this file to (lat,lon,time). Be careful, it will return a valid index : this method doesn't check if the point given in parametre is contained in this file. Use the contains_data_at to check it first. @param lat the latitude of the event @param lon the longitude of the event @param time the time of the event @return the nearest point row indexџџџџIIRFileDataџџџ€latџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџtimeџџџџџџџџconst double&џџџџconst intget_pixel_coordZ/home/pascal/depot/filedata/src/iirfiledata.hъэЖ @brief retrieve the coordinates of a pixel using its index @param ipix [IN] index of the pixel @param lat [OUT] latitude of the pixel @param lon [OUT] longitude of the pixel @param time [OUT] timestamp of the pixelџџџџIIRFileDataipixџџџџџџџџ(const vector< int >&џџџџlatџџџџџџџџ float&џџџџlonџџџџџџџџ float&џџџџtimeџџџџџџџџdouble&џџџџvoidget_swath_sizeZ/home/pascal/depot/filedata/src/iirfiledata.h$І @brief Read the size of the swath (in pixels) @return the size of the swathџџџџIIRFileDataџџџ const intget_time_dataZ/home/pascal/depot/filedata/src/iirfiledata.h† †$ read the time data in this file, and fill data with it @param data the array that will contain the time once the method is endedџџџџIIRFileDataM•dataџџџџџџџџdouble*џџџџvoidget_track_sizeZ/home/pascal/depot/filedata/src/iirfiledata.h‹‹$т @brief Read the number of track measures contained in this file (in pixels) @return the size of the trackџџџџIIRFileDataџџџ const intget_vindexZ/home/pascal/depot/filedata/src/iirfiledata.hїћŠ @brief build the list of indices of pixels that are in colocation tolerance, sorted by increasing distance to (lat,lon) If (lat,lon) is not found or out of the colocalisation_frame, returns an empty vector @param lat the latitude @param lon the longitude @param colocation_tolerance the acceptable bias (in km or degrees. Supposed to be in, a plane approximation) between [lat,lon] and the nearest data point. @return the list of indices of pixelsџџџџIIRFileDataср„v_indexџџџџџџџџ2vector< vector < int > >&џџџџlatџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџ(colocation_toleranceџџџџџџџџconst floatџџџџvoidinitZ/home/pascal/depot/filedata/src/iirfiledata.hQ QџџџџџџџџIIRFileDatadvoid is_dayZ/home/pascal/depot/filedata/src/iirfiledata.hwwО Check if the file contains day or night data @return true if the file contains day dataџџџџIIRFileDataџџџ const bool4is_geolocation_data_loadedZ/home/pascal/depot/filedata/src/iirfiledata.hЙЙ1№ Check if the geolocation data have been already loaded @return true if the lat_lon data have already been loadedџџџџIIRFileData const bool*load_geolocation_dataZ/home/pascal/depot/filedata/src/iirfiledata.hА А ю load the geolocations data. This method is used to make the search of the indexes of a (lat,lon,time) point faster.џџџџIIRFileData€voidload_v_pixelZ/home/pascal/depot/filedata/src/iirfiledata.hffB @brief load the list data pixelsџџџџIIRFileDataџџџ„voidopen_data_fileZ/home/pascal/depot/filedata/src/iirfiledata.h. @brief opens the file.џџџџIIRFileDataџџџ„voidparse_filenameZ/home/pascal/depot/filedata/src/iirfiledata.h_ _7* Once the filename has been checked (that's a precondition : no verification on it are done in this method), some informations can be extracted of it : - the level of the data - the date - the hour @param short_filename string : the filename without its pathџџџџIIRFileDataishort_filenameџџџџџџџџconst string&џџџџvoid*set_lat_lon_index_maxZ/home/pascal/depot/filedata/src/iirfiledata.ha a џџџџџџџџIIRFileDatavoid"set_time_coverageZ/home/pascal/depot/filedata/src/iirfiledata.h` `џџџџџџџџIIRFileDataivoid~ IIRFileDataZ/home/pascal/depot/filedata/src/iirfiledata.hrrџџџџџџџџIIRFileData€џџџџclose_data_fileZ/home/pascal/depot/filedata/src/iirfiledata.hџ0 @brief closes the file.џџџџIIRFileDataџџџ„voidget_pixel_coordZ/home/pascal/depot/filedata/src/iirfiledata.hъэЖ @brief retrieve the coordinates of a pixel using its index @param ipix [IN] index of the pixel @param lat [OUT] latitude of the pixel @param lon [OUT] longitude of the pixel @param time [OUT] timestamp of the pixelџџџџIIRFileDataipixџџџџџџџџ(const vector< int >&џџџџlatџџџџџџџџ float&џџџџlonџџџџџџџџ float&џџџџtimeџџџџџџџџdouble&џџџџvoidget_vindexZ/home/pascal/depot/filedata/src/iirfiledata.hїћŠ @brief build the list of indices of pixels that are in colocation tolerance, sorted by increasing distance to (lat,lon) If (lat,lon) is not found or out of the colocalisation_frame, returns an empty vector @param lat the latitude @param lon the longitude @param colocation_tolerance the acceptable bias (in km or degrees. Supposed to be in, a plane approximation) between [lat,lon] and the nearest data point. @return the list of indices of pixelsџџџџIIRFileDataср„v_indexџџџџџџџџ2vector< vector < int > >&џџџџlatџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџ(colocation_toleranceџџџџџџџџconst floatџџџџvoidopen_data_fileZ/home/pascal/depot/filedata/src/iirfiledata.h. @brief opens the file.џџџџIIRFileDataџџџ„voidIIR_swath_sizeZ/home/pascal/depot/filedata/src/iirfiledata.h//#p number of pixels of the IIR swath (at 1 km resolution) const intL1Z/home/pascal/depot/filedata/src/iirfiledata.h* *џџџџProductTypeL2_SWATHZ/home/pascal/depot/filedata/src/iirfiledata.h, ,џџџџProductTypeL2_TRACKZ/home/pascal/depot/filedata/src/iirfiledata.h+ +џџџџProductTypeUNDEFINEDZ/home/pascal/depot/filedata/src/iirfiledata.h) )џџџџProductType(colocation_toleranceZ/home/pascal/depot/filedata/src/iirfiledata.hMM+v default acceptable tolerance between 2 colocated measures const floatday_modeZ/home/pascal/depot/filedata/src/iirfiledata.h? ?Є wether the data in this file have been taken during day (true) or night(false)bool"lat_lon_index_maxZ/home/pascal/depot/filedata/src/iirfiledata.hOOџџџџint*"latitude_sds_nameZ/home/pascal/depot/filedata/src/iirfiledata.hHH)џџџџconst string levelZ/home/pascal/depot/filedata/src/iirfiledata.h77 8 the level of the productint$longitude_sds_nameZ/home/pascal/depot/filedata/src/iirfiledata.hII*џџџџconst stringnb_record_maxZ/home/pascal/depot/filedata/src/iirfiledata.h11"Ж maximum number of records for an IIR L2 half-orbit. Useful for static buffers allocations const intproduct_typeZ/home/pascal/depot/filedata/src/iirfiledata.h;;6 the type of the productProductTypetime_sds_nameZ/home/pascal/depot/filedata/src/iirfiledata.hK Kц Can't be static : this SDS is named "Lidar_Shot_Time" in IIR L1 products and "LIDAR_Shot_Time" in IIR L2 products  stringv_pixelZ/home/pascal/depot/filedata/src/iirfiledata.hFFЂ a list of pixels data, sorted by increasing latitude, then increasing longitude &vector< PixelType > ProductTypeZ/home/pascal/depot/filedata/src/iirfiledata.h(-\ defines the possible types of IIR productsconst int$BRUTE_FORCE_SEARCHZ/home/pascal/depot/filedata/src/iirfiledata.h%џџџџconst int2GET_SHOT_TIME_INDEX_TRACEZ/home/pascal/depot/filedata/src/iirfiledata.h,џџџџconst intTcstdlibexception stringalgorithm cmathg_exception.h gsl/gsl_spline.hgsl/gsl_errno.h^/home/pascal/depot/filedata/src/interpolation.h%yУуцџџџџ cmath†Ьgsl/gsl_errno.h–XЖcstdlib˜Ц Х string Xaч^/home/pascal/depot/filedata/src/interpolation.hчI”algorithm{ g_exception.hTСћexceptionO gsl/gsl_spline.hќлЫ^/home/pascal/depot/filedata/src/interpolation.hџџџџџџџџџџџџinterpolate_1D^/home/pascal/depot/filedata/src/interpolation.hGnT @brief process a linear interpolation on a value If @a extrapolate is set to false (default) and @a out_x is out of the interpolation range, no extrapolation will be computed and the method will return @a invalid_y_out @param out_y [OUT] @param out_x [IN] @param in_y [IN] @param in_x [IN] @param invalid_x_in [IN] @param invalid_y_in [IN] @param invalid_x_out [IN] @param invalid_y_out [IN] @param extrapolate [IN]џџџџ T_x_inџџџџ T_y_inџџџџT_x_outџџџџT_y_outџџџџ xџџџџџџџџconst T_x_out&џџџџx1џџџџџџџџconst T_x_in&џџџџx2џџџџџџџџconst T_x_in&џџџџy1џџџџџџџџconst T_y_in&џџџџy2џџџџџџџџconst T_y_in&џџџџy_out_invalidџџџџџџџџconst T_y_out*џџџџx_in_invalidџџџџџџџџconst T_x_in*џџџџy_in_invalidџџџџџџџџconst T_y_in*џџџџx_out_invalidџџџџџџџџconst T_x_out*џџџџextrapolateџџџџџџџџconst boolџџџџT_y_out*is_in_ascending_order^/home/pascal/depot/filedata/src/interpolation.h(EК @brief check if a sorted sequence is in ascending or descending order, with eventual equal values @param v [IN] a weakly sorted vector of values @param invalid [IN] the invalid value @return True if in ascending orderџџџџTџџџџџџџ€vџџџџџџџџconst T*џџџџ v_sizeџџџџџџџџconst intџџџџinvalidџџџџџџџџconst T*џџџџconst boolspline_interp^/home/pascal/depot/filedata/src/interpolation.hГьџџџџџџџџ T_x_inџџџџ T_y_inџџџџT_x_outџџџџT_y_outџџџџ y_outџџџџџџџџT_y_out*џџџџ x_outџџџџџџџџconst T_x_out*џџџџ sz_outџџџџџџџџconst intџџџџy_inџџџџџџџџconst T_y_in*џџџџx_inџџџџџџџџconst T_x_in*џџџџ sz_inџџџџџџџџconst intџџџџinvalid_y_outџџџџџџџџconst T_y_outџџџџvoid v_interpolate_1D^/home/pascal/depot/filedata/src/interpolation.hАz @brief process a linear interpolation of a vector of data @param v_y_out [OUT] output array of interpolated data. Must have been allocated by the caller @param v_x_out @param nb_out_x @param v_y_in @param v_x_in @param nb_in_x @param invalid_x_in @param invalid_y_in @param invalid_x_in @param invalid_y_inџџџџ T_x_inџџџџ T_y_inџџџџT_x_outџџџџT_y_outџџџџџџџ€ v_y_outџџџџџџџџT_y_out*џџџџv_x_outџџџџџџџџconst T_x_out*џџџџv_out_sizeџџџџџџџџconst intџџџџ v_y_inџџџџџџџџconst T_y_in*џџџџ v_x_inџџџџџџџџconst T_x_in*џџџџv_in_sizeџџџџџџџџconst intџџџџinvalid_y_outџџџџџџџџconst T_y_out*џџџџinvalid_x_inџџџџџџџџconst T_x_in*џџџџinvalid_y_inџџџџџџџџconst T_y_in*џџџџinvalid_x_outџџџџџџџџconst T_x_out*џџџџextrapolateџџџџџџџџconst boolџџџџT_y_out*std^/home/pascal/depot/filedata/src/interpolation.h)logfile.hV/home/pascal/depot/filedata/src/logfile.cpp%yУуцџџџџlogfile.hЁGMˆV/home/pascal/depot/filedata/src/logfile.cppˆxV/home/pascal/depot/filedata/src/logfile.cppџџџџџџџџџџџџLogfileV/home/pascal/depot/filedata/src/logfile.cppџџџџџџџџLogfile€filenameџџџџџџџџconst string&џџџџџџџџLogfileV/home/pascal/depot/filedata/src/logfile.cpp7:џџџџџџџџLogfileЖНџџџџ closeV/home/pascal/depot/filedata/src/logfile.cpp15џџџџџџџџLogfileЖН€voidis_openedV/home/pascal/depot/filedata/src/logfile.cppLNџџџџџџџџLogfilenconst boolopenV/home/pascal/depot/filedata/src/logfile.cpp<JџџџџџџџџLogfileЖ€filenameџџџџџџџџconst string&џџџџvoid writeV/home/pascal/depot/filedata/src/logfile.cpp*џџџџџџџџLogfileџџџ€msgџџџџџџџџconst string&џџџџfileџџџџџџџџconst stringџџџџlineџџџџџџџџconst intџџџџvoid~ LogfileV/home/pascal/depot/filedata/src/logfile.cpp,/џџџџџџџџLogfileџџџ€џџџџV"file_exceptions.htools.hfstreamR/home/pascal/depot/filedata/src/logfile.h%yУуцџџџџ"file_exceptions.h„јйЇtools.hАох7R/home/pascal/depot/filedata/src/logfile.hD­fstream§2R/home/pascal/depot/filedata/src/logfile.hџџџџџџџџџџџџLogfileR/home/pascal/depot/filedata/src/logfile.h(Qn @class Logfile management of a logging file, that uses the standard fluxes syntax @warning the file descriptor to this file is opened during all the "lifetime" of the Logfile objectџџџџLogfileR/home/pascal/depot/filedata/src/logfile.h22!џџџџџџџџLogfilefilenameџџџџџџџџconst string&џџџџџџџџLogfileR/home/pascal/depot/filedata/src/logfile.h66 џџџџџџџџLogfileџџџџ closeR/home/pascal/depot/filedata/src/logfile.hPP4 @brief close the log fileџџџџLogfileЖ €voidis_openedR/home/pascal/depot/filedata/src/logfile.hL Lž @brief check if the log file is opened @return true if the log file is openedџџџџLogfileconst boolopenR/home/pascal/depot/filedata/src/logfile.hGG#О @brief open the file in write mode @param filename the full name of the logging file to writeџџџџLogfilefilenameџџџџџџџџconst string&џџџџvoid writeR/home/pascal/depot/filedata/src/logfile.hBBH” @brief write the string @a msg as a line in the log file Add a "end of line" character at the end of @a msg is not required. The method does it by itself @param msg the message to write @param file [optionnal] name of file that is concerned by the message @param line [optionnal] line of file that is concerned by the messageџџџџLogfilemsgџџџџџџџџconst string&џџџџfileџџџџџџџџconst stringџџџџlineџџџџџџџџconst intџџџџvoid~ LogfileR/home/pascal/depot/filedata/src/logfile.h:: џџџџџџџџLogfileЖВџџџџfilenameR/home/pascal/depot/filedata/src/logfile.h* *> full pathname of the log file  stringfpR/home/pascal/depot/filedata/src/logfile.h, , * log file descriptor ofstreamstdR/home/pascal/depot/filedata/src/logfile.hХ stdio.hstring.hmerisfiledata.hepr_record.hepr_band.hepr_field.hepr_core.hsstream cfloatb/home/pascal/depot/filedata/src/merisfiledata.cpp%yЦhE џџџџ epr_core.hHлХmerisfiledata.h2na0string.h­Ц‰=epr_record.hтˆьћepr_band.h! epr_field.h)•Жрb/home/pascal/depot/filedata/src/merisfiledata.cppCR№sstreamЏЬstdio.hЏЬІ‰ cfloatыxb/home/pascal/depot/filedata/src/merisfiledata.cppџџџџџџџџџџџџMerisFileDatab/home/pascal/depot/filedata/src/merisfiledata.cppDџџџџџџџџMerisFileDataЖSfilenameџџџџџџџџconst string&џџџџmodeџџџџџџџџconst string&џџџџџџџџclose_data_fileb/home/pascal/depot/filedata/src/merisfiledata.cppSUџџџџџџџџMerisFileDatavoid2epr_get_field_elem_as_strb/home/pascal/depot/filedata/src/merisfiledata.cppэ6v Interprates a memory data as a string. @param field the pointer at the array to convert @return the <code>char</code> typed element or <code>NULL</code> if an error occured.џџџџMerisFileDataOc3 fieldџџџџџџџџ"const EPR_SField*џџџџ stringgetFillValuesb/home/pascal/depot/filedata/src/merisfiledata.cppФЦџџџџџџџџMerisFileDatacfillvalueџџџџџџџџ char8&џџџџvoidgetFillValuesb/home/pascal/depot/filedata/src/merisfiledata.cppШЪџџџџџџџџMerisFileData fillvalueџџџџџџџџuchar8&џџџџvoidgetFillValuesb/home/pascal/depot/filedata/src/merisfiledata.cppЬЮџџџџџџџџMerisFileData fillvalueџџџџџџџџ int16&џџџџvoidgetFillValuesb/home/pascal/depot/filedata/src/merisfiledata.cppавџџџџџџџџMerisFileData fillvalueџџџџџџџџuint16&џџџџvoidgetFillValuesb/home/pascal/depot/filedata/src/merisfiledata.cppджџџџџџџџџMerisFileDataofillvalueџџџџџџџџ int32&џџџџvoidgetFillValuesb/home/pascal/depot/filedata/src/merisfiledata.cppикџџџџџџџџMerisFileData fillvalueџџџџџџџџuint32&џџџџvoidgetFillValuesb/home/pascal/depot/filedata/src/merisfiledata.cppмоџџџџџџџџMerisFileData fillvalueџџџџџџџџfloat32&џџџџvoidgetFillValuesb/home/pascal/depot/filedata/src/merisfiledata.cppрьџџџџџџџџMerisFileDatafillvalueџџџџџџџџfloat64&џџџџvoidgetMonthb/home/pascal/depot/filedata/src/merisfiledata.cppЉЙџџџџџџџџMerisFileData  monthџџџџџџџџconst string&џџџџ string*get_dataset_data_typeb/home/pascal/depot/filedata/src/merisfiledata.cpp*^џџџџџџџџMerisFileData sds_nameџџџџџџџџ stringџџџџint*get_dataset_dimensionb/home/pascal/depot/filedata/src/merisfiledata.cppЫжџџџџџџџџMerisFileData%y€sds_nameџџџџџџџџconst string&џџџџvector< int >,get_dataset_fill_valueb/home/pascal/depot/filedata/src/merisfiledata.cppйџџџџџџџџMerisFileDataЖ*€sds_nameџџџџџџџџconst string&џџџџfill_valueџџџџџџџџ void*џџџџvoid get_dataset_nameb/home/pascal/depot/filedata/src/merisfiledata.cpp$(џџџџџџџџMerisFileDataoiџџџџџџџџintџџџџ stringget_fillValueb/home/pascal/depot/filedata/src/merisfiledata.cppЛТџџџџџџџџMerisFileDatarsds_nameџџџџџџџџconst string&џџџџfillValueџџџџџџџџ void*џџџџvoidget_n_datasetb/home/pascal/depot/filedata/src/merisfiledata.cpp"џџџџџџџџMerisFileDataЕ’Ѓ€intget_scalingb/home/pascal/depot/filedata/src/merisfiledata.cpp9CџџџџџџџџMerisFileDataOc3sds_nameџџџџџџџџconst string&џџџџ scaleџџџџџџџџfloat64&џџџџ offsetџџџџџџџџfloat64&џџџџvoidget_values_attrb/home/pascal/depot/filedata/src/merisfiledata.cpp{џџџџџџџџMerisFileDataoattr_nameџџџџџџџџ stringџџџџ string.get_values_attr_datasetb/home/pascal/depot/filedata/src/merisfiledata.cpp`hџџџџџџџџMerisFileData sds_nameџџџџџџџџ stringџџџџattr_nameџџџџџџџџ stringџџџџ stringhas_attrb/home/pascal/depot/filedata/src/merisfiledata.cpp‘ЇџџџџџџџџMerisFileData6attr_nameџџџџџџџџ stringџџџџbool has_attr_datasetb/home/pascal/depot/filedata/src/merisfiledata.cppjyџџџџџџџџMerisFileData sds_nameџџџџџџџџ stringџџџџattr_nameџџџџџџџџ stringџџџџboolopen_data_fileb/home/pascal/depot/filedata/src/merisfiledata.cppOQџџџџџџџџMerisFileDataЕаKvoidread_datab/home/pascal/depot/filedata/src/merisfiledata.cppXЩџџџџџџџџMerisFileDataodataџџџџџџџџ void*џџџџsds_nameџџџџџџџџconst char*џџџџ startџџџџџџџџint*џџџџ strideџџџџџџџџint*џџџџ edgesџџџџџџџџint*џџџџrankџџџџџџџџintџџџџ void*~ MerisFileDatab/home/pascal/depot/filedata/src/merisfiledata.cppFMџџџџџџџџMerisFileDataoџџџџXstring.h vectormap filedatareader.hHdf_sds.hppepr_api.h^/home/pascal/depot/filedata/src/merisfiledata.h%yУюЧ8џџџџ vector …/Г^/home/pascal/depot/filedata/src/merisfiledata.htFD%string.h­Ц‰=mapюHdf_sds.hpp>eэСepr_api.hjk+І filedatareader.hт§ƒ^/home/pascal/depot/filedata/src/merisfiledata.hџџџџџџџџџџџџMerisFileData^/home/pascal/depot/filedata/src/merisfiledata.hb(@author James MANLEYџџџџFileDataReaderMerisFileData^/home/pascal/depot/filedata/src/merisfiledata.hTџџџџџџџџMerisFileDataџџџ€nameџџџџџџџџconst string&џџџџmodeџџџџџџџџconst string&џџџџџџџџclose_data_file^/home/pascal/depot/filedata/src/merisfiledata.h@ @. @brief closes the fileџџџџMerisFileDataЖ;void2epr_get_field_elem_as_str^/home/pascal/depot/filedata/src/merisfiledata.h_ _=џџџџџџџџMerisFileData fieldџџџџџџџџ"const EPR_SField*џџџџ stringgetFillValues^/home/pascal/depot/filedata/src/merisfiledata.hV V(џџџџџџџџMerisFileDataџџџ€fillvalueџџџџџџџџ char8&џџџџvoidgetFillValues^/home/pascal/depot/filedata/src/merisfiledata.hW W)џџџџџџџџMerisFileDatafillvalueџџџџџџџџuchar8&џџџџvoidgetFillValues^/home/pascal/depot/filedata/src/merisfiledata.hX X(џџџџџџџџMerisFileDataM•fillvalueџџџџџџџџ int16&џџџџvoidgetFillValues^/home/pascal/depot/filedata/src/merisfiledata.hY Y)џџџџџџџџMerisFileDataЖЕfillvalueџџџџџџџџuint16&џџџџvoidgetFillValues^/home/pascal/depot/filedata/src/merisfiledata.hZ Z(џџџџџџџџMerisFileDatafillvalueџџџџџџџџ int32&џџџџvoidgetFillValues^/home/pascal/depot/filedata/src/merisfiledata.h[ [)џџџџџџџџMerisFileDataifillvalueџџџџџџџџuint32&џџџџvoidgetFillValues^/home/pascal/depot/filedata/src/merisfiledata.h\ \*џџџџџџџџMerisFileDataџџџ€fillvalueџџџџџџџџfloat32&џџџџvoidgetFillValues^/home/pascal/depot/filedata/src/merisfiledata.h] ]*џџџџџџџџMerisFileDatafillvalueџџџџџџџџfloat64&џџџџvoidgetMonth^/home/pascal/depot/filedata/src/merisfiledata.hQ Q(џџџџџџџџMerisFileDataЖј monthџџџџџџџџconst string&џџџџ string*get_dataset_data_type^/home/pascal/depot/filedata/src/merisfiledata.h//.џџџџџџџџMerisFileDatasds_nameџџџџџџџџ stringџџџџint*get_dataset_dimension^/home/pascal/depot/filedata/src/merisfiledata.h''=џџџџџџџџMerisFileDataџџџ€sds_nameџџџџџџџџconst string&џџџџvector< int >,get_dataset_fill_value^/home/pascal/depot/filedata/src/merisfiledata.h) )IџџџџџџџџMerisFileData.sds_nameџџџџџџџџconst string&џџџџfill_valueџџџџџџџџ void*џџџџvoid get_dataset_name^/home/pascal/depot/filedata/src/merisfiledata.h- -"џџџџџџџџMerisFileDataiџџџџџџџџintџџџџ stringget_filename^/home/pascal/depot/filedata/src/merisfiledata.h991џџџџџџџџMerisFileData stringget_fillValue^/home/pascal/depot/filedata/src/merisfiledata.hG G?џџџџџџџџMerisFileDataЖђsds_nameџџџџџџџџconst string&џџџџfillValueџџџџџџџџ void*џџџџvoidget_n_dataset^/home/pascal/depot/filedata/src/merisfiledata.h++џџџџџџџџMerisFileDataintget_product^/home/pascal/depot/filedata/src/merisfiledata.h;;)џџџџџџџџMerisFileData stringget_scaling^/home/pascal/depot/filedata/src/merisfiledata.ha aMџџџџџџџџMerisFileData€sds_nameџџџџџџџџconst string&џџџџ scaleџџџџџџџџfloat64&џџџџ offsetџџџџџџџџfloat64&џџџџvoid.get_scaling_type_of_raw^/home/pascal/depot/filedata/src/merisfiledata.hI IdџџџџџџџџMerisFileDatasds_nameџџџџџџџџconst string&џџџџ scaleџџџџџџџџfloat64&џџџџ offsetџџџџџџџџfloat64&џџџџtypeџџџџџџџџint&џџџџvoidget_values_attr^/home/pascal/depot/filedata/src/merisfiledata.h5 5,џџџџџџџџMerisFileDataattr_nameџџџџџџџџ stringџџџџ string.get_values_attr_dataset^/home/pascal/depot/filedata/src/merisfiledata.h1 1DџџџџџџџџMerisFileDatasds_nameџџџџџџџџ stringџџџџattr_nameџџџџџџџџ stringџџџџ stringhas_attr^/home/pascal/depot/filedata/src/merisfiledata.h7 7#џџџџџџџџMerisFileDataaЯ€attr_nameџџџџџџџџ stringџџџџbool has_attr_dataset^/home/pascal/depot/filedata/src/merisfiledata.h3 3;џџџџџџџџMerisFileData_sds_nameџџџџџџџџ stringџџџџattr_nameџџџџџџџџ stringџџџџboolopen_data_file^/home/pascal/depot/filedata/src/merisfiledata.hE E* @brief open the fileџџџџMerisFileDatavoidread_data^/home/pascal/depot/filedata/src/merisfiledata.h %(џџџџџџџџMerisFileDataџџџ„dataџџџџџџџџ void*џџџџsds_nameџџџџџџџџconst char*џџџџ startџџџџџџџџint*џџџџ strideџџџџџџџџint*џџџџ edgesџџџџџџџџint*џџџџrankџџџџџџџџintџџџџ void*~ MerisFileData^/home/pascal/depot/filedata/src/merisfiledata.h џџџџџџџџMerisFileDataџџџ€џџџџget_filename^/home/pascal/depot/filedata/src/merisfiledata.h991џџџџџџџџMerisFileData stringget_product^/home/pascal/depot/filedata/src/merisfiledata.h;;)џџџџџџџџMerisFileData stringfilename^/home/pascal/depot/filedata/src/merisfiledata.hO Oџџџџ string height^/home/pascal/depot/filedata/src/merisfiledata.hTTџџџџintproduct_id^/home/pascal/depot/filedata/src/merisfiledata.hMMџџџџEPR_SProductId* width^/home/pascal/depot/filedata/src/merisfiledata.hSS џџџџintstd^/home/pascal/depot/filedata/src/merisfiledata.hemeteofiledata.hb/home/pascal/depot/filedata/src/meteofiledata.cpp%yЦg‚Pџџџџmeteofiledata.h/‘jb/home/pascal/depot/filedata/src/meteofiledata.cpp`jazb/home/pascal/depot/filedata/src/meteofiledata.cppџџџџџџџџџџџџMeteoFileDatab/home/pascal/depot/filedata/src/meteofiledata.cpp џџџџџџџџMeteoFileDataenameџџџџџџџџ$const std::string&џџџџmodeџџџџџџџџ$const std::string&џџџџџџџџ"free_height_levelb/home/pascal/depot/filedata/src/meteofiledata.cppORџџџџџџџџMeteoFileDataЖ €voidfree_time_levelb/home/pascal/depot/filedata/src/meteofiledata.cpp^aџџџџџџџџMeteoFileData€void get_height_levelb/home/pascal/depot/filedata/src/meteofiledata.cppHKџџџџџџџџMeteoFileDataџџџ€const double*get_indexb/home/pascal/depot/filedata/src/meteofiledata.cppfmџџџџџџџџMeteoFileDataџџџ latџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџ indexџџџџџџџџint*џџџџconst boolget_indexb/home/pascal/depot/filedata/src/meteofiledata.cppo{џџџџџџџџMeteoFileDatalatџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџtimeџџџџџџџџconst double&џџџџ indexџџџџџџџџint*џџџџconst boolget_lat_indexb/home/pascal/depot/filedata/src/meteofiledata.cpp!&џџџџџџџџMeteoFileData latџџџџџџџџconst float&џџџџconst intget_lon_indexb/home/pascal/depot/filedata/src/meteofiledata.cpp'/џџџџџџџџMeteoFileData lonџџџџџџџџconst float&џџџџconst int&get_nb_height_levelb/home/pascal/depot/filedata/src/meteofiledata.cppDGџџџџџџџџMeteoFileDataЖT(const unsigned short"get_nb_time_levelb/home/pascal/depot/filedata/src/meteofiledata.cppSVџџџџџџџџMeteoFileDataџџџ€(const unsigned shortget_time_indexb/home/pascal/depot/filedata/src/meteofiledata.cpp0=џџџџџџџџMeteoFileData timeџџџџџџџџconst double&џџџџconst intget_time_levelb/home/pascal/depot/filedata/src/meteofiledata.cppWZџџџџџџџџMeteoFileDataqconst double*get_time_maxb/home/pascal/depot/filedata/src/meteofiledata.cppACџџџџџџџџMeteoFileData doubleget_time_minb/home/pascal/depot/filedata/src/meteofiledata.cpp>@џџџџџџџџMeteoFileDataџџџ  double,is_height_level_loadedb/home/pascal/depot/filedata/src/meteofiledata.cppLNџџџџџџџџMeteoFileDataЖ const bool(is_time_level_loadedb/home/pascal/depot/filedata/src/meteofiledata.cpp[]џџџџџџџџMeteoFileDataЖƒ const bool~ MeteoFileDatab/home/pascal/depot/filedata/src/meteofiledata.cppbeџџџџџџџџMeteoFileDataЖBџџџџZfiledata.h^/home/pascal/depot/filedata/src/meteofiledata.h%yУуцџџџџfiledata.hХ)^/home/pascal/depot/filedata/src/meteofiledata.hXt_^/home/pascal/depot/filedata/src/meteofiledata.hџџџџџџџџџџџџMeteoFileData^/home/pascal/depot/filedata/src/meteofiledata.hаЌGeneric abstract interface to manage the reading of meteo files @author Nicolas PASCALџџџџFileDataMeteoFileData^/home/pascal/depot/filedata/src/meteofiledata.hqqGџџџџџџџџMeteoFileDataЖœnameџџџџџџџџ$const std::string&џџџџmodeџџџџџџџџ$const std::string&џџџџџџџџcheck_filename^/home/pascal/depot/filedata/src/meteofiledata.hAAH> @brief check is a the file seems to be a valid meteo data file The analysis is done with a filename parsing, not with parsing the data inside @param filename the filename without its path @return true if the filename seems to be valid, false else or in case of problem (exception...)џџџџMeteoFileDatadfilenameџџџџџџџџ$const std::string&џџџџbool"free_height_level^/home/pascal/depot/filedata/src/meteofiledata.hZ Z @brief if loaded, free the height levels If the product is a 2D one, no height levels are defined. In this case, nothing's done.џџџџMeteoFileDatavoidfree_time_level^/home/pascal/depot/filedata/src/meteofiledata.hj jN @brief if loaded, free the time levelsџџџџMeteoFileDataЖš€voidget_delta_lat^/home/pascal/depot/filedata/src/meteofiledata.hЩЭа @brief accessor to the time step between 2 successive grid latitudes @return the minimal latitude stepџџџџMeteoFileData doubleget_delta_lon^/home/pascal/depot/filedata/src/meteofiledata.hЮЮ6д @brief accessor to the time step between 2 successive grid longitudes @return the minimal longitude stepџџџџMeteoFileDataЖЉ doubleget_delta_time^/home/pascal/depot/filedata/src/meteofiledata.hФШД @brief accessor to the time step between 2 successive time @return the minimal time stepџџџџMeteoFileDataџџџ  double get_height_level^/home/pascal/depot/filedata/src/meteofiledata.h$ @brief return the height level values @return the height values vectorџџџџMeteoFileDataM•const double*get_index^/home/pascal/depot/filedata/src/meteofiledata.hААV” @brief search the indexes of the data coincident with the point (lat,lon) If the coincidence can't be found, the output indexes @a index will be set to {-1,-1} @param lat the latitude @param lon the longitude @param index the output indexes as a 2 values array. Mustn't be NULL @return true if the coincidence has been foundџџџџMeteoFileDataЄlatџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџ indexџџџџџџџџint*џџџџconst boolget_index^/home/pascal/depot/filedata/src/meteofiledata.hККd: @brief search the indexes of the data coincident with the point (lat,lon,time) If the coincidence can't be found, the output indexes @a index will be set to {-1,-1,-1} @param lat the latitude @param lon the longitude @param time the time (using TAI convention : in sec since the 1993/01/01) @param index the output indexes as a 3 values array. Mustn't be NULL @return true if the coincidence has been foundџџџџMeteoFileDatalatџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџtimeџџџџџџџџconst double&џџџџ indexџџџџџџџџint*џџџџconst boolget_lat_index^/home/pascal/depot/filedata/src/meteofiledata.h››< @brief return the index of the grid latitude that is the nearest to lat. @param lat the latitude @return the index, or -1 if out of rangeџџџџMeteoFileData$latџџџџџџџџconst float&џџџџconst intget_lon_index^/home/pascal/depot/filedata/src/meteofiledata.hЁЁ< @brief return the index of the grid longitude that is the nearest to lon. @param lon the longitude @return the index, or -1 if out of rangeџџџџMeteoFileDataЄlonџџџџџџџџconst float&џџџџconst int&get_nb_height_level^/home/pascal/depot/filedata/src/meteofiledata.hzz.А @brief access to the number of height levels @return the number of height levelsџџџџMeteoFileData(const unsigned short"get_nb_time_level^/home/pascal/depot/filedata/src/meteofiledata.h……,к @brief access to the number of time levels load the time level if needed @return the number of time levelsџџџџMeteoFileData(const unsigned short"get_nb_time_level^/home/pascal/depot/filedata/src/meteofiledata.hПП=Ш @brief get the number of time levels for this type of meteo file @return the number of time levelsџџџџMeteoFileData shortget_time_index^/home/pascal/depot/filedata/src/meteofiledata.hЇЇ> @brief return the index of the grid time that is the nearest to lon. @param time the time @return the index, or -1 if out of rangeџџџџMeteoFileData$timeџџџџџџџџconst double&џџџџconst intget_time_level^/home/pascal/depot/filedata/src/meteofiledata.h‹‹"Ц @brief return the time level values load the time level if needed @return the time values vectorџџџџMeteoFileDataconst double*get_time_max^/home/pascal/depot/filedata/src/meteofiledata.h••': @brief access to the time of the end of the acquisition @return the time of the end of the acquisition (using TAI convention : in sec since the 1993/01/01)џџџџMeteoFileData$ doubleget_time_min^/home/pascal/depot/filedata/src/meteofiledata.h'H @brief access to the time of the start of the acquisition @return the time of the begining of the acquisition (using TAI convention : in sec since the 1993/01/01)џџџџMeteoFileData$ double,is_height_level_loaded^/home/pascal/depot/filedata/src/meteofiledata.hNN5R @brief check if the height levels have already been set @warning for 2D products (that aven't got height levels) return true @return true if the height levels are setџџџџMeteoFileData$const bool(is_time_level_loaded^/home/pascal/depot/filedata/src/meteofiledata.h__3О @brief check if the time levels have already been set @return true if the time levels are setџџџџMeteoFileDataџџџЄconst bool"load_height_level^/home/pascal/depot/filedata/src/meteofiledata.hUU&Ў @brief if not already set, read the height levels in the file To implement this interface : the method must : - set the nb_height_level attribute - fill the height_level array with the height stamp of each levelџџџџMeteoFileDatavoidload_time_level^/home/pascal/depot/filedata/src/meteofiledata.hff&ž @brief if not already set, read the time levels in the file To implement this interface : the method must : - set the nb_time_level attribute - fill the time_level array with the time stamp of each levelџџџџMeteoFileDataDvoidparse_filename^/home/pascal/depot/filedata/src/meteofiledata.hGGBА @brief extract some informations using the filename (acquisition start time,etc) PRECONDITION the file name must be valid. The validity check is done by check_filename @param filename the filename without its pathџџџџMeteoFileDataDfilenameџџџџџџџџ$const std::string&џџџџvoid~ MeteoFileData^/home/pascal/depot/filedata/src/meteofiledata.hu uџџџџџџџџMeteoFileDataџџџџget_delta_lat^/home/pascal/depot/filedata/src/meteofiledata.hЩЭа @brief accessor to the time step between 2 successive grid latitudes @return the minimal latitude stepџџџџMeteoFileData doubleget_delta_lon^/home/pascal/depot/filedata/src/meteofiledata.hЮЮ6д @brief accessor to the time step between 2 successive grid longitudes @return the minimal longitude stepџџџџMeteoFileDataЖЉ doubleget_delta_time^/home/pascal/depot/filedata/src/meteofiledata.hФШД @brief accessor to the time step between 2 successive time @return the minimal time stepџџџџMeteoFileDataџџџ  double"get_nb_time_level^/home/pascal/depot/filedata/src/meteofiledata.hПП=Ш @brief get the number of time levels for this type of meteo file @return the number of time levelsџџџџMeteoFileData short"load_height_level^/home/pascal/depot/filedata/src/meteofiledata.hUU&Ў @brief if not already set, read the height levels in the file To implement this interface : the method must : - set the nb_height_level attribute - fill the height_level array with the height stamp of each levelџџџџMeteoFileDatavoiddelta_lat^/home/pascal/depot/filedata/src/meteofiledata.h% %\ @brief The average step between two latitudes doubledelta_lon^/home/pascal/depot/filedata/src/meteofiledata.h) )^ @brief The average step between two longitudes doubledelta_time^/home/pascal/depot/filedata/src/meteofiledata.h! !6 @brief The time resolution doubleheight_level^/home/pascal/depot/filedata/src/meteofiledata.h2 2И @brief the height levels (the Z axis for 3D products) For 2D products, will always be NULLdouble*nb_height_level^/home/pascal/depot/filedata/src/meteofiledata.h- -’ @brief The number of different heights levels (depend of the meteo file) shortnb_time_level^/home/pascal/depot/filedata/src/meteofiledata.h6 6Ž @brief The number of different times levels (depend of the meteo file) shorttime_level^/home/pascal/depot/filedata/src/meteofiledata.h: :L @brief the time stamp of each measuredouble*imodisfiledata.hb/home/pascal/depot/filedata/src/modisfiledata.cpp%yЦнЌPџџџџb/home/pascal/depot/filedata/src/modisfiledata.cppцуэmodisfiledata.hЂœЬb/home/pascal/depot/filedata/src/modisfiledata.cppџџџџџџџџџџџџMODISFileDatab/home/pascal/depot/filedata/src/modisfiledata.cpp"%џџџџџџџџMODISFileData€nameџџџџџџџџconst string&џџџџmodeџџџџџџџџconst string&џџџџџџџџcheck_filenameb/home/pascal/depot/filedata/src/modisfiledata.cppђџџџџџџџџMODISFileData short_filenameџџџџџџџџconst string&џџџџboolcontain_datab/home/pascal/depot/filedata/src/modisfiledata.cpp}џџџџџџџџMODISFileData€latџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџtimeџџџџџџџџconst double&џџџџtoleranceџџџџџџџџconst double&џџџџconst bool contain_locationb/home/pascal/depot/filedata/src/modisfiledata.cpp€…џџџџџџџџMODISFileDataџџџ€latџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџtoleranceџџџџџџџџconst double&џџџџconst bool2convert_1km_to_250m_indexb/home/pascal/depot/filedata/src/modisfiledata.cppКЬџџџџџџџџMODISFileData i_pix_1km[]џџџџџџџџconst int*џџџџi_pix_250m[]џџџџџџџџ float*џџџџvoid,convert_5_to_1km_indexb/home/pascal/depot/filedata/src/modisfiledata.cppЌИџџџџџџџџMODISFileDataџџџ five_km_idxџџџџџџџџconst int&џџџџis_x_axisџџџџџџџџconst boolџџџџconst int*free_geolocation_datab/home/pascal/depot/filedata/src/modisfiledata.cpp˜žџџџџџџџџMODISFileDatavoid*get_1km_to_250m_pixelb/home/pascal/depot/filedata/src/modisfiledata.cppЮјџџџџџџџџMODISFileDatalatџџџџџџџџconst float32џџџџlonџџџџџџџџconst float32џџџџi_pix_1km[]џџџџџџџџconst int*џџџџi_pix_250m[]џџџџџџџџint*џџџџconst bool"get_5_to_1km_areab/home/pascal/depot/filedata/src/modisfiledata.cppЋџџџџџџџџMODISFileDatafive_km_idxџџџџџџџџconst int*џџџџone_km_min_idxџџџџџџџџint*џџџџone_km_max_idxџџџџџџџџint*џџџџvoid$get_5_to_1km_indexb/home/pascal/depot/filedata/src/modisfiledata.cpp#—џџџџџџџџMODISFileDatalatџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџidx_1kmџџџџџџџџ long*џџџџidx_5kmџџџџџџџџconst long*џџџџconst bool(get_5km_to_1km_pixelb/home/pascal/depot/filedata/src/modisfiledata.cppњ!џџџџџџџџMODISFileDataџџџ€latџџџџџџџџconst float32џџџџlonџџџџџџџџconst float32џџџџi_pix_5km[]џџџџџџџџconst int*џџџџi_pix_1km[]џџџџџџџџint*џџџџconst boolget_indexb/home/pascal/depot/filedata/src/modisfiledata.cpp,eџџџџџџџџMODISFileDataџџџ€latџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџtimeџџџџџџџџconst doubleџџџџnearest_pix_idxџџџџџџџџ long*џџџџcoloc_toleranceџџџџџџџџ floatџџџџconst boolget_indexb/home/pascal/depot/filedata/src/modisfiledata.cppgtџџџџџџџџMODISFileDatalatџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџnearest_pix_idxџџџџџџџџ long&џџџџcoloc_toleranceџџџџџџџџ floatџџџџconst bool4get_nearest_point_distanceb/home/pascal/depot/filedata/src/modisfiledata.cpp+џџџџџџџџMODISFileDatalatџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџcoloc_toleranceџџџџџџџџ floatџџџџconst floatget_radixb/home/pascal/depot/filedata/src/modisfiledata.cppv|џџџџџџџџMODISFileDataџџџconst string&get_sds_calibrationb/home/pascal/depot/filedata/src/modisfiledata.cppлєџџџџџџџџMODISFileData€sds_nameџџџџџџџџconst string&џџџџ scaleџџџџџџџџdouble&џџџџ offsetџџџџџџџџdouble&џџџџscale_nameџџџџџџџџconst string&џџџџoffset_nameџџџџџџџџconst string&џџџџchannel_nbџџџџџџџџconst intџџџџvoidinitb/home/pascal/depot/filedata/src/modisfiledata.cpp&@џџџџџџџџMODISFileDatavoid2init_colocation_toleranceb/home/pascal/depot/filedata/src/modisfiledata.cppѕќџџџџџџџџMODISFileDataqg€void4is_geolocation_data_loadedb/home/pascal/depot/filedata/src/modisfiledata.cppзйџџџџџџџџMODISFileData const boolis_inside_gringb/home/pascal/depot/filedata/src/modisfiledata.cpp†œџџџџџџџџMODISFileDataџџџ latџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџconst bool*load_geolocation_datab/home/pascal/depot/filedata/src/modisfiledata.cpp ФџџџџџџџџMODISFileData€voidload_v_pixelb/home/pascal/depot/filedata/src/modisfiledata.cppЦеџџџџџџџџMODISFileDataYvoidparse_filenameb/home/pascal/depot/filedata/src/modisfiledata.cppІёџџџџџџџџMODISFileData€short_filenameџџџџџџџџconst string&џџџџvoidprint_gringb/home/pascal/depot/filedata/src/modisfiledata.cppBKџџџџџџџџMODISFileDataЖШ voidset_gringb/home/pascal/depot/filedata/src/modisfiledata.cppL‘џџџџџџџџMODISFileDataџџџ€void*set_lat_lon_index_maxb/home/pascal/depot/filedata/src/modisfiledata.cpp“˜џџџџџџџџMODISFileDataџџџ€void&set_lat_lon_min_maxb/home/pascal/depot/filedata/src/modisfiledata.cppџџџџџџџџMODISFileDatavoid"set_time_coverageb/home/pascal/depot/filedata/src/modisfiledata.cppŸЅџџџџџџџџMODISFileData€void~ MODISFileDatab/home/pascal/depot/filedata/src/modisfiledata.cppšžџџџџџџџџMODISFileDataџџџџ\hdffiledata.h&satellitefiledata.hpixel.hgeometry.h^/home/pascal/depot/filedata/src/modisfiledata.h%yУєhџџџџhdffiledata.h˜vТ&satellitefiledata.hщ"Fзpixel.hЊІ“иgeometry.h7\<в^/home/pascal/depot/filedata/src/modisfiledata.hфsёС^/home/pascal/depot/filedata/src/modisfiledata.hџџџџџџџџџџџџMODISFileData^/home/pascal/depot/filedata/src/modisfiledata.h,љ*Class managing the opening, reading, and accessing to the data of a MODIS File. MODIS products managed : MYD06_L2 ; MYD021KM ; @author Nicolas PASCALџџџџ"SatelliteFileDataHDFFileData;MODISFileData^/home/pascal/depot/filedata/src/modisfiledata.hkk>џџџџџџџџMODISFileData _nameџџџџџџџџconst string&џџџџmodeџџџџџџџџconst string&џџџџџџџџcheck_filename^/home/pascal/depot/filedata/src/modisfiledata.hƒ ƒ;j @brief check if the product name matches the official naming convention @param file_basename the basename of the product file @return true if the file name matches the conventionџџџџMODISFileDataџџџ file_basenameџџџџџџџџconst string&џџџџboolclose_data_file^/home/pascal/depot/filedata/src/modisfiledata.hѓѕ0 @brief closes the file.џџџџMODISFileDatavoidcontain_data^/home/pascal/depot/filedata/src/modisfiledata.hККoЎ check if this file has data coincident with (lat,lon,time) @param lat the latitude of the event @param lon the longitude of the event @param time the time of the event. If -1., time test will be ignored @returnџџџџMODISFileDatalatџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџtimeџџџџџџџџconst double&џџџџtoleranceџџџџџџџџconst double&џџџџconst bool contain_location^/home/pascal/depot/filedata/src/modisfiledata.hУУ_8 @brief check if this file has eventually data coincident with (lat,lon) Actually, it only tests if (lat,lon) is contained in the data's bounding rectangle. @param lat the latitude of the event @param lon the longitude of the event @param tolerance acceptable bias between the nearest point in the data and the given (lat,lon) point @return true if a point in the data has been found in the colocation frameџџџџMODISFileDatailatџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџtoleranceџџџџџџџџconst double&џџџџconst bool2convert_1km_to_250m_index^/home/pascal/depot/filedata/src/modisfiledata.hБ ВFd @brief convert the indexes of a point in the 250m grid to the corresponding indexes in the 1km grid. @param i_pix_1km the (track, swath) indexes at 1km resolution @param i_pix_250m the (track, swath) indexes at 250m resolution. In float type because of non integer offset between the 2 grids along trackџџџџMODISFileDatat i_pix_1km[]џџџџџџџџconst int*џџџџi_pix_250m[]џџџџџџџџ float*џџџџvoid,convert_5_to_1km_index^/home/pascal/depot/filedata/src/modisfiledata.hЊЊb @brief convert an index at 1km to the one representing the same point at 5km. @param five_km_index the index at 5 km resolution @param is_x_axis wether the axis we search the index is the x or the y one @return the index of the same point at at 1 km resolutionџџџџMODISFileData five_km_indexџџџџџџџџconst int&џџџџis_x_axisџџџџџџџџconst boolџџџџconst int*free_geolocation_data^/home/pascal/depot/filedata/src/modisfiledata.hя я ^ @brief free eventually loaded geolocation dataџџџџMODISFileDatavoidget_1km_pix_pos^/home/pascal/depot/filedata/src/modisfiledata.hŠ‹=ф @brief compute the (lat,lon) of a 1km pixel specified with its indexes, when the geolocation datasets are given at 1km resolution @warning at this time, this method is only supported for MYD06, MOD06, MYD05 products @param itk_1km [IN] grid index of the 1km pixel along-track @param isc_1km [IN] grid index of the 1km pixel cross-track @param lat [OUT] the latitude of the 1km pixel center at [ itk_1km, isc_1km ] @param lon [OUT] the longitude of the 1km pixel center at [ itk_1km, isc_1km ]џџџџMODISFileDataoitk_1kmџџџџџџџџconst intџџџџisc_1kmџџџџџџџџconst intџџџџlatџџџџџџџџ float&џџџџlonџџџџџџџџ float&џџџџvoid*get_1km_to_250m_pixel^/home/pascal/depot/filedata/src/modisfiledata.hŽ8ю @brief get 250m indexes of nearest point when geolocation data are given at 1km. @warning this method is supposed to be used only with MYD02QKM products Uses a bilinear interpolation between the geolocation data at 1km, and the real desired lat, lon to obtain the 250m indexes @param lat [IN] the latitude of the point to search @param lon [IN] the longitude of the point to search @param i_pix_1km [IN] the indexes at 1km resolution (input) @param i_pix_250m [OUT] the indexes at 250m resolutionџџџџMODISFileData latџџџџџџџџconst float32џџџџlonџџџџџџџџconst float32џџџџi_pix_1km[]џџџџџџџџconst int*џџџџi_pix_250m[]џџџџџџџџint*џџџџconst bool get_250m_pix_pos^/home/pascal/depot/filedata/src/modisfiledata.h€Bф @brief compute the (lat,lon) of a 250m pixel specified with its indexes, when the geolocation datasets are given at 1km resolution @warning at this time, this method is only supported for MYD02QKM products @param itk_250m [IN] grid index of the 250m pixel along-track @param isc_250m [IN] grid index of the 250m pixel cross-track @param lat [OUT] the latitude of the 250m pixel center at [ itk_250m, isc_250m ] @param lon [OUT] the longitude of the 250m pixel center at [ itk_250m, isc_250m ]џџџџMODISFileDataџџџ€itk_250mџџџџџџџџconst intџџџџisc_250mџџџџџџџџconst intџџџџlatџџџџџџџџfloat32&џџџџlonџџџџџџџџfloat32&џџџџvoid"get_5_to_1km_area^/home/pascal/depot/filedata/src/modisfiledata.hЃ Ѓ_2 @brief get the top-left and bottom-right corner of a 5km cell using 1km indexes. The indexes start from 0. The resulting 1km indexes are included in the 5km area. Precondition : the allocations MUST be already done @param five_km_idx the indexes of a cell of 5km side, using 5km indexes @param one_km_min_idx the top-left corner indexes (1km) @param one_km_max_idx the bottom-right corner indexes (1km)џџџџMODISFileDatafive_km_idxџџџџџџџџconst int*џџџџone_km_min_idxџџџџџџџџint*џџџџone_km_max_idxџџџџџџџџint*џџџџvoid$get_5_to_1km_index^/home/pascal/depot/filedata/src/modisfiledata.h„„}@ @brief convert indexes at 5km to ones at 1km. Uses a linear interpolation between the data values read at 5km, and the real desired lat, lon. @param lat the latitude @param lon the longitude @param one_km_indexes the indexes at 1 km resolution (output) @param five_km_indexes the indexes at 5 km resolution (input). Not necessary, but if not precised, the search of those indexes is proceed, and it takes time.џџџџMODISFileDataџџџ€latџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџone_km_indexesџџџџџџџџint*џџџџfive_km_indexesџџџџџџџџconst int*џџџџconst bool(get_5km_to_1km_pixel^/home/pascal/depot/filedata/src/modisfiledata.h™š7Ь @brief get 1km indexes of nearest point when geolocation data are given at 5km. @warning this method is tested only with MYD06 and MYD05 products Uses a bilinear interpolation between the geolocation data at 5km, and the real desired lat, lon to obtain the 1km indexes @param lat [IN] the latitude of the point to search @param lon [IN] the longitude of the point to search @param i_pix_1km [IN] the indexes at 5km resolution @param i_pix_250m [OUT] the indexes at 1km resolutionџџџџMODISFileDataelatџџџџџџџџconst float32џџџџlonџџџџџџџџconst float32џџџџi_pix_5km[]џџџџџџџџconst int*џџџџi_pix_1km[]џџџџџџџџint*џџџџconst bool,get_bounds_1km_to_250m^/home/pascal/depot/filedata/src/modisfiledata.h™œ) @brief return the bound indexes, in the 250m grid, of all the 250m pixels that are included in a 1km pixel The 250m pixels that are situed at the border of a 1km pixel are also returned. The last 250m pixel in the cross-track direction is also considered as included in the last 1km cross-track pixel @warning at this time, this method is only supported for MYD02QKM products @param itk_1km [IN] 1km grid index of the 1km pixel along-track @param isc_1km [IN] 1km grid index of the 1km pixel cross-track @param itk_250m_min [OUT] min 250m grid index along-track of the 250m pixels included in the footprint of the requested 1km pixel @param itk_250m_max [OUT] max 250m grid index along-track of the 250m pixels included in the footprint of the requested 1km pixel @param isc_250m_min [OUT] min 250m grid index cross-track of the 250m pixels included in the footprint of the requested 1km pixel @param isc_250m_max [OUT] max 250m grid index cross-track of the 250m pixels included in the footprint of the requested 1km pixelџџџџMODISFileData itk_1kmџџџџџџџџconst intџџџџisc_1kmџџџџџџџџconst intџџџџitk_250m_minџџџџџџџџint&џџџџitk_250m_maxџџџџџџџџint&џџџџisc_250m_minџџџџџџџџint&џџџџisc_250m_maxџџџџџџџџint&џџџџvoid*get_bounds_5km_to_1km^/home/pascal/depot/filedata/src/modisfiledata.hЊ­)ђ @brief return the bound indexes, in the 1km grid, of all the 1km pixels that are included in a 5km pixel The 1km pixels that are situed at the border of a 5km pixel are also returned. The last 1km pixel in the cross-track direction is also considered as included in the last 5km cross-track pixel @warning at this time, this method is only supported for MYD02QKM products @param itk_5km [IN] 5km grid index of the 5km pixel along-track @param isc_5km [IN] 5km grid index of the 5km pixel cross-track @param itk_1km_min [OUT] min 1km grid index along-track of the 1km pixels included in the footprint of the requested 5km pixel @param itk_1km_max [OUT] max 1km grid index along-track of the 1km pixels included in the footprint of the requested 5km pixel @param isc_1km_min [OUT] min 1km grid index cross-track of the 1km pixels included in the footprint of the requested 5km pixel @param isc_1km_max [OUT] max 1km grid index cross-track of the 1km pixels included in the footprint of the requested 5km pixelџџџџMODISFileData ДЁitk_5kmџџџџџџџџconst intџџџџisc_5kmџџџџџџџџconst intџџџџitk_1km_minџџџџџџџџint&џџџџitk_1km_maxџџџџџџџџint&џџџџisc_1km_minџџџџџџџџint&џџџџisc_1km_maxџџџџџџџџint&џџџџvoid&get_geolocation_dim^/home/pascal/depot/filedata/src/modisfiledata.ho~ @brief return the dimensions of the geolocation dataset, in [ npix_track, npix_scan ] order @return the dimensions of the geolocation datasetџџџџMODISFileDatai vector< int >.get_gring_latitude_name^/home/pascal/depot/filedata/src/modisfiledata.hšœT @brief access to the name of the field that contains the latitude gring @param product the file product @return the gring latitude name. Default : "GRINGPOINTLATITUDE"џџџџMODISFileDataM•productџџџџџџџџconst string&џџџџ string0get_gring_longitude_name^/home/pascal/depot/filedata/src/modisfiledata.hЂЄZ @brief access to the name of the field that contains the longitude gring @param product the file product @return the gring longitude name. Default : "GRINGPOINTLONGITUDE"џџџџMODISFileData Ќk„productџџџџџџџџconst string&џџџџ stringget_index^/home/pascal/depot/filedata/src/modisfiledata.h,,€< @brief search the index of the nearest point in the data to (@a lat , @a lon ) If @a coloc_tolerance is given, it will compute only the distance of the points that have a distance to ( @a lat, @a lon ) inferior to @a coloc_tolerance @param near_point_idx the indexes of the nearest point found (or {-1,-1} if not found) @param lat the latitude @param lon the longitude @param time the time of the observation. If -1., skipped @param coloc_tolerance the -/+ maximal tolerance for 2 points considered as colocated @return true if foundџџџџMODISFileDataalatџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџtimeџџџџџџџџconst doubleџџџџnear_point_idxџџџџџџџџint*џџџџcoloc_toleranceџџџџџџџџ floatџџџџconst boolget_index^/home/pascal/depot/filedata/src/modisfiledata.h88n< @brief search the index of the nearest point in the data to (@a lat , @a lon ) If @a coloc_tolerance is given, it will compute only the distance of the points that have a distance to ( @a lat, @a lon ) inferior to @a coloc_tolerance @param near_point_idx the indexes of the nearest point found (or {-1,-1} if not found) @param lat the latitude @param lon the longitude @param time the time of the observation. If -1., skipped @param coloc_tolerance the -/+ maximal tolerance for 2 points considered as colocated @return true if foundџџџџMODISFileDataslatџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџnearest_pix_idxџџџџџџџџint&џџџџcoloc_toleranceџџџџџџџџ floatџџџџconst bool&get_lat_gran_corner^/home/pascal/depot/filedata/src/modisfiledata.h^eЬ @brief accessor to the latitudes of the granule corners @return the latitudes of the granule cornersџџџџMODISFileDatat "vector< float32 >2get_lat_lon_index_max_1km^/home/pascal/depot/filedata/src/modisfiledata.hвмj @brief access to the higher usable indexes of the "Latitude" and "Longitude" sds. In other words, it returns the size of those sds arrays, diminuted of 1. Ex : if the sds "Latitude" has a size of (287,3), it will return [286,2] @return an array containing the maximal usable indexes for the geolocation sdsџџџџMODISFileData &const vector< int >2get_lat_lon_index_max_5km^/home/pascal/depot/filedata/src/modisfiledata.hЩбj @brief access to the higher usable indexes of the "Latitude" and "Longitude" sds. In other words, it returns the size of those sds arrays, diminuted of 1. Ex : if the sds "Latitude" has a size of (287,3), it will return [286,2] @return an array containing the maximal usable indexes for the geolocation sdsџџџџMODISFileDatas &const vector< int >&get_lon_gran_corner^/home/pascal/depot/filedata/src/modisfiledata.hfnа @brief accessor to the longitudes of the granule corners @return the longitudes of the granule cornersџџџџMODISFileData "vector< float32 >4get_nearest_point_distance^/home/pascal/depot/filedata/src/modisfiledata.hNNhВ @brief compute the distance to (lat,lon) of the nearest point in the data If @a coloc_tolerance is given, it will compute only the distance of the points that have a distance to ( @a lat, @a lon ) inferior to @a coloc_tolerance @param lat the latitude @param lon the longitude @param coloc_tolerance the -/+ maximal tolerance for 2 points considered as colocated @return the distance to the nearest point, or -1 if no point in the colocalisation frame has been found.џџџџMODISFileData latџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџcoloc_toleranceџџџџџџџџ floatџџџџconst floatget_pixel_coord^/home/pascal/depot/filedata/src/modisfiledata.hVYЖ @brief retrieve the coordinates of a pixel using its index @param ipix [IN] index of the pixel @param lat [OUT] latitude of the pixel @param lon [OUT] longitude of the pixel @param time [OUT] timestamp of the pixelџџџџMODISFileDataoipixџџџџџџџџ(const vector< int >&џџџџlatџџџџџџџџ float&џџџџlonџџџџџџџџ float&џџџџtimeџџџџџџџџdouble&џџџџvoidget_product^/home/pascal/depot/filedata/src/modisfiledata.hнуš @brief accessor to the product name (MYD06_L2,...) @return the product nameџџџџMODISFileData stringget_radix^/home/pascal/depot/filedata/src/modisfiledata.h{{( @brief access to the radix of the MODIS file. $ What is called the radix is the filename ( without path ) with product and date informations only (and without dot also) Ex : "MYD021KM.A2003281.1340.004.2004158015852.hdf" as a radix of "MYD021KM.A2003281" @return the radixџџџџMODISFileData хW€const stringget_resolution^/home/pascal/depot/filedata/src/modisfiledata.hфъО @brief accessor to the resolution of th product (in Km) @return the product's resolution (Km)џџџџMODISFileData  float&get_sds_calibration^/home/pascal/depot/filedata/src/modisfiledata.h  ПЊ @brief read the calibration coefficients of the sds given in parametre In most cases, you @param sds_name the name of the sds where to read the calibration coefficients @param scale the output scale @param offset the output offset @param scale_name the name of the scale attribute as given in the sds @param offset_name the name of the offset attribute as given in the sds @param channel_nb the channel number. Useful only for multiple scaling values in one sdsџџџџMODISFileDataџџџ€sds_nameџџџџџџџџconst string&џџџџ scaleџџџџџџџџdouble&џџџџ offsetџџџџџџџџdouble&џџџџscale_nameџџџџџџџџconst string&џџџџoffset_nameџџџџџџџџconst string&џџџџchannel_nbџџџџџџџџconst intџџџџvoidget_vindex^/home/pascal/depot/filedata/src/modisfiledata.hAEŠ @brief build the list of indices of pixels that are in colocation tolerance, sorted by increasing distance to (lat,lon) If (lat,lon) is not found or out of the colocalisation_frame, returns an empty vector @param lat the latitude @param lon the longitude @param colocation_tolerance the acceptable bias (in km or degrees. Supposed to be in, a plane approximation) between [lat,lon] and the nearest data point. @return the list of indices of pixelsџџџџMODISFileData v_indexџџџџџџџџ2vector< vector < int > >&џџџџlatџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџ(colocation_toleranceџџџџџџџџconst floatџџџџvoid*get_x_pos_1km_to_250m^/home/pascal/depot/filedata/src/modisfiledata.hбжD ш @brief retrieve the position of a 250m pixel set by its cross-track index and the position of 2 along-track lines set by 2 sucessive 1km pixels @param lat_left_250m [IN] latitude of the 250m along track pixel that is the intersection between cross-track line at index isc_250m and the along-track line that joins the 2 sucessive bounding 1km pixels on the left of the point to interpolate @param lon_left_250m [IN] longitude of the 250m along track pixel that is the intersection between cross-track line at index isc_250m and the along-track line that joins the 2 sucessive bounding 1km pixels on the left of the point to interpolate @param isc_left_1km [IN] cross-track index at 1km of the left border @param lat_right_250m [IN] latitude of the 250m along track pixel that is the intersection between cross-track line at index isc_250m and the along-track line that joins the 2 sucessive bounding 1km pixels on the right of the point to interpolate @param lon_right_250m [IN] longitude of the 250m along track pixel that is the intersection between cross-track line at index isc_250m and the along-track line that joins the 2 sucessive bounding 1km pixels on the right of the point to interpolate @param isc_right_1km [IN] cross-track index at 1km of the right border @param lat [OUT] latitude of the pixel at [itk_250m, isc_1km], interpolated between the 2 successive 1km pixels p1 and p2 @param lon [OUT] longitude of the pixel at [itk_250m, isc_1km], interpolated between the 2 successive 1km pixels p1 and p2џџџџMODISFileData Дг lat_left_250mџџџџџџџџconst doubleџџџџlon_left_250mџџџџџџџџconst doubleџџџџisc_left_1kmџџџџџџџџconst intџџџџlat_right_250mџџџџџџџџconst doubleџџџџlon_right_250mџџџџџџџџconst doubleџџџџisc_right_1kmџџџџџџџџconst intџџџџisc_250mџџџџџџџџconst intџџџџlatџџџџџџџџdouble&џџџџlonџџџџџџџџdouble&џџџџvoid(get_x_pos_5km_to_1km^/home/pascal/depot/filedata/src/modisfiledata.hђїD Ъ @brief retrieve the position of a 1km pixel set by its cross-track index and the position of 2 along-track lines set by 2 sucessive 5km pixels @param lat_left_1km [IN] latitude of the 1km along track pixel that is the intersection between cross-track line at index isc_1km and the along-track line that joins the 2 sucessive bounding 5km pixels on the left of the point to interpolate @param lon_left_1km [IN] longitude of the 1km along track pixel that is the intersection between cross-track line at index isc_1km and the along-track line that joins the 2 sucessive bounding 5km pixels on the left of the point to interpolate @param isc_left_5km [IN] cross-track index at 5km of the left border @param lat_right_1km [IN] latitude of the 1km along track pixel that is the intersection between cross-track line at index isc_1km and the along-track line that joins the 2 sucessive bounding 5km pixels on the right of the point to interpolate @param lon_right_1km [IN] longitude of the 1km along track pixel that is the intersection between cross-track line at index isc_1km and the along-track line that joins the 2 sucessive bounding 5km pixels on the right of the point to interpolate @param isc_right_5km [IN] cross-track index at 5km of the right border @param lat [OUT] latitude of the pixel at [itk_1km, isc_5km], interpolated between the 2 successive 5km pixels p1 and p2 @param lon [OUT] longitude of the pixel at [itk_1km, isc_5km], interpolated between the 2 successive 5km pixels p1 and p2џџџџMODISFileData АН lat_left_1kmџџџџџџџџconst doubleџџџџlon_left_1kmџџџџџџџџconst doubleџџџџisc_left_5kmџџџџџџџџconst intџџџџlat_right_1kmџџџџџџџџconst doubleџџџџlon_right_1kmџџџџџџџџconst doubleџџџџisc_right_5kmџџџџџџџџconst intџџџџisc_1kmџџџџџџџџconst intџџџџlatџџџџџџџџdouble&џџџџlonџџџџџџџџdouble&џџџџvoidget_x_size_10km^/home/pascal/depot/filedata/src/modisfiledata.hХеЬ @brief accessor to the size of the swath for a 10km resolution @return the size of the swath at 10kmџџџџMODISFileDataџџџ€const intget_x_size_1km^/home/pascal/depot/filedata/src/modisfiledata.h*Ш @brief accessor to the size of the swath for a 1km resolution @return the size of the swath at 1kmџџџџMODISFileDataџџџ€const intget_x_size_250m^/home/pascal/depot/filedata/src/modisfiledata.hDQ @brief accessor to the size of the cross-track dimension of the 250m resolution grid @warning only supported for MYD02QKM products at this time @return the size of the cross-track dimension at 250mџџџџMODISFileDataconst intget_x_size_5km^/home/pascal/depot/filedata/src/modisfiledata.hшћШ @brief accessor to the size of the swath for a 5km resolution @return the size of the swath at 5kmџџџџMODISFileDataconst int*get_y_pos_1km_to_250m^/home/pascal/depot/filedata/src/modisfiledata.hСФDВ @brief return the position of 250m pixel defined by its along-track index between 2 successive 1km pixels on a same cross-track line @warning If the 2 pixels are crossing the changing date meridian, the negative longitude will be returned with an increment of 360 to manage correctly the interpolation @param isc_1km [IN] index of the cross-track line in the 1km grid @param itk_p1_1km [IN] index of the first along-track pixel in the 1km grid @param itk_p2_1km [IN] index of the second along-track pixel in the 1km grid @param itk_250m [IN] index of the along-track 250m along-track pixel to interpolate @param lat [OUT] latitude of the pixel at [itk_250m, isc_1km], interpolated between the 2 successive 1km pixels p1 and p2 @param lon [OUT] longitude of the pixel at [itk_250m, isc_1km], interpolated between the 2 successive 1km pixels p1 and p2џџџџMODISFileData хW€isc_1kmџџџџџџџџconst intџџџџitk_p1_1kmџџџџџџџџconst intџџџџitk_p2_1kmџџџџџџџџconst intџџџџitk_250mџџџџџџџџconst intџџџџlatџџџџџџџџdouble&џџџџlonџџџџџџџџdouble&џџџџvoid(get_y_pos_5km_to_1km^/home/pascal/depot/filedata/src/modisfiledata.hтхDЈ @brief return the position of 1km pixel defined by its along-track index between 2 successive 5km pixels on a same cross-track line @warning If the 2 pixels are crossing the changing date meridian, the negative longitude will be returned with an increment of 360 to manage correctly the interpolation @param isc_5km [IN] index of the cross-track line in the 5km grid @param itk_p1_5km [IN] index of the first along-track pixel in the 5km grid @param itk_p2_5km [IN] index of the second along-track pixel in the 5km grid @param itk_1km [IN] index of the along-track 1km along-track pixel to interpolate @param lat [OUT] latitude of the pixel at [itk_1km, isc_5km], interpolated between the 2 successive 5km pixels p1 and p2 @param lon [OUT] longitude of the pixel at [itk_1km, isc_5km], interpolated between the 2 successive 5km pixels p1 and p2џџџџMODISFileDataisc_5kmџџџџџџџџconst intџџџџitk_p1_5kmџџџџџџџџconst intџџџџitk_p2_5kmџџџџџџџџconst intџџџџitk_1kmџџџџџџџџconst intџџџџlatџџџџџџџџdouble&џџџџlonџџџџџџџџdouble&џџџџvoidget_y_size_10km^/home/pascal/depot/filedata/src/modisfiledata.hжчЬ @brief accessor to the size of the track for a 10km resolution @return the size of the track at 10kmџџџџMODISFileDataџџџ€const intget_y_size_1km^/home/pascal/depot/filedata/src/modisfiledata.h+CШ @brief accessor to the size of the track for a 1km resolution @return the size of the track at 1kmџџџџMODISFileDataconst intget_y_size_250m^/home/pascal/depot/filedata/src/modisfiledata.hXd @brief accessor to the size of the along-track dimension of the 250m resolution grid @warning only supported for MYD02QKM products at this time @return the size of the along-track dimension at 250mџџџџMODISFileDataconst intget_y_size_5km^/home/pascal/depot/filedata/src/modisfiledata.hќШ @brief accessor to the size of the track for a 5km resolution @return the size of the track at 5kmџџџџMODISFileDataconst intinit^/home/pascal/depot/filedata/src/modisfiledata.ht tP @brief Initialize some basic attributesџџџџMODISFileDataevoid2init_colocation_tolerance^/home/pascal/depot/filedata/src/modisfiledata.h­ ­%, @brief defines the colocatiuon tolerance, depending of the product type, because the geolocation datasets are not always given at the same resolutionџџџџMODISFileDataџџџ€void4is_geolocation_data_loaded^/home/pascal/depot/filedata/src/modisfiledata.hџџ1z @brief Tell if the geolocation data have been already loadedџџџџMODISFileData хW const boolis_inside_gring^/home/pascal/depot/filedata/src/modisfiledata.h””Lш @brief test if the given point is inside the GRing The grings which are crossing the change date longitude are treated @param lat the latitude of the point @param lon the longitude of the point @return true if the point is inside the gringџџџџMODISFileDataџџџ latџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџconst bool*load_geolocation_data^/home/pascal/depot/filedata/src/modisfiledata.hы ы  @brief read the geolocation data and put it in memory. This method is used to make the search of the indexes of a (lat,lon,time) point faster.џџџџMODISFileDataџџџ€voidload_v_pixel^/home/pascal/depot/filedata/src/modisfiledata.hЈЈB @brief load the list data pixelsџџџџMODISFileDataџџџ„voidopen_data_file^/home/pascal/depot/filedata/src/modisfiledata.hљћ. @brief opens the file.џџџџMODISFileData„voidparse_filename^/home/pascal/depot/filedata/src/modisfiledata.h} }5ђ @brief initializes some characteristics based on the product name @param file_basename the basename of the product fileџџџџMODISFileDataџџџ€file_basenameџџџџџџџџconst string&џџџџvoidprint_gring^/home/pascal/depot/filedata/src/modisfiledata.hs sF @brief prints out the gring valuesџџџџMODISFileDataџџџ void(read_calibrated_data^/home/pascal/depot/filedata/src/modisfiledata.h! ! ” @brief read the data of a MODIS file sds, and apply the calibration to it The applied calibration uses the formula : scale*(x-add_offset) The method manages the allocation of the data' array if data is NULL. Here is assumed that once the calibration is applied, the float type fits the data. Perhaps, it will be nexessary to review it The template arguments are : - Value_T : the type of the calibrated values - Count_T : the type of the count (ie uncalibrated) data @warning this method has been used only with Value_T of float. @param data the buffer to fill with the read values @param sds_name the name of the sds (Scientific Data Set) we want to access. @param start begining of the selection. If NULL, start at (0,0) if rank is 2 ; (0,0,0) if rank is 3... @param stride step between 2 interesting values. If NULL, this step is set to 1 in each dimension (ie all values will be read) @param edges number of values to be read in each dimension. if NULL, it will be all data along each dimension. @param rank the dimension of start, stride and edges @param fill_value the fill value to use in the calibrated data @param scale_name the name of the scale attribute as define in the sds @param offset_name the name of the offset attribute as define in the sds @param channel_nb the index of the channel for scaling with multiple values @return a pointer to the read data array. It is useful when you let this method manage the allocation to update the allocated pointer to the data. If you've done it yourself or you are using a static buffer, it isn't necessary to catch this return pointerџџџџValue_TџџџџCount_TџџџџMODISFileData€ dataџџџџџџџџValue_T*џџџџsds_nameџџџџџџџџconst char*џџџџstart[]џџџџџџџџint*џџџџstride[]џџџџџџџџint*џџџџedges[]џџџџџџџџint*џџџџrankџџџџџџџџintџџџџfill_valueџџџџџџџџValue_Tџџџџscale_nameџџџџџџџџconst string&џџџџoffset_nameџџџџџџџџconst string&џџџџchannel_nbџџџџџџџџconst intџџџџValue_T*set_gring^/home/pascal/depot/filedata/src/modisfiledata.hŒ Œv @brief set the GRing coordinates Read in the coremetadataџџџџMODISFileDataџџџ€void*set_lat_lon_index_max^/home/pascal/depot/filedata/src/modisfiledata.h‡ ‡ ` @brief sets the size of the geolocation datasetџџџџMODISFileDataџџџ€void&set_lat_lon_min_max^/home/pascal/depot/filedata/src/modisfiledata.hЕ Е№ @brief sets the granule bounding coordinates Minimal and maximal latitudes and longitudes are read in the coremetadataџџџџMODISFileDatalvoid"set_time_coverage^/home/pascal/depot/filedata/src/modisfiledata.hx xZ @brief sets the time coverage of the productџџџџMODISFileDataџџџ€void~ MODISFileData^/home/pascal/depot/filedata/src/modisfiledata.hooџџџџџџџџMODISFileDataџџџџclose_data_file^/home/pascal/depot/filedata/src/modisfiledata.hѓѕ0 @brief closes the file.џџџџMODISFileDatavoid&get_geolocation_dim^/home/pascal/depot/filedata/src/modisfiledata.ho~ @brief return the dimensions of the geolocation dataset, in [ npix_track, npix_scan ] order @return the dimensions of the geolocation datasetџџџџMODISFileDatai vector< int >.get_gring_latitude_name^/home/pascal/depot/filedata/src/modisfiledata.hšœT @brief access to the name of the field that contains the latitude gring @param product the file product @return the gring latitude name. Default : "GRINGPOINTLATITUDE"џџџџMODISFileDataM•productџџџџџџџџconst string&џџџџ string0get_gring_longitude_name^/home/pascal/depot/filedata/src/modisfiledata.hЂЄZ @brief access to the name of the field that contains the longitude gring @param product the file product @return the gring longitude name. Default : "GRINGPOINTLONGITUDE"џџџџMODISFileData Ќk„productџџџџџџџџconst string&џџџџ string&get_lat_gran_corner^/home/pascal/depot/filedata/src/modisfiledata.h^eЬ @brief accessor to the latitudes of the granule corners @return the latitudes of the granule cornersџџџџMODISFileDatat "vector< float32 >2get_lat_lon_index_max_1km^/home/pascal/depot/filedata/src/modisfiledata.hвмj @brief access to the higher usable indexes of the "Latitude" and "Longitude" sds. In other words, it returns the size of those sds arrays, diminuted of 1. Ex : if the sds "Latitude" has a size of (287,3), it will return [286,2] @return an array containing the maximal usable indexes for the geolocation sdsџџџџMODISFileData &const vector< int >2get_lat_lon_index_max_5km^/home/pascal/depot/filedata/src/modisfiledata.hЩбj @brief access to the higher usable indexes of the "Latitude" and "Longitude" sds. In other words, it returns the size of those sds arrays, diminuted of 1. Ex : if the sds "Latitude" has a size of (287,3), it will return [286,2] @return an array containing the maximal usable indexes for the geolocation sdsџџџџMODISFileDatas &const vector< int >&get_lon_gran_corner^/home/pascal/depot/filedata/src/modisfiledata.hfnа @brief accessor to the longitudes of the granule corners @return the longitudes of the granule cornersџџџџMODISFileData "vector< float32 >get_pixel_coord^/home/pascal/depot/filedata/src/modisfiledata.hVYЖ @brief retrieve the coordinates of a pixel using its index @param ipix [IN] index of the pixel @param lat [OUT] latitude of the pixel @param lon [OUT] longitude of the pixel @param time [OUT] timestamp of the pixelџџџџMODISFileDataoipixџџџџџџџџ(const vector< int >&џџџџlatџџџџџџџџ float&џџџџlonџџџџџџџџ float&џџџџtimeџџџџџџџџdouble&џџџџvoidget_product^/home/pascal/depot/filedata/src/modisfiledata.hнуš @brief accessor to the product name (MYD06_L2,...) @return the product nameџџџџMODISFileData stringget_resolution^/home/pascal/depot/filedata/src/modisfiledata.hфъО @brief accessor to the resolution of th product (in Km) @return the product's resolution (Km)џџџџMODISFileData  floatget_vindex^/home/pascal/depot/filedata/src/modisfiledata.hAEŠ @brief build the list of indices of pixels that are in colocation tolerance, sorted by increasing distance to (lat,lon) If (lat,lon) is not found or out of the colocalisation_frame, returns an empty vector @param lat the latitude @param lon the longitude @param colocation_tolerance the acceptable bias (in km or degrees. Supposed to be in, a plane approximation) between [lat,lon] and the nearest data point. @return the list of indices of pixelsџџџџMODISFileData v_indexџџџџџџџџ2vector< vector < int > >&џџџџlatџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџ(colocation_toleranceџџџџџџџџconst floatџџџџvoidget_x_size_10km^/home/pascal/depot/filedata/src/modisfiledata.hХеЬ @brief accessor to the size of the swath for a 10km resolution @return the size of the swath at 10kmџџџџMODISFileDataџџџ€const intget_x_size_1km^/home/pascal/depot/filedata/src/modisfiledata.h*Ш @brief accessor to the size of the swath for a 1km resolution @return the size of the swath at 1kmџџџџMODISFileDataџџџ€const intget_x_size_250m^/home/pascal/depot/filedata/src/modisfiledata.hDQ @brief accessor to the size of the cross-track dimension of the 250m resolution grid @warning only supported for MYD02QKM products at this time @return the size of the cross-track dimension at 250mџџџџMODISFileDataconst intget_x_size_5km^/home/pascal/depot/filedata/src/modisfiledata.hшћШ @brief accessor to the size of the swath for a 5km resolution @return the size of the swath at 5kmџџџџMODISFileDataconst intget_y_size_10km^/home/pascal/depot/filedata/src/modisfiledata.hжчЬ @brief accessor to the size of the track for a 10km resolution @return the size of the track at 10kmџџџџMODISFileDataџџџ€const intget_y_size_1km^/home/pascal/depot/filedata/src/modisfiledata.h+CШ @brief accessor to the size of the track for a 1km resolution @return the size of the track at 1kmџџџџMODISFileDataconst intget_y_size_250m^/home/pascal/depot/filedata/src/modisfiledata.hXd @brief accessor to the size of the along-track dimension of the 250m resolution grid @warning only supported for MYD02QKM products at this time @return the size of the along-track dimension at 250mџџџџMODISFileDataconst intget_y_size_5km^/home/pascal/depot/filedata/src/modisfiledata.hќШ @brief accessor to the size of the track for a 5km resolution @return the size of the track at 5kmџџџџMODISFileDataconst intopen_data_file^/home/pascal/depot/filedata/src/modisfiledata.hљћ. @brief opens the file.џџџџMODISFileData„void'AQUA^/home/pascal/depot/filedata/src/modisfiledata.hDD џџџџPlatformTypeMOD06_L2^/home/pascal/depot/filedata/src/modisfiledata.hVVџџџџProduct_IDMYD021KM^/home/pascal/depot/filedata/src/modisfiledata.hPPџџџџProduct_IDMYD02HKM^/home/pascal/depot/filedata/src/modisfiledata.hOOџџџџProduct_IDMYD02QKM^/home/pascal/depot/filedata/src/modisfiledata.hNNџџџџProduct_IDMYD02SSH^/home/pascal/depot/filedata/src/modisfiledata.hRRџџџџProduct_ID MYD03^/home/pascal/depot/filedata/src/modisfiledata.hQQ џџџџProduct_IDMYD04_L2^/home/pascal/depot/filedata/src/modisfiledata.hSSџџџџProduct_IDMYD05_L2^/home/pascal/depot/filedata/src/modisfiledata.hTTџџџџProduct_IDMYD06_L2^/home/pascal/depot/filedata/src/modisfiledata.hUUџџџџProduct_IDNB_MAX_X_10KM^/home/pascal/depot/filedata/src/modisfiledata.hББ"~Is the maximum number of pixels the along X at 10Km resolution const intNB_MAX_X_1KM^/home/pascal/depot/filedata/src/modisfiledata.hЙЙ!|Is the maximum number of pixels the along X at 1Km resolution const intNB_MAX_X_250M^/home/pascal/depot/filedata/src/modisfiledata.hНН"~Is the maximum number of pixels the along X at 250m resolution const intNB_MAX_X_5KM^/home/pascal/depot/filedata/src/modisfiledata.hЕЕ!|Is the maximum number of pixels the along X at 5Km resolution const intNB_MAX_Y_10KM^/home/pascal/depot/filedata/src/modisfiledata.hГГ"~Is the maximum number of pixels the along Y at 10Km resolution const intNB_MAX_Y_1KM^/home/pascal/depot/filedata/src/modisfiledata.hЛЛ!|Is the maximum number of pixels the along Y at 1Km resolution const intNB_MAX_Y_250M^/home/pascal/depot/filedata/src/modisfiledata.hПП"~Is the maximum number of pixels the along Y at 250m resolution const intNB_MAX_Y_5KM^/home/pascal/depot/filedata/src/modisfiledata.hЗЗ!|Is the maximum number of pixels the along Y at 5Km resolution const int TERRA^/home/pascal/depot/filedata/src/modisfiledata.hCC џџџџPlatformType.UNDEFINED_PLATFORM_TYPE^/home/pascal/depot/filedata/src/modisfiledata.hBB#џџџџPlatformType(UNDEFINED_PRODUCT_ID^/home/pascal/depot/filedata/src/modisfiledata.hMM џџџџProduct_ID(colocation_tolerance^/home/pascal/depot/filedata/src/modisfiledata.h= =Ц default maximal distance for which to pixels are considered as coincident. Depends of the product  float"fast_srch_frame_x^/home/pascal/depot/filedata/src/modisfiledata.h99&6 x size to do a fast search when searching for a coincidence and when a previous coincidence in the granule has already been computed. Optimization purposeconst int"fast_srch_frame_y^/home/pascal/depot/filedata/src/modisfiledata.h;;&6 y size to do a fast search when searching for a coincidence and when a previous coincidence in the granule has already been computed. Optimization purposeconst int gring^/home/pascal/depot/filedata/src/modisfiledata.hj j  list of the polygons that compose the GRing (each polygon is a list of points)  GRinglat_gran_corner^/home/pascal/depot/filedata/src/modisfiledata.hnn&, latitudes of the granule corners as read in the geolocation dataset, in the order [0,0], [0,I_SCAN_MAX], [J_TRACK_MAX, 0], [J_TRACK_MAX, I_SCAN_MAX] "vector< float32 >"lat_lon_index_max^/home/pascal/depot/filedata/src/modisfiledata.hhh"~ Maximal valid indexes of the geolocation datasets along [Y,X] vector< int >lat_max^/home/pascal/depot/filedata/src/modisfiledata.hb bT maximal bounding latitude of the granule  floatlat_min^/home/pascal/depot/filedata/src/modisfiledata.h` `T minimal bounding latitude of the granule  float"latitude_sds_name^/home/pascal/depot/filedata/src/modisfiledata.h55)V name of the geolocation latitudes dataset const stringlon_gran_corner^/home/pascal/depot/filedata/src/modisfiledata.hpp&. longitudes of the granule corners as read in the geolocation dataset, in the order [0,0], [0,I_SCAN_MAX], [J_TRACK_MAX, 0], [J_TRACK_MAX, I_SCAN_MAX] "vector< float32 >lon_max^/home/pascal/depot/filedata/src/modisfiledata.hf fV maximal bounding longitude of the granule  floatlon_min^/home/pascal/depot/filedata/src/modisfiledata.hd dV minimal bounding longitude of the granule  float$longitude_sds_name^/home/pascal/depot/filedata/src/modisfiledata.h77*X name of the geolocation longitudes dataset const stringplatform^/home/pascal/depot/filedata/src/modisfiledata.hGG6 Platform for this product PlatformTypeproduct^/home/pascal/depot/filedata/src/modisfiledata.h[ [* name of the product  stringproduct_id^/home/pascal/depot/filedata/src/modisfiledata.hYYf integer that represents the type of MODIS product Product_IDresolution^/home/pascal/depot/filedata/src/modisfiledata.h] ]T resolution of the geolocation data in km  floatv_pixel^/home/pascal/depot/filedata/src/modisfiledata.hllž list of pixels data, sorted by increasing latitude, then increasing longitude &vector< PixelType > GRing^/home/pascal/depot/filedata/src/modisfiledata.h0.03џџџџ,vector< GRingPolygon > GRingPoint^/home/pascal/depot/filedata/src/modisfiledata.h...8џџџџ vector< double > GRingPolygon^/home/pascal/depot/filedata/src/modisfiledata.h/./:џџџџ(vector< GRingPoint > PlatformType^/home/pascal/depot/filedata/src/modisfiledata.hAE€ @enum PlatformType defines the possible types of MODIS platformconst int Product_ID^/home/pascal/depot/filedata/src/modisfiledata.hLW’ @enum Product_ID defines an ID for the different supported MODIS productconst int get_1km_pix_pos^/home/pascal/depot/filedata/src/modisfiledata.h…џџџџџџџџMODISFileDataitk_1kmџџџџџџџџconst intџџџџisc_1kmџџџџџџџџconst intџџџџlatџџџџџџџџ float&џџџџlonџџџџџџџџ float&џџџџvoid get_250m_pix_pos^/home/pascal/depot/filedata/src/modisfiledata.h’џџџџџџџџџMODISFileDataitk_250mџџџџџџџџconst intџџџџisc_250mџџџџџџџџconst intџџџџlatџџџџџџџџfloat32&џџџџlonџџџџџџџџfloat32&џџџџvoid,get_bounds_1km_to_250m^/home/pascal/depot/filedata/src/modisfiledata.hџџџџџџџџMODISFileDataitk_1kmџџџџџџџџconst intџџџџisc_1kmџџџџџџџџconst intџџџџitk_250m_minџџџџџџџџint&џџџџitk_250m_maxџџџџџџџџint&џџџџisc_250m_minџџџџџџџџint&џџџџisc_250m_maxџџџџџџџџint&џџџџvoid*get_bounds_5km_to_1km^/home/pascal/depot/filedata/src/modisfiledata.hоћџџџџџџџџMODISFileDataœž€itk_5kmџџџџџџџџconst intџџџџisc_5kmџџџџџџџџconst intџџџџitk_1km_minџџџџџџџџint&џџџџitk_1km_maxџџџџџџџџint&џџџџisc_1km_minџџџџџџџџint&џџџџisc_1km_maxџџџџџџџџint&џџџџvoid*get_x_pos_1km_to_250m^/home/pascal/depot/filedata/src/modisfiledata.hqџџџџџџџџMODISFileData Аƒ lat_left_250mџџџџџџџџconst doubleџџџџlon_left_250mџџџџџџџџconst doubleџџџџisc_left_1kmџџџџџџџџconst intџџџџlat_right_250mџџџџџџџџconst doubleџџџџlon_right_250mџџџџџџџџconst doubleџџџџisc_right_1kmџџџџџџџџconst intџџџџisc_250mџџџџџџџџconst intџџџџlatџџџџџџџџdouble&џџџџlonџџџџџџџџdouble&џџџџvoid(get_x_pos_5km_to_1km^/home/pascal/depot/filedata/src/modisfiledata.hНмџџџџџџџџMODISFileDataор€ lat_left_1kmџџџџџџџџconst doubleџџџџlon_left_1kmџџџџџџџџconst doubleџџџџisc_left_5kmџџџџџџџџconst intџџџџlat_right_1kmџџџџџџџџconst doubleџџџџlon_right_1kmџџџџџџџџconst doubleџџџџisc_right_5kmџџџџџџџџconst intџџџџisc_1kmџџџџџџџџconst intџџџџlatџџџџџџџџdouble&џџџџlonџџџџџџџџdouble&џџџџvoid*get_y_pos_1km_to_250m^/home/pascal/depot/filedata/src/modisfiledata.h;oџџџџџџџџMODISFileDataisc_1kmџџџџџџџџconst intџџџџitk_p1_1kmџџџџџџџџconst intџџџџitk_p2_1kmџџџџџџџџconst intџџџџitk_250mџџџџџџџџconst intџџџџlatџџџџџџџџdouble&џџџџlonџџџџџџџџdouble&џџџџvoid(get_y_pos_5km_to_1km^/home/pascal/depot/filedata/src/modisfiledata.h‡ЛџџџџџџџџMODISFileDataпс€isc_5kmџџџџџџџџconst intџџџџitk_p1_5kmџџџџџџџџconst intџџџџitk_p2_5kmџџџџџџџџconst intџџџџitk_1kmџџџџџџџџconst intџџџџlatџџџџџџџџdouble&џџџџlonџџџџџџџџdouble&џџџџvoid(read_calibrated_data^/home/pascal/depot/filedata/src/modisfiledata.hќ9џџџџџџџџValue_TџџџџCount_TџџџџMODISFileData dataџџџџџџџџValue_T*џџџџsds_nameџџџџџџџџconst char*џџџџstart[]џџџџџџџџint*џџџџstride[]џџџџџџџџint*џџџџedges[]џџџџџџџџint*џџџџrankџџџџџџџџintџџџџfill_valueџџџџџџџџValue_Tџџџџscale_nameџџџџџџџџconst string&џџџџoffset_nameџџџџџџџџconst string&џџџџchannel_nbџџџџџџџџconst intџџџџValue_T* ModisCloudMask_1^/home/pascal/depot/filedata/src/modisfiledata.h&&џџџџ ModisCloudMask_1Ч netcdffiledata.hd/home/pascal/depot/filedata/src/netcdffiledata.cpp%yУїV џџџџd/home/pascal/depot/filedata/src/netcdffiledata.cppŒЏ‹Є netcdffiledata.hJWEd/home/pascal/depot/filedata/src/netcdffiledata.cppџџџџџџџџџџџџNETCDFFileDatad/home/pascal/depot/filedata/src/netcdffiledata.cppџџџџџџџџNETCDFFileData {filenameџџџџџџџџconst string&џџџџmodeџџџџџџџџconst string&џџџџџџџџ.check_read_write_limitsd/home/pascal/depot/filedata/src/netcdffiledata.cpp„ŸџџџџџџџџNETCDFFileDatasds_nameџџџџџџџџconst char*џџџџ startџџџџџџџџint*џџџџ strideџџџџџџџџint*џџџџ edgesџџџџџџџџint*џџџџrankџџџџџџџџconst intџџџџconst booldataset_existsd/home/pascal/depot/filedata/src/netcdffiledata.cpp}‚џџџџџџџџNETCDFFileDatasds_nameџџџџџџџџconst char*џџџџbool6free_read_write_allocationsd/home/pascal/depot/filedata/src/netcdffiledata.cppЪбџџџџџџџџNETCDFFileDataЛs,are_limits_initializedџџџџџџџџconst bool*џџџџ startџџџџџџџџint*џџџџ strideџџџџџџџџint*џџџџ edgesџџџџџџџџint*џџџџvoidget_datasetd/home/pascal/depot/filedata/src/netcdffiledata.cppї џџџџџџџџNETCDFFileDatasds_nameџџџџџџџџ stringџџџџHdf_sds*get_dataset_data_typed/home/pascal/depot/filedata/src/netcdffiledata.cppџџџџџџџџNETCDFFileDatasds_nameџџџџџџџџ stringџџџџint*get_dataset_dimensiond/home/pascal/depot/filedata/src/netcdffiledata.cpp_{џџџџџџџџNETCDFFileDatasds_nameџџџџџџџџconst string&џџџџvector< int >,get_dataset_fill_valued/home/pascal/depot/filedata/src/netcdffiledata.cppгмџџџџџџџџNETCDFFileDatappcsds_nameџџџџџџџџconst string&џџџџfill_valueџџџџџџџџ void*џџџџvoid get_dataset_named/home/pascal/depot/filedata/src/netcdffiledata.cppцѕџџџџџџџџNETCDFFileDataeiџџџџџџџџintџџџџ stringget_n_datasetd/home/pascal/depot/filedata/src/netcdffiledata.cppофџџџџџџџџNETCDFFileDatappcint.get_values_attr_datasetd/home/pascal/depot/filedata/src/netcdffiledata.cpp!)џџџџџџџџNETCDFFileDatasds_nameџџџџџџџџ stringџџџџattr_nameџџџџџџџџ stringџџџџ string has_attr_datasetd/home/pascal/depot/filedata/src/netcdffiledata.cpp+/џџџџџџџџNETCDFFileDatasds_nameџџџџџџџџ stringџџџџattr_nameџџџџџџџџ stringџџџџbool@init_read_write_null_input_paramd/home/pascal/depot/filedata/src/netcdffiledata.cpp ШџџџџџџџџNETCDFFileDatasds_nameџџџџџџџџconst char*џџџџ startџџџџџџџџ int*&џџџџ strideџџџџџџџџ int*&џџџџ edgesџџџџџџџџ int*&џџџџrankџџџџџџџџint&џџџџ$initialized_valuesџџџџџџџџ bool*џџџџvoidopen_data_filed/home/pascal/depot/filedata/src/netcdffiledata.cpp!џџџџџџџџNETCDFFileData 0*€voidread_datad/home/pascal/depot/filedata/src/netcdffiledata.cpp)\џџџџџџџџNETCDFFileDataldataџџџџџџџџ void*џџџџsds_nameџџџџџџџџconst char*џџџџ startџџџџџџџџint*џџџџ strideџџџџџџџџint*џџџџ edgesџџџџџџџџint*џџџџrankџџџџџџџџintџџџџ void* ~ NETCDFFileDatad/home/pascal/depot/filedata/src/netcdffiledata.cpp#&џџџџџџџџNETCDFFileDataџџџџ^string.h vectorHdf_file.hpp&filedataexception.hstatistic.h filedatareader.h`/home/pascal/depot/filedata/src/netcdffiledata.h%yУюЧ8џџџџstatistic.hjŽ vector …/Гstring.h­Ц‰=&filedataexception.h<Щп`/home/pascal/depot/filedata/src/netcdffiledata.hЉ­WIHdf_file.hppэЋо filedatareader.hт§ƒ`/home/pascal/depot/filedata/src/netcdffiledata.hџџџџџџџџџџџџNETCDFFileData`/home/pascal/depot/filedata/src/netcdffiledata.hN(@author James MANLEYџџџџFileDataReaderNETCDFFileData`/home/pascal/depot/filedata/src/netcdffiledata.h  >џџџџџџџџNETCDFFileDataџџџ€filenameџџџџџџџџconst string&џџџџmodeџџџџџџџџconst string&џџџџџџџџ.check_read_write_limits`/home/pascal/depot/filedata/src/netcdffiledata.hJJqџџџџџџџџNETCDFFileDataџџџ€sds_nameџџџџџџџџconst char*џџџџ startџџџџџџџџint*џџџџ strideџџџџџџџџint*џџџџ edgesџџџџџџџџint*џџџџrankџџџџџџџџconst intџџџџconst boolclose_data_file`/home/pascal/depot/filedata/src/netcdffiledata.h@@4. @brief closes the fileџџџџNETCDFFileDataџџџ€voiddataset_exists`/home/pascal/depot/filedata/src/netcdffiledata.h//5џџџџџџџџNETCDFFileDataџџџ„sds_nameџџџџџџџџconst char*џџџџbool6free_read_write_allocations`/home/pascal/depot/filedata/src/netcdffiledata.hL LoџџџџџџџџNETCDFFileDatah,are_limits_initializedџџџџџџџџconst bool*џџџџ startџџџџџџџџint*џџџџ strideџџџџџџџџint*џџџџ edgesџџџџџџџџint*џџџџvoidget_dataset`/home/pascal/depot/filedata/src/netcdffiledata.hM M(џџџџџџџџNETCDFFileDataesds_nameџџџџџџџџ stringџџџџHdf_sds*get_dataset_data_type`/home/pascal/depot/filedata/src/netcdffiledata.h77.џџџџџџџџNETCDFFileDatasds_nameџџџџџџџџ stringџџџџint*get_dataset_dimension`/home/pascal/depot/filedata/src/netcdffiledata.h--EџџџџџџџџNETCDFFileDataџџџ„sds_nameџџџџџџџџconst string&џџџџvector< int >,get_dataset_fill_value`/home/pascal/depot/filedata/src/netcdffiledata.h1 1IџџџџџџџџNETCDFFileDataџџџ€sds_nameџџџџџџџџconst string&џџџџfill_valueџџџџџџџџ void*џџџџvoid get_dataset_name`/home/pascal/depot/filedata/src/netcdffiledata.h5 5"џџџџџџџџNETCDFFileDataџџџ€iџџџџџџџџintџџџџ stringget_n_dataset`/home/pascal/depot/filedata/src/netcdffiledata.h33џџџџџџџџNETCDFFileDataџџџ€int.get_values_attr_dataset`/home/pascal/depot/filedata/src/netcdffiledata.h9 9DџџџџџџџџNETCDFFileData ˜š€sds_nameџџџџџџџџ stringџџџџattr_nameџџџџџџџџ stringџџџџ string has_attr_dataset`/home/pascal/depot/filedata/src/netcdffiledata.h; ;;џџџџџџџџNETCDFFileDataQЙ€sds_nameџџџџџџџџ stringџџџџattr_nameџџџџџџџџ stringџџџџbool@init_read_write_null_input_param`/home/pascal/depot/filedata/src/netcdffiledata.hK KџџџџџџџџNETCDFFileDataџџџ€sds_nameџџџџџџџџconst char*џџџџ startџџџџџџџџ int*&џџџџ strideџџџџџџџџ int*&џџџџ edgesџџџџџџџџ int*&џџџџrankџџџџџџџџint&џџџџ$initialized_valuesџџџџџџџџ bool*џџџџvoidopen_data_file`/home/pascal/depot/filedata/src/netcdffiledata.hE E* @brief open the fileџџџџNETCDFFileDataevoidread_data`/home/pascal/depot/filedata/src/netcdffiledata.h&+(zNETCDFFileData::NETCDFFileData( const NETCDFFileData & hfd );џџџџNETCDFFileDataџџџ„dataџџџџџџџџ void*џџџџsds_nameџџџџџџџџconst char*џџџџ startџџџџџџџџint*џџџџ strideџџџџџџџџint*џџџџ edgesџџџџџџџџint*џџџџrankџџџџџџџџintџџџџ void* ~ NETCDFFileData`/home/pascal/depot/filedata/src/netcdffiledata.h$ $џџџџџџџџNETCDFFileData Аџџџџclose_data_file`/home/pascal/depot/filedata/src/netcdffiledata.h@@4. @brief closes the fileџџџџNETCDFFileDataџџџ€voidfilename`/home/pascal/depot/filedata/src/netcdffiledata.hI Iџџџџ string ncfile`/home/pascal/depot/filedata/src/netcdffiledata.hH Hџџџџ int32=observation.h^/home/pascal/depot/filedata/src/observation.cpp%yР №Xџџџџobservation.h%Sf‚^/home/pascal/depot/filedata/src/observation.cppdўђ^/home/pascal/depot/filedata/src/observation.cppџџџџџџџџџџџџObservation^/home/pascal/depot/filedata/src/observation.cppџџџџџџџџObservationЖšlatџџџџџџџџconst floatџџџџlonџџџџџџџџconst floatџџџџaltџџџџџџџџconst floatџџџџtimeџџџџџџџџconst doubleџџџџ idataџџџџџџџџ(const vector< int >&џџџџ igridџџџџџџџџ(const vector< int >&џџџџviewingџџџџџџџџ8const Carthesian::Segment3D&џџџџџџџџObservation^/home/pascal/depot/filedata/src/observation.cppџџџџџџџџObservationoobjџџџџџџџџ$const Observation&џџџџџџџџoperator =^/home/pascal/depot/filedata/src/observation.cppџџџџџџџџObservation€objџџџџџџџџ$const Observation&џџџџObservation&set^/home/pascal/depot/filedata/src/observation.cpp%џџџџџџџџObservationЖUlatџџџџџџџџconst floatџџџџlonџџџџџџџџconst floatџџџџaltџџџџџџџџconst floatџџџџtimeџџџџџџџџconst doubleџџџџ idataџџџџџџџџ(const vector< int >&џџџџ igridџџџџџџџџ(const vector< int >&џџџџviewingџџџџџџџџ8const Carthesian::Segment3D&џџџџvoid`geometry.htools.h vectorZ/home/pascal/depot/filedata/src/observation.h%yР „€џџџџ vector …/ГZ/home/pascal/depot/filedata/src/observation.hA‰зgeometry.h7\<вtools.hАох7Z/home/pascal/depot/filedata/src/observation.hџџџџџџџџџџџџObservationZ/home/pascal/depot/filedata/src/observation.hQЖ @class Observation a satellite observation : a viewed earth pixel and its viewing geometryџџџџObservationZ/home/pascal/depot/filedata/src/observation.h24HџџџџџџџџObservationџџџ€latџџџџџџџџconst floatџџџџlonџџџџџџџџconst floatџџџџaltџџџџџџџџconst floatџџџџtimeџџџџџџџџconst doubleџџџџ idataџџџџџџџџ(const vector< int >&џџџџ igridџџџџџџџџ(const vector< int >&џџџџviewingџџџџџџџџ8const Carthesian::Segment3D&џџџџџџџџObservationZ/home/pascal/depot/filedata/src/observation.h55*џџџџџџџџObservationџџџ€objџџџџџџџџ$const Observation&џџџџџџџџoperator <<Z/home/pascal/depot/filedata/src/observation.hKP @brief content printer @param os output flux @param obj current oject alias @return the content description added to the output fluxџџџџObservationџџџ€osџџџџџџџџstd::ostream&џџџџobjџџџџџџџџ$const Observation&џџџџstd::ostream&operator =Z/home/pascal/depot/filedata/src/observation.h776џџџџџџџџObservationџџџ€objџџџџџџџџ$const Observation&џџџџObservation&setZ/home/pascal/depot/filedata/src/observation.hB D-і @brief general setter @param lat observed earth pixel latitude @param lon observed earth pixel longitude @param alt observed earth pixel altitude in m @param time observation timestamp (TAI93 time in seconds) @param idata indices of the pixel in the data buffer @param igrid grid indices of the pixel (for non gridded data, same as idata) @param viewing viewing directionџџџџObservationџџџ€latџџџџџџџџconst floatџџџџlonџџџџџџџџconst floatџџџџaltџџџџџџџџconst floatџџџџtimeџџџџџџџџconst doubleџџџџ idataџџџџџџџџ(const vector< int >&џџџџ igridџџџџџџџџ(const vector< int >&џџџџviewingџџџџџџџџ8const Carthesian::Segment3D&џџџџvoid~ ObservationZ/home/pascal/depot/filedata/src/observation.h66џџџџџџџџObservationџџџ€џџџџoperator <<Z/home/pascal/depot/filedata/src/observation.hKP @brief content printer @param os output flux @param obj current oject alias @return the content description added to the output fluxџџџџObservationџџџ€osџџџџџџџџstd::ostream&џџџџobjџџџџџџџџ$const Observation&џџџџstd::ostream&~ ObservationZ/home/pascal/depot/filedata/src/observation.h66џџџџџџџџObservationџџџ€џџџџaltZ/home/pascal/depot/filedata/src/observation.h  H observed earth pixel altitude in m float idataZ/home/pascal/depot/filedata/src/observation.h##R indices of the pixel in the data buffer vector< int > igridZ/home/pascal/depot/filedata/src/observation.h%%‚ grid indices of the pixel (for non gridded data, same as idata) vector< int >latZ/home/pascal/depot/filedata/src/observation.h  > observed earth pixel latitude floatlonZ/home/pascal/depot/filedata/src/observation.h  @ observed earth pixel longitude floattimeZ/home/pascal/depot/filedata/src/observation.h! !^ observation timestamp (TAI93 time in seconds) doubleviewingZ/home/pascal/depot/filedata/src/observation.h''!& viewing direction *Carthesian::Segment3DstdZ/home/pascal/depot/filedata/src/observation.hAomifiledata.h^/home/pascal/depot/filedata/src/omifiledata.cpp%yЦg‚Pџџџџomifiledata.h_ЉX%^/home/pascal/depot/filedata/src/omifiledata.cpp@fѕ^/home/pascal/depot/filedata/src/omifiledata.cppџџџџџџџџџџџџ OMIFileData^/home/pascal/depot/filedata/src/omifiledata.cppџџџџџџџџOMIFileDataЖЌnameџџџџџџџџconst string&џџџџmodeџџџџџџџџconst string&џџџџџџџџcheck_filename^/home/pascal/depot/filedata/src/omifiledata.cpp78џџџџџџџџOMIFileDataЖ= short_filenameџџџџџџџџconst string&џџџџvoidcontain_data^/home/pascal/depot/filedata/src/omifiledata.cppЮаџџџџџџџџOMIFileDataЖЌ€latџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџtimeџџџџџџџџconst double&џџџџ(colocation_toleranceџџџџџџџџconst double&џџџџconst bool contain_location^/home/pascal/depot/filedata/src/omifiledata.cppЪЭџџџџџџџџOMIFileDatalatџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџtoleranceџџџџџџџџconst double&џџџџconst boolget_index^/home/pascal/depot/filedata/src/omifiledata.cppZŠџџџџџџџџOMIFileDatalatџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџtimeџџџџџџџџconst double&џџџџnearest_pix_idxџџџџџџџџ long*џџџџcoloc_toleranceџџџџџџџџconst floatџџџџconst boolget_index^/home/pascal/depot/filedata/src/omifiledata.cppЌЗџџџџџџџџOMIFileDataЖ+€latџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџnearest_pix_idxџџџџџџџџint&џџџџcoloc_toleranceџџџџџџџџconst floatџџџџconst bool4get_nearest_point_distance^/home/pascal/depot/filedata/src/omifiledata.cppЙШџџџџџџџџOMIFileDatalatџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџcoloc_toleranceџџџџџџџџconst floatџџџџconst float.get_nearest_point_index^/home/pascal/depot/filedata/src/omifiledata.cpp<XџџџџџџџџOMIFileDatalatџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџlidar_shot_timeџџџџџџџџconst double&џџџџconst intinit^/home/pascal/depot/filedata/src/omifiledata.cpp1џџџџџџџџOMIFileDataџџџ€void*load_geolocation_data^/home/pascal/depot/filedata/src/omifiledata.cpp‹šџџџџџџџџOMIFileDataЖ™voidload_v_pixel^/home/pascal/depot/filedata/src/omifiledata.cppœЊџџџџџџџџOMIFileData€voidparse_filename^/home/pascal/depot/filedata/src/omifiledata.cpp9;џџџџџџџџOMIFileDataџџџ€short_filenameџџџџџџџџconst string&џџџџvoid~ OMIFileData^/home/pascal/depot/filedata/src/omifiledata.cpp25џџџџџџџџOMIFileDataџџџџbhdf5filedata.h&satellitefiledata.h stringZ/home/pascal/depot/filedata/src/omifiledata.h%yУюЧ8џџџџ string Xaч&satellitefiledata.hщ"FзZ/home/pascal/depot/filedata/src/omifiledata.h{Y{zhdf5filedata.hўD7Z/home/pascal/depot/filedata/src/omifiledata.hџџџџџџџџџџџџOMIFileDataZ/home/pascal/depot/filedata/src/omifiledata.hИџџџџџџџџ"SatelliteFileDataHDF5FileDataOMIFileDataZ/home/pascal/depot/filedata/src/omifiledata.h11<џџџџџџџџOMIFileDataџџџ€ _nameџџџџџџџџconst string&џџџџmodeџџџџџџџџconst string&џџџџџџџџcheck_filenameZ/home/pascal/depot/filedata/src/omifiledata.h& &=џџџџџџџџOMIFileDataџџџ short_filenameџџџџџџџџconst string&џџџџvoidclose_data_fileZ/home/pascal/depot/filedata/src/omifiledata.hЃЃD0 @brief closes the file.џџџџOMIFileDataџџџ„voidcontain_dataZ/home/pascal/depot/filedata/src/omifiledata.hƒƒ™Р @brief check if the file has possible (lat,lon) coincidence @warning it's an EVENTUAL coincidence. That is not a proof !!! @param lat latitude @param lon longitude @param time time @param colocation_tolerance the acceptable bias (in km or degrees. Supposed to be in, a plane approximation) between [lat,lon] and the nearest data point. @return true if can eventually contain a coincidence with the point. @warning at this time always true. I don't have a good way to do itџџџџOMIFileDataџџџ€latџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџtimeџџџџџџџџconst double&џџџџ(colocation_toleranceџџџџџџџџconst double&џџџџconst bool contain_locationZ/home/pascal/depot/filedata/src/omifiledata.hxx}8 @brief check if this file has eventually data coincident with (lat,lon) Actually, it only tests if (lat,lon) is contained in the data's bounding rectangle. @param lat the latitude of the event @param lon the longitude of the event @param tolerance acceptable bias between the nearest point in the data and the given (lat,lon) point @return true if a point in the data has been found in the colocation frameџџџџOMIFileDatalatџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџtoleranceџџџџџџџџconst double&џџџџconst bool contains_data_atZ/home/pascal/depot/filedata/src/omifiledata.hRUh check if this file has data coincident with (lat,lon,time) @param lat the latitude of the event @param lon the longitude of the event @param time the time of the event @returnџџџџOMIFileDataџџџ latџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџtimeџџџџџџџџconst double&џџџџconst boolget_indexZ/home/pascal/depot/filedata/src/omifiledata.hBBЅ< @brief search the index of the nearest point in the data to (@a lat , @a lon ) If @a coloc_tolerance is given, it will compute only the distance of the points that have a distance to ( @a lat, @a lon ) inferior to @a coloc_tolerance @param near_point_idx the indexes of the nearest point found (or {-1,-1} if not found) @param lat the latitude @param lon the longitude @param time the time of the observation. If -1., skipped @param coloc_tolerance the -/+ maximal tolerance for 2 points considered as colocated @return true if foundџџџџOMIFileDataџџџ€latџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџtimeџџџџџџџџconst double&џџџџnear_point_idxџџџџџџџџint*џџџџcoloc_toleranceџџџџџџџџconst floatџџџџconst boolget_indexZ/home/pascal/depot/filedata/src/omifiledata.hee–ь @brief find the index of the nearest point to (lat,lon) in the data. If (lat,lon) is not found or out of the colocalisation_frame, returned indexes are [-1,-1] @param lat the latitude @param lon the longitude @param nearest_pix_idx the index of the nearest measure. -1 if no coincidence found. @param colocation_tolerance the acceptable bias (in km or degrees. Supposed to be in, a plane approximation) between [lat,lon] and the nearest data point. @return true if the coincidence has been foundџџџџOMIFileDataџџџ€latџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџnearest_pix_idxџџџџџџџџint&џџџџ(colocation_toleranceџџџџџџџџconst floatџџџџconst bool4get_nearest_point_distanceZ/home/pascal/depot/filedata/src/omifiledata.hoo‹В @brief compute the distance to (lat,lon) of the nearest point in the data If @a coloc_tolerance is given, it will compute only the distance of the points that have a distance to ( @a lat, @a lon ) inferior to @a coloc_tolerance @param lat the latitude @param lon the longitude @param coloc_tolerance the -/+ maximal tolerance for 2 points considered as colocated @return the distance to the nearest point, or -1 if no point in the colocalisation frame has been found.џџџџOMIFileDataџџџ€latџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџcoloc_toleranceџџџџџџџџconst floatџџџџconst float.get_nearest_point_indexZ/home/pascal/depot/filedata/src/omifiledata.hJJ^* find the row index of the nearest point in the data of this file to (lat,lon,time). Be careful, it will return a valid index : this method doesn't check if the point given in parametre is contained in this file. Use the contains_data_at to check it first. @param lat the latitude of the event @param lon the longitude of the event @param time the time of the event @return the nearest point row indexџџџџOMIFileDataџџџ€latџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџtimeџџџџџџџџconst double&џџџџconst intget_pixel_coordZ/home/pascal/depot/filedata/src/omifiledata.h‹ŽЖ @brief retrieve the coordinates of a pixel using its index @param ipix [IN] index of the pixel @param lat [OUT] latitude of the pixel @param lon [OUT] longitude of the pixel @param time [OUT] timestamp of the pixelџџџџOMIFileDataЅipixџџџџџџџџ(const vector< int >&џџџџlatџџџџџџџџ float&џџџџlonџџџџџџџџ float&џџџџtimeџџџџџџџџdouble&џџџџvoidget_sz_xZ/home/pascal/depot/filedata/src/omifiledata.h­Џо @brief accessor to the geolocation datasets swath size (in pixels) @return number of pixels along x dimensionџџџџOMIFileDataџџџ const intget_sz_yZ/home/pascal/depot/filedata/src/omifiledata.hДЖъ @brief accessor to the geolocation datasets along track size (in pixels) @return number of pixels along y dimensionџџџџOMIFileDataџџџ const intget_vindexZ/home/pascal/depot/filedata/src/omifiledata.h˜œŠ @brief build the list of indices of pixels that are in colocation tolerance, sorted by increasing distance to (lat,lon) If (lat,lon) is not found or out of the colocalisation_frame, returns an empty vector @param lat the latitude @param lon the longitude @param colocation_tolerance the acceptable bias (in km or degrees. Supposed to be in, a plane approximation) between [lat,lon] and the nearest data point. @return the list of indices of pixelsџџџџOMIFileDatav_indexџџџџџџџџ2vector< vector < int > >&џџџџlatџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџ(colocation_toleranceџџџџџџџџconst floatџџџџvoidinitZ/home/pascal/depot/filedata/src/omifiledata.h% %џџџџџџџџOMIFileDataџџџ€void*load_geolocation_dataZ/home/pascal/depot/filedata/src/omifiledata.hY Y ю load the geolocations data. This method is used to make the search of the indexes of a (lat,lon,time) point faster.џџџџOMIFileDataџџџ€voidload_v_pixelZ/home/pascal/depot/filedata/src/omifiledata.hž žџџџџџџџџOMIFileDatavoidopen_data_fileZ/home/pascal/depot/filedata/src/omifiledata.hЈЈB. @brief opens the file.џџџџOMIFileDatavoidparse_filenameZ/home/pascal/depot/filedata/src/omifiledata.h' '7џџџџџџџџOMIFileDataџџџ€short_filenameџџџџџџџџconst string&џџџџvoid~ OMIFileDataZ/home/pascal/depot/filedata/src/omifiledata.h66џџџџџџџџOMIFileDataџџџ€џџџџclose_data_fileZ/home/pascal/depot/filedata/src/omifiledata.hЃЃD0 @brief closes the file.џџџџOMIFileDataџџџ„void contains_data_atZ/home/pascal/depot/filedata/src/omifiledata.hRUh check if this file has data coincident with (lat,lon,time) @param lat the latitude of the event @param lon the longitude of the event @param time the time of the event @returnџџџџOMIFileDataџџџ latџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџtimeџџџџџџџџconst double&џџџџconst boolget_pixel_coordZ/home/pascal/depot/filedata/src/omifiledata.h‹ŽЖ @brief retrieve the coordinates of a pixel using its index @param ipix [IN] index of the pixel @param lat [OUT] latitude of the pixel @param lon [OUT] longitude of the pixel @param time [OUT] timestamp of the pixelџџџџOMIFileDataЅipixџџџџџџџџ(const vector< int >&џџџџlatџџџџџџџџ float&џџџџlonџџџџџџџџ float&џџџџtimeџџџџџџџџdouble&џџџџvoidget_sz_xZ/home/pascal/depot/filedata/src/omifiledata.h­Џо @brief accessor to the geolocation datasets swath size (in pixels) @return number of pixels along x dimensionџџџџOMIFileDataџџџ const intget_sz_yZ/home/pascal/depot/filedata/src/omifiledata.hДЖъ @brief accessor to the geolocation datasets along track size (in pixels) @return number of pixels along y dimensionџџџџOMIFileDataџџџ const intget_vindexZ/home/pascal/depot/filedata/src/omifiledata.h˜œŠ @brief build the list of indices of pixels that are in colocation tolerance, sorted by increasing distance to (lat,lon) If (lat,lon) is not found or out of the colocalisation_frame, returns an empty vector @param lat the latitude @param lon the longitude @param colocation_tolerance the acceptable bias (in km or degrees. Supposed to be in, a plane approximation) between [lat,lon] and the nearest data point. @return the list of indices of pixelsџџџџOMIFileDatav_indexџџџџџџџџ2vector< vector < int > >&џџџџlatџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџ(colocation_toleranceџџџџџџџџconst floatџџџџvoidopen_data_fileZ/home/pascal/depot/filedata/src/omifiledata.hЈЈB. @brief opens the file.џџџџOMIFileDatavoid(colocation_toleranceZ/home/pascal/depot/filedata/src/omifiledata.h##+v default acceptable tolerance between 2 colocated measures const float"lat_lon_index_maxZ/home/pascal/depot/filedata/src/omifiledata.h**!џџџџvector< int >"latitude_sds_nameZ/home/pascal/depot/filedata/src/omifiledata.h)џџџџconst string$longitude_sds_nameZ/home/pascal/depot/filedata/src/omifiledata.h  *џџџџconst stringtime_sds_nameZ/home/pascal/depot/filedata/src/omifiledata.h!!%џџџџconst stringtrack_sizeZ/home/pascal/depot/filedata/src/omifiledata.h))џџџџintstdZ/home/pascal/depot/filedata/src/omifiledata.hmparasoldata.h^/home/pascal/depot/filedata/src/parasoldata.cpp%yУюЧ8џџџџ^/home/pascal/depot/filedata/src/parasoldata.cppР“тparasoldata.hx;r^/home/pascal/depot/filedata/src/parasoldata.cppџџџџџџџџџџџџPARASOLData^/home/pascal/depot/filedata/src/parasoldata.cpp$џџџџџџџџPARASOLDatafilenameџџџџџџџџconst stringџџџџџџџџfree_records^/home/pascal/depot/filedata/src/parasoldata.cpp(/џџџџџџџџPARASOLDatavoid(get_data_entry_index^/home/pascal/depot/filedata/src/parasoldata.cpp:BџџџџџџџџPARASOLDataqg var_nameџџџџџџџџconst string&џџџџconst intget_entry_block^/home/pascal/depot/filedata/src/parasoldata.cppTTџџџџџџџџPARASOLData recџџџџџџџџconst Recordџџџџentry_idxџџџџџџџџconst intџџџџ(vector< EntryBlock >$get_nb_data_record^/home/pascal/depot/filedata/src/parasoldata.cpp46 }џџџџPARASOLData const intget_nb_val^/home/pascal/depot/filedata/src/parasoldata.cppCFџџџџџџџџPARASOLDataџџџ var_nameџџџџџџџџconst string&џџџџ edgesџџџџџџџџconst intџџџџdir_idxџџџџџџџџconst intџџџџconst intget_nb_val^/home/pascal/depot/filedata/src/parasoldata.cppGRџџџџџџџџPARASOLDataџџџ entry_indexџџџџџџџџconst int&џџџџ edgesџџџџџџџџconst intџџџџdir_idxџџџџџџџџconst intџџџџconst intget_record^/home/pascal/depot/filedata/src/parasoldata.cppmvџџџџџџџџPARASOLDataџџџ€record_codeџџџџџџџџconst Record&џџџџ$PARASOLFileRecord*"get_record_format^/home/pascal/depot/filedata/src/parasoldata.cppalџџџџџџџџPARASOLDatarecord_codeџџџџџџџџconst Record&џџџџ&const RecordFormat*"get_record_offset^/home/pascal/depot/filedata/src/parasoldata.cppR`џџџџџџџџPARASOLDataЖН€record_codeџџџџџџџџconst Record&џџџџconst int$get_sz_data_record^/home/pascal/depot/filedata/src/parasoldata.cpp79џџџџџџџџPARASOLDataЖN const intinit_record^/home/pascal/depot/filedata/src/parasoldata.cpp08џџџџџџџџPARASOLDataЖ4€record_codeџџџџџџџџconst Record&џџџџ$PARASOLFileRecord* is_record_loaded^/home/pascal/depot/filedata/src/parasoldata.cpp9;џџџџџџџџPARASOLDatarecџџџџџџџџconst Record&џџџџconst bool4print_data_file_descriptor^/home/pascal/depot/filedata/src/parasoldata.cpp<QџџџџџџџџPARASOLDataqg€voidread_data^/home/pascal/depot/filedata/src/parasoldata.cpp~3џџџџџџџџPARASOLDatabufџџџџџџџџ void*џџџџentry_indexџџџџџџџџconst int&џџџџ startџџџџџџџџ long*џџџџ edgesџџџџџџџџ long*џџџџrankџџџџџџџџconst intџџџџboolread_data_file^/home/pascal/depot/filedata/src/parasoldata.cppw|џџџџџџџџPARASOLData=data_filenameџџџџџџџџconst string&џџџџvoid~ PARASOLData^/home/pascal/depot/filedata/src/parasoldata.cpp%'џџџџџџџџPARASOLDataџџџџd&parasolfilereader.hZ/home/pascal/depot/filedata/src/parasoldata.h%yУюЧ8џџџџZ/home/pascal/depot/filedata/src/parasoldata.h3(^Ч&parasolfilereader.hП›‹Z/home/pascal/depot/filedata/src/parasoldata.hџџџџџџџџџџџџPARASOLDataZ/home/pascal/depot/filedata/src/parasoldata.hЧж Interface for managing the reading of a PARASOL data file. @warning this class is designed to be general and treat all PARASOL data files BUT it only has been fully implemented and tested for -> RB 2 products @author Nicolas PASCALџџџџ"PARASOLFileReaderPARASOLDataZ/home/pascal/depot/filedata/src/parasoldata.h‹‹/џџџџџџџџPARASOLDatadata_filenameџџџџџџџџconst stringџџџџџџџџapply_scalingZ/home/pascal/depot/filedata/src/parasoldata.h‰ ‰ ъ @brief apply the scaling to a count data @param scaled_data the output scaled data. Must be allocated @param count_data the input count data. Musn't be NULL @param slope the slope @param offset the offset @param nb_val the number of valuesџџџџTџџџџPARASOLDataџџџ€scaled_dataџџџџџџџџdouble*џџџџcount_dataџџџџџџџџconst T*џџџџ slopeџџџџџџџџconst double&џџџџ offsetџџџџџџџџconst double&џџџџ nb_valџџџџџџџџconst int&џџџџ count_fill_valueџџџџџџџџconst Tџџџџvoidfree_recordsZ/home/pascal/depot/filedata/src/parasoldata.h4 4” @brief Free the objects used to store the values read in the file recordsџџџџPARASOLDataсрvoid(get_data_entry_indexZ/home/pascal/depot/filedata/src/parasoldata.hЖЖ@† @brief retrieve the index of a parameter's in the data record If the entry isn't a parameter,throws an bad_parametre Exception @param var_name the name of the variable @return the entry indexџџџџPARASOLDataџџџ var_nameџџџџџџџџconst string&џџџџconst int(get_data_file_formatZ/home/pascal/depot/filedata/src/parasoldata.hЂЉА @brief access to the data file format for a given product @return the data file formatџџџџPARASOLDataџџџ€0const PARASOLDataFormat*get_entry_blockZ/home/pascal/depot/filedata/src/parasoldata.huuUV @brief return the block describing the given entry : the number of times the entry is repeated and the size in bytes of the group @param rec current record @param entry_idx indice of the entry @return the block(s) of the entry. If the entry is composed of a unique value, returns an empty vectorџџџџPARASOLDataџџџ recџџџџџџџџconst Recordџџџџentry_idxџџџџџџџџconst intџџџџ(vector< EntryBlock >$get_nb_data_recordZ/home/pascal/depot/filedata/src/parasoldata.hЊЊ(& @brief access to the number of data' records contained in the file @warning it starts at 0 for the 1st pixel data record. So it differs of 2 compared to the record number read in the data file : nb_data_record = record_number_in_file - 2 @return the number of data recordsџџџџPARASOLDataџџџ const intget_nb_valZ/home/pascal/depot/filedata/src/parasoldata.hОО` @brief retrieve the number of values that will be read for the given variable using the given indexes @param var_name the name of the variable @param edges the number of records to read. -1 = all @param dir_idx the index of the direction to read (for directionnal parameters). -1 = all @return the number of possible valuesџџџџPARASOLData var_nameџџџџџџџџconst string&џџџџ edgesџџџџџџџџconst intџџџџdir_idxџџџџџџџџconst intџџџџconst intget_nb_valZ/home/pascal/depot/filedata/src/parasoldata.hЦЦ]” @brief retrieve the number of values that will be read for the given variable using the given indexes @param var_index the index of the variable @param edges the number of records to read. -1 = all @param dir_idx the index of the direction to read (for directionnal parameters). -1 = all @return the number of possible valuesџџџџPARASOLDataџџџ var_indexџџџџџџџџconst int&џџџџ edgesџџџџџџџџconst intџџџџdir_idxџџџџџџџџconst intџџџџconst intget_recordZ/home/pascal/depot/filedata/src/parasoldata.hMM4т @brief access to one record entry @param rec the record code @return the entry corresponding to @a record codeџџџџPARASOLDataџџџ€recџџџџџџџџconst Record&џџџџ$PARASOLFileRecord*"get_record_formatZ/home/pascal/depot/filedata/src/parasoldata.hGGDŠ @brief access to the RecordFormat object that describes the name, type, offset and length of each record entry @param rec the record code @return the RecordFormat corresponding to @a record codeџџџџPARASOLDataџџџ„recџџџџџџџџconst Record&џџџџ&const RecordFormat*"get_record_offsetZ/home/pascal/depot/filedata/src/parasoldata.hAA2Z @brief access to ones record file offset If the record isn't in the data data file, it returns -1 @param rec the record code @return the record's offset in the data fileџџџџPARASOLDataџџџ€recџџџџџџџџconst Record&џџџџconst int$get_sz_data_recordZ/home/pascal/depot/filedata/src/parasoldata.hЏЏ(Ж @brief access to the size of one data record @return the size of one data record in bytesџџџџPARASOLDataџџџ const intinit_recordZ/home/pascal/depot/filedata/src/parasoldata.h::5є @brief Initialize a record class @param rec the record code @return the initialized object (or NULL in case of problem)џџџџPARASOLDataџџџ€recџџџџџџџџconst Record&џџџџ$PARASOLFileRecord* is_record_loadedZ/home/pascal/depot/filedata/src/parasoldata.h002Д @brief check if a record has been read. @return true if the record has already been readџџџџPARASOLDataџџџ€recџџџџџџџџconst Record&џџџџconst boolprint_dataZ/home/pascal/depot/filedata/src/parasoldata.h‘‘ џџџџџџџџPARASOLDatavoid4print_data_file_descriptorZ/home/pascal/depot/filedata/src/parasoldata.h %l Print the data file descriptor on the standard outputџџџџPARASOLDataџџџ€voidread_dataZ/home/pascal/depot/filedata/src/parasoldata.h `Д @brief read the data in the parasol data file @warning start, edges and rank must be given and valid @param buf the buffer to be fill. MUST BE ALLOCATED @param param_index the index of the parameter to extract @param start the start data record index. DON'T USE IT @param edges the number of data records to read. DON'T USE IT @param dir_idx the index of the direction for directionnal parameters. DON'T USE IT @return true if the data have been read without problemџџџџPARASOLDatabufџџџџџџџџ void*џџџџparam_indexџџџџџџџџconst int&џџџџ startџџџџџџџџint*џџџџ edgesџџџџџџџџint*џџџџrankџџџџџџџџconst intџџџџboolread_data_fileZ/home/pascal/depot/filedata/src/parasoldata.h++<џџџџџџџџPARASOLDatadata_filenameџџџџџџџџconst string&џџџџvoid~ PARASOLDataZ/home/pascal/depot/filedata/src/parasoldata.hŒ ŒџџџџџџџџPARASOLDataџџџџ(get_data_file_formatZ/home/pascal/depot/filedata/src/parasoldata.hЂЉА @brief access to the data file format for a given product @return the data file formatџџџџPARASOLDataџџџ€0const PARASOLDataFormat*print_dataZ/home/pascal/depot/filedata/src/parasoldata.h‘‘ џџџџџџџџPARASOLDatavoiddataZ/home/pascal/depot/filedata/src/parasoldata.h)). record storage classesDataRecord*(data_file_descriptorZ/home/pascal/depot/filedata/src/parasoldata.h$$2џџџџ2DataFileDescriptorRecord* data_file_formatZ/home/pascal/depot/filedata/src/parasoldata.h!!'џџџџ$PARASOLDataFormat*filenameZ/home/pascal/depot/filedata/src/parasoldata.h& &џџџџ stringapply_scalingZ/home/pascal/depot/filedata/src/parasoldata.hЩпџџџџџџџџTџџџџPARASOLData ˜š€scaled_dataџџџџџџџџdouble*џџџџcount_dataџџџџџџџџconst T*џџџџ slopeџџџџџџџџconst double&џџџџ offsetџџџџџџџџconst double&џџџџ nb_valџџџџџџџџconst int&џџџџ count_fill_valueџџџџџџџџconst Tџџџџvoid 7"parasolfiledata.hf/home/pascal/depot/filedata/src/parasolfiledata.cpp%yЧоxџџџџf/home/pascal/depot/filedata/src/parasolfiledata.cppиLB"parasolfiledata.hŽї'’f/home/pascal/depot/filedata/src/parasolfiledata.cppџџџџџџџџџџџџAPARASOLFileDataf/home/pascal/depot/filedata/src/parasolfiledata.cpp #џџџџџџџџPARASOLFileDatanameџџџџџџџџconst string&џџџџmodeџџџџџџџџconst string&џџџџџџџџ4_get_viewing_directions_l1f/home/pascal/depot/filedata/src/parasolfiledata.cpp?іџџџџџџџџPARASOLFileDataDэ€ipixџџџџџџџџ(const vector< int >&џџџџirecџџџџџџџџconst intџџџџ v_obsџџџџџџџџ,vector< Observation >&џџџџvoid4_get_viewing_directions_l2f/home/pascal/depot/filedata/src/parasolfiledata.cppјz }џџџџPARASOLFileData€ipixџџџџџџџџ(const vector< int >&џџџџirecџџџџџџџџconst intџџџџ v_obsџџџџџџџџ,vector< Observation >&џџџџvoidcheck_filenamef/home/pascal/depot/filedata/src/parasolfiledata.cpp†ЊџџџџџџџџPARASOLFileDatap short_filenameџџџџџџџџconst string&џџџџbool check_grid_coordf/home/pascal/depot/filedata/src/parasolfiledata.cppзуџџџџџџџџPARASOLFileData irowџџџџџџџџconst intџџџџicolџџџџџџџџconst intџџџџvoidclose_filef/home/pascal/depot/filedata/src/parasolfiledata.cppсцџџџџџџџџPARASOLFileDatavoidcontain_dataf/home/pascal/depot/filedata/src/parasolfiledata.cppDGџџџџџџџџPARASOLFileDatalatџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџtimeџџџџџџџџconst double&џџџџconst boolcontain_dataf/home/pascal/depot/filedata/src/parasolfiledata.cpp#&џџџџџџџџPARASOLFileData ‰€latџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџtimeџџџџџџџџconst double&џџџџtoleranceџџџџџџџџconst double&џџџџconst bool contain_locationf/home/pascal/depot/filedata/src/parasolfiledata.cppHQџџџџџџџџPARASOLFileData МГ€latџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџconst bool contain_locationf/home/pascal/depot/filedata/src/parasolfiledata.cpp!џџџџџџџџPARASOLFileDataџџџ€latџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџtoleranceџџџџџџџџconst double&џџџџconst boolcontain_pixelf/home/pascal/depot/filedata/src/parasolfiledata.cppRVџџџџџџџџPARASOLFileData€pix_idxџџџџџџџџconst int*џџџџconst bool*free_geolocation_dataf/home/pascal/depot/filedata/src/parasolfiledata.cpp+.џџџџџџџџPARASOLFileData€void8free_viewing_directions_dataf/home/pascal/depot/filedata/src/parasolfiledata.cppхяџџџџџџџџPARASOLFileDatavoid&geolocation_to_gridf/home/pascal/depot/filedata/src/parasolfiledata.cpp џџџџџџџџPARASOLFileData ь€latџџџџџџџџconst floatџџџџlonџџџџџџџџconst floatџџџџirowџџџџџџџџint&џџџџicolџџџџџџџџint&џџџџvoid&geolocation_to_gridf/home/pascal/depot/filedata/src/parasolfiledata.cppџџџџџџџџPARASOLFileData гвlat_lonџџџџџџџџconst float*џџџџgrid_idxџџџџџџџџint*џџџџvoid$get_data_dimensionf/home/pascal/depot/filedata/src/parasolfiledata.cppшыџџџџџџџџPARASOLFileData ^€var_nameџџџџџџџџconst string&џџџџvector< int >$get_data_dimensionf/home/pascal/depot/filedata/src/parasolfiledata.cppэіџџџџџџџџPARASOLFileDataentry_idxџџџџџџџџconst intџџџџvector< int > get_entry_formatf/home/pascal/depot/filedata/src/parasolfiledata.cppŽ“џџџџџџџџPARASOLFileDataentry_nameџџџџџџџџconst string&џџџџ$const EntryFormat* get_entry_formatf/home/pascal/depot/filedata/src/parasolfiledata.cpp”žџџџџџџџџPARASOLFileData%y€entry_idxџџџџџџџџconst int&џџџџ$const EntryFormat*get_grid_latf/home/pascal/depot/filedata/src/parasolfiledata.cppєњџџџџџџџџPARASOLFileData irowџџџџџџџџconst intџџџџconst doubleget_indexf/home/pascal/depot/filedata/src/parasolfiledata.cppkџџџџџџџџPARASOLFileData v_ipixџџџџџџџџ(const vector< int >&џџџџirecџџџџџџџџint&џџџџconst boolget_indexf/home/pascal/depot/filedata/src/parasolfiledata.cppЊџџџџџџџџPARASOLFileData%y€pix_idxџџџџџџџџconst int*џџџџirecџџџџџџџџint&џџџџconst boolget_indexf/home/pascal/depot/filedata/src/parasolfiledata.cppЌЕџџџџџџџџPARASOLFileDatanlatџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџirecџџџџџџџџint&џџџџconst boolget_indexf/home/pascal/depot/filedata/src/parasolfiledata.cpp(:џџџџџџџџPARASOLFileData€latџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџirecџџџџџџџџint&џџџџtoleranceџџџџџџџџconst floatџџџџconst bool"get_max_directionf/home/pascal/depot/filedata/src/parasolfiledata.cppнпџџџџџџџџPARASOLFileData€const intget_nb_dataf/home/pascal/depot/filedata/src/parasolfiledata.cpp#%џџџџџџџџPARASOLFileData •Jconst intget_ncolf/home/pascal/depot/filedata/src/parasolfiledata.cppџџџџџџџџPARASOLFileData irowџџџџџџџџconst intџџџџconst intget_ncolf/home/pascal/depot/filedata/src/parasolfiledata.cpp џџџџџџџџPARASOLFileData †• latџџџџџџџџconst doubleџџџџconst intget_ndir_dataf/home/pascal/depot/filedata/src/parasolfiledata.cpp|~ }џџџџPARASOLFileData unsigned char*4get_nearest_point_distancef/home/pascal/depot/filedata/src/parasolfiledata.cpp<NџџџџџџџџPARASOLFileDatalatџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџcoloc_toleranceџџџџџџџџconst floatџџџџconst float(get_neighbours_coordf/home/pascal/depot/filedata/src/parasolfiledata.cppЎеџџџџџџџџPARASOLFileData€irowџџџџџџџџconst intџџџџicolџџџџџџџџconst intџџџџdirow_minџџџџџџџџintџџџџdirow_maxџџџџџџџџintџџџџdicol_minџџџџџџџџintџџџџdicol_maxџџџџџџџџintџџџџ v_irowџџџџџџџџvector< int >&џџџџ v_icolџџџџџџџџvector< int >&џџџџvoidget_nrowf/home/pascal/depot/filedata/src/parasolfiledata.cppќўџџџџџџџџPARASOLFileData | const intget_pixelf/home/pascal/depot/filedata/src/parasolfiledata.cppWaџџџџџџџџPARASOLFileData щЎ€irecџџџџџџџџconst int&џџџџ pix[]џџџџџџџџint*џџџџvoid0get_processing_line_charf/home/pascal/depot/filedata/src/parasolfiledata.cppмшџџџџџџџџPARASOLFileData const char4get_processing_line_stringf/home/pascal/depot/filedata/src/parasolfiledata.cppЯлџџџџџџџџPARASOLFileData const stringget_radixf/home/pascal/depot/filedata/src/parasolfiledata.cppщђџџџџџџџџPARASOLFileDataconst string get_record_coordf/home/pascal/depot/filedata/src/parasolfiledata.cppџџџџџџџџPARASOLFileDataoirecџџџџџџџџconst intџџџџlatџџџџџџџџ float&џџџџlonџџџџџџџџ float&џџџџvoidget_scalingf/home/pascal/depot/filedata/src/parasolfiledata.cppЗКџџџџџџџџPARASOLFileData‚€var_nameџџџџџџџџconst string&џџџџ slopeџџџџџџџџdouble&џџџџ offsetџџџџџџџџdouble&џџџџnb_bytesџџџџџџџџunsigned short&џџџџvoidget_scalingf/home/pascal/depot/filedata/src/parasolfiledata.cppМвџџџџџџџџPARASOLFileDatavar_idxџџџџџџџџconst intџџџџ slopeџџџџџџџџdouble&џџџџ offsetџџџџџџџџdouble&џџџџnb_bytesџџџџџџџџunsigned short&џџџџvoid*get_v_icol_neighboursf/home/pascal/depot/filedata/src/parasolfiledata.cpp‚ЌџџџџџџџџPARASOLFileData€irowџџџџџџџџconst intџџџџicolџџџџџџџџconst intџџџџdicol_minџџџџџџџџintџџџџdicol_maxџџџџџџџџintџџџџ v_icolџџџџџџџџvector< int >&џџџџvoid,get_viewing_directionsf/home/pascal/depot/filedata/src/parasolfiledata.cpp=џџџџџџџџPARASOLFileData …Ы€ipixџџџџџџџџ(const vector< int >&џџџџ v_obsџџџџџџџџ,vector< Observation >&џџџџvoid&grid_to_geolocationf/home/pascal/depot/filedata/src/parasolfiledata.cpp#џџџџџџџџPARASOLFileData€igrid[]џџџџџџџџconst int*џџџџlat_minmax[]џџџџџџџџ float*џџџџlon_minmax[]џџџџџџџџ float*џџџџvoid&grid_to_geolocationf/home/pascal/depot/filedata/src/parasolfiledata.cpp$*џџџџџџџџPARASOLFileData€irowџџџџџџџџconst intџџџџicolџџџџџџџџconst intџџџџlatџџџџџџџџ float&џџџџlonџџџџџџџџ float&џџџџvoid&grid_to_geolocationf/home/pascal/depot/filedata/src/parasolfiledata.cpp,.џџџџџџџџPARASOLFileDataigrid[]џџџџџџџџconst int*џџџџlatџџџџџџџџ float&џџџџlonџџџџџџџџ float&џџџџvoid&grid_to_geolocationf/home/pascal/depot/filedata/src/parasolfiledata.cpp02џџџџџџџџPARASOLFileDataigrid[]џџџџџџџџconst int*џџџџ pos[]џџџџџџџџ float*џџџџvoididata2igridf/home/pascal/depot/filedata/src/parasolfiledata.cppјџџџџџџџџPARASOLFileData €irecџџџџџџџџconst intџџџџigrid[]џџџџџџџџint*џџџџvoidigrid2idataf/home/pascal/depot/filedata/src/parasolfiledata.cppceџџџџџџџџPARASOLFileData ЦO€igrid[]џџџџџџџџconst int*џџџџirecџџџџџџџџint&џџџџvoidigrid2idataf/home/pascal/depot/filedata/src/parasolfiledata.cppgiџџџџџџџџPARASOLFileData зn€ igridџџџџџџџџ(const vector< int >&џџџџirecџџџџџџџџint&џџџџvoidinitf/home/pascal/depot/filedata/src/parasolfiledata.cpp$€џџџџџџџџPARASOLFileData€void(init_read_data_rangef/home/pascal/depot/filedata/src/parasolfiledata.cppXџџџџџџџџPARASOLFileData пA€entry_idxџџџџџџџџconst intџџџџ startџџџџџџџџ int*&џџџџ edgesџџџџџџџџ int*&џџџџrankџџџџџџџџint&џџџџboolis_earth_gridf/home/pascal/depot/filedata/src/parasolfiledata.cppt€џџџџџџџџPARASOLFileData irowџџџџџџџџconst intџџџџicolџџџџџџџџconst intџџџџboolis_file_loadedf/home/pascal/depot/filedata/src/parasolfiledata.cppдлџџџџџџџџPARASOLFileDataQrconst bool4is_geolocation_data_loadedf/home/pascal/depot/filedata/src/parasolfiledata.cpp')џџџџџџџџPARASOLFileData const boolBis_viewing_directions_data_loadedf/home/pascal/depot/filedata/src/parasolfiledata.cppџџџџџџџџPARASOLFileData€bool*load_geolocation_dataf/home/pascal/depot/filedata/src/parasolfiledata.cpp/?џџџџџџџџPARASOLFileData Лц€void"load_pix2data_mapf/home/pascal/depot/filedata/src/parasolfiledata.cppPrџџџџџџџџPARASOLFileDatavoidload_v_pixelf/home/pascal/depot/filedata/src/parasolfiledata.cpp@CџџџџџџџџPARASOLFileData€void8load_viewing_directions_dataf/home/pascal/depot/filedata/src/parasolfiledata.cppёџџџџџџџџPARASOLFileDatavoidparse_filenamef/home/pascal/depot/filedata/src/parasolfiledata.cppЋЮџџџџџџџџPARASOLFileDatadnishort_filenameџџџџџџџџconst string&џџџџvoidread_count_dataf/home/pascal/depot/filedata/src/parasolfiledata.cppќџџџџџџџџPARASOLFileData€bufџџџџџџџџ void*џџџџvar_nameџџџџџџџџconst char*џџџџ startџџџџџџџџint*џџџџ edgesџџџџџџџџint*џџџџrankџџџџџџџџintџџџџ void*read_count_dataf/home/pascal/depot/filedata/src/parasolfiledata.cpp!џџџџџџџџPARASOLFileDatacount_dataџџџџџџџџ void*џџџџentry_idxџџџџџџџџconst intџџџџ startџџџџџџџџint*џџџџ edgesџџџџџџџџint*џџџџrankџџџџџџџџintџџџџ void*read_dataf/home/pascal/depot/filedata/src/parasolfiledata.cpp ЈџџџџџџџџPARASOLFileData {data_bufџџџџџџџџ void*џџџџvar_nameџџџџџџџџconst char*џџџџ startџџџџџџџџint*џџџџ strideџџџџџџџџint*џџџџ edgesџџџџџџџџint*џџџџrankџџџџџџџџintџџџџ void* read_scaled_dataf/home/pascal/depot/filedata/src/parasolfiledata.cppЊњџџџџџџџџPARASOLFileData€scaled_dataџџџџџџџџdouble*џџџџvar_nameџџџџџџџџconst char*џџџџ startџџџџџџџџint*џџџџ edgesџџџџџџџџint*џџџџrankџџџџџџџџintџџџџdouble*set_grid_factorf/home/pascal/depot/filedata/src/parasolfiledata.cpp4VџџџџџџџџPARASOLFileData%y€void"~ PARASOLFileDataf/home/pascal/depot/filedata/src/parasolfiledata.cpp…џџџџџџџџPARASOLFileDataџџџџffiledata.hparasolleader.hparasoldata.h&satellitefiledata.h cmath cfloat hdfi.hb/home/pascal/depot/filedata/src/parasolfiledata.h%yЧŘџџџџ cmath†Ьfiledata.hХ)&satellitefiledata.hщ"Fзparasolleader.hF’сХ cfloatыx hdfi.h TСбb/home/pascal/depot/filedata/src/parasolfiledata.hуЎ^'parasoldata.hx;rb/home/pascal/depot/filedata/src/parasolfiledata.hџџџџџџџџџџџџPARASOLFileDatab/home/pascal/depot/filedata/src/parasolfiledata.h#Ј†@brief manages the reading of PARASOL files. @author Nicolas PASCALџџџџ"SatelliteFileDataXPARASOLFileDatab/home/pascal/depot/filedata/src/parasolfiledata.hхх?џџџџџџџџPARASOLFileDatanameџџџџџџџџconst string&џџџџmodeџџџџџџџџconst string&џџџџџџџџ4_get_viewing_directions_l1b/home/pascal/depot/filedata/src/parasolfiledata.h– –n @brief constucts the viewing directions observations for the given grid pixel for L1 products @param ipix 2D grid indices @param irec record indice matching ipix @param v_obs vector of observation(s). Can contains more than one for directional productsџџџџPARASOLFileDataipixџџџџџџџџ(const vector< int >&џџџџirecџџџџџџџџconst intџџџџ v_obsџџџџџџџџ,vector< Observation >&џџџџvoid4_get_viewing_directions_l2b/home/pascal/depot/filedata/src/parasolfiledata.h n @brief constucts the viewing directions observations for the given grid pixel for L23 products @param ipix 2D grid indices @param irec record indice matching ipix @param v_obs vector of observation(s). Can contains more than one for directional productsџџџџPARASOLFileDataipixџџџџџџџџ(const vector< int >&џџџџirecџџџџџџџџconst intџџџџ v_obsџџџџџџџџ,vector< Observation >&џџџџvoidcheck_filenameb/home/pascal/depot/filedata/src/parasolfiledata.hЃ Ѓ;џџџџџџџџPARASOLFileData short_filenameџџџџџџџџconst string&џџџџbool check_grid_coordb/home/pascal/depot/filedata/src/parasolfiledata.hЊ Њ@p @brief check if the given grid indices are valid @throw g_exception if indices are out of range. All indices start from 1 @param irow grid row indice @param icol grid column indiceџџџџPARASOLFileDatao irowџџџџџџџџconst intџџџџicolџџџџџџџџconst intџџџџvoidclose_data_fileb/home/pascal/depot/filedata/src/parasolfiledata.h‚џџџџџџџџPARASOLFileDatavoidclose_fileb/home/pascal/depot/filedata/src/parasolfiledata.hг гh @brief close an opened file (wether leader or data)џџџџPARASOLFileDataevoidcontain_datab/home/pascal/depot/filedata/src/parasolfiledata.hIIRр check if this file has data coincident with (lat,lon,time) @param lat the latitude of the event @param lon the longitude of the event @param time the time of the event. If -1., time test will be ignored @return true if this is the caseџџџџPARASOLFileDataџџџ€latџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџtimeџџџџџџџџconst double&џџџџconst boolcontain_datab/home/pascal/depot/filedata/src/parasolfiledata.hRRk> @brief check if this file has data coincident with (lat,lon,time) @param lat the latitude of the event @param lon the longitude of the event @param time the time of the event. If -1., time test will be ignored @param tolerance colocation tolerance. @return true if this is the caseџџџџPARASOLFileData хW€latџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџtimeџџџџџџџџconst double&џџџџtoleranceџџџџџџџџconst double&џџџџconst bool contain_locationb/home/pascal/depot/filedata/src/parasolfiledata.hZZB @brief check if this file has EVENTUALLY data coincident with (lat,lon) Actually, it only tests if (lat,lon) is contained in the data's bounding rectangle. @param lat the latitude of the event @param lon the longitude of the event @return true if this is the caseџџџџPARASOLFileData ЏЮ€latџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџconst bool contain_locationb/home/pascal/depot/filedata/src/parasolfiledata.hcc[h @brief check if this file has EVENTUALLY data coincident with (lat,lon) Actually, it only tests if (lat,lon) is contained in the data's bounding rectangle. @param lat the latitude of the event @param lon the longitude of the event @param tolerance colocation tolerance. @return true if this is the caseџџџџPARASOLFileDatalatџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџtoleranceџџџџџџџџconst double&џџџџconst boolcontain_pixelb/home/pascal/depot/filedata/src/parasolfiledata.hii0R @brief check if the parasol data contain the given pixel @param pix_idx the pixel indexes {line_index,column_index} @return true if the pixel is contained in the dataџџџџPARASOLFileDatapix_idxџџџџџџџџconst int*џџџџconst bool*free_geolocation_datab/home/pascal/depot/filedata/src/parasolfiledata.h88(n @brief free the sequences of lines and columns indexesџџџџPARASOLFileDataџџџ„void8free_viewing_directions_datab/home/pascal/depot/filedata/src/parasolfiledata.h__0ˆ @brief free the data requested for computing the viewing directionsџџџџPARASOLFileDataџџџ„void&geolocation_to_gridb/home/pascal/depot/filedata/src/parasolfiledata.h1 1Cв @brief get the grid indices corresponding to a point given by its (lat,lon) coordinates @param lat_lon [IN] the geolocation coordinates @param grid_idx [OUT] the indices in the POLDER grid. Format [irow,icol]. Indices start from 1џџџџPARASOLFileDataџџџ€lat_lonџџџџџџџџconst float*џџџџgrid_idxџџџџџџџџint*џџџџvoid&geolocation_to_gridb/home/pascal/depot/filedata/src/parasolfiledata.h; ;Vl @brief get the grid indices corresponding to a point given by its (lat,lon) coordinates @throw g_exception if (lat, lon) not valid Indices start from 1 @param lat [IN] latitude @param lon [IN] longitude @param irow [OUT] grid row indice. Starts from 1 @param icol [OUT] grid column indice. Starts from 1џџџџPARASOLFileDatalatџџџџџџџџconst floatџџџџlonџџџџџџџџconst floatџџџџirowџџџџџџџџint&џџџџicolџџџџџџџџint&џџџџvoidget_col_datab/home/pascal/depot/filedata/src/parasolfiledata.hŠ•џџџџџџџџPARASOLFileDataср unsigned short*$get_data_dimensionb/home/pascal/depot/filedata/src/parasolfiledata.hнн5( @brief access the size of the given parametre data @param var_idx the index of the variable (also known as parametre) @return a vector that contains the dimensions of the data in each direction (convention [Z,Y,X]). Use return_vector.size() to know the number of dimensionsџџџџPARASOLFileData€var_idxџџџџџџџџconst intџџџџvector< int >$get_data_dimensionb/home/pascal/depot/filedata/src/parasolfiledata.h‹‹:( @brief access the size of the given parametre data @param var_name the name of the variable (also known as parametre) @return a vector that contains the dimensions of the data in each direction (convention [Z,Y,X]). Use return_vector.size() to know the number of dimensionsџџџџPARASOLFileDataџџџvar_nameџџџџџџџџconst string&џџџџvector< int > get_entry_formatb/home/pascal/depot/filedata/src/parasolfiledata.hжж;| @brief retrieve the entry format for the given variable, using its index @param var_idx the index of the variable @return the entry format, or NULL if no entry with this name can be foundџџџџPARASOLFileDatavar_idxџџџџџџџџconst int&џџџџ$const EntryFormat* get_entry_formatb/home/pascal/depot/filedata/src/parasolfiledata.hww?Z @brief retrieve the entry format for the given variable @param var_name the name of the variable @return the entry format, or NULL if no entry with this name can be foundџџџџPARASOLFileDatavar_nameџџџџџџџџconst string&џџџџ$const EntryFormat*Bget_filter_relative_azimuth_angleb/home/pascal/depot/filedata/src/parasolfiledata.h(<д @brief compute the relative azimuth angle for any filter, using the parametres stored in the PARASOL L1B files This method is based on the formula given in the Appendix C of the PARASOL L1B Product Guide For PARASOL, the @a xj values are : -6:490P, -4:443NP, -3:1020NP, -2:565NP, 0:670P, 2:763NP, 3:765NP, 4:910NP, 6:865P @param view_zenith_angle_filter8 the view zenith angle for filter #8 @param relative_azimuth_angle_filter8 the relative azimuth angle for filter #8 @param delta_thetav_cosphi the Theta_v*Cos_Phi relative variation of viewing geometry between the filters in degrees @param delta_thetav_sinphi the Theta_v*Sin_Phi relative variation of viewing geometry between the filters in degrees @param xj index of desired filter. See Appendix C of the PARASOL L1B Product Guide for details @return the relative azimuth angle for the given filter in degreesџџџџPARASOLFileDatat2view_zenith_angle_filter8џџџџџџџџconst double&џџџџ<relative_azimuth_angle_filter8џџџџџџџџconst double&џџџџ&delta_thetav_cosphiџџџџџџџџconst double&џџџџ&delta_thetav_sinphiџџџџџџџџconst double&џџџџxjџџџџџџџџconst intџџџџconst double8get_filter_view_zenith_angleb/home/pascal/depot/filedata/src/parasolfiledata.h'Р @brief compute the view zenith angle for any filter, using the parametres stored in the PARASOL L1B files This method is based on the formula given in the Appendix C of the PARASOL L1B Product Guide For PARASOL, the @a xj values are : -6:490P, -4:443NP, -3:1020NP, -2:565NP, 0:670P, 2:763NP, 3:765NP, 4:910NP, 6:865P @param view_zenith_angle_filter8 the view zenith angle for filter #8 @param relative_azimuth_angle_filter8 the relative azimuth angle for filter #8 @param delta_thetav_cosphi the Theta_v*Cos_Phi relative variation of viewing geometry between the filters in degrees @param delta_thetav_sinphi the Theta_v*Sin_Phi relative variation of viewing geometry between the filters in degrees @param xj index of desired filter. See Appendix C of the PARASOL L1B Product Guide for details @return the view zenith angle for the given filter in degreesџџџџPARASOLFileData%2view_zenith_angle_filter8џџџџџџџџconst double&џџџџ<relative_azimuth_angle_filter8џџџџџџџџconst double&џџџџ&delta_thetav_cosphiџџџџџџџџconst double&џџџџ&delta_thetav_sinphiџџџџџџџџconst double&џџџџxjџџџџџџџџconst intџџџџconst doubleget_grid_latb/home/pascal/depot/filedata/src/parasolfiledata.hww4ж @brief return the latitude of the middle of the given row in the PARASOL grid @param irow the indice of the row to consider. If not given, return the maximum number of colums. Start at 1 @return the latitude of the middle of the rowџџџџPARASOLFileData5S irowџџџџџџџџconst intџџџџconst doubleget_indexb/home/pascal/depot/filedata/src/parasolfiledata.h––G @brief retrieve the record index (from 0) that contains the (lat,lon) point. If the given point isn't contained in the file, the method will return false, and idx will be set to -1 @param lat [IN] the latitude @param lon [IN] the longitude @param irec [OUT] indice of the record. Be careful starts at 0 here but at 2 in the PARASOL data @return true if the point has been found. false elseџџџџPARASOLFileDataџџџ€latџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџirecџџџџџџџџint&џџџџconst boolget_indexb/home/pascal/depot/filedata/src/parasolfiledata.h  if @brief retrieve the record index (from 0) that contains the (lat,lon) point. If the given point isn't contained in the file, the method will return false, and idx will be set to -1 @param lat [IN] the latitude @param lon [IN] the longitude @param irec [OUT] indice of the record. Be careful starts at 0 here but at 2 in the PARASOL data @param tolerance colocation tolerance. @return true if the point has been found. false elseџџџџPARASOLFileDatatlatџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџirecџџџџџџџџint&џџџџ(colocation_toleranceџџџџџџџџconst floatџџџџconst boolget_indexb/home/pascal/depot/filedata/src/parasolfiledata.hЈЈ7. @brief retrieve the record index (from 0) that contains the pixel pix_idx. If the given pixel isn't contained in the file, the method will return false, and irec will be set to -1 @param ipix [IN] the indexes (line,column) of the searched parasol pixel @param irec [OUT] indice of the record. Be careful starts at 0 here but at 2 in the PARASOL data @return true if the pixel has been found. false elseџџџџPARASOLFileData ipix[]џџџџџџџџconst int*џџџџirecџџџџџџџџint&џџџџconst boolget_indexb/home/pascal/depot/filedata/src/parasolfiledata.hЎЎ?Ђ @brief maps grid coordinates to the matching record indice @param igrid [IN] 2D grid coordinates [irow, icol] @param irec [OUT] indice of the record. Be careful starts at 0 here but at 2 in the PARASOL dataџџџџPARASOLFileDataipixџџџџџџџџ(const vector< int >&џџџџirecџџџџџџџџint&џџџџconst boolget_instrumentb/home/pascal/depot/filedata/src/parasolfiledata.hєњ˜ @brief access to the instrument code. -1 if unknown @return the instrumentџџџџPARASOLFileDataџџџ const intget_levelb/home/pascal/depot/filedata/src/parasolfiledata.hћš @brief access to the product level. -1 if unknown @return the product levelџџџџPARASOLFileData const intget_line_datab/home/pascal/depot/filedata/src/parasolfiledata.h†‰џџџџџџџџPARASOLFileData unsigned short*"get_max_directionb/home/pascal/depot/filedata/src/parasolfiledata.hии( @brief access to the maximal number of directions that can be found in a PARASOL file @return the max number of PARASOL directionsџџџџPARASOLFileData const intget_nb_datab/home/pascal/depot/filedata/src/parasolfiledata.h00а @brief access to the number of the data record contained in the file @return the number of data recordџџџџPARASOLFileDataconst intget_ncolb/home/pascal/depot/filedata/src/parasolfiledata.hdd1О @brief access to the number of valid columns of the PARASOL grid for this product @param irow the indice of the row to consider. If not given, return the maximum number of colums. Start at 1 @return the number of columnsџџџџPARASOLFileData irowџџџџџџџџconst intџџџџconst intget_ncolb/home/pascal/depot/filedata/src/parasolfiledata.hjj.8 @brief access to the number of valid columns of the PARASOL grid for this product at a given latitude @param lat a latitude @return the number of columnsџџџџPARASOLFileData latџџџџџџџџconst doubleџџџџconst intget_ndir_datab/home/pascal/depot/filedata/src/parasolfiledata.hŽŽ)є @brief accessor to the number of available directions data buffer @return the number of available directions data bufferџџџџPARASOLFileData Гџ unsigned char*4get_nearest_point_distanceb/home/pascal/depot/filedata/src/parasolfiledata.hЩЩmџџџџџџџџPARASOLFileDatalatџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџcoloc_toleranceџџџџџџџџconst floatџџџџconst float(get_neighbours_coordb/home/pascal/depot/filedata/src/parasolfiledata.h~ ~І ’ @brief computes the list of grid coordinates of the pixels that are neighbours of [irow, icol], in the area [d_irow, d_icol] All indices in this method start at 1. @warning as the lines in the [irow + dirow_min -> irow + d_irow_max] can have different number of valid columns in an sinusoidal grid, @a v_icol is returned with the maximum number of columns. As a consequence, some returned [irow, icol] pixels can be invalid. For example, in the PARASOL full resolution grid, if the 2 first rows are requested for the central column 3240, with dicol_min = -3, dicol_max = 3, it will return v_irow = [1, 2] and v_icol = [3237, 3238, 3239, 3240, 3241, 3242, 3243]. First line has 4 valid pixels and second has 10. The biggest one is onsidered @param irow [IN] grid row indice @param icol [IN] grid column indice @param dirow_min [IN] number of north rows to consider (<=0) @param dirow_max [IN] number of south rows to consider @param dicol_min [IN] number of east columns to consider (<=0) @param dicol_max [IN] number of west columns to consider @param v_irow [OUT] indices of the neighbour pixels along rows (sorted increasing) @param v_icol [OUT] indices of the neighbour pixels along columns (sorted increasing)џџџџPARASOLFileDataџџџ€irowџџџџџџџџconst intџџџџicolџџџџџџџџconst intџџџџdirow_minџџџџџџџџintџџџџdirow_maxџџџџџџџџintџџџџdicol_minџџџџџџџџintџџџџdicol_maxџџџџџџџџintџџџџ v_irowџџџџџџџџvector< int >&џџџџ v_icolџџџџџџџџvector< int >&џџџџvoidget_nrowb/home/pascal/depot/filedata/src/parasolfiledata.h^^Ю @brief access to the number of lines of the PARASOL grid for this product @return the number of linesџџџџPARASOLFileDataџџџ const int$get_orbit_cycle_nbb/home/pascal/depot/filedata/src/parasolfiledata.h!Ў @brief access to the orbit cycle number. -1 if unknown @return the orbit cycle numberџџџџPARASOLFileData const intget_orbit_nbb/home/pascal/depot/filedata/src/parasolfiledata.h"(А @brief access to the orbit number of the cycle. -1 if unknown @return the orbit numberџџџџPARASOLFileDataџџџ const intget_pixelb/home/pascal/depot/filedata/src/parasolfiledata.hо о0’ @brief read the pixel (lin,col) of the given record @param irec [IN] indice of the record. Be careful starts at 0 here but at 2 in the PARASOL data @param ipix [OUT] 2D grid coordinates [irow, icol]џџџџPARASOLFileData irecџџџџџџџџconst int&џџџџ ipix[]џџџџџџџџint*џџџџvoidget_pixel_coordb/home/pascal/depot/filedata/src/parasolfiledata.h=@Ж @brief retrieve the coordinates of a pixel using its index @param ipix [IN] index of the pixel @param lat [OUT] latitude of the pixel @param lon [OUT] longitude of the pixel @param time [OUT] timestamp of the pixelџџџџPARASOLFileDatasipixџџџџџџџџ(const vector< int >&џџџџlatџџџџџџџџ float&џџџџlonџџџџџџџџ float&џџџџtimeџџџџџџџџdouble&џџџџvoid&get_processing_lineb/home/pascal/depot/filedata/src/parasolfiledata.h† @brief access to the processing line. @return the processing lineџџџџPARASOLFileData (const ProcessingLine0get_processing_line_charb/home/pascal/depot/filedata/src/parasolfiledata.h/д @brief access to the processing line, using the PARASOL character representation, like 'O' for "ocean color", 'R' for "radiation budget"... return a space character if undefined. @return a character representing the processing lineџџџџPARASOLFileData const char4get_processing_line_stringb/home/pascal/depot/filedata/src/parasolfiledata.h  3D @brief access to the processing line, using a string representation, like "ocean color", "radiation budget"... @return a string representing the processing lineџџџџPARASOLFileDatai const stringget_productb/home/pascal/depot/filedata/src/parasolfiledata.hФ @brief access to the product code (A,B,C or space character if unknown) @return the product codeџџџџPARASOLFileData const charget_radixb/home/pascal/depot/filedata/src/parasolfiledata.hяя` @brief access to the radix of the file. The 'Radix' is the filename with leader or data indicator removed (ie the ending 'L' or 'D' character). @return the radix of the fileџџџџPARASOLFileDataconst string get_record_coordb/home/pascal/depot/filedata/src/parasolfiledata.h Ar @brief retrieve the coordinates of the record at index @a irec The output coordinates are given for the center of the pixel @param irec [IN] indice of the record. Be careful starts at 0 here but at 2 in the PARASOL data @param lat [OUT] the latitude of the record @param lon [OUT] the longitude of the recordџџџџPARASOLFileDataџџџ€irecџџџџџџџџconst intџџџџlatџџџџџџџџ float&џџџџlonџџџџџџџџ float&џџџџvoidget_record_timeb/home/pascal/depot/filedata/src/parasolfiledata.hі^ @brief access the measure time of the record @a irec @param irec [IN] indice of the record. Be careful starts at 0 here but at 2 in the PARASOL data @return the TAI 93 timeџџџџPARASOLFileData€irecџџџџџџџџconst int&џџџџconst double&get_reprocessing_nbb/home/pascal/depot/filedata/src/parasolfiledata.h)0В @brief access to the reprocessing number. -1 if unknown @return the reprocessing numberџџџџPARASOLFileData const charget_scalingb/home/pascal/depot/filedata/src/parasolfiledata.hЯ Я`і @brief read the calibration of a parameter, using its index @warning DON'T USE THIS METHOD for accessing the record number, the record length, line nb, col nb, Pixel Altitude or Land/Water/Mixed indicator. They are not supposed to have a number. Read them using their name instead. Actually, this method is not supposed to be used as it. Prefer the get_scaling one that uses the parameter name. @param var_idx the index of the parameter. This index is called the "parametre number" in the Parasol DPC @param slope the scaling slope @param offset the scaling offset @param nb_bytes the number of bytes used by this parameter countџџџџPARASOLFileDatanvar_idxџџџџџџџџconst intџџџџ slopeџџџџџџџџdouble&џџџџ offsetџџџџџџџџdouble&џџџџnb_bytesџџџџџџџџunsigned short&џџџџvoidget_scalingb/home/pascal/depot/filedata/src/parasolfiledata.hq qeд @brief read the calibration of a parameter, using its name @param var_name the name of the parameter @param slope the scaling slope @param offset the scaling offset @param nb_bytes the number of bytes used by this parameter countџџџџPARASOLFileDatavar_nameџџџџџџџџconst string&џџџџ slopeџџџџџџџџdouble&џџџџ offsetџџџџџџџџdouble&џџџџnb_bytesџџџџџџџџunsigned short&џџџџvoid6get_software_version_numberb/home/pascal/depot/filedata/src/parasolfiledata.hER @brief accessor to the version of the software used to process the file @return the software version number as a 6 characters stringџџџџPARASOLFileDataџџџ const string*get_v_icol_neighboursb/home/pascal/depot/filedata/src/parasolfiledata.hˆ ˆt( @brief computes the list of grid coordinates of the pixels that are neighbours of [irow, icol], in the area +/- [d_irow, d_icol] All indices in this method start at 1 @param irow [IN] grid row indice @param icol [IN] grid column indice @param dicol_min [IN] number of east columns to consider (<=0) @param dicol_max [IN] number of west columns to consider @param v_icol [OUT] a sorted list of unique columns indices, mostly [icol + dicol_min -> icol + dicol_max], but also treats the case of crossing the change date meridianџџџџPARASOLFileDatairowџџџџџџџџconst intџџџџicolџџџџџџџџconst intџџџџdicol_minџџџџџџџџintџџџџdicol_maxџџџџџџџџintџџџџ v_icolџџџџџџџџvector< int >&џџџџvoid,get_viewing_directionsb/home/pascal/depot/filedata/src/parasolfiledata.hSSa @brief constucts the viewing directions observations for the given grid pixel @param ipix 2D grid indices. @param v_obs vector of observation(s). Can contains more than one for directional productsџџџџPARASOLFileDataipixџџџџџџџџ(const vector< int >&џџџџ v_obsџџџџџџџџ,vector< Observation >&џџџџvoidget_vindexb/home/pascal/depot/filedata/src/parasolfiledata.hУЧŠ @brief build the list of indices of pixels that are in colocation tolerance, sorted by increasing distance to (lat,lon) If (lat,lon) is not found or out of the colocalisation_frame, returns an empty vector @param lat the latitude @param lon the longitude @param colocation_tolerance the acceptable bias (in km or degrees. Supposed to be in, a plane approximation) between [lat,lon] and the nearest data point. @return the list of indices of pixelsџџџџPARASOLFileDatav_indexџџџџџџџџ2vector< vector < int > >&џџџџlatџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџ(colocation_toleranceџџџџџџџџconst floatџџџџvoid$greater_comparatorb/home/pascal/depot/filedata/src/parasolfiledata.hAALџџџџџџџџNumTypeџџџџPARASOLFileDataˆiџџџџџџџџNumTypeџџџџjџџџџџџџџNumTypeџџџџbool&grid_to_geolocationb/home/pascal/depot/filedata/src/parasolfiledata.hC C[N @brief get the lat,lon extrema for a grid point if the indexes are out of the grid or not valid, lat_minmax and lon_minmax are set to -1. @param igrid the indexes in the POLDER grid (line,col). Starts at 1 @param lat_minmax 2 elements array containing the latitude extrema. Mustn't be NULL @param lon_minmax 2 elements array containing the longitude extrema. Can be NULL. In this case, only lat_minmax will be computedџџџџPARASOLFileDataџџџ€igrid[]џџџџџџџџconst int*џџџџlat_minmax[]џџџџџџџџ float*џџџџlon_minmax[]џџџџџџџџ float*џџџџvoid&grid_to_geolocationb/home/pascal/depot/filedata/src/parasolfiledata.hI I?D @brief get the geolocation for a grid point center @param igrid indices in the POLDER grid (line,col). Starts at 1 @param pos (lat, lon) at center of grid cellџџџџPARASOLFileDataџџџ€igrid[]џџџџџџџџconst int*џџџџ pos[]џџџџџџџџ float*џџџџvoid&grid_to_geolocationb/home/pascal/depot/filedata/src/parasolfiledata.hP PKš @brief get the geolocation for a grid point center @param igrid indices in the POLDER grid (line,col). Starts at 1 @param lat latitude at center of grid cell @param lon longitude at center of grid cellџџџџPARASOLFileData€igrid[]џџџџџџџџconst int*џџџџlatџџџџџџџџ float&џџџџlonџџџџџџџџ float&џџџџvoid&grid_to_geolocationb/home/pascal/depot/filedata/src/parasolfiledata.hY YWЦ @brief get the geolocation for a grid point center All indices start from 1 @param irow grid row indice @param icol grid column indice @param lat latitude at center of grid cell @param lon longitude at center of grid cellџџџџPARASOLFileDatairowџџџџџџџџconst intџџџџicolџџџџџџџџconst intџџџџlatџџџџџџџџ float&џџџџlonџџџџџџџџ float&џџџџvoididata2igridb/home/pascal/depot/filedata/src/parasolfiledata.h… …3” @brief maps a record indice to its grid coordinates @param irec [IN] indice of the record. Be careful starts at 0 here but at 2 in the PARASOL data @param igrid [OUT] 2D grid coordinates [irow, icol]џџџџPARASOLFileDatairecџџџџџџџџconst intџџџџigrid[]џџџџџџџџint*џџџџvoidigrid2idatab/home/pascal/depot/filedata/src/parasolfiledata.hД Д5Ђ @brief maps grid coordinates to the matching record indice @param igrid [IN] 2D grid coordinates [irow, icol] @param irec [OUT] indice of the record. Be careful starts at 0 here but at 2 in the PARASOL dataџџџџPARASOLFileDataigrid[]џџџџџџџџconst int*џџџџirecџџџџџџџџint&џџџџvoidigrid2idatab/home/pascal/depot/filedata/src/parasolfiledata.hК К<Ђ @brief maps grid coordinates to the matching record indice @param igrid [IN] 2D grid coordinates [irow, icol] @param irec [OUT] indice of the record. Be careful starts at 0 here but at 2 in the PARASOL dataџџџџPARASOLFileData igridџџџџџџџџ(const vector< int >&џџџџirecџџџџџџџџint&џџџџvoidinitb/home/pascal/depot/filedata/src/parasolfiledata.hЁ ЁџџџџџџџџPARASOLFileDataavoid(init_read_data_rangeb/home/pascal/depot/filedata/src/parasolfiledata.hК КY˜ @brief initialize if needed the reading range of the read_data/read_scaled_data/read_count_data methods @warning If start and edges are NULL, the method does the allocation itself. In this case, the caller must free the memory using the delete[] operator. Also, if rank is set to -1, the method sets it to the good value. @param entry_idx index of the entry to be read @param start the start indexes of the data to read. @param edges the number of data to read along each direction. @param rank the size of the start and edges arrays @return true if the method does the allocationsџџџџPARASOLFileData ИL€entry_idxџџџџџџџџconst intџџџџ startџџџџџџџџ int*&џџџџ edgesџџџџџџџџ int*&џџџџrankџџџџџџџџint&џџџџbool,init_viewing_directionb/home/pascal/depot/filedata/src/parasolfiledata.hŸ Ÿ!а @brief preload the requested data buffers for sppeding up the computations of pixels viewing directionsџџџџPARASOLFileDataџџџ€void&is_data_file_openedb/home/pascal/depot/filedata/src/parasolfiledata.hƒ…џџџџџџџџPARASOLFileDataconst boolis_earth_gridb/home/pascal/depot/filedata/src/parasolfiledata.hq q=r @brief test if the given grid indices represent an earth pixel (is it inside the sinusoidal grid) All indices start from 1 @param irow grid row indice @param icol grid column indiceџџџџPARASOLFileDataџџџ irowџџџџџџџџconst intџџџџicolџџџџџџџџconst intџџџџboolis_file_loadedb/home/pascal/depot/filedata/src/parasolfiledata.hЯЯє @brief check if a file (wether leader or data) is currently opened @return true if the leader and/or data file is openedџџџџPARASOLFileData const bool4is_geolocation_data_loadedb/home/pascal/depot/filedata/src/parasolfiledata.hAA9њ @brief check if the lines and columns indexes have already been loaded @return true if lines and columns indexes are loadedџџџџPARASOLFileData$const boolBis_viewing_directions_data_loadedb/home/pascal/depot/filedata/src/parasolfiledata.hWW4Ў @brief test if the data requested for computing the viewing directions has been loadedџџџџPARASOLFileDatabool*load_geolocation_datab/home/pascal/depot/filedata/src/parasolfiledata.h44(n @brief load the sequences of lines and columns indexesџџџџPARASOLFileDatavoid"load_pix2data_mapb/home/pascal/depot/filedata/src/parasolfiledata.hdd%ъ @brief build the table that maps the gridded pixels indices to their data representation Most of time, it will be exactly the same, but for instance, in the PARASOL data, it will maps the gridded pixels indices to their matching record numberџџџџPARASOLFileDatavoidload_v_pixelb/home/pascal/depot/filedata/src/parasolfiledata.h< <B @brief load the list data pixelsџџџџPARASOLFileDatavoid8load_viewing_directions_datab/home/pascal/depot/filedata/src/parasolfiledata.h[[0ˆ @brief load the data requested for computing the viewing directionsџџџџPARASOLFileDatavoidopen_data_fileb/home/pascal/depot/filedata/src/parasolfiledata.h{~D @brief opens the data for readingџџџџPARASOLFileDatavoidparse_filenameb/home/pascal/depot/filedata/src/parasolfiledata.hЂ Ђ5џџџџџџџџPARASOLFileData ˜š€short_filenameџџџџџџџџconst string&џџџџvoid*print_scaling_factorsb/home/pascal/depot/filedata/src/parasolfiledata.hтфn @brief print out the scaling factors of all parametresџџџџPARASOLFileData void,print_spatio_temp_charb/home/pascal/depot/filedata/src/parasolfiledata.hшъž @brief print out the spatio temporal characteristics as set in the leader fileџџџџPARASOLFileData_void$print_techno_paramb/home/pascal/depot/filedata/src/parasolfiledata.hю№ @brief print out the technological paramaters as set in the leader fileџџџџPARASOLFileData ЏJ€voidread_count_datab/home/pascal/depot/filedata/src/parasolfiledata.hЦЦt @brief fill the buffer @a data with the values read in the PARASOL file for the given parameter (using its index). The filled buffer has only one dimension. So, for accessing to the value of a given direction (if you have load all directions values) you must use the formula : <b>data[ record_index*nb_directions + direction_index ]</b>, record_index and direction_index starting at 0. @param data the buffer to fill. If NULL, the method does the needed allocations @param var_idx the variable index @param start the start indexes of the data to read. @param edges the number of data to read along each direction. @param rank the size of the start and edges arrays @return the pointer to the data bufferџџџџPARASOLFileDataџџџ€dataџџџџџџџџ void*џџџџvar_idxџџџџџџџџconst intџџџџ startџџџџџџџџint*џџџџ edgesџџџџџџџџint*џџџџrankџџџџџџџџintџџџџ void*read_count_datab/home/pascal/depot/filedata/src/parasolfiledata.hГГ{d @brief fill the buffer @a data with the values read in the PARASOL file for the given parameter (using its index). The filled buffer has only one dimension. So, for accessing to the value of a given direction (if you have load all directions values) you must use the formula : <b>data[ record_index*nb_directions + direction_index ]</b>, record_index and direction_index starting at 0. The returned buffer is a 1D linearized array, even if the read data have 2D. To know the real dimensions, you can use the "get_data_dimension" method that will return a vector containing the real dimension of the data, and access to one value can be done as y_index*X_DIM+x_index. @n Let's see a little example : reading the dqx of a L1_B file @n @code string param="dqx"; unsigned short* bit_data=NULL; // The dqx bitfield is coded on 2 bytes. So on, use an unsigned short array to read it. Set it to NULL to delegate the buffer allocation to the read_data method // read the dimensions of the variable data : for this parametre, has 2 ones, [nb_data_record,NB_PARASOL_DIRECTIONS] vector<int> dimensions=pfd.get_data_dimension(param); int nb_data_record=dimensions[0]; int nb_viewing_directions=dimensions[1]; // read the data. The dqx is a bitfield, so use the read_count_data method : scaling is not needed (and will produce invalid data) bit_data=static_cast<unsigned short*>(pfd.read_count_data(bit_data,param.c_str())); // print out the values if (bit_data!=NULL) { if (show_val_display) { cout<<"Record\tbits"<<endl; for (int i = 0 ; i<nb_data;++i) { cout<<i; for (int j=0;j < nb_viewing_directions;++j) cout<<"\t"<<MyTools::to_bit(&bit_data[i*nb_viewing_directions+j],2); // Use the MyTools::to_bit method to print out bitfield data cout<<endl; } } } // free the buffer once used delete[] bit_data; bit_data=NULL; @endcode @param data the buffer to fill. If NULL, the method does the needed allocations @param var_name the variable name @param start the start indexes of the data to read. @param edges the number of data to read along each direction. @param rank the size of the start and edges arrays @return the pointer to the data bufferџџџџPARASOLFileDataџџџ€dataџџџџџџџџ void*џџџџvar_nameџџџџџџџџconst char*џџџџ startџџџџџџџџint*џџџџ edgesџџџџџџџџint*џџџџrankџџџџџџџџintџџџџ void*read_datab/home/pascal/depot/filedata/src/parasolfiledata.h+ +„!V @brief read the data and apply a scaling to them. This method implements the interface of filedata If the read data is a physical value, it will return it as double. If the variable is a bitfield, it will return it as count (unscaled). You can used unsigned char to decode it. @warning at this time, @a stride parameter is ignored. The returned buffer is a 1D linearized array, even if the read data have 2D. To know the real dimensions, you can use the "get_data_dimension" method that will return a vector containing the real dimension of the data, and access to one value can be done as y_index*X_DIM+x_index.@n Let's see a little example : reading the sequence number of a L1_B file, and print them out @n @code // Initialize the PARASOL file instance PARASOLFileData pfd(filename); string param="seq_nb"; cout<<"---------- Extract Parameter "<<param<<" ----------"<<endl; // read the dimensions of the variable data : for this parametre, has 2 ones [nb_data_record],NB_PARASOL_DIRECTIONS] vector<int> dimensions=pfd.get_data_dimension(param); int nb_data_record=dimensions[0]; int nb_viewing_directions=dimensions[1]; cout<<"Dimensions : ["<<dimensions[0]<<","<<dimensions[1]<<"]"<<endl; cout<<"---------------------------------------------------"<<endl; // read the data signed short* data=NULL; // Set the data buffer to NULL to delegate its allocation to the read_data method data=static_cast<signed short*>(pfd.read_data(data,param.c_str())); // print out the values if (data!=NULL) { if (show_val_display) { for (int j = 0 ; j<nb_data_record;++j) { cout<<"Record #"<<j<<endl; for (int i = 0 ; i<nb_viewing_directions;++i) { cout<<"\t"<<data[j*nb_viewing_directions+i]; } cout<<endl; } } } // free the buffer once used delete[] data; data=NULL; @endcode Another example : reading the dqx of the first viewing direction of a L1_B file, and print them out @n @code // Initialize the PARASOL file instance PARASOLFileData pfd(filename); string param="dqx"; cout<<"---------- Extract Parameter "<<param<<" ----------"<<endl; // read the dimensions of the variable data : for this parametre, has 2 ones [nb_data_record],NB_PARASOL_DIRECTIONS] vector<int> dimensions=pfd.get_data_dimension(param); int nb_data_record=dimensions[0]; int nb_viewing_directions=dimensions[1]; cout<<"Dimensions : ["<<dimensions[0]<<","<<dimensions[1]<<"]"<<endl; cout<<"---------------------------------------------------"<<endl; // read the data -> set the range of the data to read int start[]={0,4}; // means : start to read the data from the first record (0), and from the 5th viewing direction (4) int edges[]={-1,1}; // means : read all the records (-1 is a kind of metaselector), and read only one viewing direction value (1) signed short* data=NULL; // Set the data buffer to NULL to delegate its allocation to the read_data method data=static_cast<signed short*>(pfd.read_data(data,param.c_str())); // print out the values if (data!=NULL) { if (show_val_display) { cout<<"Record\tbits"<<endl; for (int i = 0 ; i<nb_data_record];++i) cout<<i<<"\t"<<MyTools::to_bit(&ushort_count_data[i],2)<<endl; } } // free the buffer once used delete[] data; data=NULL; @endcode @param data a buffer that will contain the data. @param var_name the variable name @param start the start indexes of the data to read. Indexes of -1 are considered as metacharacters and will be replaced by 0. Actually, if you read a directionnal parametre, start is [start_record_index, start_direction] @param stride step between 2 read values (ignored at this time : 1 used by default)0. @param edges the number of data to read along each direction. Indexes of -1 are considered as metacharacters and will be replaced by the maximum number of values. Actually, if you read a directionnal parametre, edges is [nb_record_to_read, nb_direction_to_read] @param rank the size of the start and edges arrays : 1 for undirectionnal parametres, and 2 for directionnal ones. This parametre is not mandatory : if not specified, the method computes it. @return the pointer to the data buffer @return the pointer to dataџџџџPARASOLFileData*dataџџџџџџџџ void*џџџџvar_nameџџџџџџџџconst char*џџџџ startџџџџџџџџint*џџџџ strideџџџџџџџџint*џџџџ edgesџџџџџџџџint*џџџџrankџџџџџџџџintџџџџ void* read_scaled_datab/home/pascal/depot/filedata/src/parasolfiledata.hп пЮ @brief read the data and apply the scaling to it. @warning all scaled data are returned in a double format. @warning at this time, @a start, @a stride and @a edges are ignored. You can only read the whole data of a variable The filled buffer has only one dimension. So, for accessing to the value of a given direction, you must use the formula : <b>data[ record_index*nb_directions + direction_index ]</b>, record_index and direction_index starting at 0. In this case, for one record, there always will be 16 directionnal values (16 is the maximal number of available PARASOL directions), and the unavailable directions values will be set to -1. You can also use the "get_data_dimension" method that will return a vector containing the real dimension of the data, and access to one value can be done as y_index*X_DIM+x_index.@n Let's see a little example : read the sequence number of a L1_B file, and print them out @n @code // Initialize the PARASOL file instance PARASOLFileData pfd(filename); string param="seq_nb"; cout<<"---------- Extract Parameter "<<param<<" ----------"<<endl; // read the dimensions of the variable data : for this parametre, has 2 ones [nb_data_record],NB_PARASOL_DIRECTIONS] vector<int> dimensions=pfd.get_data_dimension(param); int nb_data_record=dimensions[0]; int nb_viewing_directions=dimensions[1]; cout<<"Dimensions : ["<<dimensions[0]<<","<<dimensions[1]<<"]"<<endl; cout<<"---------------------------------------------------"<<endl; // read the data signed short* data=NULL; // Set the data buffer to NULL to delegate its allocation to the read_data method data=static_cast<signed short*>(pfd.read_scaled_data(data,param.c_str())); // print out the values if (data!=NULL) { if (show_val_display) { for (int j = 0 ; j<nb_data_record;++j) { cout<<"Record #"<<j<<endl; for (int i = 0 ; i<nb_viewing_directions;++i) { cout<<"\t"<<data[j*nb_viewing_directions+i]; } cout<<endl; } } } // free the buffer once used delete[] data; data=NULL; @endcode @param data a buffer of double values that will contain the data. If NULL, the method does the needed allocations. @param var_name the variable name @param start the start index. If NULL will be 0 @param edges the number of values to read. If NULL will be the whole data @return the pointer to dataџџџџPARASOLFileDatadataџџџџџџџџdouble*џџџџvar_nameџџџџџџџџconst char*џџџџ startџџџџџџџџint*џџџџ edgesџџџџџџџџint*џџџџrankџџџџџџџџintџџџџdouble*set_grid_factorb/home/pascal/depot/filedata/src/parasolfiledata.hА АЦ @brief set the PARASOL grid reduction factor depending of the product. The definition of the reduction factor is : <i>factor = full_resolution_grid_x_max/product_grid_x_max = full_resolution_grid_y_max/product_grid_y_max</i>џџџџPARASOLFileDataџџџ€void"~ PARASOLFileDatab/home/pascal/depot/filedata/src/parasolfiledata.hщщџџџџџџџџPARASOLFileDataџџџџclose_data_fileb/home/pascal/depot/filedata/src/parasolfiledata.h‚џџџџџџџџPARASOLFileDatavoidget_col_datab/home/pascal/depot/filedata/src/parasolfiledata.hŠ•џџџџџџџџPARASOLFileDataср unsigned short*Bget_filter_relative_azimuth_angleb/home/pascal/depot/filedata/src/parasolfiledata.h(<д @brief compute the relative azimuth angle for any filter, using the parametres stored in the PARASOL L1B files This method is based on the formula given in the Appendix C of the PARASOL L1B Product Guide For PARASOL, the @a xj values are : -6:490P, -4:443NP, -3:1020NP, -2:565NP, 0:670P, 2:763NP, 3:765NP, 4:910NP, 6:865P @param view_zenith_angle_filter8 the view zenith angle for filter #8 @param relative_azimuth_angle_filter8 the relative azimuth angle for filter #8 @param delta_thetav_cosphi the Theta_v*Cos_Phi relative variation of viewing geometry between the filters in degrees @param delta_thetav_sinphi the Theta_v*Sin_Phi relative variation of viewing geometry between the filters in degrees @param xj index of desired filter. See Appendix C of the PARASOL L1B Product Guide for details @return the relative azimuth angle for the given filter in degreesџџџџPARASOLFileDatat2view_zenith_angle_filter8џџџџџџџџconst double&џџџџ<relative_azimuth_angle_filter8џџџџџџџџconst double&џџџџ&delta_thetav_cosphiџџџџџџџџconst double&џџџџ&delta_thetav_sinphiџџџџџџџџconst double&џџџџxjџџџџџџџџconst intџџџџconst double8get_filter_view_zenith_angleb/home/pascal/depot/filedata/src/parasolfiledata.h'Р @brief compute the view zenith angle for any filter, using the parametres stored in the PARASOL L1B files This method is based on the formula given in the Appendix C of the PARASOL L1B Product Guide For PARASOL, the @a xj values are : -6:490P, -4:443NP, -3:1020NP, -2:565NP, 0:670P, 2:763NP, 3:765NP, 4:910NP, 6:865P @param view_zenith_angle_filter8 the view zenith angle for filter #8 @param relative_azimuth_angle_filter8 the relative azimuth angle for filter #8 @param delta_thetav_cosphi the Theta_v*Cos_Phi relative variation of viewing geometry between the filters in degrees @param delta_thetav_sinphi the Theta_v*Sin_Phi relative variation of viewing geometry between the filters in degrees @param xj index of desired filter. See Appendix C of the PARASOL L1B Product Guide for details @return the view zenith angle for the given filter in degreesџџџџPARASOLFileData%2view_zenith_angle_filter8џџџџџџџџconst double&џџџџ<relative_azimuth_angle_filter8џџџџџџџџconst double&џџџџ&delta_thetav_cosphiџџџџџџџџconst double&џџџџ&delta_thetav_sinphiџџџџџџџџconst double&џџџџxjџџџџџџџџconst intџџџџconst doubleget_instrumentb/home/pascal/depot/filedata/src/parasolfiledata.hєњ˜ @brief access to the instrument code. -1 if unknown @return the instrumentџџџџPARASOLFileDataџџџ const intget_levelb/home/pascal/depot/filedata/src/parasolfiledata.hћš @brief access to the product level. -1 if unknown @return the product levelџџџџPARASOLFileData const intget_line_datab/home/pascal/depot/filedata/src/parasolfiledata.h†‰џџџџџџџџPARASOLFileData unsigned short*$get_orbit_cycle_nbb/home/pascal/depot/filedata/src/parasolfiledata.h!Ў @brief access to the orbit cycle number. -1 if unknown @return the orbit cycle numberџџџџPARASOLFileData const intget_orbit_nbb/home/pascal/depot/filedata/src/parasolfiledata.h"(А @brief access to the orbit number of the cycle. -1 if unknown @return the orbit numberџџџџPARASOLFileDataџџџ const intget_pixel_coordb/home/pascal/depot/filedata/src/parasolfiledata.h=@Ж @brief retrieve the coordinates of a pixel using its index @param ipix [IN] index of the pixel @param lat [OUT] latitude of the pixel @param lon [OUT] longitude of the pixel @param time [OUT] timestamp of the pixelџџџџPARASOLFileDatasipixџџџџџџџџ(const vector< int >&џџџџlatџџџџџџџџ float&џџџџlonџџџџџџџџ float&џџџџtimeџџџџџџџџdouble&џџџџvoid&get_processing_lineb/home/pascal/depot/filedata/src/parasolfiledata.h† @brief access to the processing line. @return the processing lineџџџџPARASOLFileData (const ProcessingLineget_productb/home/pascal/depot/filedata/src/parasolfiledata.hФ @brief access to the product code (A,B,C or space character if unknown) @return the product codeџџџџPARASOLFileData const charget_record_timeb/home/pascal/depot/filedata/src/parasolfiledata.hі^ @brief access the measure time of the record @a irec @param irec [IN] indice of the record. Be careful starts at 0 here but at 2 in the PARASOL data @return the TAI 93 timeџџџџPARASOLFileData€irecџџџџџџџџconst int&џџџџconst double&get_reprocessing_nbb/home/pascal/depot/filedata/src/parasolfiledata.h)0В @brief access to the reprocessing number. -1 if unknown @return the reprocessing numberџџџџPARASOLFileData const char6get_software_version_numberb/home/pascal/depot/filedata/src/parasolfiledata.hER @brief accessor to the version of the software used to process the file @return the software version number as a 6 characters stringџџџџPARASOLFileDataџџџ const stringget_vindexb/home/pascal/depot/filedata/src/parasolfiledata.hУЧŠ @brief build the list of indices of pixels that are in colocation tolerance, sorted by increasing distance to (lat,lon) If (lat,lon) is not found or out of the colocalisation_frame, returns an empty vector @param lat the latitude @param lon the longitude @param colocation_tolerance the acceptable bias (in km or degrees. Supposed to be in, a plane approximation) between [lat,lon] and the nearest data point. @return the list of indices of pixelsџџџџPARASOLFileDatav_indexџџџџџџџџ2vector< vector < int > >&џџџџlatџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџ(colocation_toleranceџџџџџџџџconst floatџџџџvoid$greater_comparatorb/home/pascal/depot/filedata/src/parasolfiledata.hAALџџџџџџџџNumTypeџџџџPARASOLFileDataˆiџџџџџџџџNumTypeџџџџjџџџџџџџџNumTypeџџџџbool&is_data_file_openedb/home/pascal/depot/filedata/src/parasolfiledata.hƒ…џџџџџџџџPARASOLFileDataconst boolopen_data_fileb/home/pascal/depot/filedata/src/parasolfiledata.h{~D @brief opens the data for readingџџџџPARASOLFileDatavoid*print_scaling_factorsb/home/pascal/depot/filedata/src/parasolfiledata.hтфn @brief print out the scaling factors of all parametresџџџџPARASOLFileData void,print_spatio_temp_charb/home/pascal/depot/filedata/src/parasolfiledata.hшъž @brief print out the spatio temporal characteristics as set in the leader fileџџџџPARASOLFileData_void$print_techno_paramb/home/pascal/depot/filedata/src/parasolfiledata.hю№ @brief print out the technological paramaters as set in the leader fileџџџџPARASOLFileData ЏJ€void* BASICb/home/pascal/depot/filedata/src/parasolfiledata.hGG џџџџProcessingLineLAND_SURFACEb/home/pascal/depot/filedata/src/parasolfiledata.hHHџџџџProcessingLineOCEAN_COLORb/home/pascal/depot/filedata/src/parasolfiledata.hIIџџџџProcessingLine RADIATION_BUDGETb/home/pascal/depot/filedata/src/parasolfiledata.hJJџџџџProcessingLineUNDEFINEDb/home/pascal/depot/filedata/src/parasolfiledata.hFFџџџџProcessingLinecol_datab/home/pascal/depot/filedata/src/parasolfiledata.h……& the column indexesunsigned short*datab/home/pascal/depot/filedata/src/parasolfiledata.h>> The Data readerPARASOLData*grid_factorb/home/pascal/depot/filedata/src/parasolfiledata.hwwD The grid reduction factor. It is defined as : <i>grid_factor = full_resolution_grid_x_max/product_grid_x_max = full_resolution_grid_y_max/product_grid_y_max</i>intinstrumentb/home/pascal/depot/filedata/src/parasolfiledata.hWWŽ the POLDER instrument used : 1 if POLDER1, 2 if POLDER2, -1 if unknownintlat2time_coefb/home/pascal/depot/filedata/src/parasolfiledata.hRR%` lat2time_coef is a constant coefficient that makes the links the latitude of a record and the acquisition time, using the equation : time=time(ascending_node)+latitude*lat2time_coef, where lat2time_coef, time(ascending_node) are constant lat2time_coef can be decomposed as : 16/233 * 1/360 * (24*3600)const doublelat_maxb/home/pascal/depot/filedata/src/parasolfiledata.h‰‰$ geolocation frame floatlat_minb/home/pascal/depot/filedata/src/parasolfiledata.h‰ ‰$ geolocation frame float leaderb/home/pascal/depot/filedata/src/parasolfiledata.h::$ The leader readerPARASOLLeader* levelb/home/pascal/depot/filedata/src/parasolfiledata.h\\ 8 The file's level : 1,2 or 3. -1 if unknown @warning level 3 isn't treated in a good way, because the file name convention is different than level 1 and 2.intline_datab/home/pascal/depot/filedata/src/parasolfiledata.h" the line indexesunsigned short*lon_maxb/home/pascal/depot/filedata/src/parasolfiledata.h‰"‰)$ geolocation frame floatlon_minb/home/pascal/depot/filedata/src/parasolfiledata.h‰‰!$ geolocation frame float&max_sat_nadir_angleb/home/pascal/depot/filedata/src/parasolfiledata.h..+” maximum angle between viewibng direction and satellite nadir : 60 degreesconst doublenb_acq_img_maxb/home/pascal/depot/filedata/src/parasolfiledata.h44#` number of images during an acquisition sequenceconst intnb_acq_seq_maxb/home/pascal/depot/filedata/src/parasolfiledata.h22#P maximum number of acquisition sequencesconst int(nb_parasol_directionb/home/pascal/depot/filedata/src/parasolfiledata.h&&)џџџџconst intorbit_cycle_nbb/home/pascal/depot/filedata/src/parasolfiledata.hiiР The orbit cycle number. -1 if undefined. @warning This attribute is unuseful for level 3 filesintorbit_nbb/home/pascal/depot/filedata/src/parasolfiledata.hnnЮ The orbit number in one cycle. -1 if undefined. @warning This attribute is unuseful for level 3 filesint&pix_obs_nadir_angleb/home/pascal/depot/filedata/src/parasolfiledata.h00+т angle in radians at satellite position on an observed nadir pixel at full resolution (= 1/16 degree earth angle)const doublepix_sz_maxb/home/pascal/depot/filedata/src/parasolfiledata.h,,"Ю maximum size in m of an observed pixel border, ie a pixel observed with a zenithal angle of 60 degreesconst doublepix_sz_nadirb/home/pascal/depot/filedata/src/parasolfiledata.h**$P size in m of a NADIR pixel border (6km)const doubleprocessing_lineb/home/pascal/depot/filedata/src/parasolfiledata.h``"( The processing lineProcessingLineproductb/home/pascal/depot/filedata/src/parasolfiledata.hd dh The product : A, B or C. Space character if unknowncharreprocessing_nbb/home/pascal/depot/filedata/src/parasolfiledata.hr rЌ The reprocessing number : a character from 'A' to 'Z'. Space character if undefined.char$satellite_altitudeb/home/pascal/depot/filedata/src/parasolfiledata.h((*ъ altitude of the satellite in m. It is a virtual mean altitude. The real movement is an ellipse, not a perfect circleconst double.software_version_numberb/home/pascal/depot/filedata/src/parasolfiledata.h} }"d version of the software used to process the file  stringsz_cellb/home/pascal/depot/filedata/src/parasolfiledata.h{ {B size of a cell side, in degrees  doublesz_gridb/home/pascal/depot/filedata/src/parasolfiledata.hyyЊ size of the as [nrow, ncol]. ncol is the maximum number of columns (at the equator) int*v_alt_viewb/home/pascal/depot/filedata/src/parasolfiledata.hŒ ŒF viewed pixel altitude data buffer  short*v_nib/home/pascal/depot/filedata/src/parasolfiledata.h””X number of available directions data buffer unsigned char* v_raab/home/pascal/depot/filedata/src/parasolfiledata.h’ ’~ relative azimuth angles data buffer. N_directions per record double* v_saab/home/pascal/depot/filedata/src/parasolfiledata.hŽ Ž` solar azimuth angles data buffer. 1 per record double*v_snb/home/pascal/depot/filedata/src/parasolfiledata.h––: acquisition sequence number unsigned char* v_vzab/home/pascal/depot/filedata/src/parasolfiledata.h z viewing zenith angles data buffer. N_directions per record double*v_x_satb/home/pascal/depot/filedata/src/parasolfiledata.h˜ ˜h X, Y, Z coordinates of the satellite in ECR system double*v_y_satb/home/pascal/depot/filedata/src/parasolfiledata.h™ ™џџџџdouble*v_z_satb/home/pascal/depot/filedata/src/parasolfiledata.hš šџџџџdouble* ProcessingLineb/home/pascal/depot/filedata/src/parasolfiledata.hEK€ defines the possible processing lines of PARASOL L2 productsconst intM&parasolfileformat.hj/home/pascal/depot/filedata/src/parasolfileformat.cpp%yЛЇ`џџџџ&parasolfileformat.hЉњh1j/home/pascal/depot/filedata/src/parasolfileformat.cppЕЖ;aj/home/pascal/depot/filedata/src/parasolfileformat.cppџџџџџџџџџџџџ"PARASOLDataFormatj/home/pascal/depot/filedata/src/parasolfileformat.cppзџџџџџџџџ"PARASOLDataFormatЖ€productџџџџџџџџ(const PARASOLProductџџџџџџџџ&PARASOLLeaderFormatj/home/pascal/depot/filedata/src/parasolfileformat.cppКеџџџџџџџџ&PARASOLLeaderFormatproductџџџџџџџџ(const PARASOLProductџџџџџџџџ6build_BASIC_1_record_formatj/home/pascal/depot/filedata/src/parasolfileformat.cpp'Pџџџџџџџџ"PARASOLDataFormatFхvoid@build_LS_AEROSOL_2_record_formatj/home/pascal/depot/filedata/src/parasolfileformat.cpp„”џџџџџџџџ"PARASOLDataFormatY€void>build_LS_ALBEDO_3_record_formatj/home/pascal/depot/filedata/src/parasolfileformat.cppЎВџџџџџџџџ"PARASOLDataFormatvoid:build_LS_ATMO_3_record_formatj/home/pascal/depot/filedata/src/parasolfileformat.cppДИџџџџџџџџ"PARASOLDataFormatvoidBbuild_LS_DIR_SIGN_3_record_formatj/home/pascal/depot/filedata/src/parasolfileformat.cppЈЌџџџџџџџџ"PARASOLDataFormatvoidBbuild_LS_SURF_DIR_2_record_formatj/home/pascal/depot/filedata/src/parasolfileformat.cpp~‚џџџџџџџџ"PARASOLDataFormat€void@build_OC_AEROSOL_2_record_formatj/home/pascal/depot/filedata/src/parasolfileformat.cpp^|џџџџџџџџ"PARASOLDataFormat void@build_OC_AEROSOL_3_record_formatj/home/pascal/depot/filedata/src/parasolfileformat.cppЂІџџџџџџџџ"PARASOLDataFormatvoid>build_OC_MARINE_3_record_formatj/home/pascal/depot/filedata/src/parasolfileformat.cppœ џџџџџџџџ"PARASOLDataFormatvoidBbuild_OC_SURF_DIR_2_record_formatj/home/pascal/depot/filedata/src/parasolfileformat.cppRVџџџџџџџџ"PARASOLDataFormatЖX€voidJbuild_OC_SURF_NON_DIR_2_record_formatj/home/pascal/depot/filedata/src/parasolfileformat.cppX\џџџџџџџџ"PARASOLDataFormat‘ЫOvoid0build_RB_2_record_formatj/home/pascal/depot/filedata/src/parasolfileformat.cppэ%џџџџџџџџ"PARASOLDataFormatџџџvoid0build_RB_3_record_formatj/home/pascal/depot/filedata/src/parasolfileformat.cpp–šџџџџџџџџ"PARASOLDataFormatЖWvoid4build_common_record_formatj/home/pascal/depot/filedata/src/parasolfileformat.cppOеџџџџџџџџ&PARASOLLeaderFormatavoidFbuild_data_descriptor_record_formatj/home/pascal/depot/filedata/src/parasolfileformat.cppлыџџџџџџџџ"PARASOLDataFormatY€void6build_level_1_record_formatj/home/pascal/depot/filedata/src/parasolfileformat.cppHџџџџџџџџ&PARASOLLeaderFormatvoid6build_level_2_record_formatj/home/pascal/depot/filedata/src/parasolfileformat.cppзйџџџџџџџџ&PARASOLLeaderFormatџџџ€void6build_level_3_record_formatj/home/pascal/depot/filedata/src/parasolfileformat.cppIMџџџџџџџџ&PARASOLLeaderFormatЖš€voidget_entry_indexj/home/pascal/depot/filedata/src/parasolfileformat.cppnxџџџџџџџџ"PARASOLDataFormatЖœ var_nameџџџџџџџџconst string&џџџџconst intget_grid_factorj/home/pascal/depot/filedata/src/parasolfileformat.cppLhџџџџџџџџ"PARASOLFileFormatproductџџџџџџџџ*const PARASOLProduct&џџџџconst intget_levelj/home/pascal/depot/filedata/src/parasolfileformat.cpp.Jџџџџџџџџ"PARASOLFileFormat:productџџџџџџџџ*const PARASOLProduct&џџџџconst int get_nb_grid_linej/home/pascal/depot/filedata/src/parasolfileformat.cppjlџџџџџџџџ"PARASOLFileFormatproductџџџџџџџџ*const PARASOLProduct&џџџџconst intget_size_ofj/home/pascal/depot/filedata/src/parasolfileformat.cpp ,џџџџџџџџ"PARASOLFileFormatcodeџџџџџџџџPARASOLDataTypeџџџџconst size_thmapfile_tools.htools.h"file_exceptions.h&filedataexception.h&parasolfilerecord.h vectorf/home/pascal/depot/filedata/src/parasolfileformat.h%yДшд џџџџ vector …/Гmapю"file_exceptions.h„јйЇfile_tools.hгЦf/home/pascal/depot/filedata/src/parasolfileformat.hLЯf&filedataexception.h<Щпtools.hАох7&parasolfilerecord.hПеUЇf/home/pascal/depot/filedata/src/parasolfileformat.hџџџџџџџџџџџџEntryFormatf/home/pascal/depot/filedata/src/parasolfileformat.hUpў Describe one record entry type : \< position, length, typecode, > with : - name : it's name - desc : a description of this entry - position : the offset position in the file - length : the entry data length - typecode : the typecode of the data :џџџџEntryFormatf/home/pascal/depot/filedata/src/parasolfileformat.h]]ЗџџџџџџџџEntryFormatnameџџџџџџџџconst char*џџџџposџџџџџџџџunsigned shortџџџџlenџџџџџџџџunsigned shortџџџџtypeџџџџџџџџPARASOLDataTypeџџџџdescџџџџџџџџconst char*џџџџџџџџEntryFormatf/home/pascal/depot/filedata/src/parasolfileformat.h^dџџџџџџџџEntryFormatmy_entryџџџџџџџџ$const EntryFormat&џџџџџџџџoperator =f/home/pascal/depot/filedata/src/parasolfileformat.henџџџџџџџџEntryFormatmy_entryџџџџџџџџ$const EntryFormat&џџџџEntryFormat&~ EntryFormatf/home/pascal/depot/filedata/src/parasolfileformat.hooџџџџџџџџEntryFormat€џџџџEntryFormatf/home/pascal/depot/filedata/src/parasolfileformat.h]]ЗџџџџџџџџEntryFormatnameџџџџџџџџconst char*џџџџposџџџџџџџџunsigned shortџџџџlenџџџџџџџџunsigned shortџџџџtypeџџџџџџџџPARASOLDataTypeџџџџdescџџџџџџџџconst char*џџџџџџџџEntryFormatf/home/pascal/depot/filedata/src/parasolfileformat.h^dџџџџџџџџEntryFormatmy_entryџџџџџџџџ$const EntryFormat&џџџџџџџџoperator =f/home/pascal/depot/filedata/src/parasolfileformat.henџџџџџџџџEntryFormatmy_entryџџџџџџџџ$const EntryFormat&џџџџEntryFormat&~ EntryFormatf/home/pascal/depot/filedata/src/parasolfileformat.hooџџџџџџџџEntryFormat€џџџџdescf/home/pascal/depot/filedata/src/parasolfileformat.h[ [џџџџ stringlenf/home/pascal/depot/filedata/src/parasolfileformat.hYYџџџџunsigned shortnamef/home/pascal/depot/filedata/src/parasolfileformat.hW Wџџџџ stringposf/home/pascal/depot/filedata/src/parasolfileformat.hXXџџџџunsigned shorttypef/home/pascal/depot/filedata/src/parasolfileformat.hZZџџџџPARASOLDataType"PARASOLDataFormatf/home/pascal/depot/filedata/src/parasolfileformat.hяF@class PARASOLDataFormat manages the description of the PARASOL data files format (parametres name, position, size and type) for each level. @author Nicolas PASCALџџџџ"PARASOLFileFormat"PARASOLDataFormatf/home/pascal/depot/filedata/src/parasolfileformat.h  >џџџџџџџџ"PARASOLDataFormatproductџџџџџџџџ(const PARASOLProductџџџџџџџџ6build_BASIC_1_record_formatf/home/pascal/depot/filedata/src/parasolfileformat.hї ї&2 product specific methodsџџџџ"PARASOLDataFormat хW€void@build_LS_AEROSOL_2_record_formatf/home/pascal/depot/filedata/src/parasolfileformat.h§ §+џџџџџџџџ"PARASOLDataFormatvoid>build_LS_ALBEDO_3_record_formatf/home/pascal/depot/filedata/src/parasolfileformat.h *џџџџџџџџ"PARASOLDataFormat€void:build_LS_ATMO_3_record_formatf/home/pascal/depot/filedata/src/parasolfileformat.h (џџџџџџџџ"PARASOLDataFormatџџџ€voidBbuild_LS_DIR_SIGN_3_record_formatf/home/pascal/depot/filedata/src/parasolfileformat.h ,џџџџџџџџ"PARASOLDataFormat€voidBbuild_LS_SURF_DIR_2_record_formatf/home/pascal/depot/filedata/src/parasolfileformat.hќ ќ,џџџџџџџџ"PARASOLDataFormat Гхvoid@build_OC_AEROSOL_2_record_formatf/home/pascal/depot/filedata/src/parasolfileformat.hћ ћ+џџџџџџџџ"PARASOLDataFormat€void@build_OC_AEROSOL_3_record_formatf/home/pascal/depot/filedata/src/parasolfileformat.h +џџџџџџџџ"PARASOLDataFormatvoid>build_OC_MARINE_3_record_formatf/home/pascal/depot/filedata/src/parasolfileformat.hџ џ*џџџџџџџџ"PARASOLDataFormatvoidBbuild_OC_SURF_DIR_2_record_formatf/home/pascal/depot/filedata/src/parasolfileformat.hљ љ,џџџџџџџџ"PARASOLDataFormatvoidJbuild_OC_SURF_NON_DIR_2_record_formatf/home/pascal/depot/filedata/src/parasolfileformat.hњ њ0џџџџџџџџ"PARASOLDataFormat Д €void0build_RB_2_record_formatf/home/pascal/depot/filedata/src/parasolfileformat.hј ј#џџџџџџџџ"PARASOLDataFormatvoid0build_RB_3_record_formatf/home/pascal/depot/filedata/src/parasolfileformat.hў ў#џџџџџџџџ"PARASOLDataFormatvoidFbuild_data_descriptor_record_formatf/home/pascal/depot/filedata/src/parasolfileformat.hѓ ѓ.. common to all productsџџџџ"PARASOLDataFormatџџџ€void"build_data_formatf/home/pascal/depot/filedata/src/parasolfileformat.hє є* should be determinedџџџџ"PARASOLDataFormatvoid>get_data_file_descriptor_formatf/home/pascal/depot/filedata/src/parasolfileformat.h џџџџџџџџ"PARASOLDataFormat &const RecordFormat*get_data_formatf/home/pascal/depot/filedata/src/parasolfileformat.hџџџџџџџџ"PARASOLDataFormat &const RecordFormat*get_entry_indexf/home/pascal/depot/filedata/src/parasolfileformat.h;О @brief access to the parameter number using the variable name Will throw a bad_parametre exception if no parametre with this name can be found. @warning What is called here the parametre index is different than the parametre number in the PARASOL DPC : it runs from 0, and the record number is considered as the first parametre : For example, in the level 1B products data (see DPC page 18), the Pixel Quality Index is the parametre #1 using the DPC nomenclatura, but using this method it will have an index of 6 @param var_name the name of the variable @return the parameter index (or -1 if no found)џџџџ"PARASOLDataFormat var_nameџџџџџџџџconst string&џџџџconst int&~ PARASOLDataFormatf/home/pascal/depot/filedata/src/parasolfileformat.h  џџџџџџџџ"PARASOLDataFormat€џџџџ>get_data_file_descriptor_formatf/home/pascal/depot/filedata/src/parasolfileformat.h џџџџџџџџ"PARASOLDataFormat &const RecordFormat*get_data_formatf/home/pascal/depot/filedata/src/parasolfileformat.hџџџџџџџџ"PARASOLDataFormat &const RecordFormat*&~ PARASOLDataFormatf/home/pascal/depot/filedata/src/parasolfileformat.h  џџџџџџџџ"PARASOLDataFormat€џџџџ6data_file_descriptor_formatf/home/pascal/depot/filedata/src/parasolfileformat.h№№,џџџџRecordFormatdata_formatf/home/pascal/depot/filedata/src/parasolfileformat.hёёџџџџRecordFormat"PARASOLFileFormatf/home/pascal/depot/filedata/src/parasolfileformat.hxЉв @class PARASOLFileFormat generic interface that describes one PARASOL file format, wether leader or dataџџџџ"PARASOLFileFormatf/home/pascal/depot/filedata/src/parasolfileformat.h{{Sџџџџџџџџ"PARASOLFileFormatproductџџџџџџџџ*const PARASOLProduct&џџџџџџџџget_grid_factorf/home/pascal/depot/filedata/src/parasolfileformat.h››C6 @brief the product grid resolution relative to full resolution grid division factor @param product the product @return 1 if full resolution, 3 if mediumџџџџ"PARASOLFileFormatproductџџџџџџџџ*const PARASOLProduct&џџџџconst intget_levelf/home/pascal/depot/filedata/src/parasolfileformat.h=т @brief return the level for a given product @param product the product code @return the level or -1 if unknownџџџџ"PARASOLFileFormatproductџџџџџџџџ*const PARASOLProduct&џџџџconst int"get_missing_valuef/home/pascal/depot/filedata/src/parasolfileformat.hЂЂ5К @brief defines the value that represents the missing values in PARASOL files, using their type. This value is set this way : @return the missing value used in the read file. Returns 1 if no missing values for this typeџџџџTџџџџ"PARASOLFileFormat levelџџџџџџџџconst intџџџџconst T get_nb_grid_linef/home/pascal/depot/filedata/src/parasolfileformat.h••DО @brief return the number of grid lines for the given product @return the number of grid linesџџџџ"PARASOLFileFormatproductџџџџџџџџ*const PARASOLProduct&џџџџconst int,get_out_of_range_valuef/home/pascal/depot/filedata/src/parasolfileformat.hЈЈ:” @brief defines the value that represents the out of range values in PARASOL files, using their type. @return the unsignificant value used in the read file. Returns 1 if no missing values for this typeџџџџTџџџџ"PARASOLFileFormatџџџˆ levelџџџџџџџџconst intџџџџconst Tget_size_off/home/pascal/depot/filedata/src/parasolfileformat.hŠŠ9, @brief access the memory size needed to read one variable of the given PARASOL data type @param code the data type @return the size needed in bytesџџџџ"PARASOLFileFormatcodeџџџџџџџџPARASOLDataTypeџџџџconst size_t&~ PARASOLFileFormatf/home/pascal/depot/filedata/src/parasolfileformat.h||"џџџџџџџџ"PARASOLFileFormatџџџџ"PARASOLFileFormatf/home/pascal/depot/filedata/src/parasolfileformat.h{{Sџџџџџџџџ"PARASOLFileFormatproductџџџџџџџџ*const PARASOLProduct&џџџџџџџџ&~ PARASOLFileFormatf/home/pascal/depot/filedata/src/parasolfileformat.h||"џџџџџџџџ"PARASOLFileFormatџџџџ*full_res_grid_col_maxf/home/pascal/depot/filedata/src/parasolfileformat.h€€1d Number of PARASOL grid cells along the longitudesconst int,full_res_grid_line_maxf/home/pascal/depot/filedata/src/parasolfileformat.h„„2b Number of PARASOL grid cells along the latitudesconst intproductf/home/pascal/depot/filedata/src/parasolfileformat.hyyџџџџPARASOLProduct&PARASOLLeaderFormatf/home/pascal/depot/filedata/src/parasolfileformat.hЎъ @class PARASOLLeaderFormat manages the description of the PARASOL leader files format (parametres name, position, size and type) for each level.џџџџ"PARASOLFileFormat&PARASOLLeaderFormatf/home/pascal/depot/filedata/src/parasolfileformat.hЮЮ@џџџџџџџџ&PARASOLLeaderFormat€productџџџџџџџџ(const PARASOLProductџџџџџџџџ4build_common_record_formatf/home/pascal/depot/filedata/src/parasolfileformat.hЛ Л%x @brief set the record format entries common to all productsџџџџ&PARASOLLeaderFormatvoid6build_level_1_record_formatf/home/pascal/depot/filedata/src/parasolfileformat.hП П&j @brief set the record format entries for L1 productsџџџџ&PARASOLLeaderFormat хW€void6build_level_2_record_formatf/home/pascal/depot/filedata/src/parasolfileformat.hУ У&j @brief set the record format entries for L2 productsџџџџ&PARASOLLeaderFormat хW€void6build_level_3_record_formatf/home/pascal/depot/filedata/src/parasolfileformat.hЧ Ч&j @brief set the record format entries for L3 productsџџџџ&PARASOLLeaderFormat Гz€void,get_annotations_formatf/home/pascal/depot/filedata/src/parasolfileformat.hчщџџџџџџџџ&PARASOLLeaderFormat &const RecordFormat*Jget_data_processing_parameters_formatf/home/pascal/depot/filedata/src/parasolfileformat.hсуџџџџџџџџ&PARASOLLeaderFormatџџџ &const RecordFormat*"get_header_formatf/home/pascal/depot/filedata/src/parasolfileformat.hезџџџџџџџџ&PARASOLLeaderFormat &const RecordFormat*Pget_instrument_setting_parameters_formatf/home/pascal/depot/filedata/src/parasolfileformat.hлнџџџџџџџџ&PARASOLLeaderFormat &const RecordFormat*Bget_leader_file_descriptor_formatf/home/pascal/depot/filedata/src/parasolfileformat.hвдџџџџџџџџ&PARASOLLeaderFormat &const RecordFormat*4get_scaling_factors_formatf/home/pascal/depot/filedata/src/parasolfileformat.hфцџџџџџџџџ&PARASOLLeaderFormat ГУ &const RecordFormat*Tget_spatio_temporal_characteristics_formatf/home/pascal/depot/filedata/src/parasolfileformat.hикџџџџџџџџ&PARASOLLeaderFormat &const RecordFormat*Fget_technological_parameters_formatf/home/pascal/depot/filedata/src/parasolfileformat.hорџџџџџџџџ&PARASOLLeaderFormat &const RecordFormat**~ PARASOLLeaderFormatf/home/pascal/depot/filedata/src/parasolfileformat.hааџџџџџџџџ&PARASOLLeaderFormatџџџџ ,get_annotations_formatf/home/pascal/depot/filedata/src/parasolfileformat.hчщџџџџџџџџ&PARASOLLeaderFormat &const RecordFormat*Jget_data_processing_parameters_formatf/home/pascal/depot/filedata/src/parasolfileformat.hсуџџџџџџџџ&PARASOLLeaderFormatџџџ &const RecordFormat*"get_header_formatf/home/pascal/depot/filedata/src/parasolfileformat.hезџџџџџџџџ&PARASOLLeaderFormat &const RecordFormat*Pget_instrument_setting_parameters_formatf/home/pascal/depot/filedata/src/parasolfileformat.hлнџџџџџџџџ&PARASOLLeaderFormat &const RecordFormat*Bget_leader_file_descriptor_formatf/home/pascal/depot/filedata/src/parasolfileformat.hвдџџџџџџџџ&PARASOLLeaderFormat &const RecordFormat*4get_scaling_factors_formatf/home/pascal/depot/filedata/src/parasolfileformat.hфцџџџџџџџџ&PARASOLLeaderFormat ГУ &const RecordFormat*Tget_spatio_temporal_characteristics_formatf/home/pascal/depot/filedata/src/parasolfileformat.hикџџџџџџџџ&PARASOLLeaderFormat &const RecordFormat*Fget_technological_parameters_formatf/home/pascal/depot/filedata/src/parasolfileformat.hорџџџџџџџџ&PARASOLLeaderFormat &const RecordFormat**~ PARASOLLeaderFormatf/home/pascal/depot/filedata/src/parasolfileformat.hааџџџџџџџџ&PARASOLLeaderFormatџџџџ$annotations_formatf/home/pascal/depot/filedata/src/parasolfileformat.hЖЖ#џџџџRecordFormatBdata_processing_parameters_formatf/home/pascal/depot/filedata/src/parasolfileformat.hДД2џџџџRecordFormatheader_formatf/home/pascal/depot/filedata/src/parasolfileformat.hААџџџџRecordFormatHinstrument_setting_parameters_formatf/home/pascal/depot/filedata/src/parasolfileformat.hВВ5џџџџRecordFormat:leader_file_descriptor_formatf/home/pascal/depot/filedata/src/parasolfileformat.hЏЏ.џџџџRecordFormat,scaling_factors_formatf/home/pascal/depot/filedata/src/parasolfileformat.hЕЕ'џџџџRecordFormatLspatio_temporal_characteristics_formatf/home/pascal/depot/filedata/src/parasolfileformat.hББ7џџџџRecordFormat>technological_parameters_formatf/home/pascal/depot/filedata/src/parasolfileformat.hГГ0џџџџRecordFormat"get_missing_valuef/home/pascal/depot/filedata/src/parasolfileformat.h7џџџџџџџџTџџџџ"PARASOLFileFormat Д— levelџџџџџџџџconst intџџџџconst T,get_out_of_range_valuef/home/pascal/depot/filedata/src/parasolfileformat.h9MџџџџџџџџTџџџџ"PARASOLFileFormat хW€ levelџџџџџџџџconst intџџџџconst TB16f/home/pascal/depot/filedata/src/parasolfileformat.h..2 16 Bytes bitfield entryPARASOLDataTypeB2f/home/pascal/depot/filedata/src/parasolfileformat.h++2 2 Bytes bitfield entryPARASOLDataTypeB4f/home/pascal/depot/filedata/src/parasolfileformat.h,,4 4 Bytes bitfield entryPARASOLDataTypeB8f/home/pascal/depot/filedata/src/parasolfileformat.h--4 8 Bytes bitfield entryPARASOLDataTypeBASIC_1f/home/pascal/depot/filedata/src/parasolfileformat.h<< џџџџPARASOLProduct CHAR8f/home/pascal/depot/filedata/src/parasolfileformat.h## џџџџPARASOLDataTypeEXP12_5f/home/pascal/depot/filedata/src/parasolfileformat.h00 X this type is a string representing a doublePARASOLDataTypeFLOAT12_4f/home/pascal/depot/filedata/src/parasolfileformat.h// X this type is a string representing a doublePARASOLDataTypeFLOAT16_7f/home/pascal/depot/filedata/src/parasolfileformat.h22 X this type is a string representing a doublePARASOLDataTypeFLOAT8_3f/home/pascal/depot/filedata/src/parasolfileformat.h11 X this type is a string representing a doublePARASOLDataType INT16f/home/pascal/depot/filedata/src/parasolfileformat.h'' џџџџPARASOLDataType INT32f/home/pascal/depot/filedata/src/parasolfileformat.h)) џџџџPARASOLDataTypeINT8f/home/pascal/depot/filedata/src/parasolfileformat.h&&џџџџPARASOLDataTypeLS_AEROSOL_2f/home/pascal/depot/filedata/src/parasolfileformat.hBBџџџџPARASOLProductLS_ALBEDO_3f/home/pascal/depot/filedata/src/parasolfileformat.hGGџџџџPARASOLProductLS_ATMO_3f/home/pascal/depot/filedata/src/parasolfileformat.hHH џџџџPARASOLProductLS_DIR_SIGN_3f/home/pascal/depot/filedata/src/parasolfileformat.hFFџџџџPARASOLProductLS_SURF_DIR_2f/home/pascal/depot/filedata/src/parasolfileformat.hAAџџџџPARASOLProductOC_AEROSOL_2f/home/pascal/depot/filedata/src/parasolfileformat.h@@џџџџPARASOLProductOC_AEROSOL_3f/home/pascal/depot/filedata/src/parasolfileformat.hEEџџџџPARASOLProductOC_MARINE_3f/home/pascal/depot/filedata/src/parasolfileformat.hDDџџџџPARASOLProductOC_SURF_DIR_2f/home/pascal/depot/filedata/src/parasolfileformat.h>>џџџџPARASOLProduct"OC_SURF_NON_DIR_2f/home/pascal/depot/filedata/src/parasolfileformat.h??џџџџPARASOLProductRB_2f/home/pascal/depot/filedata/src/parasolfileformat.h==џџџџPARASOLProductRB_3f/home/pascal/depot/filedata/src/parasolfileformat.hCCџџџџPARASOLProduct UCHAR8f/home/pascal/depot/filedata/src/parasolfileformat.h$$ џџџџPARASOLDataType UINT16f/home/pascal/depot/filedata/src/parasolfileformat.h(( џџџџPARASOLDataType UINT32f/home/pascal/depot/filedata/src/parasolfileformat.h** џџџџPARASOLDataType UINT8f/home/pascal/depot/filedata/src/parasolfileformat.h%% џџџџPARASOLDataTypeUNDEFINEDf/home/pascal/depot/filedata/src/parasolfileformat.h;;џџџџPARASOLProduct PARASOLDataTypef/home/pascal/depot/filedata/src/parasolfileformat.h"4| Code of the differents allowed data types for PARASOL entriesconst int PARASOLProductf/home/pascal/depot/filedata/src/parasolfileformat.h:I Defines all PARASOL product. The number after the underscore is the product @warning at this time, only the level2 RB product is implementedconst int RecordFormatf/home/pascal/depot/filedata/src/parasolfileformat.ht#t/Z The format of a record, designed like this :4std::vector< EntryFormat >Q&parasolfilereader.hj/home/pascal/depot/filedata/src/parasolfilereader.cpp%yЦg‚Pџџџџj/home/pascal/depot/filedata/src/parasolfilereader.cpp Šћ&parasolfilereader.hП›‹j/home/pascal/depot/filedata/src/parasolfilereader.cppџџџџџџџџџџџџ "PARASOLFileReaderj/home/pascal/depot/filedata/src/parasolfilereader.cpp)џџџџџџџџ"PARASOLFileReaderofilenameџџџџџџџџconst stringџџџџџџџџclose_filej/home/pascal/depot/filedata/src/parasolfilereader.cppџџџџџџџџ"PARASOLFileReadervoidcustom_newj/home/pascal/depot/filedata/src/parasolfilereader.cppоіџџџџџџџџ"PARASOLFileReader€bufџџџџџџџџ void*џџџџnb_dataџџџџџџџџconst int&џџџџtypeџџџџџџџџ,const PARASOLDataType&џџџџ void*&fill_buffer_defaultj/home/pascal/depot/filedata/src/parasolfilereader.cpp%)џџџџџџџџ"PARASOLFileReaderbufџџџџџџџџ void*џџџџ nb_valџџџџџџџџconst int&џџџџtypeџџџџџџџџ,const PARASOLDataType&џџџџvoid get_entry_offsetj/home/pascal/depot/filedata/src/parasolfilereader.cpp+;џџџџџџџџ"PARASOLFileReaderrecџџџџџџџџconst Recordџџџџentry_idxџџџџџџџџconst intџџџџ i_valџџџџџџџџ(const vector< int >&џџџџconst intget_productj/home/pascal/depot/filedata/src/parasolfilereader.cppАнџџџџџџџџ"PARASOLFileReaderfilenameџџџџџџџџconst string&џџџџPARASOLProductinc_ptrj/home/pascal/depot/filedata/src/parasolfilereader.cpp $џџџџџџџџ"PARASOLFileReaderbuf_startџџџџџџџџ void*џџџџincџџџџџџџџconst int&џџџџtypeџџџџџџџџ,const PARASOLDataType&џџџџ void*open_filej/home/pascal/depot/filedata/src/parasolfilereader.cppїџџџџџџџџ"PARASOLFileReaderqg€voidread_entryj/home/pascal/depot/filedata/src/parasolfilereader.cppEџџџџџџџџ"PARASOLFileReaderџџџ€ recordџџџџџџџџ void*џџџџrecord_codeџџџџџџџџconst Record&џџџџentry_idxџџџџџџџџint&џџџџentry_formatџџџџџџџџ.RecordFormat::iterator&џџџџrecord_offsetџџџџџџџџconst int&џџџџvoidread_recordj/home/pascal/depot/filedata/src/parasolfilereader.cpp*Dџџџџџџџџ"PARASOLFileReadersrecord_codeџџџџџџџџconst Record&џџџџvoidread_valuej/home/pascal/depot/filedata/src/parasolfilereader.cppŽџџџџџџџџ"PARASOLFileReaderџџџ€valџџџџџџџџ void*џџџџval_formatџџџџџџџџ:const RecordFormat::iterator&џџџџvalue_offsetџџџџџџџџconst int&џџџџconst size_tswap_endianessj/home/pascal/depot/filedata/src/parasolfilereader.cppžЎџџџџџџџџ"PARASOLFileReadervalџџџџџџџџ void*џџџџtypeџџџџџџџџ,const PARASOLDataType&џџџџvoid&~ PARASOLFileReaderj/home/pascal/depot/filedata/src/parasolfilereader.cppџџџџџџџџ"PARASOLFileReaderџџџџjfile_tools.h"file_exceptions.h&parasolfilerecord.h&parasolfileformat.h stringiostreamf/home/pascal/depot/filedata/src/parasolfilereader.h%yТ{4pџџџџf/home/pascal/depot/filedata/src/parasolfilereader.hboАР"file_exceptions.h„јйЇ string Xaчfile_tools.hгЦiostreamВ$Bє&parasolfileformat.hЉњh1&parasolfilerecord.hПеUЇf/home/pascal/depot/filedata/src/parasolfilereader.hџџџџџџџџџџџџ"PARASOLFileReaderf/home/pascal/depot/filedata/src/parasolfilereader.h3ШThis class contains the methods used to read the PARASOL that are common to the leader and the data files. @author Nicolas PASCALџџџџ"PARASOLFileReaderf/home/pascal/depot/filedata/src/parasolfilereader.h­­/џџџџџџџџ"PARASOLFileReaderfilenameџџџџџџџџconst stringџџџџџџџџclose_filef/home/pascal/depot/filedata/src/parasolfilereader.hЃ Ѓџџџџџџџџ"PARASOLFileReadervoidcustom_newf/home/pascal/depot/filedata/src/parasolfilereader.hООWь @brief allocate a buffer to read data from a PARASOL data file. @warning the buffer is allocated using the new[] operator (and not malloc !!!). So It must be freed with delete[]. @param buf the buffer to be allocated @param nb_data the buffer's length @param type the buffer's data type (using PARASOLDataType) @return the allocated buffer or NULL if not enough memoryџџџџ"PARASOLFileReaderџџџˆbufџџџџџџџџ void*џџџџnb_dataџџџџџџџџconst int&џџџџtypeџџџџџџџџ,const PARASOLDataType&џџџџ void*&fill_buffer_defaultf/home/pascal/depot/filedata/src/parasolfilereader.hЋЋ\z @brief fill a buffer used to read the file with fill values It uses a memset to do that @param buf the buffer @param nb_val the number of values of the buffer @param type the data typeџџџџ"PARASOLFileReader ГЊˆbufџџџџџџџџ void*џџџџ nb_valџџџџџџџџconst int&џџџџtypeџџџџџџџџ,const PARASOLDataType&џџџџvoidfree_recordsf/home/pascal/depot/filedata/src/parasolfilereader.haa!” @brief Free the objects used to store the values read in the file recordsџџџџ"PARASOLFileReaderDvoidget_entry_blockf/home/pascal/depot/filedata/src/parasolfilereader.hŽ ŽaV @brief return the block describing the given entry : the number of times the entry is repeated and the size in bytes of the group @param rec current record @param entry_idx indice of the entry @return the block(s) of the entry. If the entry is composed of a unique value, returns an empty vectorџџџџ"PARASOLFileReader Г фrecџџџџџџџџconst Recordџџџџentry_idxџџџџџџџџconst intџџџџ(vector< EntryBlock > get_entry_offsetf/home/pascal/depot/filedata/src/parasolfilereader.h€€h| @brief access to the offset of an entry, relative to the record start TODO example @param rec the concerned record @param entry_idx index of the entry, start at 0, record_number is index 0 @param i_val indices of the value, for parametres repeated many times in a record @return the offset, from the record startџџџџ"PARASOLFileReaderrecџџџџџџџџconst Recordџџџџentry_idxџџџџџџџџconst intџџџџ i_valџџџџџџџџ(const vector< int >&џџџџconst intget_productf/home/pascal/depot/filedata/src/parasolfilereader.hЕЕ= @brief access to the product using parsing the name @param filename the PARASOL file name (without the path) @return the productџџџџ"PARASOLFileReader Г­filenameџџџџџџџџconst string&џџџџPARASOLProductget_recordf/home/pascal/depot/filedata/src/parasolfilereader.hšš>т @brief access to one record entry @param rec the record code @return the entry corresponding to @a record codeџџџџ"PARASOLFileReader ЋTDrecџџџџџџџџconst Record&џџџџ$PARASOLFileRecord*"get_record_formatf/home/pascal/depot/filedata/src/parasolfilereader.h””FŠ @brief access to the RecordFormat object that describes the name, type, offset and length of each record entry @param rec the record code @return the RecordFormat corresponding to @a record codeџџџџ"PARASOLFileReaderDrecџџџџџџџџconst Record&џџџџ&const RecordFormat*"get_record_offsetf/home/pascal/depot/filedata/src/parasolfilereader.hnn<f @brief access to ones record file offset If the record isn't in the leader leader file, it returns -1 @param rec the record code @return the record's offset in the leader fileџџџџ"PARASOLFileReaderџџџФrecџџџџџџџџconst Record&џџџџconst intinc_ptrf/home/pascal/depot/filedata/src/parasolfilereader.hЧЧV6 @brief find the element of a buffer at index inc, for buffer of type void*. It is a method equivalent to buf_start[inc] for void* typed buffer @param buf_start the buffer start pointer @param inc the increment @param type the buffer's type code @return a pointer to the elementџџџџ"PARASOLFileReader ГJˆbuf_startџџџџџџџџ void*џџџџincџџџџџџџџconst int&џџџџtypeџџџџџџџџ,const PARASOLDataType&џџџџ void*init_recordf/home/pascal/depot/filedata/src/parasolfilereader.hgg?є @brief Initialize a record class @param rec the record code @return the initialized object (or NULL in case of problem)џџџџ"PARASOLFileReaderџџџФrecџџџџџџџџconst Record&џџџџ$PARASOLFileRecord*is_file_loadedf/home/pascal/depot/filedata/src/parasolfilereader.hŸЁ @brief check if the file to read has been laded @return true of loadedџџџџ"PARASOLFileReaderconst bool is_record_loadedf/home/pascal/depot/filedata/src/parasolfilereader.h]]<Д @brief check if a record has been read. @return true if the record has already been readџџџџ"PARASOLFileReaderDrecџџџџџџџџconst Record&џџџџconst boolopen_filef/home/pascal/depot/filedata/src/parasolfilereader.hЂ Ђџџџџџџџџ"PARASOLFileReadervoidread_entryf/home/pascal/depot/filedata/src/parasolfilereader.hG Gў @brief read the values of an entry. @param entry the variable where to put the read value(s) @param entry_nb the number of the entry. Updated by the method @param record_code the code of the current processed record @param entry_format the entry record format descriptor (a RecordFormat::iterator) Updated by the method @param record_offset the start offset of the read record.џџџџ"PARASOLFileReader recordџџџџџџџџ void*џџџџrecord_codeџџџџџџџџconst Record&џџџџentry_nbџџџџџџџџint&џџџџentry_formatџџџџџџџџ.RecordFormat::iterator&џџџџrecord_offsetџџџџџџџџconst int&џџџџvoidread_recordf/home/pascal/depot/filedata/src/parasolfilereader.h>>7Ќ @brief read the whole data of a record @param record_code code of the record to loadџџџџ"PARASOLFileReaderср„record_codeџџџџџџџџconst Record&џџџџvoidread_valuef/home/pascal/depot/filedata/src/parasolfilereader.hPPr, @brief read ONE value in the PARASOL file @param val the variable where to put the read value @param val_format a RecordFormat element describing the value format @param previous_value_offset the file offset of the nearest preceeding value. @return the number of bytes readџџџџ"PARASOLFileReadervalџџџџџџџџ void*џџџџval_formatџџџџџџџџ:const RecordFormat::iterator&џџџџ*previous_value_offsetџџџџџџџџconst int&џџџџconst size_tswap_endianessf/home/pascal/depot/filedata/src/parasolfilereader.hV V@ш @brief swap the given value endianess. @param val the value to be swapped @param type the type code of this valueџџџџ"PARASOLFileReadervalџџџџџџџџ void*џџџџtypeџџџџџџџџ,const PARASOLDataType&џџџџvoid&~ PARASOLFileReaderf/home/pascal/depot/filedata/src/parasolfilereader.hЎ Ў џџџџџџџџ"PARASOLFileReaderџџџџis_file_loadedf/home/pascal/depot/filedata/src/parasolfilereader.hŸЁ @brief check if the file to read has been laded @return true of loadedџџџџ"PARASOLFileReaderconst boolfilenamef/home/pascal/depot/filedata/src/parasolfilereader.h6 6џџџџ stringfpf/home/pascal/depot/filedata/src/parasolfilereader.h88 џџџџ FILE*productf/home/pascal/depot/filedata/src/parasolfilereader.h77џџџџPARASOLProduct EntryBlockf/home/pascal/depot/filedata/src/parasolfilereader.h-- џџџџEntryBlockstdf/home/pascal/depot/filedata/src/parasolfilereader.hU&parasolfilerecord.hj/home/pascal/depot/filedata/src/parasolfilerecord.cpp%yТ~— џџџџj/home/pascal/depot/filedata/src/parasolfilerecord.cppaмM—&parasolfilerecord.hПеUЇj/home/pascal/depot/filedata/src/parasolfilerecord.cppџџџџџџџџџџџџget_entryj/home/pascal/depot/filedata/src/parasolfilerecord.cpp/\**********************************************џџџџ4LeaderFileDescriptorRecordY€entry_indexџџџџџџџџconst int&џџџџ v_ivalџџџџџџџџ&const vector< int >џџџџ void*get_entryj/home/pascal/depot/filedata/src/parasolfilerecord.cppJZџџџџџџџџHeaderRecordentry_indexџџџџџџџџconst int&џџџџ v_ivalџџџџџџџџ&const vector< int >џџџџ void*get_entryj/home/pascal/depot/filedata/src/parasolfilerecord.cpp[iџџџџџџџџFSpatioTemporalCharacteristicsRecordentry_indexџџџџџџџџconst int&џџџџ v_ivalџџџџџџџџ&const vector< int >џџџџ void*get_entryj/home/pascal/depot/filedata/src/parasolfilerecord.cppjtџџџџџџџџBInstrumentSettingParametersRecordentry_indexџџџџџџџџconst int&џџџџ v_ivalџџџџџџџџ&const vector< int >џџџџ void*get_entryj/home/pascal/depot/filedata/src/parasolfilerecord.cppuœџџџџџџџџ<DataProcessingParametersRecordentry_indexџџџџџџџџconst int&џџџџ v_ivalџџџџџџџџ&const vector< int >џџџџ void*get_entryj/home/pascal/depot/filedata/src/parasolfilerecord.cppЌџџџџџџџџ(ScalingFactorsRecordџџџ€entry_indexџџџџџџџџconst int&џџџџ v_ivalџџџџџџџџ&const vector< int >џџџџ void*get_entryj/home/pascal/depot/filedata/src/parasolfilerecord.cpp­Йџџџџџџџџ"AnnotationsRecordentry_indexџџџџџџџџconst int&џџџџ v_ivalџџџџџџџџ&const vector< int >џџџџ void*get_entryj/home/pascal/depot/filedata/src/parasolfilerecord.cppКяџџџџџџџџ:TechnologicalParametersRecordџџџ€entry_indexџџџџџџџџconst int&џџџџ v_ivalџџџџџџџџ&const vector< int >џџџџ void*get_entryj/home/pascal/depot/filedata/src/parasolfilerecord.cpp№ўџџџџџџџџ0DataFileDescriptorRecord_entry_indexџџџџџџџџconst int&џџџџ v_ivalџџџџџџџџ&const vector< int >џџџџ void*get_entryj/home/pascal/depot/filedata/src/parasolfilerecord.cppџ=џџџџџџџџRB2_DataRecordentry_indexџџџџџџџџconst int&џџџџ v_ivalџџџџџџџџ&const vector< int >џџџџ void*get_entryj/home/pascal/depot/filedata/src/parasolfilerecord.cpp?iџџџџџџџџ$BASIC_1_DataRecordentry_indexџџџџџџџџconst int&џџџџ v_ivalџџџџџџџџ&const vector< int >џџџџ void*get_record_sizej/home/pascal/depot/filedata/src/parasolfilerecord.cpp0Bџџџџџџџџ4LeaderFileDescriptorRecord recordџџџџџџџџconst Record&џџџџconst intget_record_sizej/home/pascal/depot/filedata/src/parasolfilerecord.cppCIџџџџџџџџ0DataFileDescriptorRecordџџџ€ recordџџџџџџџџconst Record&џџџџconst intget_xyz_satj/home/pascal/depot/filedata/src/parasolfilerecord.cppk|џџџџџџџџ:TechnologicalParametersRecordv_x_satџџџџџџџџdouble*џџџџv_y_satџџџџџџџџdouble*џџџџv_z_satџџџџџџџџdouble*џџџџvoidlcstringtools.hg_exception.h vectorf/home/pascal/depot/filedata/src/parasolfilerecord.h%yУущјџџџџ—_ЯкGQ|MAX_PARAM 400f/home/pascal/depot/filedata/src/parasolfilerecord.h vector …/Гtools.hАох7cstring˜Чjg_exception.hTСћf/home/pascal/depot/filedata/src/parasolfilerecord.hbЉѓмf/home/pascal/depot/filedata/src/parasolfilerecord.hџџџџџџџџџџџџ "AnnotationsRecordf/home/pascal/depot/filedata/src/parasolfilerecord.hВдZ Store the PARASOL Annotations record values.џџџџ"PARASOLFileRecordc5f/home/pascal/depot/filedata/src/parasolfilerecord.hГЕџџџџџџџџ"AnnotationsRecordcf/home/pascal/depot/filedata/src/parasolfilerecord.hД Дџџџџ char*"AnnotationsRecordf/home/pascal/depot/filedata/src/parasolfilerecord.hУЪџџџџџџџџ"AnnotationsRecord Ў|џџџџget_entryf/home/pascal/depot/filedata/src/parasolfilerecord.hггXђ @brief access to each attribute for writing it For example, this used for reading the L1 technological parametres. If you want to access to the image "im" in the sequence "is", @a v_ival will be ["is","im"] @param entry_index the index of the entry in the record @param v_ival the indexes of the value to read, stored as a vector @return a pointer to the attribute to readџџџџ"AnnotationsRecord Џentry_indexџџџџџџџџconst int&џџџџ v_ivalџџџџџџџџ&const vector< int >џџџџ void*"AnnotationsRecordf/home/pascal/depot/filedata/src/parasolfilerecord.hУЪџџџџџџџџ"AnnotationsRecord Ў|џџџџ>cloudy_pix_percent_per_lat_bandf/home/pascal/depot/filedata/src/parasolfilerecord.hММ.h< % of cloudy pixels for 10 degrees latitude band # vector< c5 >(l2_coast_pix_percentf/home/pascal/depot/filedata/src/parasolfilerecord.hЛ Л"N< % of Coast pixels in level-2 product char**l2_dummy_data_percentf/home/pascal/depot/filedata/src/parasolfilerecord.hЗ З#J< % of Dummy data in level-2 product char*&l2_land_pix_percentf/home/pascal/depot/filedata/src/parasolfilerecord.hЙ Й!L< % of Land pixels in level-2 product char*>l2_non_significant_data_percentf/home/pascal/depot/filedata/src/parasolfilerecord.hИ И-^< % of non significant data in level-2 product char*(l2_ocean_pix_percentf/home/pascal/depot/filedata/src/parasolfilerecord.hК К"N< % of Ocean pixels in level-2 product char*,nb_non_empty_grid_linef/home/pascal/depot/filedata/src/parasolfilerecord.hН Н$P< Nb grid lines with at least one pixel char*nb_pix_per_linef/home/pascal/depot/filedata/src/parasolfilerecord.hОО,< Nb pixel for line # vector< c5 >$BASIC_1_DataRecordf/home/pascal/depot/filedata/src/parasolfilerecord.hX‚ Implementation of the DataRecord interface for BASIC_1 products REM : the I1 typed variables (in the DPC) are stored as unsigned shortџџџџDataRecordget_entryf/home/pascal/depot/filedata/src/parasolfilerecord.hX @brief access to one data entry @param entry_index the index of the entry @param v_ival the indexes of the value to read, stored as a vector. For entries that have many (ex: The Temperature Profile in RB2 products that have 10 values), v_ival[0] will be the index of a direction) @param group_item_index the subindex of a repeated group. Ex : the relative azimuth angle in RB2 products have a entry index of 44 and a group_item_index of 2 @return the value as a void pointer. If not found, returns a NULL oneџџџџ$BASIC_1_DataRecordcentry_indexџџџџџџџџconst int&џџџџ v_ivalџџџџџџџџ&const vector< int >џџџџ void* Q490Pf/home/pascal/depot/filedata/src/parasolfilerecord.hss/r< Second component of Stokes Vector (Q) for channel 490P unsigned short* Q670Pf/home/pascal/depot/filedata/src/parasolfilerecord.htt/r< Second component of Stokes Vector (Q) for channel 670P unsigned short* Q865Pf/home/pascal/depot/filedata/src/parasolfilerecord.huu/r< Second component of Stokes Vector (Q) for channel 865P unsigned short* U490Pf/home/pascal/depot/filedata/src/parasolfilerecord.hvv/r< Second component of Stokes Vector (Q) for channel 490P unsigned short* U670Pf/home/pascal/depot/filedata/src/parasolfilerecord.hww/r< Second component of Stokes Vector (Q) for channel 670P unsigned short* U865Pf/home/pascal/depot/filedata/src/parasolfilerecord.hxx/r< Second component of Stokes Vector (Q) for channel 865P unsigned short*altf/home/pascal/depot/filedata/src/parasolfilerecord.hZZ"< Pixel altitude signed shortccd_colf/home/pascal/depot/filedata/src/parasolfilerecord.hdd/В< Column number of the CCD matrix detector which has observed the pixel for filter 670P2 signed short*ccd_linf/home/pascal/depot/filedata/src/parasolfilerecord.hcc/Ў< Line number of the CCD matrix detector which has observed the pixel for filter 670P2 signed short*&delta_thetav_cosphif/home/pascal/depot/filedata/src/parasolfilerecord.hhh;Ќ< Delta(Thetav.cos(phi)) : relative variation of viewing geometry between the filters signed short*&delta_thetav_sinphif/home/pascal/depot/filedata/src/parasolfilerecord.hii;Ќ< Delta(Thetav.sin(phi)) : relative variation of viewing geometry between the filters signed short*dqxf/home/pascal/depot/filedata/src/parasolfilerecord.h\\,< Pixel Quality Index unsigned char*land_percentf/home/pascal/depot/filedata/src/parasolfilerecord.h[[r< surface tpe indicator : 100->land, 0->Water, 50->Mixed unsigned shortnif/home/pascal/depot/filedata/src/parasolfilerecord.h__R< Number of available viewing directions unsigned shortphif/home/pascal/depot/filedata/src/parasolfilerecord.hgg-T< Relative Azimuth Angle for filter 670P2 unsigned short*phisf/home/pascal/depot/filedata/src/parasolfilerecord.h^^,< Solar Azimuth Angle unsigned shortrad1020NPf/home/pascal/depot/filedata/src/parasolfilerecord.hll3R< Normalized radiance for channel 1020NP unsigned short*rad443NPf/home/pascal/depot/filedata/src/parasolfilerecord.hjj2P< Normalized radiance for channel 443NP unsigned short*rad490Pf/home/pascal/depot/filedata/src/parasolfilerecord.hkk1N< Normalized radiance for channel 490P unsigned short*rad565NPf/home/pascal/depot/filedata/src/parasolfilerecord.hmm2P< Normalized radiance for channel 565NP unsigned short*rad670Pf/home/pascal/depot/filedata/src/parasolfilerecord.hnn1N< Normalized radiance for channel 670P unsigned short*rad763NPf/home/pascal/depot/filedata/src/parasolfilerecord.hoo2P< Normalized radiance for channel 763NP unsigned short*rad765NPf/home/pascal/depot/filedata/src/parasolfilerecord.hpp2P< Normalized radiance for channel 765NP unsigned short*rad865Pf/home/pascal/depot/filedata/src/parasolfilerecord.hqq1P< Normalized radiance for channel 865NP unsigned short*rad910NPf/home/pascal/depot/filedata/src/parasolfilerecord.hrr2P< Normalized radiance for channel 910NP unsigned short*rough_cloud_indf/home/pascal/depot/filedata/src/parasolfilerecord.h]]"~< Rough Cloud Indicator (0:clear, 100:cloudy, 50:undetermined) unsigned shortseq_arrangf/home/pascal/depot/filedata/src/parasolfilerecord.h``B< Sequence Arrangement Indicator unsigned char* seq_nbf/home/pascal/depot/filedata/src/parasolfilerecord.hbb0` directionnal group entries (< Sequence Number )unsigned short* thetasf/home/pascal/depot/filedata/src/parasolfilerecord.hee0*< Solar Zenith Angle unsigned short* thetavf/home/pascal/depot/filedata/src/parasolfilerecord.hff0J< View Zenith Angle for filter 670P2 unsigned short*0DataFileDescriptorRecordf/home/pascal/depot/filedata/src/parasolfilerecord.hиџn Store the PARASOL data files descriptor record values.џџџџ"PARASOLFileRecord0DataFileDescriptorRecordf/home/pascal/depot/filedata/src/parasolfilerecord.hшюџџџџџџџџ0DataFileDescriptorRecordџџџџget_entryf/home/pascal/depot/filedata/src/parasolfilerecord.hїїXђ @brief access to each attribute for writing it For example, this used for reading the L1 technological parametres. If you want to access to the image "im" in the sequence "is", @a v_ival will be ["is","im"] @param entry_index the index of the entry in the record @param v_ival the indexes of the value to read, stored as a vector @return a pointer to the attribute to readџџџџ0DataFileDescriptorRecordentry_indexџџџџџџџџconst int&џџџџ v_ivalџџџџџџџџ&const vector< int >џџџџ void*get_record_sizef/home/pascal/depot/filedata/src/parasolfilerecord.hўў3@ @brief access a specific record size. If the record isn't defined for the product, return 0 @param record a PARASOL data file record @return the record sizeџџџџ0DataFileDescriptorRecord recordџџџџџџџџconst Record&џџџџconst int0DataFileDescriptorRecordf/home/pascal/depot/filedata/src/parasolfilerecord.hшюџџџџџџџџ0DataFileDescriptorRecordџџџџ "data_rec_data_lenf/home/pascal/depot/filedata/src/parasolfilerecord.hтт"R< Length of the Datas in the Record Data unsigned int&data_rec_prefix_lenf/home/pascal/depot/filedata/src/parasolfilerecord.hсс$T< Length of the Prefix in the Record Data unsigned int&data_rec_suffix_lenf/home/pascal/depot/filedata/src/parasolfilerecord.hуу$T< Length of the Suffix in the Record Data unsigned intfile_nbf/home/pascal/depot/filedata/src/parasolfilerecord.hн н< File Number char*filenamef/home/pascal/depot/filedata/src/parasolfilerecord.hо о< File Name char*nb_data_recf/home/pascal/depot/filedata/src/parasolfilerecord.hппN< Number of "Data" records in the file unsigned int one_data_rec_lenf/home/pascal/depot/filedata/src/parasolfilerecord.hрр!<< Length of one "Data" record unsigned intref_doc_idf/home/pascal/depot/filedata/src/parasolfilerecord.hк кH< Reference Document Identification char*ref_doc_versionf/home/pascal/depot/filedata/src/parasolfilerecord.hл лH< Reference Document Version Number char*soft_versionf/home/pascal/depot/filedata/src/parasolfilerecord.hм м4< Software Version Number char*<DataProcessingParametersRecordf/home/pascal/depot/filedata/src/parasolfilerecord.h6‹€ Store the PARASOL DataProcessingParametersRecord record values.џџџџ"PARASOLFileRecord<DataProcessingParametersRecordf/home/pascal/depot/filedata/src/parasolfilerecord.h_џџџџџџџџ<DataProcessingParametersRecord Ќѓџџџџget_entryf/home/pascal/depot/filedata/src/parasolfilerecord.hŠŠXђ @brief access to each attribute for writing it For example, this used for reading the L1 technological parametres. If you want to access to the image "im" in the sequence "is", @a v_ival will be ["is","im"] @param entry_index the index of the entry in the record @param v_ival the indexes of the value to read, stored as a vector @return a pointer to the attribute to readџџџџ<DataProcessingParametersRecord ЗY€entry_indexџџџџџџџџconst int&џџџџ v_ivalџџџџџџџџ&const vector< int >џџџџ void*<DataProcessingParametersRecordf/home/pascal/depot/filedata/src/parasolfilerecord.h_џџџџџџџџ<DataProcessingParametersRecord Ќѓџџџџ#"calib_applic_datef/home/pascal/depot/filedata/src/parasolfilerecord.hE E `< Date of Begining of Calibration Applicability char*&calib_creation_datef/home/pascal/depot/filedata/src/parasolfilerecord.hD D"H< Date of Calibration File Creation char*$calib_data_versionf/home/pascal/depot/filedata/src/parasolfilerecord.hC C N< Version of data used for Calibration char*geo_applic_datef/home/pascal/depot/filedata/src/parasolfilerecord.hH H\< Date of Begining of Geometric Applicability char*,geo_file_creation_datef/home/pascal/depot/filedata/src/parasolfilerecord.hG G%D< Date of Geometric File Creation char*0geo_process_data_versionf/home/pascal/depot/filedata/src/parasolfilerecord.hF F&V< Version of data for Geometric Processing char*.input_TOMS_data_num1_idf/home/pascal/depot/filedata/src/parasolfilerecord.hX X&N< Identificator of 1st input TOMS data char*.input_TOMS_data_num2_idf/home/pascal/depot/filedata/src/parasolfilerecord.hY Y&N< Identificator of 2nd input TOMS data char*0input_meteo_data_num1_idf/home/pascal/depot/filedata/src/parasolfilerecord.hU U'P< Identificator of 1st input Meteo data char*0input_meteo_data_num2_idf/home/pascal/depot/filedata/src/parasolfilerecord.hV V'P< Identificator of 2nd input Meteo data char*0input_meteo_data_num3_idf/home/pascal/depot/filedata/src/parasolfilerecord.hW W'P< Identificator of 3rd input Meteo data char*$l0_creation_agencyf/home/pascal/depot/filedata/src/parasolfilerecord.h9 9 4< Level-0 creation agency char*&l0_creation_countryf/home/pascal/depot/filedata/src/parasolfilerecord.h8 8!6< Level-0 creation country char* l0_creation_datef/home/pascal/depot/filedata/src/parasolfilerecord.h; ;0< Level-0 creation date char*(l0_creation_facilityf/home/pascal/depot/filedata/src/parasolfilerecord.h: :#8< Level-0 creation facility char*0l0_input_parasol_data_idf/home/pascal/depot/filedata/src/parasolfilerecord.hB B'\< Identificator of level-0 Input PARASOL data char*.l0_process_soft_versionf/home/pascal/depot/filedata/src/parasolfilerecord.h< <%L< Level-0 processing software version char*$l1_creation_agencyf/home/pascal/depot/filedata/src/parasolfilerecord.h> > 4< Level-1 creation agency char*&l1_creation_countryf/home/pascal/depot/filedata/src/parasolfilerecord.h= =!6< Level-1 creation country char* l1_creation_datef/home/pascal/depot/filedata/src/parasolfilerecord.h@ @0< Level-1 creation date char*(l1_creation_facilityf/home/pascal/depot/filedata/src/parasolfilerecord.h? ?#8< Level-1 creation facility char*0l1_input_parasol_data_idf/home/pascal/depot/filedata/src/parasolfilerecord.hQ Q'\< Identificator of level-1 Input PARASOL data char*.l1_process_soft_versionf/home/pascal/depot/filedata/src/parasolfilerecord.hA A%L< Level-1 processing software version char*$l2_creation_agencyf/home/pascal/depot/filedata/src/parasolfilerecord.hK K 4< Level-2 creation agency char*&l2_creation_countryf/home/pascal/depot/filedata/src/parasolfilerecord.hJ J!6< Level-2 creation country char* l2_creation_datef/home/pascal/depot/filedata/src/parasolfilerecord.hM M0< Level-2 creation date char*(l2_creation_facilityf/home/pascal/depot/filedata/src/parasolfilerecord.hL L#8< Level-2 creation facility char*.l2_process_soft_versionf/home/pascal/depot/filedata/src/parasolfilerecord.hP P%L< Level-2 processing software version char*:l3_input_parasol_data_num1_idf/home/pascal/depot/filedata/src/parasolfilerecord.hR R,d< Identificator of 1st level-3 Input PARASOL data char*:l3_input_parasol_data_num2_idf/home/pascal/depot/filedata/src/parasolfilerecord.hS S,d< Identificator of 2nd level-3 Input PARASOL data char*:l3_input_parasol_data_num3_idf/home/pascal/depot/filedata/src/parasolfilerecord.hT T,d< Identificator of 3rd level-3 Input PARASOL data char*process_line_idf/home/pascal/depot/filedata/src/parasolfilerecord.hN NB< Processing Line Identification char*$product_confidencef/home/pascal/depot/filedata/src/parasolfilerecord.hII'4< Product Confidence Data unsigned char*2product_confidence_internf/home/pascal/depot/filedata/src/parasolfilerecord.hZZ.R< Product Confidence Data (internal use) unsigned char*product_them_idf/home/pascal/depot/filedata/src/parasolfilerecord.hO OD< Product Thematic identification char*DataRecordf/home/pascal/depot/filedata/src/parasolfilerecord.hШ Interface class that describes a PARASOL data record storage class. Each product must implements itџџџџ"PARASOLFileRecord col_nbf/home/pascal/depot/filedata/src/parasolfilerecord.hџџџџunsigned shortline_nbf/home/pascal/depot/filedata/src/parasolfilerecord.hџџџџunsigned shortHeaderRecordf/home/pascal/depot/filedata/src/parasolfilerecord.h’ЛP Store the PARASOL header record values.џџџџ"PARASOLFileRecordHeaderRecordf/home/pascal/depot/filedata/src/parasolfilerecord.hЅВџџџџџџџџHeaderRecord_џџџџget_entryf/home/pascal/depot/filedata/src/parasolfilerecord.hККXђ @brief access to each attribute for writing it For example, this used for reading the L1 technological parametres. If you want to access to the image "im" in the sequence "is", @a v_ival will be ["is","im"] @param entry_index the index of the entry in the record @param v_ival the indexes of the value to read, stored as a vector @return a pointer to the attribute to readџџџџHeaderRecordfentry_indexџџџџџџџџconst int&џџџџ v_ivalџџџџџџџџ&const vector< int >џџџџ void*HeaderRecordf/home/pascal/depot/filedata/src/parasolfilerecord.hЅВџџџџџџџџHeaderRecord_џџџџ DEM_namef/home/pascal/depot/filedata/src/parasolfilerecord.hž žb< Name of the DEM used for the data registration char*&DEM_spatial_res_latf/home/pascal/depot/filedata/src/parasolfilerecord.hŸ Ÿ!h< Spatial resolution of the DEM along the latitudes char*&DEM_spatial_res_lonf/home/pascal/depot/filedata/src/parasolfilerecord.h   !j< Spatial resolution of the DEM along the longitudes char**ellips_major_axis_lenf/home/pascal/depot/filedata/src/parasolfilerecord.h $J< Length of the ellipsoid major axis char**ellips_minor_axis_lenf/home/pascal/depot/filedata/src/parasolfilerecord.hœ œ$J< Length of the ellipsoid minor axis char*ellips_namef/home/pascal/depot/filedata/src/parasolfilerecord.h› ›n< Name of the ellipsoid used for the data registration char*instr_idf/home/pascal/depot/filedata/src/parasolfilerecord.h— —6< Instrument identificator char*phone_nbf/home/pascal/depot/filedata/src/parasolfilerecord.h” ”B< Information Point Phone Number char*pix_sizef/home/pascal/depot/filedata/src/parasolfilerecord.hš šP< Pixel size of the POLDER/Parasol grid char*product_idf/home/pascal/depot/filedata/src/parasolfilerecord.h• •2< Product Identification char* sat_idf/home/pascal/depot/filedata/src/parasolfilerecord.h– –4< Satellite identificator char*spatial_coverf/home/pascal/depot/filedata/src/parasolfilerecord.h˜ ˜&< Spatial Coverage char*BInstrumentSettingParametersRecordf/home/pascal/depot/filedata/src/parasolfilerecord.hъz Store the PARASOL InstrumentSettingParameters record values.џџџџ"PARASOLFileRecordBInstrumentSettingParametersRecordf/home/pascal/depot/filedata/src/parasolfilerecord.hіќџџџџџџџџBInstrumentSettingParametersRecordџџџџget_entryf/home/pascal/depot/filedata/src/parasolfilerecord.hXт @brief access to each attribute for writing it For example, this used for reading the L1 technological parametres. If you want to access to the image "im" in the sequence "is", @a v_ival will be ["is","im"] @param entry_index the index of the entry in the record @param v_ival the indexes of the value to read, stored as a vector @return a pointer to the attributeџџџџBInstrumentSettingParametersRecordentry_indexџџџџџџџџconst int&џџџџ v_ivalџџџџџџџџ&const vector< int >џџџџ void*BInstrumentSettingParametersRecordf/home/pascal/depot/filedata/src/parasolfilerecord.hіќџџџџџџџџBInstrumentSettingParametersRecordџџџџLIA_durationf/home/pascal/depot/filedata/src/parasolfilerecord.hэ э< LIA duration char*SIA_durationf/home/pascal/depot/filedata/src/parasolfilerecord.hь ь< SIA duration char*analog_gain_nbf/home/pascal/depot/filedata/src/parasolfilerecord.hё ё.< Analogic Gain Number char*6integration_time_def_type_Af/home/pascal/depot/filedata/src/parasolfilerecord.hю ю*d< Integration Time Definition for sequence type A char*6integration_time_def_type_Bf/home/pascal/depot/filedata/src/parasolfilerecord.hя я*d< Integration Time Definition for sequence type B char*seq_typef/home/pascal/depot/filedata/src/parasolfilerecord.h№№P< Sequence Type : 16 bytes of bit flags unsigned char*4LeaderFileDescriptorRecordf/home/pascal/depot/filedata/src/parasolfilerecord.h\d Store the PARASOL files descriptor record values.џџџџ"PARASOLFileRecord4LeaderFileDescriptorRecordf/home/pascal/depot/filedata/src/parasolfilerecord.hu{џџџџџџџџ4LeaderFileDescriptorRecord џџџџget_entryf/home/pascal/depot/filedata/src/parasolfilerecord.h……Xђ @brief access to each attribute for writing it For example, this used for reading the L1 technological parametres. If you want to access to the image "im" in the sequence "is", @a v_ival will be ["is","im"] @param entry_index the index of the entry in the record @param v_ival the indexes of the value to read, stored as a vector @return a pointer to the attribute to readџџџџ4LeaderFileDescriptorRecord entry_indexџџџџџџџџconst int&џџџџ v_ivalџџџџџџџџ&const vector< int >џџџџ void*get_record_sizef/home/pascal/depot/filedata/src/parasolfilerecord.hŒŒ3D @brief access a specific record size. If the record isn't defined for the product, return 0 @param record a PARASOL leader file record @return the record sizeџџџџ4LeaderFileDescriptorRecordn recordџџџџџџџџconst Record&џџџџconst int8~ LeaderFileDescriptorRecordf/home/pascal/depot/filedata/src/parasolfilerecord.h||#џџџџџџџџ4LeaderFileDescriptorRecordlџџџџ4LeaderFileDescriptorRecordf/home/pascal/depot/filedata/src/parasolfilerecord.hu{џџџџџџџџ4LeaderFileDescriptorRecord џџџџ8~ LeaderFileDescriptorRecordf/home/pascal/depot/filedata/src/parasolfilerecord.h||#џџџџџџџџ4LeaderFileDescriptorRecordlџџџџannot_rec_lenf/home/pascal/depot/filedata/src/parasolfilerecord.hppH< Length of the "Annotation" record unsigned int.data_proc_param_rec_lenf/home/pascal/depot/filedata/src/parasolfilerecord.hll(h< Length of the "Data processing parameters" record unsigned intfile_nbf/home/pascal/depot/filedata/src/parasolfilerecord.ha a< File Number char*filenamef/home/pascal/depot/filedata/src/parasolfilerecord.hb b< File Name char*header_rec_lenf/home/pascal/depot/filedata/src/parasolfilerecord.hdd@< Length of the "Header" record unsigned int6instr_setting_param_rec_lenf/home/pascal/depot/filedata/src/parasolfilerecord.hhh,n< Length of the "Instrument setting parameters" record unsigned intnb_annot_recf/home/pascal/depot/filedata/src/parasolfilerecord.hooZ< Number of "Annotation" records in the file unsigned int,nb_data_proc_param_recf/home/pascal/depot/filedata/src/parasolfilerecord.hkk'z< Number of "Data processing parameters" records in the file unsigned intnb_header_recf/home/pascal/depot/filedata/src/parasolfilerecord.hccR< Number of "Header" records in the file unsigned int4nb_instr_setting_param_recf/home/pascal/depot/filedata/src/parasolfilerecord.hgg+€< Number of "Instrument setting parameters" records in the file unsigned int*nb_scaling_factor_recf/home/pascal/depot/filedata/src/parasolfilerecord.hmm&d< Number of "Scaling factors" records in the file unsigned int.nb_spatio_temp_char_recf/home/pascal/depot/filedata/src/parasolfilerecord.hee(„< Number of "Spatio-Temporal Characteristics" records in the file unsigned int"nb_tech_param_recf/home/pascal/depot/filedata/src/parasolfilerecord.hii"v< Number of "Technological parameters" records in the file unsigned intref_doc_idf/home/pascal/depot/filedata/src/parasolfilerecord.h^ ^H< Reference Document Identification char*ref_doc_versionf/home/pascal/depot/filedata/src/parasolfilerecord.h_ _H< Reference Document Version Number char*,scaling_factor_rec_lenf/home/pascal/depot/filedata/src/parasolfilerecord.hnn'R< Length of the "Scaling factors" record unsigned intsoft_versionf/home/pascal/depot/filedata/src/parasolfilerecord.h` `4< Software Version Number char*0spatio_temp_char_rec_lenf/home/pascal/depot/filedata/src/parasolfilerecord.hff)r< Length of the "Spatio-Temporal Characteristics" record unsigned int$tech_param_rec_lenf/home/pascal/depot/filedata/src/parasolfilerecord.hjj#d< Length of the "Technological parameters" record unsigned int"PARASOLFileRecordf/home/pascal/depot/filedata/src/parasolfilerecord.h:W’ This class is designed to store the values read in one PARASOL leader file record. It is only an abstract interface for more specialized classes, and so can't be instantiated as itself. The implementations for one specific record can be seen above. See PARASOL leader file format classes for description @author Nicolas PASCALџџџџ"PARASOLFileRecordf/home/pascal/depot/filedata/src/parasolfilerecord.h??џџџџџџџџ"PARASOLFileRecordeџџџџget_entryf/home/pascal/depot/filedata/src/parasolfilerecord.hJNМ @brief access to each attribute for writing it Method set for retrocompatibility @param entry_index the index of the entry in the record @param val_index the index of the value to read (ex : the parameter number for the scaling factors) What is called group is many following entries that are repeated @return a pointer to the attribute to readџџџџ"PARASOLFileRecordMentry_indexџџџџџџџџconst int&џџџџval_indexџџџџџџџџconst intџџџџ void*get_entryf/home/pascal/depot/filedata/src/parasolfilerecord.hVVdђ @brief access to each attribute for writing it For example, this used for reading the L1 technological parametres. If you want to access to the image "im" in the sequence "is", @a v_ival will be ["is","im"] @param entry_index the index of the entry in the record @param v_ival the indexes of the value to read, stored as a vector @return a pointer to the attribute to readџџџџ"PARASOLFileRecord Dentry_indexџџџџџџџџconst int&џџџџ v_ivalџџџџџџџџ&const vector< int >џџџџ void*&~ PARASOLFileRecordf/home/pascal/depot/filedata/src/parasolfilerecord.h@@"џџџџџџџџ"PARASOLFileRecorduџџџџ"PARASOLFileRecordf/home/pascal/depot/filedata/src/parasolfilerecord.h??џџџџџџџџ"PARASOLFileRecordeџџџџget_entryf/home/pascal/depot/filedata/src/parasolfilerecord.hJNМ @brief access to each attribute for writing it Method set for retrocompatibility @param entry_index the index of the entry in the record @param val_index the index of the value to read (ex : the parameter number for the scaling factors) What is called group is many following entries that are repeated @return a pointer to the attribute to readџџџџ"PARASOLFileRecordMentry_indexџџџџџџџџconst int&џџџџval_indexџџџџџџџџconst intџџџџ void*&~ PARASOLFileRecordf/home/pascal/depot/filedata/src/parasolfilerecord.h@@"џџџџџџџџ"PARASOLFileRecorduџџџџrec_lenf/home/pascal/depot/filedata/src/parasolfilerecord.h==0< Length of this record unsigned short rec_nbf/home/pascal/depot/filedata/src/parasolfilerecord.h<<8< Record Number in the file unsigned intRB2_DataRecordf/home/pascal/depot/filedata/src/parasolfilerecord.hS Implementation of the DataRecord interface for RB2 products REM : the I1 typed variables (in the DPC) are stored as unsigned shortџџџџDataRecordget_entryf/home/pascal/depot/filedata/src/parasolfilerecord.hRRX @brief access to one data entry @param entry_index the index of the entry @param v_ival the indexes of the value to read, stored as a vector. For entries that have many (ex: The Temperature Profile in RB2 products that have 10 values), v_ival[0] will be the index of a direction) @param group_item_index the subindex of a repeated group. Ex : the relative azimuth angle in RB2 products have a entry index of 44 and a group_item_index of 2 @return the value as a void pointer. If not found, returns a NULL oneџџџџRB2_DataRecordlentry_indexџџџџџџџџconst int&џџџџ v_ivalџџџџџџџџ&const vector< int >џџџџ void*2albedo_QIf/home/pascal/depot/filedata/src/parasolfilerecord.h##.< Albedo Quality Index unsigned short*angular_stddev_albedof/home/pascal/depot/filedata/src/parasolfilerecord.h""(T< Relative angular std dev of the albedos unsigned short$angular_stddev_po2f/home/pascal/depot/filedata/src/parasolfilerecord.h//%f< Cloud oxygen pressure angular Standard Deviation unsigned short&angular_stddev_prayf/home/pascal/depot/filedata/src/parasolfilerecord.h11&j< Cloud Rayleigh pressure angular Standard Deviation unsigned short6angular_stddev_scene_albedof/home/pascal/depot/filedata/src/parasolfilerecord.h%%.^< Relative Angular std dev of the Scene Albedo unsigned shortazimuth_anglef/home/pascal/depot/filedata/src/parasolfilerecord.hAA72< Relative Azimuth Angle unsigned short*clear_albedof/home/pascal/depot/filedata/src/parasolfilerecord.h&&:< Clear Albedo at 670/865 nm unsigned short2clear_cloudy_pix_fractionf/home/pascal/depot/filedata/src/parasolfilerecord.hGGC8< Clear/CLoudy Pix Fraction unsigned short*clear_sw_albedof/home/pascal/depot/filedata/src/parasolfilerecord.h(("2< Clear Shortwave Albedo unsigned shortcloud_coverf/home/pascal/depot/filedata/src/parasolfilerecord.h))< Cloud Cover unsigned shortcloud_cover_QIf/home/pascal/depot/filedata/src/parasolfilerecord.h++!8< Cloud Cover Quality Index unsigned shortcloud_phasef/home/pascal/depot/filedata/src/parasolfilerecord.h66< Cloud Phase unsigned shortdir_cloud_coverf/home/pascal/depot/filedata/src/parasolfilerecord.hHH94< Directional Cloud Cover unsigned short*(dir_spherical_albedof/home/pascal/depot/filedata/src/parasolfilerecord.hII>f< Directional Cloud Spherical Albedo at 670/865 nm unsigned short*dir_sw_albedof/home/pascal/depot/filedata/src/parasolfilerecord.hEE7&< Shortwave Albedo unsigned short*$dir_sw_reflectancef/home/pascal/depot/filedata/src/parasolfilerecord.hDD<0< Shortwave Reflectance unsigned short*dsqtraitf/home/pascal/depot/filedata/src/parasolfilerecord.h0< Pixel Confidence Data unsigned char*.homogeneity_coef_opt_thf/home/pascal/depot/filedata/src/parasolfilerecord.h44*P< Homogeneity Coef of Optical Thickness unsigned shortice_shape_idxf/home/pascal/depot/filedata/src/parasolfilerecord.h77 4< Ice Crystal Shape Index unsigned short0indet2clear_pix_fractionf/home/pascal/depot/filedata/src/parasolfilerecord.h**+x< Fraction of Pix firstly indetermined Finally Clear/cloudy unsigned shortland_percentf/home/pascal/depot/filedata/src/parasolfilerecord.h2< percent of land fields unsigned shortmean_albedof/home/pascal/depot/filedata/src/parasolfilerecord.h  8< Mean Albedo at 670/865 nm unsigned shortmean_altf/home/pascal/depot/filedata/src/parasolfilerecord.h"< mean altitude signed shortmean_po2f/home/pascal/depot/filedata/src/parasolfilerecord.h..:< Mean Cloud oxygen pressure unsigned shortmean_prayf/home/pascal/depot/filedata/src/parasolfilerecord.h00>< Mean Cloud Rayleigh pressure unsigned short minmax_glint_dirf/home/pascal/depot/filedata/src/parasolfilerecord.h#`< First and Last directions contamined by glint unsigned shortnarrow_albedof/home/pascal/depot/filedata/src/parasolfilerecord.hCC7(< Narrowband Albedo unsigned short*nb_Pray_dirf/home/pascal/depot/filedata/src/parasolfilerecord.hH< Nb Directions for Pray Estimation unsigned shortnb_view_dirf/home/pascal/depot/filedata/src/parasolfilerecord.h0< Nb Viewing Directions unsigned shortobs_time_hrf/home/pascal/depot/filedata/src/parasolfilerecord.h>< Observation UTC time (hours) unsigned shortobs_time_minf/home/pascal/depot/filedata/src/parasolfilerecord.h:< Observation UTC time (min) unsigned short opt_thf/home/pascal/depot/filedata/src/parasolfilerecord.h22P< Cloud Optical Thickness (Linear Mean) unsigned short$ozone_total_columnf/home/pascal/depot/filedata/src/parasolfilerecord.h99%*< Ozone Total Column unsigned shortpolar_radiancef/home/pascal/depot/filedata/src/parasolfilerecord.hFF8>< Polarized Radiance at 865 nm unsigned short*reflectancef/home/pascal/depot/filedata/src/parasolfilerecord.hBB5V< Reflectance Corrected for gas Absorption unsigned short*scene_albedof/home/pascal/depot/filedata/src/parasolfilerecord.h$$< Scene Albedo unsigned short,solar_zenith_angle_cosf/home/pascal/depot/filedata/src/parasolfilerecord.h)>< Cosine of Solar Zenith angle unsigned short*spatial_stddev_albedof/home/pascal/depot/filedata/src/parasolfilerecord.h!!(T< Relative spatial std dev of the albedos unsigned shortsperical_albedof/home/pascal/depot/filedata/src/parasolfilerecord.h55"N< Cloud Spherical Albedo at 670/865 nm unsigned shortstddev_opt_thf/home/pascal/depot/filedata/src/parasolfilerecord.h33 P< Relative Std Dev of Optical Thickness unsigned short$strato_aero_opt_thf/home/pascal/depot/filedata/src/parasolfilerecord.h88%T< Stratospheric Aerosol Optical Thickness unsigned shortsurf_pressuref/home/pascal/depot/filedata/src/parasolfilerecord.h<< &< Surface Pressure unsigned shortsurf_wind_dirf/home/pascal/depot/filedata/src/parasolfilerecord.h;; 2< Surface Wind Direction unsigned shortsurf_wind_speedf/home/pascal/depot/filedata/src/parasolfilerecord.h::"*< Surface Wind Speed unsigned shortsw_albedof/home/pascal/depot/filedata/src/parasolfilerecord.h''&< Shortwave Albedo unsigned shorttemp_proff/home/pascal/depot/filedata/src/parasolfilerecord.h== `< Temperature Profile : for each pressure level unsigned short*"view_zenith_anglef/home/pascal/depot/filedata/src/parasolfilerecord.h@@;p directionnal group entries : for (< View Zenith Angle )unsigned short*$water_vapor_columnf/home/pascal/depot/filedata/src/parasolfilerecord.h,,%*< Water Vapor Column unsigned short water_vapor_proff/home/pascal/depot/filedata/src/parasolfilerecord.h>>',< Water Vapor Profile unsigned short*$water_vapor_stddevf/home/pascal/depot/filedata/src/parasolfilerecord.h--%B< Water Vapor Standard Deviation unsigned short(ScalingFactorsRecordf/home/pascal/depot/filedata/src/parasolfilerecord.hЎ` Store the PARASOL ScalingFactors record values.џџџџ"PARASOLFileRecord(ScalingFactorsRecordf/home/pascal/depot/filedata/src/parasolfilerecord.hœЌџџџџџџџџ(ScalingFactorsRecord Џэ€џџџџget_entryf/home/pascal/depot/filedata/src/parasolfilerecord.h­­Xђ @brief access to each attribute for writing it For example, this used for reading the L1 technological parametres. If you want to access to the image "im" in the sequence "is", @a v_ival will be ["is","im"] @param entry_index the index of the entry in the record @param v_ival the indexes of the value to read, stored as a vector @return a pointer to the attribute to readџџџџ(ScalingFactorsRecord ­p€entry_indexџџџџџџџџconst int&џџџџ v_ivalџџџџџџџџ&const vector< int >џџџџ void*(ScalingFactorsRecordf/home/pascal/depot/filedata/src/parasolfilerecord.hœЌџџџџџџџџ(ScalingFactorsRecord Џэ€џџџџbyte_orderf/home/pascal/depot/filedata/src/parasolfilerecord.h’ ’2< Byte ordering standard char*interleave_idf/home/pascal/depot/filedata/src/parasolfilerecord.h‘ ‘2< Interleaving indicator char*nb_bytesf/home/pascal/depot/filedata/src/parasolfilerecord.h• •%P< the number of bytes of each parameter char**nb_pix_bytesf/home/pascal/depot/filedata/src/parasolfilerecord.h” ”*< Nb bytes per pixel char*nb_pix_paramf/home/pascal/depot/filedata/src/parasolfilerecord.h“ “4< Nb parameters per pixel char* offsetf/home/pascal/depot/filedata/src/parasolfilerecord.h— —$N< the scaling offset of each parameter char** slopef/home/pascal/depot/filedata/src/parasolfilerecord.h– –#L< the scaling slope of each parameter char**FSpatioTemporalCharacteristicsRecordf/home/pascal/depot/filedata/src/parasolfilerecord.hРх~ Store the PARASOL SpatioTemporalCharacteristics record values.џџџџ"PARASOLFileRecordFSpatioTemporalCharacteristicsRecordf/home/pascal/depot/filedata/src/parasolfilerecord.hбмџџџџџџџџFSpatioTemporalCharacteristicsRecordџџџџget_entryf/home/pascal/depot/filedata/src/parasolfilerecord.hффXђ @brief access to each attribute for writing it For example, this used for reading the L1 technological parametres. If you want to access to the image "im" in the sequence "is", @a v_ival will be ["is","im"] @param entry_index the index of the entry in the record @param v_ival the indexes of the value to read, stored as a vector @return a pointer to the attribute to readџџџџFSpatioTemporalCharacteristicsRecordentry_indexџџџџџџџџconst int&џџџџ v_ivalџџџџџџџџ&const vector< int >џџџџ void*FSpatioTemporalCharacteristicsRecordf/home/pascal/depot/filedata/src/parasolfilerecord.hбмџџџџџџџџFSpatioTemporalCharacteristicsRecordџџџџ cycle_nbf/home/pascal/depot/filedata/src/parasolfilerecord.hТ Т< Cycle number char*desc_node_datef/home/pascal/depot/filedata/src/parasolfilerecord.hЦ Ц.< Descending Node date char*desc_node_lonf/home/pascal/depot/filedata/src/parasolfilerecord.hХ Х8< Descending Node Longitude char*first_acq_datef/home/pascal/depot/filedata/src/parasolfilerecord.hШ Ш2< Date first acquisition char*last_acq_datef/home/pascal/depot/filedata/src/parasolfilerecord.hЩ Щ0< Date last acquisition char*(line_nb_northern_pixf/home/pascal/depot/filedata/src/parasolfilerecord.hЫ Ы"J< Line number of northern most pixel char*(line_nb_southern_pixf/home/pascal/depot/filedata/src/parasolfilerecord.hЬ Ь"J< Line number of southern most pixel char* nb_seqf/home/pascal/depot/filedata/src/parasolfilerecord.hЪ Ъ,< Number of sequences char*orbit_nbf/home/pascal/depot/filedata/src/parasolfilerecord.hУ У8< Orbit Number in the cycle char*subsat_track_nbf/home/pascal/depot/filedata/src/parasolfilerecord.hФ Ф:< Sub satellite track number char*:TechnologicalParametersRecordf/home/pascal/depot/filedata/src/parasolfilerecord.h 1ф @class TechnologicalParametersRecord PARASOL Technological Parameters records storage, as read in the leader fileџџџџ"PARASOLFileRecordget_entryf/home/pascal/depot/filedata/src/parasolfilerecord.h''Xђ @brief access to each attribute for writing it For example, this used for reading the L1 technological parametres. If you want to access to the image "im" in the sequence "is", @a v_ival will be ["is","im"] @param entry_index the index of the entry in the record @param v_ival the indexes of the value to read, stored as a vector @return a pointer to the attribute to readџџџџ:TechnologicalParametersRecordentry_indexџџџџџџџџconst int&џџџџ v_ivalџџџџџџџџ&const vector< int >џџџџ void*get_xyz_satf/home/pascal/depot/filedata/src/parasolfilerecord.h0 0Kв @brief read the X, Y, Z position of the satellite and fill in the output data buffers with it @warning buffers must have been already allocated with a size of NB_MAX_PARASOL_SEQUENCE * NB_MAX_PARASOL_IMAGE_PER_SEQUENCE @param v_x_sat [OUT] X satellite position (m) @param v_y_sat [OUT] Y satellite position (m) @param v_z_sat [OUT] Z satellite position (m)џџџџ:TechnologicalParametersRecordv_x_satџџџџџџџџdouble*џџџџv_y_satџџџџџџџџdouble*џџџџv_z_satџџџџџџџџdouble*џџџџvoid extern_lens_tempf/home/pascal/depot/filedata/src/parasolfilerecord.h !„< External lens temperature during the sequence (Celsius degrees) char* img_nbf/home/pascal/depot/filedata/src/parasolfilerecord.h Xю sequential group entries (< Image Number : i (0"di"d9). i=im if the sequence was acquired and processed; i=0 otherwise )char*** intern_lens_tempf/home/pascal/depot/filedata/src/parasolfilerecord.h  !„< Internal lens temperature during the sequence (Celsius degrees) char*,long_acq_time_durationf/home/pascal/depot/filedata/src/parasolfilerecord.h (L< Long Acquisition Time duration (ms) char*pitch_satf/home/pascal/depot/filedata/src/parasolfilerecord.h XЂ< Pitch of the Parasol instrument during acquisition of image #1 in the sequence char***roll_satf/home/pascal/depot/filedata/src/parasolfilerecord.h X < Roll of the Parasol instrument during acquisition of image #1 in the sequence char*** seq_nbf/home/pascal/depot/filedata/src/parasolfilerecord.h  $< Sequence Number char*.short_acq_time_durationf/home/pascal/depot/filedata/src/parasolfilerecord.h (N< Short Acquisition Time duration (ms) char*time_acqf/home/pascal/depot/filedata/src/parasolfilerecord.h YЈ< Date and UT time of the acquisition of image #1 in sequence is : yyyymmddhhmmsscc char*** vx_satf/home/pascal/depot/filedata/src/parasolfilerecord.h YЮ< Vx component of the Parasol speed vector during the acquisition of image #1 in the sequence (km.s-1) char*** vy_satf/home/pascal/depot/filedata/src/parasolfilerecord.h YЮ< Vy component of the Parasol speed vector during the acquisition of image #1 in the sequence (km.s-1) char*** vz_satf/home/pascal/depot/filedata/src/parasolfilerecord.h YЮ< Vz component of the Parasol speed vector during the acquisition of image #1 in the sequence (km.s-1) char*** x_satf/home/pascal/depot/filedata/src/parasolfilerecord.h YД< X component of the Parasol position during acquisition of image #1 in the sequence (km) char*** y_satf/home/pascal/depot/filedata/src/parasolfilerecord.h YД< Y component of the Parasol position during acquisition of image #1 in the sequence (km) char***yaw_satf/home/pascal/depot/filedata/src/parasolfilerecord.h Xž< Yaw of the Parasol instrument during acquisition of image #1 in the sequence char*** z_satf/home/pascal/depot/filedata/src/parasolfilerecord.h YД< Z component of the Parasol position during acquisition of image #1 in the sequence (km) char*** ANNOTATIONSf/home/pascal/depot/filedata/src/parasolfilerecord.h00џџџџ RecordDATAf/home/pascal/depot/filedata/src/parasolfilerecord.h33џџџџ Record(DATA_FILE_DESCRIPTORf/home/pascal/depot/filedata/src/parasolfilerecord.h22џџџџ Record4DATA_PROCESSING_PARAMETERSf/home/pascal/depot/filedata/src/parasolfilerecord.h..џџџџ Record HEADERf/home/pascal/depot/filedata/src/parasolfilerecord.h** џџџџ Record:INSTRUMENT_SETTING_PARAMETERSf/home/pascal/depot/filedata/src/parasolfilerecord.h,,!џџџџ Record,LEADER_FILE_DESCRIPTORf/home/pascal/depot/filedata/src/parasolfilerecord.h))џџџџ Record*MAX_PARASOL_DIRECTIONf/home/pascal/depot/filedata/src/parasolfilerecord.h)L maximum number of viewing directions const intBNB_MAX_PARASOL_IMAGE_PER_SEQUENCEf/home/pascal/depot/filedata/src/parasolfilerecord.h##6j maximum number of acquired images during a sequence const int.NB_MAX_PARASOL_SEQUENCEf/home/pascal/depot/filedata/src/parasolfilerecord.h!!.R maximum number of acquisition sequences const intSCALING_FACTORSf/home/pascal/depot/filedata/src/parasolfilerecord.h//џџџџ Record>SPATIO_TEMPORAL_CHARACTERISTICSf/home/pascal/depot/filedata/src/parasolfilerecord.h++#џџџџ Record0TECHNOLOGICAL_PARAMETERSf/home/pascal/depot/filedata/src/parasolfilerecord.h--џџџџ Record Recordf/home/pascal/depot/filedata/src/parasolfilerecord.h'4n represents which leader file record we are working on.const intstdf/home/pascal/depot/filedata/src/parasolfilerecord.hYparasolleader.hb/home/pascal/depot/filedata/src/parasolleader.cpp%yТЩЂџџџџparasolleader.hF’сХb/home/pascal/depot/filedata/src/parasolleader.cppˆ5b/home/pascal/depot/filedata/src/parasolleader.cppџџџџџџџџџџџџPARASOLLeaderb/home/pascal/depot/filedata/src/parasolleader.cpp џџџџџџџџPARASOLLeaderџџџ€leader_filenameџџџџџџџџconst stringџџџџџџџџfree_recordb/home/pascal/depot/filedata/src/parasolleader.cpp$VџџџџџџџџPARASOLLeaderџџџ€ rec_idџџџџџџџџconst Record&џџџџvoidfree_recordsb/home/pascal/depot/filedata/src/parasolleader.cpp%(џџџџџџџџPARASOLLeadervoidget_entry_blockb/home/pascal/depot/filedata/src/parasolleader.cppYЂ }џџџџPARASOLLeader recџџџџџџџџconst Recordџџџџentry_idxџџџџџџџџconst intџџџџ(vector< EntryBlock >get_recordb/home/pascal/depot/filedata/src/parasolleader.cpp "џџџџџџџџPARASOLLeaderqgrecord_codeџџџџџџџџconst Record&џџџџ$PARASOLFileRecord*"get_record_formatb/home/pascal/depot/filedata/src/parasolleader.cppё џџџџџџџџPARASOLLeaderqg€record_codeџџџџџџџџconst Record&џџџџ&const RecordFormat*"get_record_offsetb/home/pascal/depot/filedata/src/parasolleader.cppл№џџџџџџџџPARASOLLeaderЖќ€record_codeџџџџџџџџconst Record&џџџџconst intinit_recordb/home/pascal/depot/filedata/src/parasolleader.cpp*GџџџџџџџџPARASOLLeaderrecord_codeџџџџџџџџconst Record&џџџџ$PARASOLFileRecord* is_record_loadedb/home/pascal/depot/filedata/src/parasolleader.cppIKџџџџџџџџPARASOLLeaderqg€recџџџџџџџџconst Record&џџџџconst boolprint_headerb/home/pascal/depot/filedata/src/parasolleader.cppƒšџџџџџџџџPARASOLLeaderЖ…€void2print_instr_setting_paramb/home/pascal/depot/filedata/src/parasolleader.cppжйџџџџџџџџPARASOLLeader€void8print_leader_file_descriptorb/home/pascal/depot/filedata/src/parasolleader.cppMkџџџџџџџџPARASOLLeadervoid*print_scaling_factorsb/home/pascal/depot/filedata/src/parasolleader.cpp›АџџџџџџџџPARASOLLeaderџџџ€void,print_spatio_temp_charb/home/pascal/depot/filedata/src/parasolleader.cppmџџџџџџџџPARASOLLeaderџџџ€void$print_techno_paramb/home/pascal/depot/filedata/src/parasolleader.cppВдџџџџџџџџPARASOLLeadervoid~ PARASOLLeaderb/home/pascal/depot/filedata/src/parasolleader.cpp!$џџџџџџџџPARASOLLeaderџџџџn&parasolfilereader.h string^/home/pascal/depot/filedata/src/parasolleader.h%yТv…8џџџџ string Xaч^/home/pascal/depot/filedata/src/parasolleader.hˆjФК&parasolfilereader.hП›‹^/home/pascal/depot/filedata/src/parasolleader.hџџџџџџџџџџџџPARASOLLeader^/home/pascal/depot/filedata/src/parasolleader.h$Јш manages the reading of a PARASOL leader file. @warning this class is designed to be general and treat all PARASOL leader files BUT it only has been fully implemented and tested for -> Level 2 products -> only the records "leader file descriptor", "header" and "scaling factors" have been tested because of the developper proper needs (and time) @author Nicolas PASCALџџџџ"PARASOLFileReaderPARASOLLeader^/home/pascal/depot/filedata/src/parasolleader.hŽŽ4џџџџџџџџPARASOLLeaderaleader_filenameџџџџџџџџconst stringџџџџџџџџfree_record^/home/pascal/depot/filedata/src/parasolleader.hE E'| @brief free the given record data @param rec the record codeџџџџPARASOLLeaderrecџџџџџџџџconst Record&џџџџvoidfree_records^/home/pascal/depot/filedata/src/parasolleader.hI I0 @brief Free all recordsџџџџPARASOLLeadervoidget_entry_block^/home/pascal/depot/filedata/src/parasolleader.h€€UV @brief return the block describing the given entry : the number of times the entry is repeated and the size in bytes of the group @param rec current record @param entry_idx indice of the entry @return the block(s) of the entry. If the entry is composed of a unique value, returns an empty vectorџџџџPARASOLLeadert recџџџџџџџџconst Recordџџџџentry_idxџџџџџџџџconst intџџџџ(vector< EntryBlock > get_entry_offset^/home/pascal/depot/filedata/src/parasolleader.haa“” @brief access to the offset of an entry, relative to the record start TODO example @param rec the concerned record @param entry_idx index of the entry, start at 0, record_number is index 0 @param group_idx index of an entry that is repeated in a record. Ex : In the spatio-temporal characteristic of L1 products, the sequence number of the entry : the "line number of pixel at nadir for 670" @param subgroup_index unused at this time. Should be useful for technological param that has seq_nb and im_nb imbricated @param val_index unused @return the offset, from the record startџџџџPARASOLLeaderrecџџџџџџџџconst Recordџџџџentry_idxџџџџџџџџconst intџџџџgroup_idxџџџџџџџџconst intџџџџsubgroup_indexџџџџџџџџconst intџџџџval_indexџџџџџџџџconst intџџџџconst int,get_leader_file_format^/home/pascal/depot/filedata/src/parasolleader.h9;Ф @brief access to the leader file format for a given product level @return the leader file formatџџџџPARASOLLeader0const PARASOLFileFormat*get_record^/home/pascal/depot/filedata/src/parasolleader.hŒŒ4т @brief access to one record entry @param rec the record code @return the entry corresponding to @a record codeџџџџPARASOLLeader ЕЄ€recџџџџџџџџconst Record&џџџџ$PARASOLFileRecord*"get_record_format^/home/pascal/depot/filedata/src/parasolleader.h††<Š @brief access to the RecordFormat object that describes the name, type, offset and length of each record entry @param rec the record code @return the RecordFormat corresponding to @a record codeџџџџPARASOLLeader ЕКrecџџџџџџџџconst Record&џџџџ&const RecordFormat*"get_record_offset^/home/pascal/depot/filedata/src/parasolleader.hVV2f @brief access to ones record file offset If the record isn't in the leader leader file, it returns -1 @param rec the record code @return the record's offset in the leader fileџџџџPARASOLLeaderrecџџџџџџџџconst Record&џџџџconst intinit_record^/home/pascal/depot/filedata/src/parasolleader.hOO5є @brief Initialize a record class @param rec the record code @return the initialized object (or NULL in case of problem)џџџџPARASOLLeaderrecџџџџџџџџconst Record&џџџџ$PARASOLFileRecord* is_record_loaded^/home/pascal/depot/filedata/src/parasolleader.h@@2Д @brief check if a record has been read. @return true if the record has already been readџџџџPARASOLLeaderrecџџџџџџџџconst Record&џџџџconst boolprint_header^/home/pascal/depot/filedata/src/parasolleader.h› ›f @brief print out the header set in the leader fileџџџџPARASOLLeadervoid2print_instr_setting_param^/home/pascal/depot/filedata/src/parasolleader.hŸ Ÿ$– @brief print out the instrument settings parameters set in the leader fileџџџџPARASOLLeader ЕЏ€void8print_leader_file_descriptor^/home/pascal/depot/filedata/src/parasolleader.h“ “'X @brief print out the leader file descriptorџџџџPARASOLLeaderEvoid*print_scaling_factors^/home/pascal/depot/filedata/src/parasolleader.hЃ Ѓ x @brief print out the scaling factors set in the leader fileџџџџPARASOLLeader ЕЋvoid,print_spatio_temp_char^/home/pascal/depot/filedata/src/parasolleader.h— —!˜ @brief print out the spatio-temporal characteristics set in the leader fileџџџџPARASOLLeader ГŸ€void$print_techno_param^/home/pascal/depot/filedata/src/parasolleader.hЇ ЇŠ @brief print out the technological parameters set in the leader fileџџџџPARASOLLeaderSvoid~ PARASOLLeader^/home/pascal/depot/filedata/src/parasolleader.h џџџџџџџџPARASOLLeaderџџџџ,get_leader_file_format^/home/pascal/depot/filedata/src/parasolleader.h9;Ф @brief access to the leader file format for a given product level @return the leader file formatџџџџPARASOLLeader0const PARASOLFileFormat* annotations^/home/pascal/depot/filedata/src/parasolleader.h33"џџџџ$AnnotationsRecord**data_processing_param^/home/pascal/depot/filedata/src/parasolleader.h1#19џџџџ>DataProcessingParametersRecord*filename^/home/pascal/depot/filedata/src/parasolleader.h) )џџџџ string header^/home/pascal/depot/filedata/src/parasolleader.h--. record storage classesHeaderRecord*0instrument_setting_param^/home/pascal/depot/filedata/src/parasolleader.h/&/?џџџџDInstrumentSettingParametersRecord*,leader_file_descriptor^/home/pascal/depot/filedata/src/parasolleader.h''6џџџџ6LeaderFileDescriptorRecord*$leader_file_format^/home/pascal/depot/filedata/src/parasolleader.h**+џџџџ(PARASOLLeaderFormat*scaling_factors^/home/pascal/depot/filedata/src/parasolleader.h22)џџџџ*ScalingFactorsRecord* spatio_temp_char^/home/pascal/depot/filedata/src/parasolleader.h.(.9џџџџHSpatioTemporalCharacteristicsRecord*techno_param^/home/pascal/depot/filedata/src/parasolleader.h0"0/џџџџ<TechnologicalParametersRecord*std^/home/pascal/depot/filedata/src/parasolleader.hp cassertsetalgorithmutilityfunctional cmath vectoriostreamtools.hN/home/pascal/depot/filedata/src/pixel.h%yЦc!8џџџџ cmath†Ь vector …/ГutilityВГмfunctionalq№єsiostreamВ$Bєtools.hАох7N/home/pascal/depot/filedata/src/pixel.h*›№Msetˆќalgorithm{ cassert—?уuN/home/pascal/depot/filedata/src/pixel.hџџџџџџџџџџџџNearer_fromN/home/pascal/depot/filedata/src/pixel.h)3џџџџџџџџPixel_typeџџџџhstd::binary_function< Pixel_type, Pixel_type, bool >Nearer_fromN/home/pascal/depot/filedata/src/pixel.h++HџџџџџџџџNearer_fromџџџ€this_pixelџџџџџџџџ"const Pixel_type&џџџџџџџџoperator ( )N/home/pascal/depot/filedata/src/pixel.h-/џџџџџџџџNearer_fromџџџ  pixel1џџџџџџџџ"const Pixel_type&џџџџ pixel2џџџџџџџџ"const Pixel_type&џџџџboolNearer_fromN/home/pascal/depot/filedata/src/pixel.h++HџџџџџџџџNearer_fromџџџ€this_pixelџџџџџџџџ"const Pixel_type&џџџџџџџџoperator ( )N/home/pascal/depot/filedata/src/pixel.h-/џџџџџџџџNearer_fromџџџ  pixel1џџџџџџџџ"const Pixel_type&џџџџ pixel2џџџџџџџџ"const Pixel_type&џџџџboolthis_pixelN/home/pascal/depot/filedata/src/pixel.h22џџџџ const Pixel_typeP_Pixel_baseN/home/pascal/depot/filedata/src/pixel.hЫN @class P_Pixel_base class working in the same way that Pixel_base but which uses pointers for lat,lon instead of inner values. It is useful when a collection of points have been already loaded in a non sorted vector, and the user doesn't want to duplicate their values.џџџџTџџџџVџџџџ P_Pixel_baseN/home/pascal/depot/filedata/src/pixel.hттfџџџџџџџџP_Pixel_baseџџџ€џџџџP_Pixel_baseN/home/pascal/depot/filedata/src/pixel.hфхRџџџџџџџџP_Pixel_baseџџџ€latџџџџџџџџ"const coord_type*џџџџlonџџџџџџџџ"const coord_type*џџџџvalџџџџџџџџ"const value_type&џџџџџџџџP_Pixel_baseN/home/pascal/depot/filedata/src/pixel.hччŠџџџџџџџџP_Pixel_baseџџџ€ otherџџџџџџџџ&const P_Pixel_base&џџџџџџџџdistanceN/home/pascal/depot/filedata/src/pixel.h$'џџџџџџџџP_Pixel_base  otherџџџџџџџџ"const Pixel_type&џџџџdistance_typeget_latN/home/pascal/depot/filedata/src/pixel.hџџ9џџџџџџџџP_Pixel_base coord_typeget_lonN/home/pascal/depot/filedata/src/pixel.h9џџџџџџџџP_Pixel_baseџџџ coord_typeget_neighboursN/home/pascal/depot/filedata/src/pixel.h%GJ template < class PPixelContainer >џџџџP_Pixel_baseџџџ€neighboursџџџџџџџџ*vector< Pixel_type >&џџџџ pixelsџџџџџџџџ6const vector< Pixel_type >&џџџџresolutionџџџџџџџџdistance_typeџџџџ sortedџџџџџџџџboolџџџџvoidget_valN/home/pascal/depot/filedata/src/pixel.h,џџџџџџџџP_Pixel_baseџџџ value_typeoperator <N/home/pascal/depot/filedata/src/pixel.hёљџџџџџџџџP_Pixel_baseџџџ  otherџџџџџџџџ"const Pixel_type&џџџџbooloperator <<N/home/pascal/depot/filedata/src/pixel.hIMџџџџџџџџP_Pixel_baseџџџ€osџџџџџџџџstd::ostream&џџџџ pixelџџџџџџџџ"const Pixel_type&џџџџstd::ostream&operator =N/home/pascal/depot/filedata/src/pixel.hщяџџџџџџџџP_Pixel_baseџџџ€ otherџџџџџџџџ&const P_Pixel_base&џџџџP_Pixel_base&operator ==N/home/pascal/depot/filedata/src/pixel.hњ§џџџџџџџџP_Pixel_baseџџџ  otherџџџџџџџџ"const Pixel_type&џџџџbool P_Pixel_baseN/home/pascal/depot/filedata/src/pixel.hттfџџџџџџџџP_Pixel_baseџџџ€џџџџP_Pixel_baseN/home/pascal/depot/filedata/src/pixel.hфхRџџџџџџџџP_Pixel_baseџџџ€latџџџџџџџџ"const coord_type*џџџџlonџџџџџџџџ"const coord_type*џџџџvalџџџџџџџџ"const value_type&џџџџџџџџP_Pixel_baseN/home/pascal/depot/filedata/src/pixel.hччŠџџџџџџџџP_Pixel_baseџџџ€ otherџџџџџџџџ&const P_Pixel_base&џџџџџџџџdistanceN/home/pascal/depot/filedata/src/pixel.h$'џџџџџџџџP_Pixel_base  otherџџџџџџџџ"const Pixel_type&џџџџdistance_typeget_latN/home/pascal/depot/filedata/src/pixel.hџџ9џџџџџџџџP_Pixel_base coord_typeget_lonN/home/pascal/depot/filedata/src/pixel.h9џџџџџџџџP_Pixel_baseџџџ coord_typeget_neighboursN/home/pascal/depot/filedata/src/pixel.h%GJ template < class PPixelContainer >џџџџP_Pixel_baseџџџ€neighboursџџџџџџџџ*vector< Pixel_type >&џџџџ pixelsџџџџџџџџ6const vector< Pixel_type >&џџџџresolutionџџџџџџџџdistance_typeџџџџ sortedџџџџџџџџboolџџџџvoidget_valN/home/pascal/depot/filedata/src/pixel.h,џџџџџџџџP_Pixel_baseџџџ value_typeoperator <N/home/pascal/depot/filedata/src/pixel.hёљџџџџџџџџP_Pixel_baseџџџ  otherџџџџџџџџ"const Pixel_type&џџџџbooloperator <<N/home/pascal/depot/filedata/src/pixel.hIMџџџџџџџџP_Pixel_baseџџџ€osџџџџџџџџstd::ostream&џџџџ pixelџџџџџџџџ"const Pixel_type&џџџџstd::ostream&operator =N/home/pascal/depot/filedata/src/pixel.hщяџџџџџџџџP_Pixel_baseџџџ€ otherџџџџџџџџ&const P_Pixel_base&џџџџP_Pixel_base&operator ==N/home/pascal/depot/filedata/src/pixel.hњ§џџџџџџџџP_Pixel_baseџџџ  otherџџџџџџџџ"const Pixel_type&џџџџbool $DEFAULT_RESOLUTIONN/home/pascal/depot/filedata/src/pixel.hжж, km const coord_typeDEG2RADN/home/pascal/depot/filedata/src/pixel.hкк$џџџџ&const distance_typeRAD2DEGN/home/pascal/depot/filedata/src/pixel.hлл$џџџџ&const distance_typeR_EARTHN/home/pascal/depot/filedata/src/pixel.hзз!Ў Earth's authalic radius ("equal aera"), from http://en.wikipedia.org/wiki/Earth_radius const coord_type$R_EARTH_EQUATORIALN/home/pascal/depot/filedata/src/pixel.hии,” Earth's equatorial radius, from http://en.wikipedia.org/wiki/Earth_radius const coord_typeR_EARTH_POLARN/home/pascal/depot/filedata/src/pixel.hйй'Š Earth's polar radius, from http://en.wikipedia.org/wiki/Earth_radius const coord_typelatN/home/pascal/depot/filedata/src/pixel.hв в degrees coord_type*lonN/home/pascal/depot/filedata/src/pixel.hг г degrees coord_type*valN/home/pascal/depot/filedata/src/pixel.hд дџџџџvalue_type Pixel_typeN/home/pascal/depot/filedata/src/pixel.hЭЭ'џџџџ(P_Pixel_base< T, V > coord_typeN/home/pascal/depot/filedata/src/pixel.hЮ ЮџџџџT distance_typeN/home/pascal/depot/filedata/src/pixel.hЯ ЯџџџџT unit_typeN/home/pascal/depot/filedata/src/pixel.hрр џџџџџџџџ value_typeN/home/pascal/depot/filedata/src/pixel.hа аџџџџVPixel_baseN/home/pascal/depot/filedata/src/pixel.h6ХџџџџџџџџTџџџџVџџџџ Pixel_baseN/home/pascal/depot/filedata/src/pixel.hOO#џџџџџџџџPixel_baseџџџ€џџџџPixel_baseN/home/pascal/depot/filedata/src/pixel.hQdџџџџџџџџPixel_baseџџџ€latџџџџџџџџ const coord_typeџџџџlonџџџџџџџџ const coord_typeџџџџvalџџџџџџџџ"const value_type&џџџџunitџџџџџџџџconst unit_typeџџџџџџџџdistanceN/home/pascal/depot/filedata/src/pixel.h{џџџџџџџџPixel_baseџџџ  otherџџџџџџџџ"const Pixel_type&џџџџdistance_typeget_latN/home/pascal/depot/filedata/src/pixel.hww-џџџџџџџџPixel_baseџџџ coord_typeget_lonN/home/pascal/depot/filedata/src/pixel.hxx-џџџџџџџџPixel_baseџџџ coord_typeget_neighboursN/home/pascal/depot/filedata/src/pixel.h’­џџџџџџџџPixel_baseџџџ neighboursџџџџџџџџ4std::vector< Pixel_type >&џџџџ pixelsџџџџџџџџ8std::multiset< Pixel_type >&џџџџresolutionџџџџџџџџdistance_typeџџџџ sortedџџџџџџџџboolџџџџvoidget_resolutionN/home/pascal/depot/filedata/src/pixel.hII;џџџџџџџџPixel_baseџџџˆcoord_typeget_valN/home/pascal/depot/filedata/src/pixel.hyy-џџџџџџџџPixel_baseџџџ value_typeoperator <N/home/pascal/depot/filedata/src/pixel.hfpџџџџџџџџPixel_base  otherџџџџџџџџ"const Pixel_type&џџџџbooloperator <<N/home/pascal/depot/filedata/src/pixel.hАДџџџџџџџџPixel_baseџџџ€osџџџџџџџџstd::ostream&џџџџ pixelџџџџџџџџ"const Pixel_type&џџџџstd::ostream&operator ==N/home/pascal/depot/filedata/src/pixel.hruџџџџџџџџPixel_baseџџџ  otherџџџџџџџџ"const Pixel_type&џџџџboolset_resolutionN/home/pascal/depot/filedata/src/pixel.hJMџџџџџџџџPixel_baseџџџˆnew_resolutionџџџџџџџџdistance_typeџџџџvoid Pixel_baseN/home/pascal/depot/filedata/src/pixel.hOO#џџџџџџџџPixel_baseџџџ€џџџџPixel_baseN/home/pascal/depot/filedata/src/pixel.hQdџџџџџџџџPixel_baseџџџ€latџџџџџџџџ const coord_typeџџџџlonџџџџџџџџ const coord_typeџџџџvalџџџџџџџџ"const value_type&џџџџunitџџџџџџџџconst unit_typeџџџџџџџџdistanceN/home/pascal/depot/filedata/src/pixel.h{џџџџџџџџPixel_baseџџџ  otherџџџџџџџџ"const Pixel_type&џџџџdistance_typeget_latN/home/pascal/depot/filedata/src/pixel.hww-џџџџџџџџPixel_baseџџџ coord_typeget_lonN/home/pascal/depot/filedata/src/pixel.hxx-џџџџџџџџPixel_baseџџџ coord_typeget_neighboursN/home/pascal/depot/filedata/src/pixel.h’­џџџџџџџџPixel_baseџџџ neighboursџџџџџџџџ4std::vector< Pixel_type >&џџџџ pixelsџџџџџџџџ8std::multiset< Pixel_type >&џџџџresolutionџџџџџџџџdistance_typeџџџџ sortedџџџџџџџџboolџџџџvoidget_resolutionN/home/pascal/depot/filedata/src/pixel.hII;џџџџџџџџPixel_baseџџџˆcoord_typeget_valN/home/pascal/depot/filedata/src/pixel.hyy-џџџџџџџџPixel_baseџџџ value_typeoperator <N/home/pascal/depot/filedata/src/pixel.hfpџџџџџџџџPixel_base  otherџџџџџџџџ"const Pixel_type&џџџџbooloperator <<N/home/pascal/depot/filedata/src/pixel.hАДџџџџџџџџPixel_baseџџџ€osџџџџџџџџstd::ostream&џџџџ pixelџџџџџџџџ"const Pixel_type&џџџџstd::ostream&operator ==N/home/pascal/depot/filedata/src/pixel.hruџџџџџџџџPixel_baseџџџ  otherџџџџџџџџ"const Pixel_type&џџџџboolset_resolutionN/home/pascal/depot/filedata/src/pixel.hJMџџџџџџџџPixel_baseџџџˆnew_resolutionџџџџџџџџdistance_typeџџџџvoid $DEFAULT_RESOLUTIONN/home/pascal/depot/filedata/src/pixel.h==, km const coord_typeDEG2RADN/home/pascal/depot/filedata/src/pixel.hAA$џџџџ&const distance_typeRAD2DEGN/home/pascal/depot/filedata/src/pixel.hBB$џџџџ&const distance_typeR_EARTHN/home/pascal/depot/filedata/src/pixel.h>>!Ў Earth's authalic radius ("equal aera"), from http://en.wikipedia.org/wiki/Earth_radius const coord_type$R_EARTH_EQUATORIALN/home/pascal/depot/filedata/src/pixel.h??,” Earth's equatorial radius, from http://en.wikipedia.org/wiki/Earth_radius const coord_typeR_EARTH_POLARN/home/pascal/depot/filedata/src/pixel.h@@'Š Earth's polar radius, from http://en.wikipedia.org/wiki/Earth_radius const coord_typeilatN/home/pascal/depot/filedata/src/pixel.hУУ ь Earth globe is split into small square elements of resolution km along parallels and meridians. Each element is indexed by (ilat, ilon). All the (lat, lon) pairs that fall into the same (ilat, ilon) are considered equivalent. (see operator==)intilonN/home/pascal/depot/filedata/src/pixel.hФФ џџџџintlat_N/home/pascal/depot/filedata/src/pixel.hЙ Й radians coord_typelon_N/home/pascal/depot/filedata/src/pixel.hК К radians coord_typeresolutionN/home/pascal/depot/filedata/src/pixel.hЗЗ! km distance_typeval_N/home/pascal/depot/filedata/src/pixel.hЛ Лџџџџvalue_type Pixel_typeN/home/pascal/depot/filedata/src/pixel.h88%џџџџ$Pixel_base< T, V > coord_typeN/home/pascal/depot/filedata/src/pixel.h9 9џџџџT distance_typeN/home/pascal/depot/filedata/src/pixel.h: :џџџџT unit_typeN/home/pascal/depot/filedata/src/pixel.hGG џџџџџџџџ value_typeN/home/pascal/depot/filedata/src/pixel.h; ;џџџџVЗpmfiledata.h\/home/pascal/depot/filedata/src/pmfiledata.cpp%yЧ8Рџџџџ\/home/pascal/depot/filedata/src/pmfiledata.cppVЮ]pmfiledata.hyt \/home/pascal/depot/filedata/src/pmfiledata.cppџџџџџџџџџџџџPMFileData\/home/pascal/depot/filedata/src/pmfiledata.cppџџџџџџџџPMFileData€nameџџџџџџџџconst string&џџџџmodeџџџџџџџџconst string&џџџџџџџџcheck_filename\/home/pascal/depot/filedata/src/pmfiledata.cpp†ЋџџџџџџџџPMFileDatashort_filenameџџџџџџџџconst string&џџџџboolcontain_data\/home/pascal/depot/filedata/src/pmfiledata.cppАВџџџџџџџџPMFileDatalatџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџtimeџџџџџџџџconst double&џџџџ(colocation_toleranceџџџџџџџџconst double&џџџџconst bool contain_location\/home/pascal/depot/filedata/src/pmfiledata.cppЌЏџџџџџџџџPMFileDatalatџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџtoleranceџџџџџџџџconst double&џџџџconst bool*free_geolocation_data\/home/pascal/depot/filedata/src/pmfiledata.cppMVџџџџџџџџPMFileDatavoid&geolocation_to_grid\/home/pascal/depot/filedata/src/pmfiledata.cppтёџџџџџџџџPMFileDatarм€lat_lonџџџџџџџџconst float*џџџџgrid_idxџџџџџџџџint*џџџџvoidget_index\/home/pascal/depot/filedata/src/pmfiledata.cppДдџџџџџџџџPMFileDatarм€latџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџigrid[]џџџџџџџџint*џџџџ(colocation_toleranceџџџџџџџџconst floatџџџџconst boolget_index\/home/pascal/depot/filedata/src/pmfiledata.cppжрџџџџџџџџPMFileDatalatџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџnearest_pix_idxџџџџџџџџint&џџџџ(colocation_toleranceџџџџџџџџconst floatџџџџconst bool&grid_to_geolocation\/home/pascal/depot/filedata/src/pmfiledata.cppѓџџџџџџџџPMFileDatacgrid_idxџџџџџџџџconst int*џџџџlat_minmaxџџџџџџџџ float*џџџџlon_minmaxџџџџџџџџ float*џџџџvoidinit\/home/pascal/depot/filedata/src/pmfiledata.cpp4џџџџџџџџPMFileDatavoid*load_geolocation_data\/home/pascal/depot/filedata/src/pmfiledata.cppXiџџџџџџџџPMFileData?№voidparse_filename\/home/pascal/depot/filedata/src/pmfiledata.cppp„џџџџџџџџPMFileDatashort_filenameџџџџџџџџconst string&џџџџvoidread_node_lon\/home/pascal/depot/filedata/src/pmfiledata.cpp69џџџџџџџџPMFileDataLvoid*set_lat_lon_index_max\/home/pascal/depot/filedata/src/pmfiledata.cppknџџџџџџџџPMFileDatavoid"set_time_coverage\/home/pascal/depot/filedata/src/pmfiledata.cpp@LџџџџџџџџPMFileDatavoid~ PMFileData\/home/pascal/depot/filedata/src/pmfiledata.cpp;?џџџџџџџџPMFileDataџџџџrhdffiledata.hpixel.h&satellitefiledata.hX/home/pascal/depot/filedata/src/pmfiledata.h%yЧ8Рџџџџhdffiledata.h˜vТ&satellitefiledata.hщ"Fзpixel.hЊІ“иX/home/pascal/depot/filedata/src/pmfiledata.hgX/home/pascal/depot/filedata/src/pmfiledata.hџџџџџџџџџџџџPMFileDataX/home/pascal/depot/filedata/src/pmfiledata.h-Р@author Nicolas PASCAL @class PMFileData manage the reading of PM ( PARASOL/POLDER-MODIS ) filesџџџџ"SatelliteFileDataHDFFileData PMFileDataX/home/pascal/depot/filedata/src/pmfiledata.hVV:џџџџџџџџPMFileDatatnameџџџџџџџџconst string&џџџџmodeџџџџџџџџconst string&џџџџџџџџcheck_filenameX/home/pascal/depot/filedata/src/pmfiledata.hJJ=ц @brief test if the filename seems to be a valid CLOUDSAT file @param short_filename the filename without its pathџџџџPMFileDataџџџˆshort_filenameџџџџџџџџconst string&џџџџboolclose_data_fileX/home/pascal/depot/filedata/src/pmfiledata.hТФ0 @brief closes the file.џџџџPMFileDataџџџ„voidcontain_dataX/home/pascal/depot/filedata/src/pmfiledata.hyy|Р @brief check if the file has possible (lat,lon) coincidence @warning it's an EVENTUAL coincidence. That is not a proof !!! @param lat latitude @param lon longitude @param time time @param colocation_tolerance the acceptable bias (in km or degrees. Supposed to be in, a plane approximation) between [lat,lon] and the nearest data point. @return true if can eventually contain a coincidence with the point. @warning at this time always true. I don't have a good way to do itџџџџPMFileData1latџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџtimeџџџџџџџџconst double&џџџџ(colocation_toleranceџџџџџџџџconst double&џџџџconst bool contain_locationX/home/pascal/depot/filedata/src/pmfiledata.hnn`8 @brief check if this file has eventually data coincident with (lat,lon) Actually, it only tests if (lat,lon) is contained in the data's bounding rectangle. @param lat the latitude of the event @param lon the longitude of the event @param tolerance acceptable bias between the nearest point in the data and the given (lat,lon) point @return true if a point in the data has been found in the colocation frameџџџџPMFileDataџџџ€latџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџtoleranceџџџџџџџџconst double&џџџџconst bool*free_geolocation_dataX/home/pascal/depot/filedata/src/pmfiledata.hd d и @brief free eventually loaded geolocation data If the geolocation data are not loaded, doesn't do anythingџџџџPMFileDataџџџ€void&geolocation_to_gridX/home/pascal/depot/filedata/src/pmfiledata.hэ эC @brief get the full resolution polder grid indexes corresponding to a point given by its (lat,lon) coordinates @param lat_lon the geolocation coordinates @param igrid the indexes in the reference POLDER full resolution grid, in the format [line,col] and starting from 1џџџџPMFileDatalat_lonџџџџџџџџconst float*џџџџ igridџџџџџџџџint*џџџџvoid&geolocation_to_gridX/home/pascal/depot/filedata/src/pmfiledata.hєї @brief get the full resolution polder grid indexes corresponding to a point given by its (lat,lon) coordinates @param lat latitude @param lon longitude @param igrid the indexes in the reference POLDER full resolution grid, in the format [line,col] and starting from 1џџџџPMFileDatalatџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџ igridџџџџџџџџint*џџџџvoidget_indexX/home/pascal/depot/filedata/src/pmfiledata.hššsX @brief find the index of the nearest point to (lat,lon) in the data. If (lat,lon) is not found or out of the colocalisation_frame, returned indexes are [-1,-1] @param lat the latitude @param lon the longitude @param igrid the indexes of the grid cell that contains the measure. {-1,-1} if no coincidence found. @param colocation_tolerance the acceptable bias (in km or degrees. Supposed to be in, a plane approximation) between [lat,lon] and the nearest data point. Unused here because data are gridded @return true if the coincidence has been foundџџџџPMFileDataelatџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџigrid[]џџџџџџџџint*џџџџ(colocation_toleranceџџџџџџџџconst floatџџџџconst boolget_indexX/home/pascal/depot/filedata/src/pmfiledata.hЄЄp @brief find the index of the nearest point to (lat,lon) in the data. The resulting index is linearized : if the dataset has 2 dimensions, this index will be "i_x + sz_x * i_y" If (lat,lon) is not found or out of the colocalisation_frame, returned indexes are [-1,-1] @param lat the latitude @param lon the longitude @param idata the linearized index of the nearest measure. -1 if no coincidence found. @param colocation_tolerance the acceptable bias (in km or degrees. Supposed to be in, a plane approximation) between [lat,lon] and the nearest data point. Unused here because data are gridded @return true if the coincidence has been foundџџџџPMFileDataџџџ€latџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџ idataџџџџџџџџint&џџџџ(colocation_toleranceџџџџџџџџconst floatџџџџconst bool&get_irow_shift_dataX/home/pascal/depot/filedata/src/pmfiledata.h Д @brief getter of the column shift for each row data @return the column shift data bufferџџџџPMFileData const int16*"get_nb_geo_pointsX/home/pascal/depot/filedata/src/pmfiledata.hЗНЦ @brief retrieve the number of (lat,lon) pixels in the file @return the number of (lat,lon) pixelsџџџџPMFileDataconst int4get_nearest_point_distanceX/home/pascal/depot/filedata/src/pmfiledata.h‚†b @brief compute the distance to (lat,lon) of the nearest point in the data @warning this method does not make sense for a gridded product. This code is here only to implement the interface @param lat the latitude @param lon the longitude @param coloc_tolerance the -/+ maximal tolerance for 2 points considered as colocated @return the distance to the nearest point, or -1 if no point in the colocalisation frame has been found.џџџџPMFileDataџџџ€latџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџcoloc_toleranceџџџџџџџџconst floatџџџџconst floatget_node_lonX/home/pascal/depot/filedata/src/pmfiledata.hЈ @brief getter of the ascending node longitude @return the ascending node longitudeџџџџPMFileDataџџџ float32get_orbit_nbX/home/pascal/depot/filedata/src/pmfiledata.hфьj @brief orbit number getter @return the orbit numberџџџџPMFileData intget_pixel_coordX/home/pascal/depot/filedata/src/pmfiledata.hвпЖ @brief retrieve the coordinates of a pixel using its index. Actuallty, the data are gridded, so the ( lat, lon ) position returned is the center of the grid cell @param ipix [IN] index of the pixel @param lat [OUT] latitude of the pixel @param lon [OUT] longitude of the pixel @param time [OUT] timestamp of the pixel. Unused for this productџџџџPMFileDataЖCipixџџџџџџџџ(const vector< int >&џџџџlatџџџџџџџџ float&џџџџlonџџџџџџџџ float&џџџџtimeџџџџџџџџdouble&џџџџvoidget_productX/home/pascal/depot/filedata/src/pmfiledata.h‹x @brief access to the product name @return the product nameџџџџPMFileDataЕё•  stringget_sz_grid_xX/home/pascal/depot/filedata/src/pmfiledata.h)+М @brief accessor to the width, in pixels, of the data grid @return the width of the data gridџџџџPMFileDataЖˆconst int16get_sz_grid_yX/home/pascal/depot/filedata/src/pmfiledata.h!(Р @brief accessor to the height, in pixels, of the data grid @return the height of the data gridџџџџPMFileDataџџџˆconst int16get_versionX/home/pascal/depot/filedata/src/pmfiledata.h™  @brief access to the version of the product @return the version of the productџџџџPMFileDataЖ›  stringget_vindexX/home/pascal/depot/filedata/src/pmfiledata.h­БŠ @brief build the list of indices of pixels that are in colocation tolerance, sorted by increasing distance to (lat,lon) If (lat,lon) is not found or out of the colocalisation_frame, returns an empty vector @param lat the latitude @param lon the longitude @param colocation_tolerance the acceptable bias (in km or degrees. Supposed to be in, a plane approximation) between [lat,lon] and the nearest data point. @return the list of indices of pixelsџџџџPMFileDataџџџ„v_indexџџџџџџџџ2vector< vector < int > >&џџџџlatџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџ(colocation_toleranceџџџџџџџџconst floatџџџџvoid&grid_to_geolocationX/home/pascal/depot/filedata/src/pmfiledata.h ^r @brief get the lat,lon extrema for a grid point if the indexes are out of the grid or not valid, lat_minmax and lon_minmax are set to -1. @param lat_minmax 2 elements array containing the latitude extrema. Mustn't be NULL @param lon_minmax 2 elements array containing the longitude extrema. Can be NULL. In this case, only lat_minmax will be computed @param igrid the indexes in the reference POLDER grid (line,col) and so starts from 1џџџџPMFileData igridџџџџџџџџconst int*џџџџlat_minmaxџџџџџџџџ float*џџџџlon_minmaxџџџџџџџџ float*џџџџvoidinitX/home/pascal/depot/filedata/src/pmfiledata.h< <† @brief initialize the attributes during the first read of the fileџџџџPMFileDatafvoid4is_geolocation_data_loadedX/home/pascal/depot/filedata/src/pmfiledata.h| @brief check if the geolocation data have been already loadedџџџџPMFileData const bool*load_geolocation_dataX/home/pascal/depot/filedata/src/pmfiledata.h_ _ 2 @brief read the geolocation data (latitude, longitude and time) This method is used to make the search of the indexes of a (lat,lon,time) point faster.џџџџPMFileDataџџџ€voidload_v_pixelX/home/pascal/depot/filedata/src/pmfiledata.hОО#„ @brief load the list data pixels Unused for this type of productџџџџPMFileDataџџџ„voidopen_data_fileX/home/pascal/depot/filedata/src/pmfiledata.hШЪ. @brief opens the file.џџџџPMFileDataџџџ„voidparse_filenameX/home/pascal/depot/filedata/src/pmfiledata.hE E9в @brief extract sone informations using the filename @param short_filename the filename without its pathџџџџPMFileDataџџџ€short_filenameџџџџџџџџconst string&џџџџvoidread_node_lonX/home/pascal/depot/filedata/src/pmfiledata.h – @brief read the ascending node longitude in the file attributes and set itџџџџPMFileDatavoid*set_lat_lon_index_maxX/home/pascal/depot/filedata/src/pmfiledata.hN N Œ @brief read the geolocation data array size (latitude, and longitude)џџџџPMFileDataџџџ€void"set_time_coverageX/home/pascal/depot/filedata/src/pmfiledata.h@ @š @brief compute the time range covered by this file, depending of the productџџџџPMFileDataџџџ€void~ PMFileDataX/home/pascal/depot/filedata/src/pmfiledata.hZZџџџџџџџџPMFileDataџџџ€џџџџclose_data_fileX/home/pascal/depot/filedata/src/pmfiledata.hТФ0 @brief closes the file.џџџџPMFileDataџџџ„void&geolocation_to_gridX/home/pascal/depot/filedata/src/pmfiledata.hєї @brief get the full resolution polder grid indexes corresponding to a point given by its (lat,lon) coordinates @param lat latitude @param lon longitude @param igrid the indexes in the reference POLDER full resolution grid, in the format [line,col] and starting from 1џџџџPMFileDatalatџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџ igridџџџџџџџџint*џџџџvoid&get_irow_shift_dataX/home/pascal/depot/filedata/src/pmfiledata.h Д @brief getter of the column shift for each row data @return the column shift data bufferџџџџPMFileData const int16*"get_nb_geo_pointsX/home/pascal/depot/filedata/src/pmfiledata.hЗНЦ @brief retrieve the number of (lat,lon) pixels in the file @return the number of (lat,lon) pixelsџџџџPMFileDataconst int4get_nearest_point_distanceX/home/pascal/depot/filedata/src/pmfiledata.h‚†b @brief compute the distance to (lat,lon) of the nearest point in the data @warning this method does not make sense for a gridded product. This code is here only to implement the interface @param lat the latitude @param lon the longitude @param coloc_tolerance the -/+ maximal tolerance for 2 points considered as colocated @return the distance to the nearest point, or -1 if no point in the colocalisation frame has been found.џџџџPMFileDataџџџ€latџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџcoloc_toleranceџџџџџџџџconst floatџџџџconst floatget_node_lonX/home/pascal/depot/filedata/src/pmfiledata.hЈ @brief getter of the ascending node longitude @return the ascending node longitudeџџџџPMFileDataџџџ float32get_orbit_nbX/home/pascal/depot/filedata/src/pmfiledata.hфьj @brief orbit number getter @return the orbit numberџџџџPMFileData intget_pixel_coordX/home/pascal/depot/filedata/src/pmfiledata.hвпЖ @brief retrieve the coordinates of a pixel using its index. Actuallty, the data are gridded, so the ( lat, lon ) position returned is the center of the grid cell @param ipix [IN] index of the pixel @param lat [OUT] latitude of the pixel @param lon [OUT] longitude of the pixel @param time [OUT] timestamp of the pixel. Unused for this productџџџџPMFileDataЖCipixџџџџџџџџ(const vector< int >&џџџџlatџџџџџџџџ float&џџџџlonџџџџџџџџ float&џџџџtimeџџџџџџџџdouble&џџџџvoidget_productX/home/pascal/depot/filedata/src/pmfiledata.h‹x @brief access to the product name @return the product nameџџџџPMFileDataЕё•  stringget_sz_grid_xX/home/pascal/depot/filedata/src/pmfiledata.h)+М @brief accessor to the width, in pixels, of the data grid @return the width of the data gridџџџџPMFileDataЖˆconst int16get_sz_grid_yX/home/pascal/depot/filedata/src/pmfiledata.h!(Р @brief accessor to the height, in pixels, of the data grid @return the height of the data gridџџџџPMFileDataџџџˆconst int16get_versionX/home/pascal/depot/filedata/src/pmfiledata.h™  @brief access to the version of the product @return the version of the productџџџџPMFileDataЖ›  stringget_vindexX/home/pascal/depot/filedata/src/pmfiledata.h­БŠ @brief build the list of indices of pixels that are in colocation tolerance, sorted by increasing distance to (lat,lon) If (lat,lon) is not found or out of the colocalisation_frame, returns an empty vector @param lat the latitude @param lon the longitude @param colocation_tolerance the acceptable bias (in km or degrees. Supposed to be in, a plane approximation) between [lat,lon] and the nearest data point. @return the list of indices of pixelsџџџџPMFileDataџџџ„v_indexџџџџџџџџ2vector< vector < int > >&џџџџlatџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџ(colocation_toleranceџџџџџџџџconst floatџџџџvoid4is_geolocation_data_loadedX/home/pascal/depot/filedata/src/pmfiledata.h| @brief check if the geolocation data have been already loadedџџџџPMFileData const boolload_v_pixelX/home/pascal/depot/filedata/src/pmfiledata.hОО#„ @brief load the list data pixels Unused for this type of productџџџџPMFileDataџџџ„voidopen_data_fileX/home/pascal/depot/filedata/src/pmfiledata.hШЪ. @brief opens the file.џџџџPMFileDataџџџ„void (colocation_toleranceX/home/pascal/depot/filedata/src/pmfiledata.h+џџџџconst floatirow_shift_dataX/home/pascal/depot/filedata/src/pmfiledata.h5 5† The column shift in POLDER sinusoidal reference grid for each row  int16*"lat_lon_index_maxX/home/pascal/depot/filedata/src/pmfiledata.h11B The geolocation data array size int*latitude_nameX/home/pascal/depot/filedata/src/pmfiledata.h##%J The name of the latitude data field const stringlongitude_nameX/home/pascal/depot/filedata/src/pmfiledata.h%%&L The name of the longitude data field const stringnode_lonX/home/pascal/depot/filedata/src/pmfiledata.h7 74 ascending node longitude float32orbit_nbX/home/pascal/depot/filedata/src/pmfiledata.h332 The number of the orbit intproductX/home/pascal/depot/filedata/src/pmfiledata.h- -D The name of the CLOUDSAT product  stringsz_grid_xX/home/pascal/depot/filedata/src/pmfiledata.h)) V number of pixels of the data grid along x const int16sz_grid_yX/home/pascal/depot/filedata/src/pmfiledata.h'' V number of pixels of the data grid along y const int16versionX/home/pascal/depot/filedata/src/pmfiledata.h/ / The version of the product : concatenation of the reprocessing and the epoch number (format R**_V** where * is a digit number)  stringз.polderparasolfiledata.hHdf_sds.hppr/home/pascal/depot/filedata/src/polderparasolfiledata.cpp%yУњќ8џџџџHdf_sds.hpp>eэСr/home/pascal/depot/filedata/src/polderparasolfiledata.cpp/B˜.polderparasolfiledata.hg]Hr/home/pascal/depot/filedata/src/polderparasolfiledata.cppџџџџџџџџџџџџNINTr/home/pascal/depot/filedata/src/polderparasolfiledata.cppЋА *** Fin ajoutџџџџ*PolderParasolFileData€xџџџџџџџџfloat32џџџџ short*PolderParasolFileDatar/home/pascal/depot/filedata/src/polderparasolfiledata.cppDџџџџџџџџ*PolderParasolFileDataOc3filenameџџџџџџџџconst string&џџџџmodeџџџџџџџџconst string&џџџџџџџџ.check_read_write_limitsr/home/pascal/depot/filedata/src/polderparasolfiledata.cppКгџџџџџџџџ*PolderParasolFileDataЕsds_nameџџџџџџџџconst char*џџџџ startџџџџџџџџint*џџџџ strideџџџџџџџџint*џџџџ edgesџџџџџџџџint*џџџџrankџџџџџџџџconst intџџџџconst boolclose_data_filer/home/pascal/depot/filedata/src/polderparasolfiledata.cppKOџџџџџџџџ*PolderParasolFileDataџџџ€void6free_read_write_allocationsr/home/pascal/depot/filedata/src/polderparasolfiledata.cppВЙџџџџџџџџ*PolderParasolFileData,are_limits_initializedџџџџџџџџconst bool*џџџџ startџџџџџџџџint*џџџџ strideџџџџџџџџint*џџџџ edgesџџџџџџџџint*џџџџvoidgetLatLonr/home/pascal/depot/filedata/src/polderparasolfiledata.cpp˜œџџџџџџџџ*PolderParasolFileDatalineџџџџџџџџ shortџџџџ columnџџџџџџџџ shortџџџџlatџџџџџџџџfloat32*џџџџlonџџџџџџџџfloat32*џџџџvoidgetLatLon1r/home/pascal/depot/filedata/src/polderparasolfiledata.cppЄЈ\ *** getLatLon1 appelщe dans read_data_latlon.џџџџ*PolderParasolFileDataџџџ€lineџџџџџџџџ shortџџџџ columnџџџџџџџџ shortџџџџlatџџџџџџџџfloat32*џџџџlonџџџџџџџџfloat32*џџџџvoid*get_dataset_data_typer/home/pascal/depot/filedata/src/polderparasolfiledata.cppжџџџџџџџџ*PolderParasolFileDatasds_nameџџџџџџџџ stringџџџџint*get_dataset_dimensionr/home/pascal/depot/filedata/src/polderparasolfiledata.cpp§'џџџџџџџџ*PolderParasolFileDatasds_nameџџџџџџџџconst string&џџџџvector< int >,get_dataset_fill_valuer/home/pascal/depot/filedata/src/polderparasolfiledata.cpp*џџџџџџџџ*PolderParasolFileDatasds_nameџџџџџџџџconst string&џџџџfill_valueџџџџџџџџ void*џџџџvoid4get_dataset_full_dimensionr/home/pascal/depot/filedata/src/polderparasolfiledata.cppюњџџџџџџџџ*PolderParasolFileDatasds_nameџџџџџџџџconst string&џџџџvector< int >$get_dataset_idtyper/home/pascal/depot/filedata/src/polderparasolfiledata.cpp›џџџџџџџџ*PolderParasolFileDatanameџџџџџџџџ stringџџџџint get_dataset_namer/home/pascal/depot/filedata/src/polderparasolfiledata.cpp†Žџџџџџџџџ*PolderParasolFileDataiџџџџџџџџintџџџџ stringget_fillValuer/home/pascal/depot/filedata/src/polderparasolfiledata.cppџџџџџџџџ*PolderParasolFileDataЖsds_nameџџџџџџџџconst string&џџџџfillValueџџџџџџџџ void*џџџџvoidget_n_datasetr/home/pascal/depot/filedata/src/polderparasolfiledata.cpp„џџџџџџџџ*PolderParasolFileDatatintget_scalingr/home/pascal/depot/filedata/src/polderparasolfiledata.cppтыџџџџџџџџ*PolderParasolFileDatasds_nameџџџџџџџџconst string&џџџџ scaleџџџџџџџџfloat64&џџџџ offsetџџџџџџџџfloat64&џџџџvoid.get_values_attr_datasetr/home/pascal/depot/filedata/src/polderparasolfiledata.cppилџџџџџџџџ*PolderParasolFileDatasds_nameџџџџџџџџ stringџџџџattr_nameџџџџџџџџ stringџџџџ string has_attr_datasetr/home/pascal/depot/filedata/src/polderparasolfiledata.cppнрџџџџџџџџ*PolderParasolFileDatasds_nameџџџџџџџџ stringџџџџattr_nameџџџџџџџџ stringџџџџbool@init_read_write_null_input_paramr/home/pascal/depot/filedata/src/polderparasolfiledata.cppдьџџџџџџџџ*PolderParasolFileDatasds_nameџџџџџџџџconst char*џџџџ startџџџџџџџџ int*&џџџџ strideџџџџџџџџ int*&џџџџ edgesџџџџџџџџ int*&џџџџrankџџџџџџџџint&џџџџ$initialized_valuesџџџџџџџџ bool*џџџџvoidopen_data_filer/home/pascal/depot/filedata/src/polderparasolfiledata.cppFIџџџџџџџџ*PolderParasolFileDataДРW€voidread_datar/home/pascal/depot/filedata/src/polderparasolfiledata.cppW–џџџџџџџџ*PolderParasolFileDataџџџ€bufџџџџџџџџ void*џџџџsds_nameџџџџџџџџconst char*џџџџ startџџџџџџџџint*џџџџ strideџџџџџџџџint*џџџџ edgesџџџџџџџџint*џџџџrankџџџџџџџџintџџџџ void* read_data_latlonr/home/pascal/depot/filedata/src/polderparasolfiledata.cppэ‹џџџџџџџџ*PolderParasolFileDatadataџџџџџџџџfloat32*џџџџsds_nameџџџџџџџџconst char*џџџџ startџџџџџџџџint*џџџџ strideџџџџџџџџint*џџџџ edgesџџџџџџџџint*џџџџrankџџџџџџџџintџџџџfloat32*.~ PolderParasolFileDatar/home/pascal/depot/filedata/src/polderparasolfiledata.cppQTџџџџџџџџ*PolderParasolFileDataџџџџLatituder/home/pascal/depot/filedata/src/polderparasolfiledata.cppџџџџ stringLongituder/home/pascal/depot/filedata/src/polderparasolfiledata.cppџџџџ stringt string.h vectormap filedatareader.hpolder.h cmath cfloat hdfi.hparasolleader.hparasoldata.h"parasolfiledata.h&satellitefiledata.hHdf_sds.hppn/home/pascal/depot/filedata/src/polderparasolfiledata.h%yУюЧ8џџџџ cmath†Ьn/home/pascal/depot/filedata/src/polderparasolfiledata.h8лН vector …/Гstring.h­Ц‰=polder.h\Ќ.Œmapю&satellitefiledata.hщ"FзHdf_sds.hpp>eэС"parasolfiledata.hŽї'’parasolleader.hF’сХ cfloatыx hdfi.h TСб filedatareader.hт§ƒparasoldata.hx;rn/home/pascal/depot/filedata/src/polderparasolfiledata.hџџџџџџџџџџџџ*PolderParasolFileDatan/home/pascal/depot/filedata/src/polderparasolfiledata.h#{(@author James MANLEYџџџџFileDataReaderPARASOLFileDataNINTn/home/pascal/depot/filedata/src/polderparasolfiledata.hj j *** Fin ajoutџџџџ*PolderParasolFileDataxџџџџџџџџfloat32џџџџ short*PolderParasolFileDatan/home/pascal/depot/filedata/src/polderparasolfiledata.h%%\џџџџџџџџ*PolderParasolFileDatanameџџџџџџџџconst string&џџџџmodeџџџџџџџџconst string&џџџџџџџџ.check_read_write_limitsn/home/pascal/depot/filedata/src/polderparasolfiledata.hmmqџџџџџџџџ*PolderParasolFileDataЕіE€sds_nameџџџџџџџџconst char*џџџџ startџџџџџџџџint*џџџџ strideџџџџџџџџint*џџџџ edgesџџџџџџџџint*џџџџrankџџџџџџџџconst intџџџџconst boolclose_data_filen/home/pascal/depot/filedata/src/polderparasolfiledata.hA A. @brief closes the fileџџџџ*PolderParasolFileDatavoid6free_read_write_allocationsn/home/pascal/depot/filedata/src/polderparasolfiledata.hl loџџџџџџџџ*PolderParasolFileDataЕљЎ,are_limits_initializedџџџџџџџџconst bool*џџџџ startџџџџџџџџint*џџџџ strideџџџџџџџџint*џџџџ edgesџџџџџџџџint*џџџџvoidgetFillValuesn/home/pascal/depot/filedata/src/polderparasolfiledata.hvv7џџџџџџџџTџџџџ*PolderParasolFileDatafillvalueџџџџџџџџT&џџџџvoidgetLatLonn/home/pascal/depot/filedata/src/polderparasolfiledata.he eHџџџџџџџџ*PolderParasolFileDatalineџџџџџџџџ shortџџџџ columnџџџџџџџџ shortџџџџlatџџџџџџџџfloat32*џџџџlonџџџџџџџџfloat32*џџџџvoidgetLatLon1n/home/pascal/depot/filedata/src/polderparasolfiledata.hg gI~ *** Ajout B. Six - 24/05/2011 - voir polderparasolfiledata.cppџџџџ*PolderParasolFileDataџџџ€lineџџџџџџџџ shortџџџџ columnџџџџџџџџ shortџџџџlatџџџџџџџџfloat32*џџџџlonџџџџџџџџfloat32*џџџџvoid*get_dataset_data_typen/home/pascal/depot/filedata/src/polderparasolfiledata.h88.џџџџџџџџ*PolderParasolFileDataџџџ€sds_nameџџџџџџџџ stringџџџџint*get_dataset_dimensionn/home/pascal/depot/filedata/src/polderparasolfiledata.h00Eџџџџџџџџ*PolderParasolFileDataЕѓl„sds_nameџџџџџџџџconst string&џџџџvector< int >,get_dataset_fill_valuen/home/pascal/depot/filedata/src/polderparasolfiledata.h2 2Iџџџџџџџџ*PolderParasolFileDataџџџ€sds_nameџџџџџџџџconst string&џџџџfill_valueџџџџџџџџ void*џџџџvoid4get_dataset_full_dimensionn/home/pascal/depot/filedata/src/polderparasolfiledata.hzzJџџџџџџџџ*PolderParasolFileDatasds_nameџџџџџџџџconst string&џџџџvector< int >$get_dataset_idtypen/home/pascal/depot/filedata/src/polderparasolfiledata.htt'џџџџџџџџ*PolderParasolFileDatanameџџџџџџџџ stringџџџџint get_dataset_namen/home/pascal/depot/filedata/src/polderparasolfiledata.h6 6"џџџџџџџџ*PolderParasolFileDataiџџџџџџџџintџџџџ stringget_fillValuen/home/pascal/depot/filedata/src/polderparasolfiledata.hH H?џџџџџџџџ*PolderParasolFileDatasds_nameџџџџџџџџconst string&џџџџfillValueџџџџџџџџ void*џџџџvoidget_n_datasetn/home/pascal/depot/filedata/src/polderparasolfiledata.h44џџџџџџџџ*PolderParasolFileDataЕї4intget_scalingn/home/pascal/depot/filedata/src/polderparasolfiledata.hxxUџџџџџџџџ*PolderParasolFileDataџџџ„sds_nameџџџџџџџџconst string&џџџџ scaleџџџџџџџџfloat64&џџџџ offsetџџџџџџџџfloat64&џџџџvoid.get_values_attr_datasetn/home/pascal/depot/filedata/src/polderparasolfiledata.h: :Dџџџџџџџџ*PolderParasolFileDataЕљЭ€sds_nameџџџџџџџџ stringџџџџattr_nameџџџџџџџџ stringџџџџ string has_attr_datasetn/home/pascal/depot/filedata/src/polderparasolfiledata.h< <;џџџџџџџџ*PolderParasolFileDatasds_nameџџџџџџџџ stringџџџџattr_nameџџџџџџџџ stringџџџџbool@init_read_write_null_input_paramn/home/pascal/depot/filedata/src/polderparasolfiledata.hn nџџџџџџџџ*PolderParasolFileData€sds_nameџџџџџџџџconst char*џџџџ startџџџџџџџџ int*&џџџџ strideџџџџџџџџ int*&џџџџ edgesџџџџџџџџ int*&џџџџrankџџџџџџџџint&џџџџ$initialized_valuesџџџџџџџџ bool*џџџџvoidopen_data_filen/home/pascal/depot/filedata/src/polderparasolfiledata.hF F* @brief open the fileџџџџ*PolderParasolFileDataџџџ€voidread_datan/home/pascal/depot/filedata/src/polderparasolfiledata.h).(џџџџџџџџ*PolderParasolFileDataЖdataџџџџџџџџ void*џџџџsds_nameџџџџџџџџconst char*џџџџ startџџџџџџџџint*џџџџ strideџџџџџџџџint*џџџџ edgesџџџџџџџџint*џџџџrankџџџџџџџџintџџџџ void*read_data_Tn/home/pascal/depot/filedata/src/polderparasolfiledata.hrrlџџџџџџџџTџџџџ*PolderParasolFileDataЖTdataџџџџџџџџT*џџџџsds_nameџџџџџџџџconst char*џџџџ startџџџџџџџџint*џџџџ strideџџџџџџџџint*џџџџ edgesџџџџџџџџint*џџџџrankџџџџџџџџintџџџџtypeџџџџџџџџintџџџџT* read_data_latlonn/home/pascal/depot/filedata/src/polderparasolfiledata.hp psџџџџџџџџ*PolderParasolFileDatadataџџџџџџџџfloat32*џџџџsds_nameџџџџџџџџconst char*џџџџ startџџџџџџџџint*џџџџ strideџџџџџџџџint*џџџџ edgesџџџџџџџџint*џџџџrankџџџџџџџџintџџџџfloat32*.~ PolderParasolFileDatan/home/pascal/depot/filedata/src/polderparasolfiledata.h' '$џџџџџџџџ*PolderParasolFileDataЖџџџџ  colmaxn/home/pascal/depot/filedata/src/polderparasolfiledata.hN Nџџџџ short colminn/home/pascal/depot/filedata/src/polderparasolfiledata.hL Lџџџџ short cursdsn/home/pascal/depot/filedata/src/polderparasolfiledata.hP Pџџџџ string fileidn/home/pascal/depot/filedata/src/polderparasolfiledata.hRRџџџџintfilenamen/home/pascal/depot/filedata/src/polderparasolfiledata.hT Tџџџџ stringlinemaxn/home/pascal/depot/filedata/src/polderparasolfiledata.hO Oџџџџ shortlineminn/home/pascal/depot/filedata/src/polderparasolfiledata.hM Mџџџџ shortmaxColumnn/home/pascal/depot/filedata/src/polderparasolfiledata.hccџџџџintmaxLinen/home/pascal/depot/filedata/src/polderparasolfiledata.hbbџџџџintnb_var_listn/home/pascal/depot/filedata/src/polderparasolfiledata.h^^T @brief number of variables of the productintsizen/home/pascal/depot/filedata/src/polderparasolfiledata.h`` џџџџintvar_listn/home/pascal/depot/filedata/src/polderparasolfiledata.hY YX @brief list of all variables of the productstring*getFillValuesn/home/pascal/depot/filedata/src/polderparasolfiledata.h~”џџџџџџџџTџџџџ*PolderParasolFileDataџџџ€fillvalueџџџџџџџџT&џџџџvoidread_data_Tn/home/pascal/depot/filedata/src/polderparasolfiledata.h—њџџџџџџџџTџџџџ*PolderParasolFileDataddataџџџџџџџџT*џџџџsds_nameџџџџџџџџconst char*џџџџ startџџџџџџџџint*џџџџ strideџџџџџџџџint*џџџџ edgesџџџџџџџџint*џџџџrankџџџџџџџџintџџџџtypeџџџџџџџџintџџџџT*stdn/home/pascal/depot/filedata/src/polderparasolfiledata.he&satellitefiledata.hj/home/pascal/depot/filedata/src/satellitefiledata.cpp%yКЂ’џџџџ&satellitefiledata.hщ"Fзj/home/pascal/depot/filedata/src/satellitefiledata.cppИ”Чj/home/pascal/depot/filedata/src/satellitefiledata.cppџџџџџџџџџџџџ*free_geolocation_dataj/home/pascal/depot/filedata/src/satellitefiledata.cppџџџџџџџџ"SatelliteFileDataavoid"free_pix2data_mapj/home/pascal/depot/filedata/src/satellitefiledata.cpp57 }џџџџ"SatelliteFileDataPvoidfree_v_pixelj/home/pascal/depot/filedata/src/satellitefiledata.cpp " }џџџџ"SatelliteFileData void4is_geolocation_data_loadedj/home/pascal/depot/filedata/src/satellitefiledata.cpp$&џџџџџџџџ"SatelliteFileData const bool$print_pix2data_mapj/home/pascal/depot/filedata/src/satellitefiledata.cpp9>џџџџџџџџ"SatelliteFileDataЖД€void&~ SatelliteFileDataj/home/pascal/depot/filedata/src/satellitefiledata.cpp(3џџџџџџџџ"SatelliteFileDataџџџџvfiledata.hpixel.hgeometry.h$viewing_geometry.hobservation.hmapf/home/pascal/depot/filedata/src/satellitefiledata.h%yЦWтPџџџџfiledata.hХ)observation.h%Sf‚mapю$viewing_geometry.h”gZf/home/pascal/depot/filedata/src/satellitefiledata.h‹іх pixel.hЊІ“иgeometry.h7\<вf/home/pascal/depot/filedata/src/satellitefiledata.hџџџџџџџџџџџџ"SatelliteFileDataf/home/pascal/depot/filedata/src/satellitefiledata.hьџџџџџџџџFileData"SatelliteFileDataf/home/pascal/depot/filedata/src/satellitefiledata.h6:џџџџџџџџ"SatelliteFileDataџџџ€nameџџџџџџџџconst string&џџџџmodeџџџџџџџџconst string&џџџџџџџџclose_data_filef/home/pascal/depot/filedata/src/satellitefiledata.hzz$0 @brief closes the file.џџџџ"SatelliteFileDataџџџФvoidcontain_dataf/home/pascal/depot/filedata/src/satellitefiledata.hGGuЎ check if this file has data coincident with (lat,lon,time) @param lat the latitude of the event @param lon the longitude of the event @param time the time of the event. If -1., time test will be ignored @returnџџџџ"SatelliteFileDataџџџФlatџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџtimeџџџџџџџџconst double&џџџџtoleranceџџџџџџџџconst double&џџџџconst bool contain_locationf/home/pascal/depot/filedata/src/satellitefiledata.hQQf8 @brief check if this file has eventually data coincident with (lat,lon) Actually, it only tests if (lat,lon) is contained in the data's bounding rectangle. @param lat the latitude of the event @param lon the longitude of the event @param tolerance acceptable bias between the nearest point in the data and the given (lat,lon) point @return true if a point in the data has been found in the colocation frameџџџџ"SatelliteFileDataџџџФlatџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџtoleranceџџџџџџџџconst double&џџџџconst bool*free_geolocation_dataf/home/pascal/depot/filedata/src/satellitefiledata.hqq(^ @brief free eventually loaded geolocation dataџџџџ"SatelliteFileDataџџџ„void"free_pix2data_mapf/home/pascal/depot/filedata/src/satellitefiledata.hЪ ЪА @brief free the table that maps the gridded pixels indices to their data representationџџџџ"SatelliteFileDataџџџ€voidfree_v_pixelf/home/pascal/depot/filedata/src/satellitefiledata.h‡‡B @brief free the list data pixelsџџџџ"SatelliteFileDataџџџ„void8free_viewing_directions_dataf/home/pascal/depot/filedata/src/satellitefiledata.hыы4ˆ @brief free the data requested for computing the viewing directionsџџџџ"SatelliteFileDataџџџ„voidget_indexf/home/pascal/depot/filedata/src/satellitefiledata.h\\ь @brief find the index of the nearest point to (lat,lon) in the data. If (lat,lon) is not found or out of the colocalisation_frame, returned indexes are [-1,-1] @param lat the latitude @param lon the longitude @param nearest_pix_idx the index of the nearest measure. -1 if no coincidence found. @param colocation_tolerance the acceptable bias (in km or degrees. Supposed to be in, a plane approximation) between [lat,lon] and the nearest data point. @return true if the coincidence has been foundџџџџ"SatelliteFileDataџџџФlatџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџnearest_pix_idxџџџџџџџџint&џџџџ(colocation_toleranceџџџџџџџџconst floatџџџџconst boolget_lat_dataf/home/pascal/depot/filedata/src/satellitefiledata.h›Ёœ @brief accessor to the latitude data buffer @return the latitude data bufferџџџџ"SatelliteFileDataџџџ  float*get_lon_dataf/home/pascal/depot/filedata/src/satellitefiledata.hЂЈ  @brief accessor to the longitude data buffer @return the longitude data bufferџџџџ"SatelliteFileDataџџџ  float*4get_nearest_point_distancef/home/pascal/depot/filedata/src/satellitefiledata.hhhvџџџџџџџџ"SatelliteFileDataџџџФlatџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџcoloc_toleranceџџџџџџџџconst floatџџџџconst floatget_pixel_coordf/home/pascal/depot/filedata/src/satellitefiledata.h––jЖ @brief retrieve the coordinates of a pixel using its index @param ipix [IN] index of the pixel @param lat [OUT] latitude of the pixel @param lon [OUT] longitude of the pixel @param time [OUT] timestamp of the pixelџџџџ"SatelliteFileDataџџџФipixџџџџџџџџ(const vector< int >&џџџџlatџџџџџџџџ float&џџџџlonџџџџџџџџ float&џџџџtimeџџџџџџџџdouble&џџџџvoidget_time_dataf/home/pascal/depot/filedata/src/satellitefiledata.hЉОЄ @brief accessor to the timestamps data buffer @return the timestamps data bufferџџџџ"SatelliteFileDataџџџ double*get_v_pixelf/home/pascal/depot/filedata/src/satellitefiledata.hŒ•˜ @brief accessor to the list of data pixels @return the list of data pixelsџџџџ"SatelliteFileDataџџџЄ4const vector< PixelType >&,get_viewing_directionsf/home/pascal/depot/filedata/src/satellitefiledata.hппqŠ @brief constucts the viewing directions observations for the given grid pixel @param ipix pixel indices @param v_obs vector of observation(s). Can contains more than one for directional productsџџџџ"SatelliteFileDataџџџ„ipixџџџџџџџџ(const vector< int >&џџџџ v_obsџџџџџџџџ,vector< Observation >&џџџџvoidget_vindexf/home/pascal/depot/filedata/src/satellitefiledata.hffŠЖ @brief build the list of indices of pixels that are in colocation tolerance, sorted by increasing distance to (lat,lon) If (lat,lon) is not found or out of the colocalisation_frame, returns an empty vector @param v_index [OUT] the vector of neighbour pixels indices @param lat the latitude @param lon the longitude @param colocation_tolerance the acceptable bias (in km or degrees. Supposed to be in, a plane approximation) between [lat,lon] and the nearest data point.џџџџ"SatelliteFileDataџџџФv_indexџџџџџџџџ2vector< vector < int > >&џџџџlatџџџџџџџџconst float&џџџџlonџџџџџџџџconst float&џџџџ(colocation_toleranceџџџџџџџџconst floatџџџџvoid4is_geolocation_data_loadedf/home/pascal/depot/filedata/src/satellitefiledata.huu9z @brief Tell if the geolocation data have been already loadedџџџџ"SatelliteFileDataџџџЄconst boolBis_viewing_directions_data_loadedf/home/pascal/depot/filedata/src/satellitefiledata.hууDЎ @brief test if the data requested for computing the viewing directions has been loadedџџџџ"SatelliteFileDataџџџ„bool*load_geolocation_dataf/home/pascal/depot/filedata/src/satellitefiledata.hmm* @brief read the geolocation data and put it in memory. This method is used to make the search of the indexes of a (lat,lon,time) point faster.џџџџ"SatelliteFileDataџџџФvoid"load_pix2data_mapf/home/pascal/depot/filedata/src/satellitefiledata.hПТъ @brief build the table that maps the gridded pixels indices to their data representation Most of time, it will be exactly the same, but for instance, in the PARASOL data, it will maps the gridded pixels indices to their matching record numberџџџџ"SatelliteFileDataџџџ„voidload_v_pixelf/home/pascal/depot/filedata/src/satellitefiledata.hƒƒ#B @brief load the list data pixelsџџџџ"SatelliteFileDataџџџФvoid8load_viewing_directions_dataf/home/pascal/depot/filedata/src/satellitefiledata.hчч4ˆ @brief load the data requested for computing the viewing directionsџџџџ"SatelliteFileDataџџџ„voidopen_data_filef/home/pascal/depot/filedata/src/satellitefiledata.h#. @brief opens the file.џџџџ"SatelliteFileDataџџџФvoid$print_pix2data_mapf/home/pascal/depot/filedata/src/satellitefiledata.hЦ ЦВ @brief print the table that maps the gridded pixels indices to their data representationџџџџ"SatelliteFileDataџџџ€void&~ SatelliteFileDataf/home/pascal/depot/filedata/src/satellitefiledata.h> > џџџџџџџџ"SatelliteFileDataџџџ€џџџџ "SatelliteFileDataf/home/pascal/depot/filedata/src/satellitefiledata.h6:џџџџџџџџ"SatelliteFileDataџџџ€nameџџџџџџџџconst string&џџџџmodeџџџџџџџџconst string&џџџџџџџџ8free_viewing_directions_dataf/home/pascal/depot/filedata/src/satellitefiledata.hыы4ˆ @brief free the data requested for computing the viewing directionsџџџџ"SatelliteFileDataџџџ„voidget_lat_dataf/home/pascal/depot/filedata/src/satellitefiledata.h›Ёœ @brief accessor to the latitude data buffer @return the latitude data bufferџџџџ"SatelliteFileDataџџџ  float*get_lon_dataf/home/pascal/depot/filedata/src/satellitefiledata.hЂЈ  @brief accessor to the longitude data buffer @return the longitude data bufferџџџџ"SatelliteFileDataџџџ  float*get_time_dataf/home/pascal/depot/filedata/src/satellitefiledata.hЉОЄ @brief accessor to the timestamps data buffer @return the timestamps data bufferџџџџ"SatelliteFileDataџџџ double*get_v_pixelf/home/pascal/depot/filedata/src/satellitefiledata.hŒ•˜ @brief accessor to the list of data pixels @return the list of data pixelsџџџџ"SatelliteFileDataџџџЄ4const vector< PixelType >&,get_viewing_directionsf/home/pascal/depot/filedata/src/satellitefiledata.hппqŠ @brief constucts the viewing directions observations for the given grid pixel @param ipix pixel indices @param v_obs vector of observation(s). Can contains more than one for directional productsџџџџ"SatelliteFileDataџџџ„ipixџџџџџџџџ(const vector< int >&џџџџ v_obsџџџџџџџџ,vector< Observation >&џџџџvoidBis_viewing_directions_data_loadedf/home/pascal/depot/filedata/src/satellitefiledata.hууDЎ @brief test if the data requested for computing the viewing directions has been loadedџџџџ"SatelliteFileDataџџџ„bool"load_pix2data_mapf/home/pascal/depot/filedata/src/satellitefiledata.hПТъ @brief build the table that maps the gridded pixels indices to their data representation Most of time, it will be exactly the same, but for instance, in the PARASOL data, it will maps the gridded pixels indices to their matching record numberџџџџ"SatelliteFileDataџџџ„void8load_viewing_directions_dataf/home/pascal/depot/filedata/src/satellitefiledata.hчч4ˆ @brief load the data requested for computing the viewing directionsџџџџ"SatelliteFileDataџџџ„voidipix2idataf/home/pascal/depot/filedata/src/satellitefiledata.h3'31џџџџFstd::map< PixelIndice, DataIndice >lat_dataf/home/pascal/depot/filedata/src/satellitefiledata.h' '* The latitude values  float*lon_dataf/home/pascal/depot/filedata/src/satellitefiledata.h) ), The longitude values  float*time_dataf/home/pascal/depot/filedata/src/satellitefiledata.h+ +" The time values double*v_pixelf/home/pascal/depot/filedata/src/satellitefiledata.h--Ђ a list of pixels data, sorted by increasing latitude, then increasing longitude &vector< PixelType >$viewing_directionsf/home/pascal/depot/filedata/src/satellitefiledata.h020Dџџџџ`std::map< PixelIndice, Carthesian :: Segment3D > DataIndicef/home/pascal/depot/filedata/src/satellitefiledata.h22#Z maps a pixel to its indice in the data. Most of time, it will be exactly the same, but for instance, in the PARASOL data, it will maps a gridded pixel to its record number vector< int > I_Pixelf/home/pascal/depot/filedata/src/satellitefiledata.h#(#/џџџџ:vector< PixelType >::iterator PixelIndicef/home/pascal/depot/filedata/src/satellitefiledata.h//$* the lines of sight for all pixels, from satellite position to viewed pixel center. Points are given in Earth Center Rotating carthesian coordinates vector< int > PixelTypef/home/pascal/depot/filedata/src/satellitefiledata.h"/"8T define types for coincident pixels searchJP_Pixel_base< float, vector < int > >xnumericalgorithmV/home/pascal/depot/filedata/src/statistic.h%yУуцџџџџV/home/pascal/depot/filedata/src/statistic.h[ УnumericЈЛіУalgorithm{ V/home/pascal/depot/filedata/src/statistic.hџџџџџџџџџџџџ,bilinear_interpolationV/home/pascal/depot/filedata/src/statistic.h9A” Make a generic bilinear interpolation @param x @param y @param x1 @param x2 @param y1 @param y2 @param f11 f(x1,y1) @param f12 f(x1,y2) @param f21 f(x2,y1) @param f22 f(x2,y2) @return f(x,y)џџџџџџџ€ xџџџџџџџџconst double&џџџџyџџџџџџџџconst double&џџџџx1џџџџџџџџconst double&џџџџy1џџџџџџџџconst double&џџџџx2џџџџџџџџconst double&џџџџy2џџџџџџџџconst double&џџџџf11џџџџџџџџconst double&џџџџf12џџџџџџџџconst double&џџџџf21џџџџџџџџconst double&џџџџf22џџџџџџџџconst double&џџџџ double&get_nearest_val_idxV/home/pascal/depot/filedata/src/statistic.hŸЛ: @brief search the value that is the nearest to @a val in a sorted vector If @a val is situed exactly between 2 values, the upper index is returned @warning The method does not support vectors that contain equal value. In other mathematical words, the vector has to be in strict monotonic order This method supports either classic C arrays (v_start and v_end will be pointers) and STL's vector (use iterators in the case) @param v_start vector start position (pointer or iterator) @param v_end vector end position (pointer that points just after the last value to check or iterator) @param val the value we are searching the nearest position @return the index of the nearest value in the vector. In range [0,vector_size-1]. Return -1 in case of problem : empty vector, v_start or v_end NULLџџџџNumTypeџџџџџџџ€v_startџџџџџџџџconst NumType*џџџџ v_endџџџџџџџџconst NumType*џџџџvalџџџџџџџџconst NumType&џџџџlonginterpolateV/home/pascal/depot/filedata/src/statistic.hXŒќ @brief linear interpolation the @a val1 value This method supports either classic C arrays and STL's vector @param v1 the input abscissa values. Must be sorted either in ascending or descending order. Doesn't support STL vectors @param v2 the output abscissa values @param val1 the input value (in v1 coordinates) @param val2 the value interpolated in v2 corresponding to val1џџџџT1џџџџIter_T1џџџџT2џџџџIter_T2џџџџQЙ€v1_startџџџџџџџџIter_T1џџџџ v1_endџџџџџџџџIter_T1џџџџv2_startџџџџџџџџIter_T2џџџџ v2_endџџџџџџџџIter_T2џџџџval1џџџџџџџџT1&џџџџval2џџџџџџџџT2&џџџџvoidinterpolateV/home/pascal/depot/filedata/src/statistic.hŽ’ @brief linear interpolation of the values of a vector. This method supports either classic C arrays and STL's vector @param v1_start start of input abscissa values. Must be sorted either in ascending or descending order @param v1_end end of input abscissa values @param v2_start start of output abscissa values @param v2_end end of output abscissa values @param vin_start start of the input data to interpolate @param vin_end end of the input data to interpolate @param vout_start start of the interpolated output dataџџџџIter_T1џџџџIter_T2џџџџnv1_startџџџџџџџџIter_T1џџџџ v1_endџџџџџџџџIter_T1џџџџv2_startџџџџџџџџIter_T2џџџџ v2_endџџџџџџџџIter_T2џџџџvin_startџџџџџџџџIter_T1џџџџvin_endџџџџџџџџIter_T1џџџџvout_startџџџџџџџџIter_T2џџџџvoid(linear_interpolationV/home/pascal/depot/filedata/src/statistic.hKMш Make a generic linear interpolation @param x @param x1 @param x2 @param f1 f(x1) @param f2 f(x2) @return f(x)џџџџxџџџџџџџџconst doubleџџџџx1џџџџџџџџconst doubleџџџџx2џџџџџџџџconst doubleџџџџf1џџџџџџџџconst doubleџџџџf2џџџџџџџџconst doubleџџџџ doublemeanV/home/pascal/depot/filedata/src/statistic.h%82 @brief compute the mean value of a vector @param first the first element of the vector to consider @param last the last one @return the computed meanџџџџTџџџџ Iter_Tџџџџr firstџџџџџџџџ Iter_Tџџџџlastџџџџџџџџ Iter_TџџџџTitools.hR/home/pascal/depot/filedata/src/tools.cpp%yЦ"Kџџџџtools.hАох7R/home/pascal/depot/filedata/src/tools.cppž%gR/home/pascal/depot/filedata/src/tools.cppџџџџџџџџџџџџangle_2DR/home/pascal/depot/filedata/src/tools.cppЄАџџџџџџџџMyToolsp1џџџџџџџџdouble*џџџџp2џџџџџџџџdouble*џџџџ doublechar2intR/home/pascal/depot/filedata/src/tools.cpp5 }џџџџMyToolscџџџџџџџџconst char&џџџџintchar2stringR/home/pascal/depot/filedata/src/tools.cppВЛџџџџџџџџMyToolscџџџџџџџџconst char&џџџџstd::string countR/home/pascal/depot/filedata/src/tools.cpp“œџџџџџџџџMyToolsqg€eltџџџџџџџџ$const std::string&џџџџsџџџџџџџџ$const std::string&џџџџconst int countR/home/pascal/depot/filedata/src/tools.cppžЂџџџџџџџџMyToolseltџџџџџџџџconst charџџџџsџџџџџџџџ$const std::string&џџџџconst intget_digitsR/home/pascal/depot/filedata/src/tools.cppЪбџџџџџџџџMyToolsnџџџџџџџџ"unsigned int longџџџџ0vector< unsigned short >int2stringR/home/pascal/depot/filedata/src/tools.cppN^џџџџџџџџMyToolsnџџџџџџџџconst int&џџџџnb_digitџџџџџџџџconst int&џџџџstd::stringis_floatR/home/pascal/depot/filedata/src/tools.cpp‡‘џџџџџџџџMyToolssџџџџџџџџ$const std::string&џџџџconst bool is_intR/home/pascal/depot/filedata/src/tools.cpps{џџџџџџџџMyToolsc startџџџџџџџџconst char*џџџџszџџџџџџџџconst intџџџџconst bool is_intR/home/pascal/depot/filedata/src/tools.cpp|…џџџџџџџџMyToolsЖ\sџџџџџџџџ$const std::string&џџџџconst boolremove_spaceR/home/pascal/depot/filedata/src/tools.cpp_jџџџџџџџџMyToolsџџџ€sџџџџџџџџstd::string&џџџџvoidstring2doubleR/home/pascal/depot/filedata/src/tools.cppELџџџџџџџџMyToolsџџџ€sџџџџџџџџ$const std::string&џџџџ doublestring2floatR/home/pascal/depot/filedata/src/tools.cpp=DџџџџџџџџMyTools€sџџџџџџџџ$const std::string&џџџџ floatstring2intR/home/pascal/depot/filedata/src/tools.cpp6<џџџџџџџџMyToolssџџџџџџџџ$const std::string&џџџџint stripR/home/pascal/depot/filedata/src/tools.cpplqџџџџџџџџMyToolsstrџџџџџџџџ$const std::string&џџџџcџџџџџџџџconst charџџџџ string to_bitR/home/pascal/depot/filedata/src/tools.cppНШ }џџџџMyToolsbit_fieldџџџџџџџџ void*џџџџsizeџџџџџџџџconst intџџџџstd::stringziostream stringlist vectorsstreamctype.h cmath cfloattypeinfoalgorithmcassert limits$tools_exceptions.h"geometry_common.hN/home/pascal/depot/filedata/src/tools.h%yЦ"Kџџџџ limits ВUb$tools_exceptions.h+'сx cmath†Ь vector …/Гlist—L string XaчiostreamВ$Bє"geometry_common.hŒсЗJsstreamЏЬtypeinfoЭ<™ž cfloatыxctype.h˜тюлN/home/pascal/depot/filedata/src/tools.h0дAЌalgorithm{ cassert—?уuN/home/pascal/depot/filedata/src/tools.hџџџџџџџџџџџџ arangeN/home/pascal/depot/filedata/src/tools.h џџџџџџџџTџџџџMyToolsџџџ€val_minџџџџџџџџconst T&џџџџval_maxџџџџџџџџconst T&џџџџincџџџџџџџџconst T&џџџџvector< T > arangeN/home/pascal/depot/filedata/src/tools.h#)џџџџџџџџTџџџџMyToolsџџџ€vџџџџџџџџvector< T >&џџџџval_minџџџџџџџџconst T&џџџџval_maxџџџџџџџџconst T&џџџџincџџџџџџџџconst T&џџџџvoidpush_backN/home/pascal/depot/filedata/src/tools.hџџџџџџџџTџџџџMyToolsџџџ€v_inџџџџџџџџ.const std::vector< T >&џџџџ v_outџџџџџџџџ"std::vector< T >&џџџџvoidMyToolsN/home/pascal/depot/filedata/src/tools.h.џџџџџџџџKeyComparatorN/home/pascal/depot/filedata/src/tools.h;LЂ @class KeyComparator pseudo functionnal class used to search a given message keyџџџџMyToolsKeyComparatorN/home/pascal/depot/filedata/src/tools.hCC7џџџџџџџџMyToolsKeyComparatorџџџ€keyџџџџџџџџconst string&џџџџџџџџoperator ( )N/home/pascal/depot/filedata/src/tools.hIK  @brief comparator function @param key_val a (key, value) pair @return true if the key of @a key_val is equal to the searched keyџџџџMyToolsKeyComparatorџџџ key_valџџџџџџџџ:pair< string, string > const&џџџџboolKeyComparatorN/home/pascal/depot/filedata/src/tools.hCC7џџџџџџџџMyToolsKeyComparatorџџџ€keyџџџџџџџџconst string&џџџџџџџџoperator ( )N/home/pascal/depot/filedata/src/tools.hIK  @brief comparator function @param key_val a (key, value) pair @return true if the key of @a key_val is equal to the searched keyџџџџMyToolsKeyComparatorџџџ key_valџџџџџџџџ:pair< string, string > const&џџџџboolkeyN/home/pascal/depot/filedata/src/tools.h>>. the key to search for string$NotEqualComparatorN/home/pascal/depot/filedata/src/tools.hQbš @class NotEqualComparator pseudo functionnal class used for container searchџџџџTџџџџMyTools$NotEqualComparatorN/home/pascal/depot/filedata/src/tools.hYY6џџџџџџџџMyTools$NotEqualComparatorџџџ€valџџџџџџџџconst T&џџџџџџџџoperator ( )N/home/pascal/depot/filedata/src/tools.h_a № @brief comparator function @param ignored_val the value to skip @return true if the value is not equal to ignored_valџџџџMyTools$NotEqualComparatorџџџ ignored_valџџџџџџџџconst Tџџџџbool$NotEqualComparatorN/home/pascal/depot/filedata/src/tools.hYY6џџџџџџџџMyTools$NotEqualComparatorџџџ€valџџџџџџџџconst T&џџџџџџџџoperator ( )N/home/pascal/depot/filedata/src/tools.h_a № @brief comparator function @param ignored_val the value to skip @return true if the value is not equal to ignored_valџџџџMyTools$NotEqualComparatorџџџ ignored_valџџџџџџџџconst TџџџџboolvalN/home/pascal/depot/filedata/src/tools.hT T * the value to ignore Tangle_2DN/home/pascal/depot/filedata/src/tools.hз з+d Compute the angle from the origin between 2 points, positive anticlockwise. @param p1 a 2 value vector containing the carthesian coordinates [x,y] of the first point @param p2 a 2 value vector containing the carthesian coordinates [x,y] of the second point @return the angle between -pi->piџџџџMyToolsџџџ€p1џџџџџџџџdouble*џџџџp2џџџџџџџџdouble*џџџџ double arangeN/home/pascal/depot/filedata/src/tools.hггQš @brief generate the vector of values between val_min ( included ) and val_max ( excluded ), spaced by inc @param val_min start of range generation @param val_max end of range generation @param inc increment between 2 successive elements @return the vector of values between val_min and val_max spaced by inc, in increasing orderџџџџTџџџџMyToolsџџџ€val_minџџџџџџџџconst T&џџџџval_maxџџџџџџџџconst T&џџџџincџџџџџџџџconst T&џџџџvector< T > arangeN/home/pascal/depot/filedata/src/tools.hм м[м @brief generate the vector of values between val_min ( included ) and val_max ( excluded ), spaced by inc @param v [OUT] vector of values between val_min and val_max spaced by inc, in increasing order @param val_min [IN] start of range generation @param val_max [IN] end of range generation @param inc [IN] increment between 2 successive elements. +1 by defaultџџџџTџџџџMyToolsџџџ€vџџџџџџџџvector< T >&џџџџval_minџџџџџџџџconst T&џџџџval_maxџџџџџџџџconst T&џџџџincџџџџџџџџconst T&џџџџvoidavg_arrayN/home/pascal/depot/filedata/src/tools.hўўWP average the values of an array. It skips the fill values. If no good values have been found, it returns -LDBL_MAX @param array the array to be averaged @param nb_val the number of values of the array @param fill_value the fill value that represents bad ones @return the average, or -LDBL_MAXџџџџTџџџџMyToolsџџџ€ arrayџџџџџџџџconst T*џџџџ nb_valџџџџџџџџconst int&џџџџfill_valueџџџџџџџџconst T&џџџџ"const long doublechar2intN/home/pascal/depot/filedata/src/tools.h››џџџџџџџџMyToolsџџџ€cџџџџџџџџconst char&џџџџintchar2stringN/home/pascal/depot/filedata/src/tools.hœœ*џџџџџџџџMyToolsџџџ€cџџџџџџџџconst char&џџџџstd::string countN/home/pascal/depot/filedata/src/tools.hъъEџџџџџџџџMyToolsџџџ€eltџџџџџџџџ$const std::string&џџџџsџџџџџџџџ$const std::string&џџџџconst int countN/home/pascal/depot/filedata/src/tools.hыы<џџџџџџџџMyToolsџџџ€eltџџџџџџџџconst charџџџџsџџџџџџџџ$const std::string&џџџџconst intget_digitsN/home/pascal/depot/filedata/src/tools.h55= @brief decompose an integer in tens digits, by increasing tens power (v[0] : units, v[1] : tens, v[2] : hundreds...) For example, 1977 will return a vector of [7, 7, 9, 1] @param n an unsigned integer @return a vector of decimal digits, sorted by increasing tens powerџџџџMyToolsџџџ€nџџџџџџџџ$unsigned long longџџџџ0vector< unsigned short >int2stringN/home/pascal/depot/filedata/src/tools.hІІB @brief convert an integer to a std::string. If nb_digit is given, some 0 will be added on the left of the integer to reach nb_digit. For example, int2string(12,4) will return "0012" : 2 zeros will be added to represent the input integer with 4 digits. If nb_digit is less than the needed digits to represent the input integer, it is ignored. @param i the integer to be converted @param nb_digit the number of digits of the result string. If -1 (default), ignored @return the string representation of the input integerџџџџMyToolsџџџ€iџџџџџџџџconst int&џџџџnb_digitџџџџџџџџconst int&џџџџstd::stringis_floatN/home/pascal/depot/filedata/src/tools.hкк0џџџџџџџџMyToolsџџџ€sџџџџџџџџ$const std::string&џџџџconst bool is_intN/home/pascal/depot/filedata/src/tools.hйй+џџџџџџџџMyToolsџџџ€sџџџџџџџџ$const std::string&џџџџconst bool is_intN/home/pascal/depot/filedata/src/tools.hлл7џџџџџџџџMyToolsџџџ€ startџџџџџџџџconst char*џџџџszџџџџџџџџconst intџџџџconst boolpush_backN/home/pascal/depot/filedata/src/tools.hу у@і @brief push the content of @a v_in at the end of @a v_out @param v_in vector to be pushed @param v_in destination vectorџџџџTџџџџMyToolsџџџ€v_inџџџџџџџџ$const vector< T >&џџџџ v_outџџџџџџџџvector< T >&џџџџvoidremove_spaceN/home/pascal/depot/filedata/src/tools.hэ э$џџџџџџџџMyToolsџџџ€џџџџџџџџџџџџstd::string&џџџџvoidstring2doubleN/home/pascal/depot/filedata/src/tools.hš š.џџџџџџџџMyToolsџџџ€sџџџџџџџџ$const std::string&џџџџ doublestring2floatN/home/pascal/depot/filedata/src/tools.h™ ™,џџџџџџџџMyToolsџџџ€sџџџџџџџџ$const std::string&џџџџ floatstring2intN/home/pascal/depot/filedata/src/tools.h˜˜(Ž convert a std::string into integer, assuming s represent an integerџџџџMyToolsџџџ€sџџџџџџџџ$const std::string&џџџџint stripN/home/pascal/depot/filedata/src/tools.hє є=" @brief remove starting and trailing characters @param str a string @param c the character to strip @return @a str stripped from charcter @a cџџџџMyToolsџџџ€strџџџџџџџџ$const std::string&џџџџcџџџџџџџџconst charџџџџ string to_bitN/home/pascal/depot/filedata/src/tools.hЦЦ;X @brief print out a bitfield coded in a char type @param bit_field the char or numeric to convert @param size the size of @a bit_field (in bytes) @return the bits stringџџџџMyToolsџџџ€bit_fieldџџџџџџџџ void*џџџџsizeџџџџџџџџconst intџџџџstd::stringabsN/home/pascal/depot/filedata/src/tools.hџџџџџџџџTџџџџMyToolsџџџ€valџџџџџџџџconst T&џџџџTavg_arrayN/home/pascal/depot/filedata/src/tools.hџџџџџџџџTџџџџMyToolsџџџ€ arrayџџџџџџџџconst T*џџџџ nb_valџџџџџџџџconst int&џџџџfill_valueџџџџџџџџconst T&џџџџ"const long doublebyte_swapN/home/pascal/depot/filedata/src/tools.h‘“Д @brief Swap data of all C types @param nb the number to swap @return the swapped numberџџџџTџџџџMyToolsџџџ€nbџџџџџџџџT&џџџџvoidbyte_swapperN/home/pascal/depot/filedata/src/tools.h‚‰о @brief swap the bytes of a @param b the number to swap @param n the number of bytes of the real type of @a bџџџџMyToolsџџџ€bџџџџџџџџunsigned char*џџџџnџџџџџџџџintџџџџvoidget_abscissaN/home/pascal/depot/filedata/src/tools.hkmк @brief computes the abscissa of the value @a v in the vector @a v_abs. STL vgector version If the value @a v is strictly less than the minimum of @a v_abs or striclty greater than the maximum, will return NaN @param val the searched value @param vec the vector of abscissa. Must be in a strict monotonic ordering @return the abscissa as a floating point numberџџџџTџџџџMyToolsџџџ€valџџџџџџџџconst Tџџџџvecџџџџџџџџ$const vector< T >&џџџџ doubleget_abscissaN/home/pascal/depot/filedata/src/tools.hx’@ @brief computes the abscissa of the value @a v in the vector @a v_abs, using a binary search If the value @a v is strictly less than the minimum of @a v_abs or striclty greater than the maximum, will return NaN @param v the searched value @param v_abs the vector of abscissa. Must be in a strict monotonic ordering @param n_abs the number of values of the vector @return the abscissa as a floating point numberџџџџTџџџџMyToolsџџџ€valџџџџџџџџconst Tџџџџ v_absџџџџџџџџconst T*џџџџ n_absџџџџџџџџconst intџџџџ double.get_abscissa_sequentialN/home/pascal/depot/filedata/src/tools.hЛј @brief computes the abscissa of the logarithm of the output coordinates @a x_out in the logarithm of the reference coordinates @a x_in using a sequential search. If the value @a v is strictly less than the minimum of @a v_abs or striclty greater than the maximum, will return NaN @param y_out output abscissa @param x_out searched coordinates @param sz_out number of searched coordinates @param x_in reference coordinates system. Must be strictly monotonic @param sz_in number of reference coordinatesџџџџ Txoutџџџџ TyoutџџџџTxinџџџџMyToolsџџџ€ y_outџџџџџџџџ Tyout*џџџџ x_outџџџџџџџџconst Txout*џџџџ sz_outџџџџџџџџconst intџџџџx_inџџџџџџџџconst Txin*џџџџ sz_inџџџџџџџџconst intџџџџvoidget_endiannessN/home/pascal/depot/filedata/src/tools.hxА @brief return the endianness of the system @return 0 if little endian, 1 if big endianџџџџMyToolsџџџ€int get_intersectionN/home/pascal/depot/filedata/src/tools.hAn8 @brief compute the point that is the 2D intersection of the 2 lines (each define by 2 different points) If the lines are parallel (or superimposed), the method mill return false, and the intersection point will be {inf,inf} source of the algorithm : http://astronomy.swin.edu.au/~pbourke/geometry/lineline2d/ @param l1 the 2 points of the first line @param l2 the 2 points of the 2nd line @param intersection the intersection point. Must be a 1D vector @return true if an intersection has been found (false if the lines are parallel)џџџџNumericTypeџџџџMyToolsџџџ€l1џџџџџџџџfconst std::vector< std :: vector < NumericType > >&џџџџl2џџџџџџџџfconst std::vector< std :: vector < NumericType > >&џџџџintersectionџџџџџџџџ6std::vector< NumericType >&џџџџconst bool6get_log_abscissa_sequentialN/home/pascal/depot/filedata/src/tools.hНбј @brief computes the abscissa of the logarithm of the output coordinates @a x_out in the logarithm of the reference coordinates @a x_in using a sequential search. If the value @a v is strictly less than the minimum of @a v_abs or striclty greater than the maximum, will return NaN @param y_out output abscissa @param x_out searched coordinates @param sz_out number of searched coordinates @param x_in reference coordinates system. Must be strictly monotonic @param sz_in number of reference coordinatesџџџџ Txoutџџџџ TyoutџџџџTxinџџџџMyToolsџџџ€ y_outџџџџџџџџ Tyout*џџџџ x_outџџџџџџџџconst Txout*џџџџ sz_outџџџџџџџџconst intџџџџx_inџџџџџџџџconst Txin*џџџџ sz_inџџџџџџџџconst intџџџџvoidgt_comparatorN/home/pascal/depot/filedata/src/tools.h8 @brief stricly greater than predicate @param i first value to compare @param j second value to compare @return true if ( i > j )џџџџTџџџџMyToolsџџџ€iџџџџџџџџTџџџџjџџџџџџџџTџџџџboolhas_typeN/home/pascal/depot/filedata/src/tools.hушќ @brief check if the given string represents a data of the type given as template argument This source code is taken from http://c.developpez.com/faq/cpp/?page=strings#STRINGS_is_type @param str the string to test @return true if @a str has the type TџџџџTџџџџMyToolsџџџ€strџџџџџџџџ$const std::string&џџџџboolis_big_endianN/home/pascal/depot/filedata/src/tools.hosD @brief test the system byte orderџџџџMyToolsџџџ€bool log_opN/home/pascal/depot/filedata/src/tools.h6:ю @brief operator function to use with the STL algorithm @param i operand @return the natural logarithm of the operandџџџџTџџџџMyToolsџџџ€iџџџџџџџџconst T&џџџџTprint_vecN/home/pascal/depot/filedata/src/tools.hд @brief print vector content @param vec a vector as a C array @param sz number of elements of the vectorџџџџTџџџџMyToolsџџџ€vecџџџџџџџџconst T*џџџџszџџџџџџџџconst size_tџџџџvoidprint_vecN/home/pascal/depot/filedata/src/tools.h b @brief print vector content @param vec a vectorџџџџTџџџџMyToolsavecџџџџџџџџ$const vector< T >&џџџџvoidprodN/home/pascal/depot/filedata/src/tools.h/4 @brief operator function to use with the STL algorithm @param i operand 1 @param j operand 2 @return the product of the 2 operandsџџџџTџџџџMyToolsџџџ€iџџџџџџџџconst T&џџџџjџџџџџџџџconst T&џџџџT roundN/home/pascal/depot/filedata/src/tools.hЮжи @brief round a number to the given type @param x the number to round @return the rounded number as a longџџџџ T_outџџџџMyToolsџџџ€xџџџџџџџџconst double&џџџџ T_outsumN/home/pascal/depot/filedata/src/tools.h'- @brief operator function to use with the STL algorithm @param i operand 1 @param j operand 2 @return the sum of the 2 operandsџџџџTџџџџMyToolsџџџ€iџџџџџџџџconst T&џџџџjџџџџџџџџconst T&џџџџT to_numN/home/pascal/depot/filedata/src/tools.hЙХш @brief convert a string to a numeric. Depending of the compiler, the output numeric type can be required to be explicitally specified as a template argument @param s_nb the number as a string representation @return @a s_nb as a numeric typeџџџџNumericTypeџџџџMyToolsџџџ€s_nbџџџџџџџџconst string&џџџџNumericTypeto_stringN/home/pascal/depot/filedata/src/tools.h­Зр @brief convert a numeric to a string @param nb the number to convert @return @a nb as a string representationџџџџNumericTypeџџџџMyToolsџџџ€nbџџџџџџџџ$const NumericType&џџџџstd::stringvec2strN/home/pascal/depot/filedata/src/tools.hыѕ @brief return a string representation of the given vector. C style version @param vec a vector @return vector content as a stringџџџџTџџџџMyToolsџџџ€vecџџџџџџџџconst T*џџџџszџџџџџџџџconst size_tџџџџstd::stringvec2strN/home/pascal/depot/filedata/src/tools.hќў @brief return a string representation of the given vector. STL version @param vec a vector @return vector content as a stringџџџџTџџџџMyToolsџџџ€vecџџџџџџџџ$const vector< T >&џџџџstd::string|exception stringsstreamtools.hd/home/pascal/depot/filedata/src/tools_exceptions.h%yДшд џџџџ string Xaчtools.hАох7sstreamЏЬd/home/pascal/depot/filedata/src/tools_exceptions.hЫR]exceptionOd/home/pascal/depot/filedata/src/tools_exceptions.hџџџџџџџџџџџџ$InterpolationErrord/home/pascal/depot/filedata/src/tools_exceptions.h#78 @class InterpolationError -џџџџexception$InterpolationErrord/home/pascal/depot/filedata/src/tools_exceptions.h++‡џџџџџџџџ$InterpolationErrorM•src_fileџџџџџџџџconst string&џџџџsrc_lineџџџџџџџџconst intџџџџmsgџџџџџџџџconst string&џџџџџџџџwhatd/home/pascal/depot/filedata/src/tools_exceptions.h.2џџџџџџџџ$InterpolationErrorM•$const char*(~ InterpolationErrord/home/pascal/depot/filedata/src/tools_exceptions.h,,$џџџџџџџџ$InterpolationErrorQЙ€џџџџ$InterpolationErrord/home/pascal/depot/filedata/src/tools_exceptions.h++‡џџџџџџџџ$InterpolationErrorM•src_fileџџџџџџџџconst string&џџџџsrc_lineџџџџџџџџconst intџџџџmsgџџџџџџџџconst string&џџџџџџџџwhatd/home/pascal/depot/filedata/src/tools_exceptions.h.2џџџџџџџџ$InterpolationErrorM•$const char*(~ InterpolationErrord/home/pascal/depot/filedata/src/tools_exceptions.h,,$џџџџџџџџ$InterpolationErrorQЙ€џџџџmsgd/home/pascal/depot/filedata/src/tools_exceptions.h6 6џџџџ stringsrc_filed/home/pascal/depot/filedata/src/tools_exceptions.h4 4џџџџ stringsrc_lined/home/pascal/depot/filedata/src/tools_exceptions.h55џџџџintout_of_boundd/home/pascal/depot/filedata/src/tools_exceptions.h<Ix Thrown when trying to access an invalid index in a sequenceџџџџstd::exceptionout_of_boundd/home/pascal/depot/filedata/src/tools_exceptions.h>>Lџџџџџџџџout_of_boundџџџ€ indexџџџџџџџџconst intџџџџsizeџџџџџџџџconst intџџџџџџџџwhatd/home/pascal/depot/filedata/src/tools_exceptions.hAEџџџџџџџџout_of_boundџџџЄconst char*~ out_of_boundd/home/pascal/depot/filedata/src/tools_exceptions.h??џџџџџџџџout_of_boundџџџ€џџџџout_of_boundd/home/pascal/depot/filedata/src/tools_exceptions.h>>Lџџџџџџџџout_of_boundџџџ€ indexџџџџџџџџconst intџџџџsizeџџџџџџџџconst intџџџџџџџџwhatd/home/pascal/depot/filedata/src/tools_exceptions.hAEџџџџџџџџout_of_boundџџџЄconst char*~ out_of_boundd/home/pascal/depot/filedata/src/tools_exceptions.h??џџџџџџџџout_of_boundџџџ€џџџџ indexd/home/pascal/depot/filedata/src/tools_exceptions.hGG џџџџintsized/home/pascal/depot/filedata/src/tools_exceptions.hHH џџџџintstdd/home/pascal/depot/filedata/src/tools_exceptions.hm caliopfiledata.h$viewing_geometry.hx/home/pascal/depot/filedata/test/test_caliop_l1_filedata.cpp%yУ`Пџџџџ$viewing_geometry.h”gZx/home/pascal/depot/filedata/test/test_caliop_l1_filedata.cpp€GоЊ caliopfiledata.hq)Џx/home/pascal/depot/filedata/test/test_caliop_l1_filedata.cppџџџџџџџџџџџџmainx/home/pascal/depot/filedata/test/test_caliop_l1_filedata.cppFџџџџџџџџargcџџџџџџџџintџџџџ argv[]џџџџџџџџ char**џџџџintmainx/home/pascal/depot/filedata/test/test_caliop_l1_filedata.cppFџџџџџџџџargcџџџџџџџџintџџџџ argv[]џџџџџџџџ char**џџџџintq caliopfiledata.hp/home/pascal/depot/filedata/test/test_caliopfiledata.cpp%yУущјџџџџp/home/pascal/depot/filedata/test/test_caliopfiledata.cpp1PŽЏ caliopfiledata.hq)Џp/home/pascal/depot/filedata/test/test_caliopfiledata.cppџџџџџџџџџџџџmainp/home/pascal/depot/filedata/test/test_caliopfiledata.cpp'џџџџџџџџargcџџџџџџџџintџџџџ argv[]џџџџџџџџ char**џџџџintmainp/home/pascal/depot/filedata/test/test_caliopfiledata.cpp'џџџџџџџџargcџџџџџџџџintџџџџ argv[]џџџџџџџџ char**џџџџintuceresfiledata.hn/home/pascal/depot/filedata/test/test_ceresfiledata.cpp%yУущјџџџџn/home/pascal/depot/filedata/test/test_ceresfiledata.cppшhЩceresfiledata.hЈ[+Ђn/home/pascal/depot/filedata/test/test_ceresfiledata.cppџџџџџџџџџџџџmainn/home/pascal/depot/filedata/test/test_ceresfiledata.cppKџџџџџџџџargcџџџџџџџџintџџџџ argv[]џџџџџџџџ char**џџџџintmainn/home/pascal/depot/filedata/test/test_ceresfiledata.cppKџџџџџџџџargcџџџџџџџџintџџџџ argv[]џџџџџџџџ char**џџџџinty$cloudsatfiledata.ht/home/pascal/depot/filedata/test/test_cloudsatfiledata.cpp%yУћuPџџџџt/home/pascal/depot/filedata/test/test_cloudsatfiledata.cpp€ŠxЦ$cloudsatfiledata.h)Q‘Пt/home/pascal/depot/filedata/test/test_cloudsatfiledata.cppџџџџџџџџџџџџmaint/home/pascal/depot/filedata/test/test_cloudsatfiledata.cppfџџџџџџџџargcџџџџџџџџintџџџџ argv[]џџџџџџџџ char**џџџџintmaint/home/pascal/depot/filedata/test/test_cloudsatfiledata.cppfџџџџџџџџargcџџџџџџџџintџџџџ argv[]џџџџџџџџ char**џџџџint} dardarfiledata.hp/home/pascal/depot/filedata/test/test_dardarfiledata.cpp%yУћuPџџџџ dardarfiledata.h'§ƒЎp/home/pascal/depot/filedata/test/test_dardarfiledata.cpp–sžp/home/pascal/depot/filedata/test/test_dardarfiledata.cppџџџџџџџџџџџџmainp/home/pascal/depot/filedata/test/test_dardarfiledata.cpp5џџџџџџџџџџџ€argcџџџџџџџџintџџџџ argv[]џџџџџџџџ char**џџџџintmainp/home/pascal/depot/filedata/test/test_dardarfiledata.cpp5џџџџџџџџџџџ€argcџџџџџџџџintџџџџ argv[]џџџџџџџџ char**џџџџint date.h\/home/pascal/depot/filedata/test/test_date.cpp%yУущјџџџџ\/home/pascal/depot/filedata/test/test_date.cppђ–g› date.hћMє\/home/pascal/depot/filedata/test/test_date.cppџџџџџџџџџџџџmain\/home/pascal/depot/filedata/test/test_date.cpp?Р @file test_date.cpp do some unit tests on the date.h module history : 14/06/2006 : creationџџџџџџџ€argcџџџџџџџџintџџџџ argv[]џџџџџџџџ char**џџџџintmain\/home/pascal/depot/filedata/test/test_date.cpp?Р @file test_date.cpp do some unit tests on the date.h module history : 14/06/2006 : creationџџџџџџџ€argcџџџџџџџџintџџџџ argv[]џџџџџџџџ char**џџџџint…ecmwffiledata.h caliopfiledata.hn/home/pascal/depot/filedata/test/test_ecmwffiledata.cpp%yУћuPџџџџn/home/pascal/depot/filedata/test/test_ecmwffiledata.cppњwiecmwffiledata.hоsБB caliopfiledata.hq)Џn/home/pascal/depot/filedata/test/test_ecmwffiledata.cppџџџџџџџџџџџџmainn/home/pascal/depot/filedata/test/test_ecmwffiledata.cppеџџџџџџџџџџџ€argcџџџџџџџџintџџџџ argv[]џџџџџџџџ char**џџџџintmainn/home/pascal/depot/filedata/test/test_ecmwffiledata.cppеџџџџџџџџџџџ€argcџџџџџџџџintџџџџ argv[]џџџџџџџџ char**џџџџint‰file_tools.hh/home/pascal/depot/filedata/test/test_file_tools.cpp%yДшд џџџџh/home/pascal/depot/filedata/test/test_file_tools.cppgтА-file_tools.hгЦh/home/pascal/depot/filedata/test/test_file_tools.cppџџџџџџџџџџџџmainh/home/pascal/depot/filedata/test/test_file_tools.cpp/џџџџџџџџargcџџџџџџџџintџџџџ argv[]џџџџџџџџ char**џџџџintmainh/home/pascal/depot/filedata/test/test_file_tools.cpp/џџџџџџџџargcџџџџџџџџintџџџџ argv[]џџџџџџџџ char**џџџџint cstdio vectoriostreamgeometry.h$viewing_geometry.hd/home/pascal/depot/filedata/test/test_geometry.cpp%yЦg‚Pџџџџ vector …/Г cstdioќ—$viewing_geometry.h”gZiostreamВ$Bєgeometry.h7\<вd/home/pascal/depot/filedata/test/test_geometry.cpp™aг9d/home/pascal/depot/filedata/test/test_geometry.cppџџџџџџџџџџџџmaind/home/pascal/depot/filedata/test/test_geometry.cppвџџџџџџџџџџџ€argcџџџџџџџџintџџџџ argv[]џџџџџџџџ char**џџџџintmaind/home/pascal/depot/filedata/test/test_geometry.cppвџџџџџџџџџџџ€argcџџџџџџџџintџџџџ argv[]џџџџџџџџ char**џџџџintstdd/home/pascal/depot/filedata/test/test_geometry.cpp‘gmaofiledata.hl/home/pascal/depot/filedata/test/test_gmaofiledata.cpp%yУущјџџџџl/home/pascal/depot/filedata/test/test_gmaofiledata.cppn<…лgmaofiledata.h-ро4l/home/pascal/depot/filedata/test/test_gmaofiledata.cppџџџџџџџџџџџџmainl/home/pascal/depot/filedata/test/test_gmaofiledata.cppАџџџџџџџџOaё€argcџџџџџџџџintџџџџ argv[]џџџџџџџџ char**џџџџintmainl/home/pascal/depot/filedata/test/test_gmaofiledata.cppАџџџџџџџџOaё€argcџџџџџџџџintџџџџ argv[]џџџџџџџџ char**џџџџintqgribfiledata.hl/home/pascal/depot/filedata/test/test_gribfiledata.cpp%yУ=с8џџџџgribfiledata.h(XTl/home/pascal/depot/filedata/test/test_gribfiledata.cppKэcћl/home/pascal/depot/filedata/test/test_gribfiledata.cppџџџџџџџџџџџџmainl/home/pascal/depot/filedata/test/test_gribfiledata.cppœџџџџџџџџЖQargcџџџџџџџџintџџџџ argv[]џџџџџџџџ char**џџџџintmainl/home/pascal/depot/filedata/test/test_gribfiledata.cppœџџџџџџџџЖQargcџџџџџџџџintџџџџ argv[]џџџџџџџџ char**џџџџintuhdf5filedata.homifiledata.hhdffiledata.h"hdffilemetadata.hl/home/pascal/depot/filedata/test/test_hdf5filedata.cpp%yУэЩPџџџџl/home/pascal/depot/filedata/test/test_hdf5filedata.cppБlЏ>hdffiledata.h˜vТ"hdffilemetadata.hЎ(Rйomifiledata.h_ЉX%hdf5filedata.hўD7l/home/pascal/depot/filedata/test/test_hdf5filedata.cppџџџџџџџџџџџџmainl/home/pascal/depot/filedata/test/test_hdf5filedata.cppCџџџџџџџџargcџџџџџџџџintџџџџ argv[]џџџџџџџџ char**џџџџintmainl/home/pascal/depot/filedata/test/test_hdf5filedata.cppCџџџџџџџџargcџџџџџџџџintџџџџ argv[]џџџџџџџџ char**џџџџintyhdffiledata.htypeinfoj/home/pascal/depot/filedata/test/test_hdffiledata.cpp%yЦNPџџџџhdffiledata.h˜vТj/home/pascal/depot/filedata/test/test_hdffiledata.cppE;itypeinfoЭ<™žj/home/pascal/depot/filedata/test/test_hdffiledata.cppџџџџџџџџџџџџmainj/home/pascal/depot/filedata/test/test_hdffiledata.cppIџџџџџџџџdargcџџџџџџџџintџџџџ argv[]џџџџџџџџ char**џџџџintmainj/home/pascal/depot/filedata/test/test_hdffiledata.cppIџџџџџџџџdargcџџџџџџџџintџџџџ argv[]џџџџџџџџ char**џџџџintЁlogfile.hb/home/pascal/depot/filedata/test/test_logfile.cpp%yДшд џџџџlogfile.hЁGMˆb/home/pascal/depot/filedata/test/test_logfile.cpp‹‚]яb/home/pascal/depot/filedata/test/test_logfile.cppџџџџџџџџџџџџmainb/home/pascal/depot/filedata/test/test_logfile.cpp#џџџџџџџџtargcџџџџџџџџintџџџџ argv[]џџџџџџџџ char**џџџџintmainb/home/pascal/depot/filedata/test/test_logfile.cpp#џџџџџџџџtargcџџџџџџџџintџџџџ argv[]џџџџџџџџ char**џџџџintЅmodisfiledata.hn/home/pascal/depot/filedata/test/test_modisfiledata.cpp%yЦNPџџџџn/home/pascal/depot/filedata/test/test_modisfiledata.cppkЉ3modisfiledata.hЂœЬn/home/pascal/depot/filedata/test/test_modisfiledata.cppџџџџџџџџџџџџmainn/home/pascal/depot/filedata/test/test_modisfiledata.cppГџџџџџџџџџџџ€argcџџџџџџџџintџџџџ argv[]џџџџџџџџ char**џџџџintmainn/home/pascal/depot/filedata/test/test_modisfiledata.cppГџџџџџџџџџџџ€argcџџџџџџџџintџџџџ argv[]џџџџџџџџ char**џџџџintЉmodisfiledata.hz/home/pascal/depot/filedata/test/test_modisfiledata_myd06.cpp%yЦпУxџџџџz/home/pascal/depot/filedata/test/test_modisfiledata_myd06.cpp