[SCM] epr-api branch, master, updated. debian/2.2-1-29-ge0d9945
Antonio Valentino
antonio.valentino at tiscali.it
Tue Aug 13 18:49:07 UTC 2013
The following commit has been merged in the master branch:
commit 5812e8f0c8add4c105a47b6aa41332aab608bea4
Author: Antonio Valentino <antonio.valentino at tiscali.it>
Date: Tue Aug 13 11:12:38 2013 +0000
Imported Upstream version 2.3~dev20130813
diff --git a/CHANGELOG.txt b/CHANGELOG.txt
index b9d8202..49e3629 100644
--- a/CHANGELOG.txt
+++ b/CHANGELOG.txt
@@ -1,8 +1,14 @@
- CHANGELOG for the EPR-API, VERSION 2.2
+ CHANGELOG for the EPR-API, VERSION 2.3
----------------------------------------------------------------------
+Changes from Version 2.2 to Version 2.3 (of DD. MMMM YYYY)
+----------------------------------------------------------------------
+Bugfix in epr_band.c: [EPR-7] Interpolation of geolocation ADS
+Bugfix in epr_core.c: Setting errno to 0 in method epr_str_to_number.
+
+----------------------------------------------------------------------
Changes from Version 2.1 to Version 2.2 (of 31. July 2010)
----------------------------------------------------------------------
Generally replaced usage of data type "long" by "int" since "long" is
diff --git a/CMakeLists.txt b/CMakeLists.txt
new file mode 100644
index 0000000..85cb206
--- /dev/null
+++ b/CMakeLists.txt
@@ -0,0 +1,62 @@
+# Copyright (c) 2013 Antonio Valentino <antonio.valentino at tiscali.it>
+
+
+cmake_minimum_required(VERSION 2.8)
+project(epr-api)
+
+
+# set version number
+set(EPR_API_VERSION_MAJOR 2)
+set(EPR_API_VERSION_MINOR 3)
+set(EPR_API_VERSION_PATCH 0)
+
+
+# options
+option(BUILD_STATIC_LIB "build the static version of the library" YES)
+option(BUILD_TESTS "build test programs" OFF)
+option(BUILD_DOCS "build Doxygen documentation" OFF)
+
+
+# testing
+enable_testing()
+
+
+# sub-directories
+add_subdirectory(src)
+
+if(BUILD_TESTS)
+ add_subdirectory(bccunit)
+endif(BUILD_TESTS)
+
+if(BUILD_DOCS)
+ add_subdirectory(docs)
+endif(BUILD_DOCS)
+
+
+# uninstall target
+configure_file(
+ "${CMAKE_CURRENT_SOURCE_DIR}/cmake_uninstall.cmake.in"
+ "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake"
+ IMMEDIATE @ONLY)
+
+add_custom_target(uninstall
+ COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake)
+
+
+# packaging
+include(InstallRequiredSystemLibraries)
+
+set(CPACK_GENERATOR TGZ ZIP STGZ)
+set(CPACK_SOURCE_GENERATOR TGZ ZIP)
+set(CPACK_PACKAGE_VERSION_MAJOR ${EPR_API_VERSION_MAJOR})
+set(CPACK_PACKAGE_VERSION_MINOR ${EPR_API_VERSION_MINOR})
+set(CPACK_PACKAGE_VERSION_PATCH ${EPR_API_VERSION_PATCH})
+set(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/README.txt")
+set(CPACK_PACKAGE_DESCRIPTION_SUMMARY
+ "Delft object-oriented radar interferometric software")
+set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE.txt")
+set(CPACK_SOURCE_IGNORE_FILES "/build.*;.*~;\\\\.git.*;\\\\.user$;\\\\.DS_Store")
+set(CPACK_STRIP_FILES TRUE)
+set(CPACK_SOURCE_STRIP_FILES TRUE)
+
+include(CPack)
diff --git a/README.txt b/README.txt
index 6a4bba5..fef26a3 100644
--- a/README.txt
+++ b/README.txt
@@ -1,9 +1,9 @@
README
ENVISAT Product Reader API for C
- Version 2.2
+ Version 2.3
- 31. July 2010
+ DD. MMMM YYYY
Contents
@@ -135,13 +135,11 @@ Zip Archive Contents
Bug Reports and Feedback
- Please submit your bug reports via e-mail to
- beam-issues at brockmann-consult.de
+ Please submit your bug reports at the issue tracker at
+ http://www.brockmann-consult.de/beam-jira/browse/EPR
+ or via e-mail to beam-issues at brockmann-consult.de
and tell us which bug fixes matter most to you.
- You can also send comments directly to the software engineering team
- norman.fomferra at brockmann-consult.de
- sabine.embacher at brockmann-consult.de
--------------------------------------------------------------------------------
Thank you for using the EPR API Software.
diff --git a/VERSION.txt b/VERSION.txt
index 96de6bf..79becbe 100644
--- a/VERSION.txt
+++ b/VERSION.txt
@@ -1,2 +1,2 @@
-VERSION 2.2
+VERSION 2.3-SNAPSHOT
diff --git a/bccunit/CMakeLists.txt b/bccunit/CMakeLists.txt
new file mode 100644
index 0000000..980dfb7
--- /dev/null
+++ b/bccunit/CMakeLists.txt
@@ -0,0 +1,3 @@
+# Copyright (c) 2013 Antonio Valentino <antonio.valentino at tiscali.it>
+
+add_subdirectory(src)
diff --git a/bccunit/src/CMakeLists.txt b/bccunit/src/CMakeLists.txt
new file mode 100644
index 0000000..be2c4d7
--- /dev/null
+++ b/bccunit/src/CMakeLists.txt
@@ -0,0 +1,10 @@
+# Copyright (c) 2013 Antonio Valentino <antonio.valentino at tiscali.it>
+
+add_library(bccunit STATIC bccunit.c)
+
+add_executable(bccunit_test bccunit_test.c)
+target_link_libraries(bccunit_test bccunit)
+
+add_test(BCCUNIT_TEST_SUITE_01 bccunit_test)
+set_tests_properties(BCCUNIT_TEST_SUITE_01 PROPERTIES PASS_REGULAR_EXPRESSION
+ "bccunit: test summary: 4 test case\\(s\\) total, 2 failure\\(s\\), 0 error\\(s\\)")
diff --git a/cmake_uninstall.cmake.in b/cmake_uninstall.cmake.in
new file mode 100644
index 0000000..c6d8094
--- /dev/null
+++ b/cmake_uninstall.cmake.in
@@ -0,0 +1,22 @@
+if (NOT EXISTS "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt")
+ message(FATAL_ERROR "Cannot find install manifest: \"@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt\"")
+endif(NOT EXISTS "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt")
+
+file(READ "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt" files)
+string(REGEX REPLACE "\n" ";" files "${files}")
+list(REVERSE files)
+foreach (file ${files})
+ message(STATUS "Uninstalling \"$ENV{DESTDIR}${file}\"")
+ if (EXISTS "$ENV{DESTDIR}${file}")
+ execute_process(
+ COMMAND @CMAKE_COMMAND@ -E remove "$ENV{DESTDIR}${file}"
+ OUTPUT_VARIABLE rm_out
+ RESULT_VARIABLE rm_retval
+ )
+ if(NOT ${rm_retval} EQUAL 0)
+ message(FATAL_ERROR "Problem when removing \"$ENV{DESTDIR}${file}\"")
+ endif (NOT ${rm_retval} EQUAL 0)
+ else (EXISTS "$ENV{DESTDIR}${file}")
+ message(STATUS "File \"$ENV{DESTDIR}${file}\" does not exist.")
+ endif (EXISTS "$ENV{DESTDIR}${file}")
+endforeach(file)
diff --git a/docs/CMakeLists.txt b/docs/CMakeLists.txt
new file mode 100644
index 0000000..b4041d7
--- /dev/null
+++ b/docs/CMakeLists.txt
@@ -0,0 +1,38 @@
+# Copyright (c) 2013 Antonio Valentino <antonio.valentino at tiscali.it>
+
+
+find_package(Doxygen)
+if(DOXYGEN_FOUND)
+ add_custom_command(
+ OUTPUT doxygen_main_content.html footer.html header.html images ${CMAKE_BINARY_DIR}/src/epr_api.h
+ COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_SOURCE_DIR}/doxygen_main_content.html .
+ COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_SOURCE_DIR}/footer.html .
+ COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_SOURCE_DIR}/header.html .
+ COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/images images
+ COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_SOURCE_DIR}/src/epr_api.h ${CMAKE_BINARY_DIR}/src/epr_api.h
+ COMMENT "Copy template files and images")
+
+ add_custom_target(doc ALL
+ ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.txt
+ DEPENDS ${CMAKE_BINARY_DIR}/src/epr_api.h doxygen_main_content.html footer.html header.html images
+ WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
+ COMMENT "Generating API documentation with Doxygen" VERBATIM
+ )
+
+ add_custom_target(
+ clean_doc
+ COMMAND ${CMAKE_COMMAND} -E remove_directory epr_c_api
+ COMMENT "Clean HTML doc")
+
+ #add_dependencies(clean clean_doc)
+
+ install(
+ DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/epr_c_api/
+ DESTINATION share/doc/epr-api/html
+ COMPONENT doc)
+ install(
+ DIRECTORY images
+ DESTINATION share/doc/epr-api
+ COMPONENT doc)
+
+endif(DOXYGEN_FOUND)
diff --git a/docs/Doxyfile.txt b/docs/Doxyfile.txt
index 32b041e..a0875fa 100644
--- a/docs/Doxyfile.txt
+++ b/docs/Doxyfile.txt
@@ -31,7 +31,7 @@ PROJECT_NAME = "ENVISAT Product Reader C API"
# This could be handy for archiving the generated documentation or
# if some version control system is used.
-PROJECT_NUMBER = 2.2
+PROJECT_NUMBER = 2.3
# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
# base path where the generated documentation will be put.
diff --git a/makefile b/makefile
index 42f1400..6824a71 100644
--- a/makefile
+++ b/makefile
@@ -15,7 +15,7 @@ OUTDIR = ./build/$(CONFIG)
# TARGET = $(OUTDIR)/libepr_api.so
# for linux
-COMPILE = gcc -fPIC -ansi -c -I$(SRCDIR) -I$(THISDIR) $(OPTIONS)
+COMPILE = $(CC) $(CFLAGS) -fPIC -ansi -c -I$(SRCDIR) -I$(THISDIR) $(OPTIONS)
LINK = ld -shared
TARGET = $(OUTDIR)/libepr_api.so
@@ -119,7 +119,7 @@ clean:
$(TARGET) : $(OBJECTS)
- $(LINK) -o $@ $(OBJECTS) -lm
+ $(LINK) $(LDFLAGS) -o $@ $(OBJECTS) -lm -lc
SRC_1 = $(SRCDIR)/epr_api.c
$(OUTDIR)/epr_api.o : $(HEADERS) $(SRC_1)
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
new file mode 100644
index 0000000..f1e9540
--- /dev/null
+++ b/src/CMakeLists.txt
@@ -0,0 +1,44 @@
+# Copyright (c) 2013 Antonio Valentino <antonio.valentino at tiscali.it>
+
+
+# sources
+set(SOURCES epr_api.c
+ epr_core.c
+ epr_dddb.c
+ epr_product.c
+ epr_dataset.c
+ epr_string.c
+ epr_ptrarray.c
+ epr_field.c
+ epr_record.c
+ epr_param.c
+ epr_dsd.c
+ epr_msph.c
+ epr_swap.c
+ epr_band.c
+ epr_bitmask.c
+ epr_dump.c
+ epr_typconv.c
+)
+
+
+# targets
+add_library(epr_api SHARED ${SOURCES})
+
+if(BUILD_STATIC_LIB)
+ add_library(epr_api_static STATIC ${SOURCES})
+ set_target_properties(epr_api_static PROPERTIES OUTPUT_NAME epr_api)
+endif(BUILD_STATIC_LIB)
+
+
+# sub-directories
+if(BUILD_TESTS)
+ add_subdirectory(api-test)
+ add_subdirectory(test)
+endif(BUILD_TESTS)
+
+
+# install
+install(TARGETS epr_api epr_api_static
+ LIBRARY DESTINATION lib ARCHIVE DESTINATION lib)
+install(FILES epr_api.h epr_ptrarray.h DESTINATION include)
diff --git a/src/api-test/CMakeLists.txt b/src/api-test/CMakeLists.txt
new file mode 100644
index 0000000..5f18494
--- /dev/null
+++ b/src/api-test/CMakeLists.txt
@@ -0,0 +1,6 @@
+# Copyright (c) 2013 Antonio Valentino <antonio.valentino at tiscali.it>
+
+add_executable(api_tests api_tests.c)
+target_link_libraries(api_tests epr_api)
+
+#add_test(TEST_API_02 api_tests)
diff --git a/src/epr_api.h b/src/epr_api.h
index 077ed2c..402ca91 100644
--- a/src/epr_api.h
+++ b/src/epr_api.h
@@ -31,7 +31,7 @@ extern "C"
#include "epr_ptrarray.h"
#define EPR_PRODUCT_API_NAME_STR "ENVISAT Product Reader API"
-#define EPR_PRODUCT_API_VERSION_STR "2.2"
+#define EPR_PRODUCT_API_VERSION_STR "2.3"
/* needed by Doxygen */
/** \mainpage
diff --git a/src/epr_band.c b/src/epr_band.c
index a450ff1..9092dc2 100644
--- a/src/epr_band.c
+++ b/src/epr_band.c
@@ -191,7 +191,13 @@ EPR_SPtrArray* epr_create_band_ids(EPR_SProductId* product_id) {
&& strncmp(product_id->id_string, "ASA_APG", 7) != 0) {
band_id->lines_mirrored = TRUE;
} else {
- band_id->lines_mirrored = FALSE;
+ if (strncmp(product_id->id_string, EPR_ENVISAT_PRODUCT_SAR, 3) == 0
+ && strncmp(product_id->id_string, "SAR_IMG", 7) != 0
+ && strncmp(product_id->id_string, "SAR_APG", 7) != 0) {
+ band_id->lines_mirrored = TRUE;
+ } else {
+ band_id->lines_mirrored = FALSE;
+ }
}
}
@@ -666,7 +672,7 @@ int epr_read_band_raster(EPR_SBandId* band_id,
}
} else if (strcmp(rec_type, "A") == 0) {
if (epr_read_band_annotation_data
- (band_id, offset_x, offset_y, raster) == 1) {
+ (band_id, offset_x, offset_y, raster)) {
epr_set_err(e_err_file_read_error,
"epr_read_band_raster: unsuccessfully reading band annotation data");
return epr_get_last_err_code();
@@ -719,6 +725,8 @@ int epr_read_band_measurement_data(EPR_SBandId* band_id,
scan_line_length = EPR_ATS_LINE_LENGTH;
} else if (strncmp(EPR_ENVISAT_PRODUCT_ASAR, product_id->id_string, 3) == 0) {
scan_line_length = epr_get_scene_width(product_id);
+ } else if (strncmp(EPR_ENVISAT_PRODUCT_SAR, product_id->id_string, 3) == 0) {
+ scan_line_length = epr_get_scene_width(product_id);
} else {
epr_set_err(e_err_illegal_arg,
"epr_read_band_measurement_data: scan line length unknown");
@@ -774,6 +782,9 @@ int epr_read_band_measurement_data(EPR_SBandId* band_id,
/*get the next record by the given name*/
record = epr_read_record(dataset_id, iY, record);
+ if (record == NULL) {
+ return epr_get_last_err_code();
+ }
/*get the field at its number*/
field = epr_get_field_at(record, band_id->dataset_ref.field_index - 1);
/*get the scaled "line" of physical values*/
@@ -875,7 +886,7 @@ int epr_read_band_annotation_data(EPR_SBandId* band_id,
field = epr_get_field(sph_record, "LINE_LENGTH");
scan_line_length = epr_get_field_elem_as_uint(field, 0);
} else if (strncmp(EPR_ENVISAT_PRODUCT_AATSR, product_id->id_string, 3) == 0) {
- scan_offset_y = 0.5F;
+ scan_offset_y = 0.0F; /*!! EPR-7: was 0.5F !!*/
scan_line_length = EPR_ATS_LINE_LENGTH;
lines_per_tie_pt = EPR_AATSR_LINES_PER_TIE_PT;
num_elems = field_info->num_elems;
@@ -890,7 +901,8 @@ int epr_read_band_annotation_data(EPR_SBandId* band_id,
epr_free_record(record);
return epr_get_last_err_code();
}
- } else if (strncmp(EPR_ENVISAT_PRODUCT_ASAR, product_id->id_string, 3) == 0) {
+ } else if ((strncmp(EPR_ENVISAT_PRODUCT_ASAR, product_id->id_string, 3) == 0) ||
+ (strncmp(EPR_ENVISAT_PRODUCT_SAR, product_id->id_string, 3) == 0)) {
EPR_SDatasetId* dataset_id = NULL;
uint num_rec;
scan_offset_x = 0.5F; /* @todo CHECK THIS FOR ASAR! */
@@ -947,11 +959,11 @@ int epr_read_band_annotation_data(EPR_SBandId* band_id,
/*select the correspondent function to scaling and transform data type*/
transform_array_func = select_transform_array_function(band_datatype, datatype_id);
if (transform_array_func == NULL) {
- epr_set_err(e_err_illegal_data_type,
- "epr_read_band_annotation_data: internal error: illegal data type");
epr_free_record(record);
free(line_beg_buffer);
free(line_end_buffer);
+ epr_set_err(e_err_illegal_data_type,
+ "epr_read_band_annotation_data: internal error: illegal data type");
return epr_get_last_err_code();
}
y_beg_old = 9999;
@@ -1015,6 +1027,12 @@ int epr_read_band_annotation_data(EPR_SBandId* band_id,
&& strncmp(product_id->id_string, "ASA_IMG", 7) != 0
&& strncmp(product_id->id_string, "ASA_APG", 7) != 0) {
mirror_float_array((float*)raster->buffer, raster->raster_width, raster->raster_height);
+ } else {
+ if (strncmp(EPR_ENVISAT_PRODUCT_SAR, product_id->id_string, 3) == 0
+ && strncmp(product_id->id_string, "SAR_IMG", 7) != 0
+ && strncmp(product_id->id_string, "SAR_APG", 7) != 0) {
+ mirror_float_array((float*)raster->buffer, raster->raster_width, raster->raster_height);
+ }
}
}
}
@@ -1155,6 +1173,8 @@ EPR_FArrayTransformer select_transform_array_function(EPR_EDataTypeId band_tid,
transform_array_func = transform_array_int_to_float;
else if (band_tid == e_tid_float && raw_tid == e_tid_uint)
transform_array_func = transform_array_uint_to_float;
+ else if (band_tid == e_tid_float && raw_tid == e_tid_float)
+ transform_array_func = transform_array_float_to_float;
else {
return NULL;
}
@@ -1681,6 +1701,18 @@ void transform_array_uint_to_float (void* sourceArray,
}
}
+void transform_array_float_to_float (void* sourceArray,
+ EPR_SBandId* band_id,
+ float* raster_buffer,
+ uint nel) {
+ uint ix;
+ float* sa = (float*) sourceArray;
+
+ for (ix = 0; ix < nel; ix ++) {
+ raster_buffer[ix] = band_id->scaling_offset + band_id->scaling_factor * sa[ix];
+ }
+}
+
void mirror_float_array(float* raster_buffer, uint raster_width, uint raster_height) {
uint w, h, pol_w, offset;
float tmp;
diff --git a/src/epr_band.h b/src/epr_band.h
index 439a643..43d7f09 100644
--- a/src/epr_band.h
+++ b/src/epr_band.h
@@ -147,6 +147,7 @@ void transform_array_short_to_float (void* sourceArray, EPR_SBandId* band_id, fl
void transform_array_ushort_to_float(void* sourceArray, EPR_SBandId* band_id, float* raster_buffer, uint nel);
void transform_array_int_to_float (void* sourceArray, EPR_SBandId* band_id, float* raster_buffer, uint nel);
void transform_array_uint_to_float (void* sourceArray, EPR_SBandId* band_id, float* raster_buffer, uint nel);
+void transform_array_float_to_float (void* sourceArray, EPR_SBandId* band_id, float* raster_buffer, uint nel);
/*@}*/
/**
diff --git a/src/epr_core.c b/src/epr_core.c
index 3c4c2e3..b31d98f 100644
--- a/src/epr_core.c
+++ b/src/epr_core.c
@@ -334,6 +334,7 @@ int epr_str_to_number(const char* str)
if (strcmp(str, "*") == 0) return 1;
if (strcmp(str, "") == 0) return 1;
+ errno = 0;
l = strtol( str, &stopstring, 10 );
if (errno == EDOM)
diff --git a/src/epr_core.h b/src/epr_core.h
index 7351359..c560d34 100644
--- a/src/epr_core.h
+++ b/src/epr_core.h
@@ -37,6 +37,7 @@ typedef struct EPR_Parameter EPR_SParameter;
#define EPR_ENVISAT_PRODUCT_MERIS "MER"
#define EPR_ENVISAT_PRODUCT_ASAR "ASA"
+#define EPR_ENVISAT_PRODUCT_SAR "SAR"
#define EPR_ENVISAT_PRODUCT_AATSR "ATS"
#define EPR_LONGI_BAND_NAME "longitude"
diff --git a/src/epr_dataset.c b/src/epr_dataset.c
index cac23fc..0ae7bfd 100644
--- a/src/epr_dataset.c
+++ b/src/epr_dataset.c
@@ -109,6 +109,7 @@ EPR_SPtrArray* epr_create_dataset_ids(EPR_SProductId* product_id)
const struct DatasetDescriptorTable* p_tables;
int pt_index;
int num_descr;
+ int asar_sw_version;
if (product_id == NULL) {
epr_set_err(e_err_null_pointer,
@@ -116,6 +117,8 @@ EPR_SPtrArray* epr_create_dataset_ids(EPR_SProductId* product_id)
return NULL;
}
+ asar_sw_version = epr_detect_asar_sw_version(product_id);
+
/* @DDDB */
p_tables = dddb_product_tables;
@@ -133,6 +136,14 @@ EPR_SPtrArray* epr_create_dataset_ids(EPR_SProductId* product_id)
strcmp(id, "MER_FR__2P_IODD6") == 0) {
pt_index = i;
}
+ } else if (asar_sw_version >= 602) {
+ if (strcmp(&(id[10]), "_602") == 0) {
+ pt_index = i;
+ }
+ } else if (asar_sw_version < 602) {
+ if (strlen(id) == 10) {
+ pt_index = i;
+ }
} else {
pt_index = i;
}
@@ -294,6 +305,12 @@ EPR_SRecord* epr_read_record(EPR_SDatasetId* dataset_id,
if (record == NULL) {
record = epr_create_record(dataset_id);
+ if (record == NULL) {
+ epr_set_err(e_err_invalid_record_name,
+ "epr_read_record: unable to create a new record");
+
+ return NULL;
+ }
} else if (record->info != dataset_id->record_info) {
epr_set_err(e_err_invalid_record_name,
"epr_read_record: invalid record name");
diff --git a/src/epr_dddb.c b/src/epr_dddb.c
index bcbde0a..9ea9a4c 100644
--- a/src/epr_dddb.c
+++ b/src/epr_dddb.c
@@ -1191,6 +1191,241 @@ static const struct RecordDescriptor ASAR_Main_ADSR_asar_rec_data[] = {
{"spare_14", e_tid_spare, NULL, 64, "1", "Spare"}
};
+static const struct RecordDescriptor ASAR_Main_ADSR_asar_602_rec_data[] = {
+ {"first_zero_doppler_time", e_tid_time, "MJD", 12, "1", "First Zero Doppler Azimuth time of MDS which this data set describes Time of first range line in the MDS described by this data set."},
+ {"attach_flag", e_tid_uchar, "flag", 1, "1", "Attachment Flag (always set to zero for this ADSR)"},
+ {"last_zero_doppler_time", e_tid_time, "MJD", 12, "1", "Last Zero Doppler Azimuth time of MDS which this data set describes Time of last range line in the MDS described by this data set"},
+ {"work_order_id", e_tid_string, "ascii", 12, "1", "Work Order ID (left-justified)"},
+ {"time_diff", e_tid_float, "s", 4, "1", "Time difference between sensing time of first input line and zero Doppler time of first output image line (tdelta). (TBC)May be used during child product extraction from a stripline product (TBC). Left blank (set to zero) for non-stripline products."},
+ {"swath_id", e_tid_string, "ascii", 3, "1", "Swath number IS1, IS2, IS3, IS4, IS5, IS6, or IS7 for IM, WV and AP modes.Set to WSØ for WS and GM modes"},
+ {"range_spacing", e_tid_float, "m", 4, "1", "Range sample spacing"},
+ {"azimuth_spacing", e_tid_float, "m", 4, "1", "Azimuth sample spacing at image center"},
+ {"line_time_interval", e_tid_float, "s", 4, "1", "Azimuth sample spacing in time (Line Time Interval)"},
+ {"num_output_lines", e_tid_uint, "lines", 4, "1", "Number of output range lines in the image described by this ADS"},
+ {"num_samples_per_line", e_tid_uint, "samples", 4, "1", "Number of samples per output range line (includes zero filled samples)"},
+ {"data_type", e_tid_string, "ascii", 5, "1", "Output data type. SWORD, UWORD, or UBYTE"},
+/* {"spare_1", e_tid_spare, NULL, 51, "1", "Spare"}, */
+ {"num_range_lines_per_burst", e_tid_uint, "lines", 4, "1", "Number of output range lines per burst"},
+ {"time_diff_zero_doppler", e_tid_float, NULL, 4, "1", "Time difference between zero Doppler time and acquisition time of output image lines"},
+ {"elapsed_time", e_tid_float, "s", 4, "1", "Elapsed time between the zero Doppler time of first output image line and the preceding ascending node"},
+ {"spare_1", e_tid_spare, NULL, 39, "1", "Spare"},
+/**/
+ {"data_analysis_flag", e_tid_uchar, "flag", 1, "1", "Raw Data Analysis used for Raw Data Correction. 0 = correction done using default parameters. 1 = correction done using raw data analysis results."},
+ {"ant_elev_corr_flag", e_tid_uchar, "flag", 1, "1", "Antenna Elevation Pattern Correction Applied. 0 = no correction applied. 1 = correction applied."},
+ {"chirp_extract_flag", e_tid_uchar, "flag", 1, "1", "Reconstructed Chirp used. 0 = nominal chirp replica used. 1 = reconstructed chirp used."},
+ {"srgr_flag", e_tid_uchar, "flag", 1, "1", "Slant Range to Ground Range Conversion Applied. 0 = no conversion applied. 1 = conversion applied"},
+ {"dop_cen_flag", e_tid_uchar, "flag", 1, "1", "Doppler Centroid Estimation Performed. 0 = no estimation done. 1 = estimation done."},
+ {"dop_amb_flag", e_tid_uchar, "flag", 1, "1", "Doppler Ambiguity Estimation Performed. 0 = no estimate done. 1 = estimate done"},
+ {"range_spread_comp_flag", e_tid_uchar, "flag", 1, "1", "Range-spreading loss compensation Applied. 0 = no compensation applied. 1 = compensation applied."},
+ {"detected_flag", e_tid_uchar, "flag", 1, "1", "Detection Applied. 0 = output product is complex. 1 = output product was detected."},
+ {"look_sum_flag", e_tid_uchar, "flag", 1, "1", "Look Summation Performed. 0 = product is single look. 1 = product is multi-looked."},
+ {"rms_equal_flag", e_tid_uchar, "flag", 1, "1", "RMS Equalization performed. 0= rms equalization not performed during FBAQ decoding. 1 = rms equalization performed during FBAQ decoding."},
+ {"ant_scal_flag", e_tid_uchar, "flag", 1, "1", "Antenna Elevation Gain Scaling Factor Applied. 0= no scaling factor applied. 1 = scaling factor applied."},
+ {"vga_com_echo_flag", e_tid_uchar, "flag", 1, "1", "Receive Gain Droop Compensation Applied to Echo Data. 0 = no compensation applied. 1 = compensation applied."},
+ {"vga_com_pulse_2_flag", e_tid_uchar, "flag", 1, "1", "Receive Gain Droop Compensation Applied Calibration Pulse P2. 0 = no compensation applied. 1 = compensation applied."},
+ {"vga_com_pulse_zero_flag", e_tid_uchar, "flag", 1, "1", "Receive Gain Droop Compensation Applied Calibration Pulse P2 Order Zero: Nominal Time Delay Applied. 0 = no compensation applied. 1 = compensation applied."},
+ {"inv_filt_comp_flag", e_tid_uchar, "flag", 1, "1", "Inverse FIlter used for range compression (GM Mode only). 0 = matched filter used for range compression. 1 = inverse filter used for range compression"},
+/* {"spare_2", e_tid_spare, NULL, 6, "1", "Spare"}, */
+ {"noise_subtraction_flag", e_tid_uchar, "flag", 1, "1", "Noise Subtraction Applied (APP, APG, APM, WSM products only), 0 = noise not subtracted, 1 = noise subtracted"},
+ {"spare_2", e_tid_spare, NULL, 5, "1", "Spare"},
+/**/
+ {"raw_data_analysis.1.num_gaps", e_tid_uint, "gaps", 4, "1", "Number of input data gaps (a gap is defined as a predetermined number of range lines) (record 1)"},
+ {"raw_data_analysis.1.num_missing_lines", e_tid_uint, "lines", 4, "1", "Number of missing lines, excluding data gaps (record 1)"},
+ {"raw_data_analysis.1.range_samp_skip", e_tid_uint, "samples", 4, "1", "Range sample skipping factor for raw data analysis (record 1)"},
+ {"raw_data_analysis.1.range_lines_skip", e_tid_uint, "lines", 4, "1", "Range lines skipping factor for raw data analysis (record 1)"},
+ {"raw_data_analysis.1.calc_i_bias", e_tid_float, NULL, 4, "1", "Calculated I channel bias (record 1)"},
+ {"raw_data_analysis.1.calc_q_bias", e_tid_float, NULL, 4, "1", "Calculated Q channel bias (record 1)"},
+ {"raw_data_analysis.1.calc_i_std_dev", e_tid_float, NULL, 4, "1", "Calculated I channel standard deviation (record 1)"},
+ {"raw_data_analysis.1.calc_q_std_dev", e_tid_float, NULL, 4, "1", "Calculated Q channel standard deviation (record 1)"},
+ {"raw_data_analysis.1.calc_gain", e_tid_float, NULL, 4, "1", "Calculated I/Q gain imbalance (record 1)"},
+ {"raw_data_analysis.1.calc_quad", e_tid_float, NULL, 4, "1", "Calculated I/Q quadrature departure (record 1)"},
+ {"raw_data_analysis.1.i_bias_max", e_tid_float, NULL, 4, "1", "I bias upper bound (record 1)"},
+ {"raw_data_analysis.1.i_bias_min", e_tid_float, NULL, 4, "1", "I bias lower bound (record 1)"},
+ {"raw_data_analysis.1.q_bias_max", e_tid_float, NULL, 4, "1", "Q bias upper bound (record 1)"},
+ {"raw_data_analysis.1.q_bias_min", e_tid_float, NULL, 4, "1", "Q bias lower bound (record 1)"},
+ {"raw_data_analysis.1.gain_min", e_tid_float, NULL, 4, "1", "I/Q gain lower bound (record 1)"},
+ {"raw_data_analysis.1.gain_max", e_tid_float, NULL, 4, "1", "I/Q gain upper bound (record 1)"},
+ {"raw_data_analysis.1.quad_min", e_tid_float, NULL, 4, "1", "I/Q quadrature departure lower bound (record 1)"},
+ {"raw_data_analysis.1.quad_max", e_tid_float, NULL, 4, "1", "I/Q quadrature departure upper bound (record 1)"},
+ {"raw_data_analysis.1.i_bias_flag", e_tid_uchar, "flag", 1, "1", "I bias significance. 0 = I bias falls within acceptable range. 1 = I bias falls outside acceptable range (record 1)"},
+ {"raw_data_analysis.1.q_bias_flag", e_tid_uchar, "flag", 1, "1", "Q bias Significance. 0 = Q bias falls within acceptable range. 1 = Q bias falls outside acceptable range (record 1)"},
+ {"raw_data_analysis.1.gain_flag", e_tid_uchar, "flag", 1, "1", "I/Q Gain Significance. 0 = Gain falls within acceptable range. 1 = Gain falls outside acceptable range (record 1)"},
+ {"raw_data_analysis.1.quad_flag", e_tid_uchar, "flag", 1, "1", "I/Q Quadrature Departure Significance. 0 = Quadrature departure falls within acceptable range. 1 =Quadrature departure falls outside acceptable range (record 1)"},
+ {"raw_data_analysis.1.used_i_bias", e_tid_float, NULL, 4, "1", "I channel bias used for correction (may be different from measured value) (record 1)"},
+ {"raw_data_analysis.1.used_q_bias", e_tid_float, NULL, 4, "1", "Q channel bias used for correction (may be different from measured value) (record 1)"},
+ {"raw_data_analysis.1.used_gain", e_tid_float, NULL, 4, "1", "I/Q gain imbalance used for correction (may be different from measured value) (record 1)"},
+ {"raw_data_analysis.1.used_quad", e_tid_float, NULL, 4, "1", "I/Q quadrature departure used for correction (may be different from measured value) (record 1)"},
+ {"raw_data_analysis.2.num_gaps", e_tid_uint, "gaps", 4, "1", "Number of input data gaps (a gap is defined as a predetermined number of range lines) (record 2)"},
+ {"raw_data_analysis.2.num_missing_lines", e_tid_uint, "lines", 4, "1", "Number of missing lines, excluding data gaps (record 2)"},
+ {"raw_data_analysis.2.range_samp_skip", e_tid_uint, "samples", 4, "1", "Range sample skipping factor for raw data analysis (record 2)"},
+ {"raw_data_analysis.2.range_lines_skip", e_tid_uint, "lines", 4, "1", "Range lines skipping factor for raw data analysis (record 2)"},
+ {"raw_data_analysis.2.calc_i_bias", e_tid_float, NULL, 4, "1", "Calculated I channel bias (record 2)"},
+ {"raw_data_analysis.2.calc_q_bias", e_tid_float, NULL, 4, "1", "Calculated Q channel bias (record 2)"},
+ {"raw_data_analysis.2.calc_i_std_dev", e_tid_float, NULL, 4, "1", "Calculated I channel standard deviation (record 2)"},
+ {"raw_data_analysis.2.calc_q_std_dev", e_tid_float, NULL, 4, "1", "Calculated Q channel standard deviation (record 2)"},
+ {"raw_data_analysis.2.calc_gain", e_tid_float, NULL, 4, "1", "Calculated I/Q gain imbalance (record 2)"},
+ {"raw_data_analysis.2.calc_quad", e_tid_float, NULL, 4, "1", "Calculated I/Q quadrature departure (record 2)"},
+ {"raw_data_analysis.2.i_bias_max", e_tid_float, NULL, 4, "1", "I bias upper bound (record 2)"},
+ {"raw_data_analysis.2.i_bias_min", e_tid_float, NULL, 4, "1", "I bias lower bound (record 2)"},
+ {"raw_data_analysis.2.q_bias_max", e_tid_float, NULL, 4, "1", "Q bias upper bound (record 2)"},
+ {"raw_data_analysis.2.q_bias_min", e_tid_float, NULL, 4, "1", "Q bias lower bound (record 2)"},
+ {"raw_data_analysis.2.gain_min", e_tid_float, NULL, 4, "1", "I/Q gain lower bound (record 2)"},
+ {"raw_data_analysis.2.gain_max", e_tid_float, NULL, 4, "1", "I/Q gain upper bound (record 2)"},
+ {"raw_data_analysis.2.quad_min", e_tid_float, NULL, 4, "1", "I/Q quadrature departure lower bound (record 2)"},
+ {"raw_data_analysis.2.quad_max", e_tid_float, NULL, 4, "1", "I/Q quadrature departure upper bound (record 2)"},
+ {"raw_data_analysis.2.i_bias_flag", e_tid_uchar, "flag", 1, "1", "I bias significance. 0 = I bias falls within acceptable range. 1 = I bias falls outside acceptable range (record 2)"},
+ {"raw_data_analysis.2.q_bias_flag", e_tid_uchar, "flag", 1, "1", "Q bias Significance. 0 = Q bias falls within acceptable range. 1 = Q bias falls outside acceptable range (record 2)"},
+ {"raw_data_analysis.2.gain_flag", e_tid_uchar, "flag", 1, "1", "I/Q Gain Significance. 0 = Gain falls within acceptable range. 1 = Gain falls outside acceptable range (record 2)"},
+ {"raw_data_analysis.2.quad_flag", e_tid_uchar, "flag", 1, "1", "I/Q Quadrature Departure Significance. 0 = Quadrature departure falls within acceptable range. 1 =Quadrature departure falls outside acceptable range (record 2)"},
+ {"raw_data_analysis.2.used_i_bias", e_tid_float, NULL, 4, "1", "I channel bias used for correction (may be different from measured value) (record 2)"},
+ {"raw_data_analysis.2.used_q_bias", e_tid_float, NULL, 4, "1", "Q channel bias used for correction (may be different from measured value) (record 2)"},
+ {"raw_data_analysis.2.used_gain", e_tid_float, NULL, 4, "1", "I/Q gain imbalance used for correction (may be different from measured value) (record 2)"},
+ {"raw_data_analysis.2.used_quad", e_tid_float, NULL, 4, "1", "I/Q quadrature departure used for correction (may be different from measured value) (record 2)"},
+ {"spare_3", e_tid_spare, NULL, 32, "1", "Spare"},
+ {"start_time.1.first_obt", e_tid_uint, NULL, 4, "2", "On-board binary time of first input line processed. LSB accurate to 15.26 us. (Contained in two long integers) (record 1)"},
+ {"start_time.1.first_mjd", e_tid_time, "MJD", 12, "1", "Sensing time (MJD format) of first input line processed converted from satellite binary time (record 1)"},
+ {"start_time.2.first_obt", e_tid_uint, NULL, 4, "2", "On-board binary time of first input line processed. LSB accurate to 15.26 us. (Contained in two long integers) (record 2)"},
+ {"start_time.2.first_mjd", e_tid_time, "MJD", 12, "1", "Sensing time (MJD format) of first input line processed converted from satellite binary time (record 2)"},
+ {"parameter_codes.first_swst_code", e_tid_ushort, "code", 2, "5", "Sampling Window Start time code of first processed line"},
+ {"parameter_codes.last_swst_code", e_tid_ushort, "code", 2, "5", "Sampling Window Start time code of last processed line"},
+ {"parameter_codes.pri_code", e_tid_ushort, "code", 2, "5", "Pulse Repetition Interval code"},
+ {"parameter_codes.tx_pulse_len_code", e_tid_ushort, "code", 2, "5", "Tx pulse length"},
+ {"parameter_codes.tx_bw_code", e_tid_ushort, "code", 2, "5", "Tx pulse bandwidth"},
+ {"parameter_codes.echo_win_len_code", e_tid_ushort, "code", 2, "5", "Echo Window Length"},
+ {"parameter_codes.up_code", e_tid_ushort, "code", 2, "5", "Upconverter Level - Upconverter gain set on the instrument"},
+ {"parameter_codes.down_code", e_tid_ushort, "code", 2, "5", "Downconverter Level - Downconverter gain set on the instrument"},
+ {"parameter_codes.resamp_code", e_tid_ushort, "code", 2, "5", "Resampling factor for echo data"},
+ {"parameter_codes.beam_adj_code", e_tid_ushort, "code", 2, "5", "Beam adjustment delta"},
+ {"parameter_codes.beam_set_num_code", e_tid_ushort, "code", 2, "5", "Antenna Beam Set Number"},
+ {"parameter_codes.tx_monitor_code", e_tid_ushort, "code", 2, "5", "Auxiliary Tx Monitor Level"},
+ {"spare_4", e_tid_spare, NULL, 60, "1", "Spare"},
+ {"error_counters.num_err_swst", e_tid_uint, NULL, 4, "1", "Number of errors detected in Sampling Window start time field."},
+ {"error_counters.num_err_pri", e_tid_uint, NULL, 4, "1", "Number of errors detected in PRI code field"},
+ {"error_counters.num_err_tx_pulse_len", e_tid_uint, NULL, 4, "1", "Number of errors detected in Tx pulse length field"},
+ {"error_counters.num_err_tx_pulse_bw", e_tid_uint, NULL, 4, "1", "Number of errors detected in Tx pulse bandwidth field."},
+ {"error_counters.num_err_echo_win_len", e_tid_uint, NULL, 4, "1", "Number of errors detected in Echo Window Length field."},
+ {"error_counters.num_err_up", e_tid_uint, NULL, 4, "1", "Number of errors detected in Upconverter Level field."},
+ {"error_counters.num_err_down", e_tid_uint, NULL, 4, "1", "Number of errors detected in Downconverter Level field."},
+ {"error_counters.num_err_resamp", e_tid_uint, NULL, 4, "1", "Number of errors detected in Resampling factor for echo data field."},
+ {"error_counters.num_err_beam_adj", e_tid_uint, NULL, 4, "1", "Number of errors detected in Beam adjustment delta field."},
+ {"error_counters.num_err_beam_set_num", e_tid_uint, NULL, 4, "1", "Number of errors detected in Antenna Beam Set Number field."},
+ {"spare_5", e_tid_spare, NULL, 26, "1", "Spare"},
+ {"image_parameters.first_swst_value", e_tid_float, "s", 4, "5", "Sampling Window Start time of first processed line"},
+ {"image_parameters.last_swst_value", e_tid_float, "s", 4, "5", "Sampling Window Start time of last processed line"},
+ {"image_parameters.swst_changes", e_tid_uint, NULL, 4, "5", "Number of Sample Window Start Time changes within a beam"},
+ {"image_parameters.prf_value", e_tid_float, "Hz", 4, "5", "Pulse Repetition Frequency"},
+ {"image_parameters.tx_pulse_len_value", e_tid_float, "s", 4, "5", "Tx pulse length"},
+ {"image_parameters.tx_pulse_bw_value", e_tid_float, "Hz", 4, "5", "Tx pulse bandwidth"},
+ {"image_parameters.echo_win_len_value", e_tid_float, "s", 4, "5", "Echo Window Length"},
+ {"image_parameters.up_value", e_tid_float, "dB", 4, "5", "Upconverter Level - Upconverter gain set on the instrument"},
+ {"image_parameters.down_value", e_tid_float, "dB", 4, "5", "Downconverter Level - Downconverter gain set on the instrument"},
+ {"image_parameters.resamp_value", e_tid_float, NULL, 4, "5", "Resampling factor"},
+ {"image_parameters.beam_adj_value", e_tid_float, "deg.", 4, "5", "Beam adjustment delta"},
+ {"image_parameters.beam_set_value", e_tid_ushort, NULL, 2, "5", "Antenna Beam Set Number"},
+ {"image_parameters.tx_monitor_value", e_tid_float, NULL, 4, "5", "Auxiliary Tx Monitor Level"},
+ {"spare_6", e_tid_spare, NULL, 82, "1", "Spare"},
+ {"first_proc_range_samp", e_tid_uint, "samples", 4, "1", "First processed input range sample, first sample is 1"},
+ {"range_ref", e_tid_float, "m", 4, "1", "Range spreading loss reference range"},
+ {"range_samp_rate", e_tid_float, "Hz", 4, "1", "Range sampling rate"},
+ {"radar_freq", e_tid_float, "Hz", 4, "1", "Radar Frequency"},
+ {"num_looks_range", e_tid_ushort, "looks", 2, "1", "Number of range looks"},
+ {"filter_window", e_tid_string, "ascii", 7, "1", "Matched filter window type:HAMMING or KAISERØ or NONEØØØ"},
+ {"window_coef_range", e_tid_float, NULL, 4, "1", "Window coefficient for range-matched filter"},
+ {"bandwidth.look_bw_range", e_tid_float, "Hz", 4, "5", "Range Look Bandwidth (null to null)"},
+ {"bandwidth.tot_bw_range", e_tid_float, "Hz", 4, "5", "Total processed range bandwidth (null to null)"},
+ {"nominal_chirp.1.nom_chirp_amp", e_tid_float, "-, s-1, s-2, s-3", 4, "4", "4 nominal chirp amplitude coefficients (record 1)"},
+ {"nominal_chirp.1.nom_chirp_phs", e_tid_float, "cycles,Hz,Hz/s,Hz/s2", 4, "4", "4 nominal chirp phase coefficients (record 1)"},
+ {"nominal_chirp.2.nom_chirp_amp", e_tid_float, "-, s-1, s-2, s-3", 4, "4", "4 nominal chirp amplitude coefficients (record 2)"},
+ {"nominal_chirp.2.nom_chirp_phs", e_tid_float, "cycles,Hz,Hz/s,Hz/s2", 4, "4", "4 nominal chirp phase coefficients (record 2)"},
+ {"nominal_chirp.3.nom_chirp_amp", e_tid_float, "-, s-1, s-2, s-3", 4, "4", "4 nominal chirp amplitude coefficients (record 3)"},
+ {"nominal_chirp.3.nom_chirp_phs", e_tid_float, "cycles,Hz,Hz/s,Hz/s2", 4, "4", "4 nominal chirp phase coefficients (record 3)"},
+ {"nominal_chirp.4.nom_chirp_amp", e_tid_float, "-, s-1, s-2, s-3", 4, "4", "4 nominal chirp amplitude coefficients (record 4)"},
+ {"nominal_chirp.4.nom_chirp_phs", e_tid_float, "cycles,Hz,Hz/s,Hz/s2", 4, "4", "4 nominal chirp phase coefficients (record 4)"},
+ {"nominal_chirp.5.nom_chirp_amp", e_tid_float, "-, s-1, s-2, s-3", 4, "4", "4 nominal chirp amplitude coefficients (record 5)"},
+ {"nominal_chirp.5.nom_chirp_phs", e_tid_float, "cycles,Hz,Hz/s,Hz/s2", 4, "4", "4 nominal chirp phase coefficients (record 5)"},
+ {"spare_7", e_tid_spare, NULL, 60, "1", "Spare"},
+ {"num_lines_proc", e_tid_uint, "lines", 4, "1", "Number of input lines processed"},
+ {"num_look_az", e_tid_ushort, "looks", 2, "1", "Number of Azimuth Looks"},
+ {"look_bw_az", e_tid_float, "Hz", 4, "1", "Azimuth Look Bandwidth (null to null) -- this is the nominal value only for GM, WS, and AP."},
+ {"to_bw_az", e_tid_float, "Hz", 4, "1", "Processed Azimuth bandwidth (null to null) -- this field is used only for IM products and WV imagettes. Filled with zeros otherwise."},
+ {"filter_az", e_tid_string, "ascii", 7, "1", "Matched filter window type:HAMMING or KAISERØ or NONEØØØ"},
+ {"filter_coef_az", e_tid_float, NULL, 4, "1", "Window coefficient for azimuth-matched filter"},
+ {"az_fm_rate", e_tid_float, "Hz/sHz/s2Hz/s3", 4, "3", "3 co-efficients for Azimuth FM rate: Azimuth FM rate = C0 + C1(tSR-t0) + C2(tSR - t0)2tSR = 2 way slant range time"},
+ {"ax_fm_origin", e_tid_float, "ns", 4, "1", "2 way slant range time origin (t0) for Azimuth FM rate calculation"},
+ {"dop_amb_conf", e_tid_float, NULL, 4, "1", "Doppler Centroid Ambiguity Confidence Measure. Value between 0 and 1, 0 = poorest confidence, 1= highest confidence"},
+ {"spare_8", e_tid_spare, NULL, 68, "1", "Spare"},
+ {"calibration_factors.1.proc_scaling_fact", e_tid_float, NULL, 4, "1", "Processor scaling factor (factor units are linear when using Range/Doppler algorithm, dB when Specan is used) (record 1)"},
+ {"calibration_factors.1.ext_cal_fact", e_tid_float, NULL, 4, "1", "External Calibration Scaling Factor (mode/swath/polarization dependent) (record 1)"},
+ {"calibration_factors.2.proc_scaling_fact", e_tid_float, NULL, 4, "1", "Processor scaling factor (factor units are linear when using Range/Doppler algorithm, dB when Specan is used) (record 2)"},
+ {"calibration_factors.2.ext_cal_fact", e_tid_float, NULL, 4, "1", "External Calibration Scaling Factor (mode/swath/polarization dependent) (record 2)"},
+ {"noise_estimation.noise_power_corr", e_tid_float, NULL, 4, "5", "Noise power correction factors"},
+ {"noise_estimation.num_noise_lines", e_tid_uint, NULL, 4, "5", "Number of noise lines used to calculate factors"},
+ {"spare_9", e_tid_spare, NULL, 64, "1", "Spare"},
+ {"spare_10", e_tid_spare, NULL, 12, "1", "Spare"},
+ {"output_statistics.1.out_mean", e_tid_float, NULL, 4, "1", "Output data mean. Magnitude for detected products, real sample mean for SLC products (record 1)"},
+ {"output_statistics.1.out_imag_mean", e_tid_float, NULL, 4, "1", "Output imaginary data mean. Used for SLC products only (set to zero otherwise) (record 1)"},
+ {"output_statistics.1.out_std_dev", e_tid_float, NULL, 4, "1", "Output data standard deviation. Magnitude std. dev. for detected products, real sample std. dev. for SLC products (record 1)"},
+ {"output_statistics.1.out_imag_std_dev", e_tid_float, NULL, 4, "1", "Output imaginary data standard deviation. Used for SLC products only (set to zero otherwise) (record 1)"},
+ {"output_statistics.2.out_mean", e_tid_float, NULL, 4, "1", "Output data mean. Magnitude for detected products, real sample mean for SLC products (record 2)"},
+ {"output_statistics.2.out_imag_mean", e_tid_float, NULL, 4, "1", "Output imaginary data mean. Used for SLC products only (set to zero otherwise) (record 2)"},
+ {"output_statistics.2.out_std_dev", e_tid_float, NULL, 4, "1", "Output data standard deviation. Magnitude std. dev. for detected products, real sample std. dev. for SLC products (record 2)"},
+ {"output_statistics.2.out_imag_std_dev", e_tid_float, NULL, 4, "1", "Output imaginary data standard deviation. Used for SLC products only (set to zero otherwise) (record 2)"},
+ {"spare_11", e_tid_spare, NULL, 52, "1", "Spare"},
+ {"echo_comp", e_tid_string, "ascii", 4, "1", "Compression Method used for echo samples. FBAQ, S&MØ, NONE"},
+ {"echo_comp_ratio", e_tid_string, "ascii", 3, "1", "Compression Ratio for echo samples. 8/4, 8/3, 8/2, or 8/8"},
+ {"init_cal_comp", e_tid_string, "ascii", 4, "1", "Compression Method used for initial calibration samples. FBAQ, S&MØ, NONE"},
+ {"init_cal_ratio", e_tid_string, "ascii", 3, "1", "Compression Ratio for initial calibration samples. 8/4, 8/3, 8/2, or 8/8"},
+ {"per_cal_comp", e_tid_string, "ascii", 4, "1", "Compression Method used for periodic calibration samples. FBAQ, S&MØ, NONE"},
+ {"per_cal_ratio", e_tid_string, "ascii", 3, "1", "Compression Ratio for periodic calibration samples. 8/4, 8/3, 8/2, or 8/8"},
+ {"noise_comp", e_tid_string, "ascii", 4, "1", "Compression Method used for noise samples. FBAQ, S&MØ, NONE"},
+ {"noise_comp_ratio", e_tid_string, "ascii", 3, "1", "Compression Ratio for noise samples. 8/4, 8/3, 8/2, or 8/8"},
+ {"spare_12", e_tid_spare, NULL, 64, "1", "Spare"},
+ {"beam_merge_sl_range", e_tid_uint, NULL, 4, "4", "Number of slant range samples in beam merging, one value per mergae rregion (1-2, 2-3, 3-4, 4-5)"},
+ {"beam_merge_alg_param", e_tid_float, NULL, 4, "4", "Beam merge algorithm parameter used for beam merging, one value per merge region (1-2, 2-3, 3-4. 4-5)"},
+ {"lines_per_burst", e_tid_uint, "lines", 4, "5", "Number of lines per burst for this image. 5 values for beams SS1 to SS5 in WS and GM modes. Two values for AP mode, all others set to zero."},
+ {"spare_13", e_tid_spare, NULL, 28, "1", "Spare"},
+ {"orbit_state_vectors.1.state_vect_time_1", e_tid_time, "MJD", 12, "1", "Time of state vector (record 1)"},
+ {"orbit_state_vectors.1.x_pos_1", e_tid_int, "10 -2m", 4, "1", "X position in Earth fixed reference frame (record 1)"},
+ {"orbit_state_vectors.1.y_pos_1", e_tid_int, "10 -2m", 4, "1", "Y position in Earth fixed reference frame (record 1)"},
+ {"orbit_state_vectors.1.z_pos_1", e_tid_int, "10 -2m", 4, "1", "Z position in Earth fixed reference frame (record 1)"},
+ {"orbit_state_vectors.1.x_vel_1", e_tid_int, "10 -5m/s", 4, "1", "X velocity relative to Earth fixed reference frame (record 1)"},
+ {"orbit_state_vectors.1.y_vel_1", e_tid_int, "10 -5m/s", 4, "1", "Y velocity relative to Earth fixed reference frame (record 1)"},
+ {"orbit_state_vectors.1.z_vel_1", e_tid_int, "10 -5m/s", 4, "1", "Z velocity relative to Earth fixed reference frame (record 1)"},
+ {"orbit_state_vectors.2.state_vect_time_1", e_tid_time, "MJD", 12, "1", "Time of state vector (record 2)"},
+ {"orbit_state_vectors.2.x_pos_1", e_tid_int, "10 -2m", 4, "1", "X position in Earth fixed reference frame (record 2)"},
+ {"orbit_state_vectors.2.y_pos_1", e_tid_int, "10 -2m", 4, "1", "Y position in Earth fixed reference frame (record 2)"},
+ {"orbit_state_vectors.2.z_pos_1", e_tid_int, "10 -2m", 4, "1", "Z position in Earth fixed reference frame (record 2)"},
+ {"orbit_state_vectors.2.x_vel_1", e_tid_int, "10 -5m/s", 4, "1", "X velocity relative to Earth fixed reference frame (record 2)"},
+ {"orbit_state_vectors.2.y_vel_1", e_tid_int, "10 -5m/s", 4, "1", "Y velocity relative to Earth fixed reference frame (record 2)"},
+ {"orbit_state_vectors.2.z_vel_1", e_tid_int, "10 -5m/s", 4, "1", "Z velocity relative to Earth fixed reference frame (record 2)"},
+ {"orbit_state_vectors.3.state_vect_time_1", e_tid_time, "MJD", 12, "1", "Time of state vector (record 3)"},
+ {"orbit_state_vectors.3.x_pos_1", e_tid_int, "10 -2m", 4, "1", "X position in Earth fixed reference frame (record 3)"},
+ {"orbit_state_vectors.3.y_pos_1", e_tid_int, "10 -2m", 4, "1", "Y position in Earth fixed reference frame (record 3)"},
+ {"orbit_state_vectors.3.z_pos_1", e_tid_int, "10 -2m", 4, "1", "Z position in Earth fixed reference frame (record 3)"},
+ {"orbit_state_vectors.3.x_vel_1", e_tid_int, "10 -5m/s", 4, "1", "X velocity relative to Earth fixed reference frame (record 3)"},
+ {"orbit_state_vectors.3.y_vel_1", e_tid_int, "10 -5m/s", 4, "1", "Y velocity relative to Earth fixed reference frame (record 3)"},
+ {"orbit_state_vectors.3.z_vel_1", e_tid_int, "10 -5m/s", 4, "1", "Z velocity relative to Earth fixed reference frame (record 3)"},
+ {"orbit_state_vectors.4.state_vect_time_1", e_tid_time, "MJD", 12, "1", "Time of state vector (record 4)"},
+ {"orbit_state_vectors.4.x_pos_1", e_tid_int, "10 -2m", 4, "1", "X position in Earth fixed reference frame (record 4)"},
+ {"orbit_state_vectors.4.y_pos_1", e_tid_int, "10 -2m", 4, "1", "Y position in Earth fixed reference frame (record 4)"},
+ {"orbit_state_vectors.4.z_pos_1", e_tid_int, "10 -2m", 4, "1", "Z position in Earth fixed reference frame (record 4)"},
+ {"orbit_state_vectors.4.x_vel_1", e_tid_int, "10 -5m/s", 4, "1", "X velocity relative to Earth fixed reference frame (record 4)"},
+ {"orbit_state_vectors.4.y_vel_1", e_tid_int, "10 -5m/s", 4, "1", "Y velocity relative to Earth fixed reference frame (record 4)"},
+ {"orbit_state_vectors.4.z_vel_1", e_tid_int, "10 -5m/s", 4, "1", "Z velocity relative to Earth fixed reference frame (record 4)"},
+ {"orbit_state_vectors.5.state_vect_time_1", e_tid_time, "MJD", 12, "1", "Time of state vector (record 5)"},
+ {"orbit_state_vectors.5.x_pos_1", e_tid_int, "10 -2m", 4, "1", "X position in Earth fixed reference frame (record 5)"},
+ {"orbit_state_vectors.5.y_pos_1", e_tid_int, "10 -2m", 4, "1", "Y position in Earth fixed reference frame (record 5)"},
+ {"orbit_state_vectors.5.z_pos_1", e_tid_int, "10 -2m", 4, "1", "Z position in Earth fixed reference frame (record 5)"},
+ {"orbit_state_vectors.5.x_vel_1", e_tid_int, "10 -5m/s", 4, "1", "X velocity relative to Earth fixed reference frame (record 5)"},
+ {"orbit_state_vectors.5.y_vel_1", e_tid_int, "10 -5m/s", 4, "1", "Y velocity relative to Earth fixed reference frame (record 5)"},
+ {"orbit_state_vectors.5.z_vel_1", e_tid_int, "10 -5m/s", 4, "1", "Z velocity relative to Earth fixed reference frame (record 5)"},
+ {"spare_14", e_tid_spare, NULL, 64, "1", "Spare"},
+/**/
+ {"cal_vec_ref_look_angle", e_tid_float, "degrees", 4, "5", "Calibration Vector Reference Look Angle (per swath)"},
+ {"sigma_cal_vec", e_tid_float, NULL, 4, "1005", "Sigma Calibration Vector"},
+ {"gamma_cal_vec", e_tid_float, NULL, 4, "1005", "Gamma Calibration Vector"},
+};
+
static const struct RecordDescriptor ASAR_Map_GADS_asar_rec_data[] = {
{"map_descriptor", e_tid_string, "ascii", 32, "1", "Map projection descriptorone of:UNIVERSAL_TRANSVERSE_MERCATORØØØUNIVERSAL_POLAR_STEREOGRAPHICØØØLAMBERT_CONFORMAL_CONICØØØØØØØØØTRANSVERSE_MERCATORØØØØØØØØØØØØØMERCATORØØØØØØØØØØØØØØØØØØØØØØØØPOLAR_STEREOGRAPHICØØØØØØØØØØØØØ"},
{"samples", e_tid_uint, NULL, 4, "1", "Number of samples per line"},
@@ -1888,6 +2123,50 @@ static const struct RecordDescriptor ASA_CON_AX_GADS_asar_rec_data[] = {
{"spare_3", e_tid_spare, NULL, 504, "1", "Spare"}
};
+static const struct RecordDescriptor ASA_CON_AX_GADS_asar_602_rec_data[] = {
+ {"dsr_time", e_tid_time, "MJD", 12, "1", "Time of creation"},
+ {"dsr_length", e_tid_uint, "bytes", 4, "1", "Length of this DSR in bytes"},
+ {"thresh_chirp_broadening", e_tid_float, "%", 4, "1", "Threshold for setting the chirp quality flag. Maximum percentage broadening permitted in cross-correlation pulse width compared to theoretical width."},
+ {"thresh_chirp_sidelobe", e_tid_float, "dB", 4, "1", "Threshold for setting the chirp quality flag - First sidelobe of the chirp cross correlation function"},
+ {"thresh_chirp_islr", e_tid_float, "dB", 4, "1", "Threshold for setting the chirp quality flag - ISLR of the chirp cross correlation function"},
+ {"thresh_input_mean", e_tid_float, NULL, 4, "1", "Threshold for setting the mean of input data quality flag - For an expected mean value of x, this is the value T, such that the measured mean must fall between the x-T and x+T. Used for both I and Q channels."},
+ {"thresh_input_std_dev", e_tid_float, NULL, 4, "1", "Threshold for setting the standard deviation of input data quality flag - For an expected std. dev. value of y, this is the value D, such that the measured std. dev. must fall between the y-D and y+D. Used for both I and Q channels."},
+ {"thresh_dop_cen", e_tid_float, NULL, 4, "1", "Threshold for setting the Doppler Centroid quality flag - Threshold for Doppler Centroid confidence"},
+ {"thresh_dop_amb", e_tid_float, NULL, 4, "1", "Threshold for setting the Doppler Centroid ambiguity quality flag - Threshold for setting the Doppler Centroid ambiguity confidence flag"},
+ {"thresh_output_mean", e_tid_float, NULL, 4, "1", "Threshold for setting the mean of output data quality flag - For an expected mean value of x, this is the value T, such that the measured mean must fall between the x-T and x+T."},
+ {"thresh_output_std_dev", e_tid_float, NULL, 4, "1", "Threshold for setting the standard deviation of output data quality flag - For an expected std. dev. value of y, this is the value D, such that the measured std. dev. must fall between the y-D and y+D."},
+ {"thresh_missing_lines", e_tid_float, NULL, 4, "1", "Threshold for setting the missing lines quality flag - maximum percentage of missing lines to total lines."},
+ {"thresh_gaps", e_tid_float, NULL, 4, "1", "Threshold for setting the missing gaps quality flag - maximum number of gaps allowed."},
+ {"spare_1", e_tid_spare, NULL, 64, "1", "Spare"},
+ {"lines_per_gap", e_tid_uint, "lines", 4, "1", "Number of missing lines which constitute a gap"},
+ {"exp_im_mean", e_tid_float, NULL, 4, "1", "Expected mean of I and Q samples for IM (and WV) SLC images"},
+ {"exp_im_std_dev", e_tid_float, NULL, 4, "1", "Expected standard deviation of I and Q samples for IM (and WV) SLC images"},
+ {"exp_ap_mean", e_tid_float, NULL, 4, "1", "Expected mean of I and Q samples for AP SLC images"},
+ {"exp_ap_std_dev", e_tid_float, NULL, 4, "1", "Expected standard deviation of I and Q samples for AP SLC images"},
+ {"exp_imp_mean", e_tid_float, NULL, 4, "1", "Expected mean of IM PRI samples"},
+ {"exp_imp_std_dev", e_tid_float, NULL, 4, "1", "Expected standard deviation of IM PRI samples"},
+ {"exp_app_mean", e_tid_float, NULL, 4, "1", "Expected mean of AP PRI samples"},
+ {"exp_app_std_dev", e_tid_float, NULL, 4, "1", "Expected standard deviation of AP PRI samples"},
+ {"exp_imm_mean", e_tid_float, NULL, 4, "1", "Expected mean of IMM samples"},
+ {"exp_imm_std_dev", e_tid_float, NULL, 4, "1", "Expected standard deviation of IMM samples"},
+ {"exp_apm_mean", e_tid_float, NULL, 4, "1", "Expected mean of APM samples"},
+ {"exp_apm_std_dev", e_tid_float, NULL, 4, "1", "Expected standard deviation of APM samples"},
+ {"exp_wsm_mean", e_tid_float, NULL, 4, "1", "Expected mean of WSM samples"},
+ {"exp_wsm_std_dev", e_tid_float, NULL, 4, "1", "Expected standard deviation of WSM samples"},
+ {"exp_gm1_mean", e_tid_float, NULL, 4, "1", "Expected mean of GM1 samples"},
+ {"exp_gm1_std_dev", e_tid_float, NULL, 4, "1", "Expected standard deviation of GM1 samples"},
+ {"input_mean", e_tid_float, NULL, 4, "1", "Expected input mean"},
+ {"expected_input_std_dev", e_tid_float, NULL, 4, "1", "Expected input standard deviation"},
+ {"look_conf_thresh", e_tid_float, NULL, 4, "2", "Look image statistics confidence parameter thresholds (minimum and maximum)"},
+ {"inter_look_conf_thresh", e_tid_float, NULL, 4, "1", "Inter-look confidence statistics confidence parameter threshold"},
+ {"az_cutoff_thresh", e_tid_float, NULL, 4, "1", "Azimuth cut-off convergence measure threshold"},
+ {"az_cutoff_iterations_thresh", e_tid_float, NULL, 4, "1", "Azimuth cut-off Iteration count overflow threshold"},
+ {"phs_peak_thresh", e_tid_float, NULL, 4, "1", "Phase information confidence measure threshold for the spectral peak"},
+ {"phs_cross_thresh", e_tid_float, "m", 4, "1", "Phase information confidence measure threshold for the cross covariance peak offset"},
+ {"spare_2", e_tid_spare, NULL, 64, "1", "Spare"},
+ {"spare_3", e_tid_spare, NULL, 612, "1", "Spare"}
+};
+
static const struct RecordDescriptor ASA_INS_AX_GADS_asar_rec_data[] = {
{"dsr_time", e_tid_time, "MJD", 12, "1", "Time of creation"},
{"dsr_length", e_tid_uint, "bytes", 4, "1", "Length of this DSR in bytes"},
@@ -2668,6 +2947,20 @@ static const struct DatasetDescriptor ASA_APG_1P_dataset_data[] = {
{"MDS2", "MDS2", ASAR_Image_MDSR_Gen_asar_rec_data, "Measurement Data Set 2"}
};
+static const struct DatasetDescriptor ASA_APG_1P_602_dataset_data[] = {
+ {"MDS1_SQ_ADS", "MDS1 SQ ADS", ASAR_SQ1_Image_ADSR_asar_rec_data, "SQ ADSRs"},
+ {"MDS2_SQ_ADS", "MDS2 SQ ADS", ASAR_SQ1_Image_ADSR_asar_rec_data, "SQ ADSRs"},
+ {"MAIN_PROCESSING_PARAMS_ADS", "MAIN PROCESSING PARAMS ADS", ASAR_Main_ADSR_asar_602_rec_data, "Main Processing parameters"},
+ {"DOP_CENTROID_COEFFS_ADS", "DOP CENTROID COEFFS ADS", ASAR_Dop_Cen_ADSR_asar_rec_data, "Doppler Centroid Parameters"},
+ {"SR_GR_ADS", "SR GR ADS", ASAR_SRGR_ADSR_asar_rec_data, "Slant Range to Ground Range conversion parameters"},
+ {"CHIRP_PARAMS_ADS", "CHIRP PARAMS ADS", ASAR_Chirp_ADSR_asar_rec_data, "chirp parameters"},
+ {"ANTENNA_ELEV_PATTERN_ADS", "ANTENNA ELEV PATTERN ADS", ASAR_Antenna_ADSR_asar_rec_data, "Antenna Elevation patterns(s)"},
+ {"GEOLOCATION_GRID_ADS", "GEOLOCATION GRID ADS", ASAR_Geo_Grid_ADSR_asar_rec_data, "Geolocation Grid ADSRs"},
+ {"MAP_PROJECTION_GADS", "MAP PROJECTION GADS", ASAR_Map_GADS_asar_rec_data, "Map Projection parameters"},
+ {"MDS1", "MDS1", ASAR_Image_MDSR_Gen_asar_rec_data, "Measurement Data Set 1"},
+ {"MDS2", "MDS2", ASAR_Image_MDSR_Gen_asar_rec_data, "Measurement Data Set 2"}
+};
+
static const struct DatasetDescriptor ASA_APM_1P_dataset_data[] = {
{"MDS1_SQ_ADS", "MDS1 SQ ADS", ASAR_SQ1_Image_ADSR_asar_rec_data, "SQ ADSRs"},
{"MDS2_SQ_ADS", "MDS2 SQ ADS", ASAR_SQ1_Image_ADSR_asar_rec_data, "SQ ADSRs"},
@@ -2681,6 +2974,19 @@ static const struct DatasetDescriptor ASA_APM_1P_dataset_data[] = {
{"MDS2", "MDS2", ASAR_Image_MDSR_Gen_asar_rec_data, "Measurement Data Set 2 (if requested)"}
};
+static const struct DatasetDescriptor ASA_APM_1P_602_dataset_data[] = {
+ {"MDS1_SQ_ADS", "MDS1 SQ ADS", ASAR_SQ1_Image_ADSR_asar_rec_data, "SQ ADSRs"},
+ {"MDS2_SQ_ADS", "MDS2 SQ ADS", ASAR_SQ1_Image_ADSR_asar_rec_data, "SQ ADSRs"},
+ {"MAIN_PROCESSING_PARAMS_ADS", "MAIN PROCESSING PARAMS ADS", ASAR_Main_ADSR_asar_602_rec_data, "Main Processing parameters"},
+ {"DOP_CENTROID_COEFFS_ADS", "DOP CENTROID COEFFS ADS", ASAR_Dop_Cen_ADSR_asar_rec_data, "Doppler Centroid Parameters"},
+ {"SR_GR_ADS", "SR GR ADS", ASAR_SRGR_ADSR_asar_rec_data, "Slant Range to Ground Range conversion parameters"},
+ {"CHIRP_PARAMS_ADS", "CHIRP PARAMS ADS", ASAR_Chirp_ADSR_asar_rec_data, "chirp parameters"},
+ {"ANTENNA_ELEV_PATTERN_ADS", "ANTENNA ELEV PATTERN ADS", ASAR_Antenna_ADSR_asar_rec_data, "Antenna Elevation patterns(s)"},
+ {"GEOLOCATION_GRID_ADS", "GEOLOCATION GRID ADS", ASAR_Geo_Grid_ADSR_asar_rec_data, "Geolocation Grid ADSRs"},
+ {"MDS1", "MDS1", ASAR_Image_MDSR_Gen_asar_rec_data, "Measurement Data Set 1"},
+ {"MDS2", "MDS2", ASAR_Image_MDSR_Gen_asar_rec_data, "Measurement Data Set 2 (if requested)"}
+};
+
static const struct DatasetDescriptor ASA_APP_1P_dataset_data[] = {
{"MDS1_SQ_ADS", "MDS1 SQ ADS", ASAR_SQ1_Image_ADSR_asar_rec_data, "SQ ADSRs"},
{"MDS2_SQ_ADS", "MDS2 SQ ADS", ASAR_SQ1_Image_ADSR_asar_rec_data, "SQ ADSRs"},
@@ -2694,6 +3000,19 @@ static const struct DatasetDescriptor ASA_APP_1P_dataset_data[] = {
{"MDS2", "MDS2", ASAR_Image_MDSR_Gen_asar_rec_data, "Measurement Data Set 2"}
};
+static const struct DatasetDescriptor ASA_APP_1P_602_dataset_data[] = {
+ {"MDS1_SQ_ADS", "MDS1 SQ ADS", ASAR_SQ1_Image_ADSR_asar_rec_data, "SQ ADSRs"},
+ {"MDS2_SQ_ADS", "MDS2 SQ ADS", ASAR_SQ1_Image_ADSR_asar_rec_data, "SQ ADSRs"},
+ {"MAIN_PROCESSING_PARAMS_ADS", "MAIN PROCESSING PARAMS ADS", ASAR_Main_ADSR_asar_602_rec_data, "Main Processing parameters"},
+ {"DOP_CENTROID_COEFFS_ADS", "DOP CENTROID COEFFS ADS", ASAR_Dop_Cen_ADSR_asar_rec_data, "Doppler Centroid Parameters"},
+ {"SR_GR_ADS", "SR GR ADS", ASAR_SRGR_ADSR_asar_rec_data, "Slant Range to Ground Range conversion parameters"},
+ {"CHIRP_PARAMS_ADS", "CHIRP PARAMS ADS", ASAR_Chirp_ADSR_asar_rec_data, "chirp parameters"},
+ {"ANTENNA_ELEV_PATTERN_ADS", "ANTENNA ELEV PATTERN ADS", ASAR_Antenna_ADSR_asar_rec_data, "Antenna Elevation patterns(s)"},
+ {"GEOLOCATION_GRID_ADS", "GEOLOCATION GRID ADS", ASAR_Geo_Grid_ADSR_asar_rec_data, "Geolocation Grid ADSRs"},
+ {"MDS1", "MDS1", ASAR_Image_MDSR_Gen_asar_rec_data, "Measurement Data Set 1"},
+ {"MDS2", "MDS2", ASAR_Image_MDSR_Gen_asar_rec_data, "Measurement Data Set 2"}
+};
+
static const struct DatasetDescriptor ASA_APS_1P_dataset_data[] = {
{"MDS1_SQ_ADS", "MDS1 SQ ADS", ASAR_SQ1_Image_ADSR_asar_rec_data, "SQ ADSRs"},
{"MDS2_SQ_ADS", "MDS2 SQ ADS", ASAR_SQ1_Image_ADSR_asar_rec_data, "SQ ADSRs"},
@@ -2705,6 +3024,17 @@ static const struct DatasetDescriptor ASA_APS_1P_dataset_data[] = {
{"MDS2", "MDS2", ASAR_Image_MDSR_SLC_asar_rec_data, "Measurement Data Set 2"}
};
+static const struct DatasetDescriptor ASA_APS_1P_602_dataset_data[] = {
+ {"MDS1_SQ_ADS", "MDS1 SQ ADS", ASAR_SQ1_Image_ADSR_asar_rec_data, "SQ ADSRs"},
+ {"MDS2_SQ_ADS", "MDS2 SQ ADS", ASAR_SQ1_Image_ADSR_asar_rec_data, "SQ ADSRs"},
+ {"MAIN_PROCESSING_PARAMS_ADS", "MAIN PROCESSING PARAMS ADS", ASAR_Main_ADSR_asar_602_rec_data, "Main Processing parameters"},
+ {"DOP_CENTROID_COEFFS_ADS", "DOP CENTROID COEFFS ADS", ASAR_Dop_Cen_ADSR_asar_rec_data, "Doppler Centroid Parameters"},
+ {"CHIRP_PARAMS_ADS", "CHIRP PARAMS ADS", ASAR_Chirp_ADSR_asar_rec_data, "chirp parameters"},
+ {"GEOLOCATION_GRID_ADS", "GEOLOCATION GRID ADS", ASAR_Geo_Grid_ADSR_asar_rec_data, "Geolocation Grid ADSRs"},
+ {"MDS1", "MDS1", ASAR_Image_MDSR_SLC_asar_rec_data, "Measurement Data Set 1"},
+ {"MDS2", "MDS2", ASAR_Image_MDSR_SLC_asar_rec_data, "Measurement Data Set 2"}
+};
+
static const struct DatasetDescriptor ASA_AP__BP_dataset_data[] = {
{"MDS1_SQ_ADS", "MDS1 SQ ADS", ASAR_SQ1_Image_ADSR_asar_rec_data, "SQ ADSRs"},
{"MDS2_SQ_ADS", "MDS2 SQ ADS", ASAR_SQ1_Image_ADSR_asar_rec_data, "SQ ADSRs"},
@@ -2724,6 +3054,17 @@ static const struct DatasetDescriptor ASA_GM1_1P_dataset_data[] = {
{"MDS1", "MDS1", ASAR_Image_MDSR_Gen_asar_rec_data, "Measurement Data Set 1"}
};
+static const struct DatasetDescriptor ASA_GM1_1P_602_dataset_data[] = {
+ {"MDS1_SQ_ADS", "MDS1 SQ ADS", ASAR_SQ1_Image_ADSR_asar_rec_data, "SQ ADSRs"},
+ {"MAIN_PROCESSING_PARAMS_ADS", "MAIN PROCESSING PARAMS ADS", ASAR_Main_ADSR_asar_602_rec_data, "Main Processing parameters"},
+ {"DOP_CENTROID_COEFFS_ADS", "DOP CENTROID COEFFS ADS", ASAR_Dop_Cen_ADSR_asar_rec_data, "Doppler Centroid Parameters"},
+ {"SR_GR_ADS", "SR GR ADS", ASAR_SRGR_ADSR_asar_rec_data, "Slant Range to Ground Range conversion parameters"},
+ {"CHIRP_PARAMS_ADS", "CHIRP PARAMS ADS", ASAR_Chirp_ADSR_asar_rec_data, "chirp parameters"},
+ {"ANTENNA_ELEV_PATTERN_ADS", "ANTENNA ELEV PATTERN ADS", ASAR_Antenna_ADSR_asar_rec_data, "Antenna Elevation patterns(s)"},
+ {"GEOLOCATION_GRID_ADS", "GEOLOCATION GRID ADS", ASAR_Geo_Grid_ADSR_asar_rec_data, "Geolocation Grid ADSRs"},
+ {"MDS1", "MDS1", ASAR_Image_MDSR_Gen_asar_rec_data, "Measurement Data Set 1"}
+};
+
static const struct DatasetDescriptor ASA_IMG_1P_dataset_data[] = {
{"MDS1_SQ_ADS", "MDS1 SQ ADS", ASAR_SQ1_Image_ADSR_asar_rec_data, "SQ ADSRs"},
{"MAIN_PROCESSING_PARAMS_ADS", "MAIN PROCESSING PARAMS ADS", ASAR_Main_ADSR_asar_rec_data, "Main Processing parameters"},
@@ -2736,6 +3077,18 @@ static const struct DatasetDescriptor ASA_IMG_1P_dataset_data[] = {
{"MDS1", "MDS1", ASAR_Image_MDSR_Gen_asar_rec_data, "Measurement Data Set 1"}
};
+static const struct DatasetDescriptor ASA_IMG_1P_602_dataset_data[] = {
+ {"MDS1_SQ_ADS", "MDS1 SQ ADS", ASAR_SQ1_Image_ADSR_asar_rec_data, "SQ ADSRs"},
+ {"MAIN_PROCESSING_PARAMS_ADS", "MAIN PROCESSING PARAMS ADS", ASAR_Main_ADSR_asar_602_rec_data, "Main Processing parameters"},
+ {"DOP_CENTROID_COEFFS_ADS", "DOP CENTROID COEFFS ADS", ASAR_Dop_Cen_ADSR_asar_rec_data, "Doppler Centroid Parameters"},
+ {"SR_GR_ADS", "SR GR ADS", ASAR_SRGR_ADSR_asar_rec_data, "Slant Range to Ground Range conversion parameters"},
+ {"CHIRP_PARAMS_ADS", "CHIRP PARAMS ADS", ASAR_Chirp_ADSR_asar_rec_data, "chirp parameters"},
+ {"ANTENNA_ELEV_PATTERN_ADS", "ANTENNA ELEV PATTERN ADS", ASAR_Antenna_ADSR_asar_rec_data, "Antenna Elevation patterns(s)"},
+ {"GEOLOCATION_GRID_ADS", "GEOLOCATION GRID ADS", ASAR_Geo_Grid_ADSR_asar_rec_data, "Geolocation Grid ADSRs"},
+ {"MAP_PROJECTION_GADS", "MAP PROJECTION GADS", ASAR_Map_GADS_asar_rec_data, "Map Projection parameters"},
+ {"MDS1", "MDS1", ASAR_Image_MDSR_Gen_asar_rec_data, "Measurement Data Set 1"}
+};
+
static const struct DatasetDescriptor ASA_IMM_1P_dataset_data[] = {
{"MDS1_SQ_ADS", "MDS1 SQ ADS", ASAR_SQ1_Image_ADSR_asar_rec_data, "SQ ADSRs"},
{"MAIN_PROCESSING_PARAMS_ADS", "MAIN PROCESSING PARAMS ADS", ASAR_Main_ADSR_asar_rec_data, "Main Processing parameters"},
@@ -2747,6 +3100,17 @@ static const struct DatasetDescriptor ASA_IMM_1P_dataset_data[] = {
{"MDS1", "MDS1", ASAR_Image_MDSR_Gen_asar_rec_data, "Measurement Data Set 1"}
};
+static const struct DatasetDescriptor ASA_IMM_1P_602_dataset_data[] = {
+ {"MDS1_SQ_ADS", "MDS1 SQ ADS", ASAR_SQ1_Image_ADSR_asar_rec_data, "SQ ADSRs"},
+ {"MAIN_PROCESSING_PARAMS_ADS", "MAIN PROCESSING PARAMS ADS", ASAR_Main_ADSR_asar_602_rec_data, "Main Processing parameters"},
+ {"DOP_CENTROID_COEFFS_ADS", "DOP CENTROID COEFFS ADS", ASAR_Dop_Cen_ADSR_asar_rec_data, "Doppler Centroid Parameters"},
+ {"SR_GR_ADS", "SR GR ADS", ASAR_SRGR_ADSR_asar_rec_data, "Slant Range to Ground Range conversion parameters"},
+ {"CHIRP_PARAMS_ADS", "CHIRP PARAMS ADS", ASAR_Chirp_ADSR_asar_rec_data, "chirp parameters"},
+ {"ANTENNA_ELEV_PATTERN_ADS", "ANTENNA ELEV PATTERN ADS", ASAR_Antenna_ADSR_asar_rec_data, "Antenna Elevation patterns(s)"},
+ {"GEOLOCATION_GRID_ADS", "GEOLOCATION GRID ADS", ASAR_Geo_Grid_ADSR_asar_rec_data, "Geolocation Grid ADSRs"},
+ {"MDS1", "MDS1", ASAR_Image_MDSR_Gen_asar_rec_data, "Measurement Data Set 1"}
+};
+
static const struct DatasetDescriptor ASA_IMP_1P_dataset_data[] = {
{"MDS1_SQ_ADS", "MDS1 SQ ADS", ASAR_SQ1_Image_ADSR_asar_rec_data, "SQ ADSRs"},
{"MAIN_PROCESSING_PARAMS_ADS", "MAIN PROCESSING PARAMS ADS", ASAR_Main_ADSR_asar_rec_data, "Main Processing parameters"},
@@ -2758,6 +3122,17 @@ static const struct DatasetDescriptor ASA_IMP_1P_dataset_data[] = {
{"MDS1", "MDS1", ASAR_Image_MDSR_Gen_asar_rec_data, "Measurement Data Set 1"}
};
+static const struct DatasetDescriptor ASA_IMP_1P_602_dataset_data[] = {
+ {"MDS1_SQ_ADS", "MDS1 SQ ADS", ASAR_SQ1_Image_ADSR_asar_rec_data, "SQ ADSRs"},
+ {"MAIN_PROCESSING_PARAMS_ADS", "MAIN PROCESSING PARAMS ADS", ASAR_Main_ADSR_asar_602_rec_data, "Main Processing parameters"},
+ {"DOP_CENTROID_COEFFS_ADS", "DOP CENTROID COEFFS ADS", ASAR_Dop_Cen_ADSR_asar_rec_data, "Doppler Centroid Parameters"},
+ {"SR_GR_ADS", "SR GR ADS", ASAR_SRGR_ADSR_asar_rec_data, "Slant Range to Ground Range conversion parameters"},
+ {"CHIRP_PARAMS_ADS", "CHIRP PARAMS ADS", ASAR_Chirp_ADSR_asar_rec_data, "chirp parameters"},
+ {"ANTENNA_ELEV_PATTERN_ADS", "ANTENNA ELEV PATTERN ADS", ASAR_Antenna_ADSR_asar_rec_data, "Antenna Elevation patterns(s)"},
+ {"GEOLOCATION_GRID_ADS", "GEOLOCATION GRID ADS", ASAR_Geo_Grid_ADSR_asar_rec_data, "Geolocation Grid ADSRs"},
+ {"MDS1", "MDS1", ASAR_Image_MDSR_Gen_asar_rec_data, "Measurement Data Set 1"}
+};
+
static const struct DatasetDescriptor ASA_IMS_1P_dataset_data[] = {
{"MDS1_SQ_ADS", "MDS1 SQ ADS", ASAR_SQ1_Image_ADSR_asar_rec_data, "SQ ADSRs"},
{"MAIN_PROCESSING_PARAMS_ADS", "MAIN PROCESSING PARAMS ADS", ASAR_Main_ADSR_asar_rec_data, "Main Processing parameters"},
@@ -2767,6 +3142,15 @@ static const struct DatasetDescriptor ASA_IMS_1P_dataset_data[] = {
{"MDS1", "MDS1", ASAR_Image_MDSR_SLC_asar_rec_data, "Measurement Data Set 1"}
};
+static const struct DatasetDescriptor ASA_IMS_1P_602_dataset_data[] = {
+ {"MDS1_SQ_ADS", "MDS1 SQ ADS", ASAR_SQ1_Image_ADSR_asar_rec_data, "SQ ADSRs"},
+ {"MAIN_PROCESSING_PARAMS_ADS", "MAIN PROCESSING PARAMS ADS", ASAR_Main_ADSR_asar_602_rec_data, "Main Processing parameters"},
+ {"DOP_CENTROID_COEFFS_ADS", "DOP CENTROID COEFFS ADS", ASAR_Dop_Cen_ADSR_asar_rec_data, "Doppler Centroid Parameters"},
+ {"CHIRP_PARAMS_ADS", "CHIRP PARAMS ADS", ASAR_Chirp_ADSR_asar_rec_data, "chirp parameters"},
+ {"GEOLOCATION_GRID_ADS", "GEOLOCATION GRID ADS", ASAR_Geo_Grid_ADSR_asar_rec_data, "Geolocation Grid ADSRs"},
+ {"MDS1", "MDS1", ASAR_Image_MDSR_SLC_asar_rec_data, "Measurement Data Set 1"}
+};
+
static const struct DatasetDescriptor ASA_IM__BP_dataset_data[] = {
{"MDS1_SQ_ADS", "MDS1 SQ ADS", ASAR_SQ1_Image_ADSR_asar_rec_data, "SQ ADSRs"},
{"GEOLOCATION_GRID_ADS", "GEOLOCATION GRID ADS", ASAR_Geo_Grid_ADSR_asar_rec_data, "Geolocation Grid ADSRs"},
@@ -2784,6 +3168,17 @@ static const struct DatasetDescriptor ASA_WSM_1P_dataset_data[] = {
{"MDS1", "MDS1", ASAR_Image_MDSR_Gen_asar_rec_data, "Measurement Data Set 1"}
};
+static const struct DatasetDescriptor ASA_WSM_1P_602_dataset_data[] = {
+ {"MDS1_SQ_ADS", "MDS1 SQ ADS", ASAR_SQ1_Image_ADSR_asar_rec_data, "SQ ADSRs"},
+ {"MAIN_PROCESSING_PARAMS_ADS", "MAIN PROCESSING PARAMS ADS", ASAR_Main_ADSR_asar_602_rec_data, "Main Processing parameters"},
+ {"DOP_CENTROID_COEFFS_ADS", "DOP CENTROID COEFFS ADS", ASAR_Dop_Cen_ADSR_asar_rec_data, "Doppler Centroid Parameters"},
+ {"SR_GR_ADS", "SR GR ADS", ASAR_SRGR_ADSR_asar_rec_data, "Slant Range to Ground Range conversion parameters"},
+ {"CHIRP_PARAMS_ADS", "CHIRP PARAMS ADS", ASAR_Chirp_ADSR_asar_rec_data, "chirp parameters"},
+ {"ANTENNA_ELEV_PATTERN_ADS", "ANTENNA ELEV PATTERN ADS", ASAR_Antenna_ADSR_asar_rec_data, "Antenna Elevation patterns(s)"},
+ {"GEOLOCATION_GRID_ADS", "GEOLOCATION GRID ADS", ASAR_Geo_Grid_ADSR_asar_rec_data, "Geolocation Grid ADSRs"},
+ {"MDS1", "MDS1", ASAR_Image_MDSR_Gen_asar_rec_data, "Measurement Data Set 1"}
+};
+
static const struct DatasetDescriptor ASA_WS__BP_dataset_data[] = {
{"MDS1_SQ_ADS", "MDS1 SQ ADS", ASAR_SQ1_Image_ADSR_asar_rec_data, "SQ ADSRs"},
{"MDS2_SQ_ADS", "MDS2 SQ ADS", ASAR_SQ1_Image_ADSR_asar_rec_data, "SQ ADSRs"},
@@ -3280,7 +3675,7 @@ static const struct DatasetDescriptor ATS_TOA_1P_dataset_data[] = {
static const struct DatasetDescriptor MER_FR__1P_dataset_data[] = {
{"Quality_ADS", "Quality ADS", MER_RR__1P_ADSR_sq_meris_rec_data, "Level 1b Summary Quality ADS(SQ ADS)"},
{"Scaling_Factor_GADS", "Scaling Factor GADS", MER_RR__1P_GADS_sfgi_meris_rec_data, "Level 1b GADS Scaling Factor and General Info"},
- {"Tie_points_ADS", "Tie points ADS", MER_RR__1P_ADSR_tie_pt_meris_rec_data, "Level 1b ADS Tie Point Location and Auxilliary Data (LADS)"},
+ {"Tie_points_ADS", "Tie points ADS", MER_RR__1P_ADSR_tie_pt_meris_rec_data, "Level 1b ADS Tie Point Location and Auxiliary Data (LADS)"},
{"Radiance_1", "Radiance MDS(1)", MER_RR__1P_MDSR_1_15_meris_rec_data, "Level 1b MDS (1) TOA Radiance"},
{"Radiance_2", "Radiance MDS(2)", MER_RR__1P_MDSR_1_15_meris_rec_data, "Level 1b MDS (2) TOA Radiance"},
{"Radiance_3", "Radiance MDS(3)", MER_RR__1P_MDSR_1_15_meris_rec_data, "Level 1b MDS (3) TOA Radiance"},
@@ -3302,7 +3697,7 @@ static const struct DatasetDescriptor MER_FR__1P_dataset_data[] = {
static const struct DatasetDescriptor MER_FR__1P_IODD5_dataset_data[] = {
{"Quality_ADS", "Quality ADS", MER_RR__1P_ADSR_sq_meris_rec_data, "Level 1b Summary Quality ADS(SQ ADS)"},
{"Scaling_Factor_GADS", "Scaling Factor GADS", MER_RR__1P_GADS_sfgi_meris_rec_data, "Level 1b GADS Scaling Factor and General Info"},
- {"Tie_points_ADS", "Tie points ADS", MER_RR__1P_ADSR_tie_pt_meris_rec_data, "Level 1b ADS Tie Point Location and Auxilliary Data (LADS)"},
+ {"Tie_points_ADS", "Tie points ADS", MER_RR__1P_ADSR_tie_pt_meris_rec_data, "Level 1b ADS Tie Point Location and Auxiliary Data (LADS)"},
{"Radiance_1", "Radiance MDS(1)", MER_RR__1P_MDSR_1_15_meris_rec_data, "Level 1b MDS (1) TOA Radiance"},
{"Radiance_2", "Radiance MDS(2)", MER_RR__1P_MDSR_1_15_meris_rec_data, "Level 1b MDS (2) TOA Radiance"},
{"Radiance_3", "Radiance MDS(3)", MER_RR__1P_MDSR_1_15_meris_rec_data, "Level 1b MDS (3) TOA Radiance"},
@@ -3405,7 +3800,7 @@ static const struct DatasetDescriptor MER_RRV_2P_dataset_data[] = {
static const struct DatasetDescriptor MER_RR__1P_dataset_data[] = {
{"Quality_ADS", "Quality ADS", MER_RR__1P_ADSR_sq_meris_rec_data, "Level 1b Summary Quality ADS(SQ ADS)"},
{"Scaling_Factor_GADS", "Scaling Factor GADS", MER_RR__1P_GADS_sfgi_meris_rec_data, "Level 1b GADS Scaling Factor and General Info"},
- {"Tie_points_ADS", "Tie points ADS", MER_RR__1P_ADSR_tie_pt_meris_rec_data, "Level 1b ADS Tie Point Location and Auxilliary Data (LADS)"},
+ {"Tie_points_ADS", "Tie points ADS", MER_RR__1P_ADSR_tie_pt_meris_rec_data, "Level 1b ADS Tie Point Location and Auxiliary Data (LADS)"},
{"Radiance_1", "Radiance MDS(1)", MER_RR__1P_MDSR_1_15_meris_rec_data, "Level 1b MDS (1) TOA Radiance"},
{"Radiance_2", "Radiance MDS(2)", MER_RR__1P_MDSR_1_15_meris_rec_data, "Level 1b MDS (2) TOA Radiance"},
{"Radiance_3", "Radiance MDS(3)", MER_RR__1P_MDSR_1_15_meris_rec_data, "Level 1b MDS (3) TOA Radiance"},
@@ -3427,7 +3822,7 @@ static const struct DatasetDescriptor MER_RR__1P_dataset_data[] = {
static const struct DatasetDescriptor MER_RR__1P_IODD5_dataset_data[] = {
{"Quality_ADS", "Quality ADS", MER_RR__1P_ADSR_sq_meris_rec_data, "Level 1b Summary Quality ADS(SQ ADS)"},
{"Scaling_Factor_GADS", "Scaling Factor GADS", MER_RR__1P_GADS_sfgi_meris_rec_data, "Level 1b GADS Scaling Factor and General Info"},
- {"Tie_points_ADS", "Tie points ADS", MER_RR__1P_ADSR_tie_pt_meris_rec_data, "Level 1b ADS Tie Point Location and Auxilliary Data (LADS)"},
+ {"Tie_points_ADS", "Tie points ADS", MER_RR__1P_ADSR_tie_pt_meris_rec_data, "Level 1b ADS Tie Point Location and Auxiliary Data (LADS)"},
{"Radiance_1", "Radiance MDS(1)", MER_RR__1P_MDSR_1_15_meris_rec_data, "Level 1b MDS (1) TOA Radiance"},
{"Radiance_2", "Radiance MDS(2)", MER_RR__1P_MDSR_1_15_meris_rec_data, "Level 1b MDS (2) TOA Radiance"},
{"Radiance_3", "Radiance MDS(3)", MER_RR__1P_MDSR_1_15_meris_rec_data, "Level 1b MDS (3) TOA Radiance"},
@@ -4187,19 +4582,29 @@ static const struct FlagDescriptor MER_RR__2P_flags_IODD6_data[] = {
{"LOW_PRESSURE", 1, {0, 0}, "Computed pressure lower than ECMWF one"}
};
-const struct DatasetDescriptorTable dddb_product_tables[33] = {
+const struct DatasetDescriptorTable dddb_product_tables[64] = {
{"ASA_APG_1P", "ASAR Alternating Polarization Ellipsoid Geocoded Image", 11, ASA_APG_1P_dataset_data},
+ {"ASA_APG_1P_602", "ASAR Alternating Polarization Ellipsoid Geocoded Image", 11, ASA_APG_1P_602_dataset_data},
{"ASA_APM_1P", "ASAR Alternating Polarization Medium Resolution Image product", 10, ASA_APM_1P_dataset_data},
+ {"ASA_APM_1P_602", "ASAR Alternating Polarization Medium Resolution Image product", 10, ASA_APM_1P_602_dataset_data},
{"ASA_APP_1P", "ASAR Alternating Polarization Mode Precision Image", 10, ASA_APP_1P_dataset_data},
+ {"ASA_APP_1P_602", "ASAR Alternating Polarization Mode Precision Image", 10, ASA_APP_1P_602_dataset_data},
{"ASA_APS_1P", "ASAR Alternating Polarization Mode Single Look Complex", 8, ASA_APS_1P_dataset_data},
+ {"ASA_APS_1P_602", "ASAR Alternating Polarization Mode Single Look Complex", 8, ASA_APS_1P_602_dataset_data},
{"ASA_AP__BP", "ASAR Alternating Polarization Browse Product", 5, ASA_AP__BP_dataset_data},
{"ASA_GM1_1P", "ASAR Global Monitoring Mode Image", 8, ASA_GM1_1P_dataset_data},
+ {"ASA_GM1_1P_602", "ASAR Global Monitoring Mode Image", 8, ASA_GM1_1P_602_dataset_data},
{"ASA_IMG_1P", "ASAR Image Mode Ellipsoid Geocoded Image", 9, ASA_IMG_1P_dataset_data},
+ {"ASA_IMG_1P_602", "ASAR Image Mode Ellipsoid Geocoded Image", 9, ASA_IMG_1P_602_dataset_data},
{"ASA_IMM_1P", "ASAR Image Mode Medium Resolution Image", 8, ASA_IMM_1P_dataset_data},
+ {"ASA_IMM_1P_602", "ASAR Image Mode Medium Resolution Image", 8, ASA_IMM_1P_602_dataset_data},
{"ASA_IMP_1P", "ASAR Image Mode Precision Image", 8, ASA_IMP_1P_dataset_data},
+ {"ASA_IMP_1P_602", "ASAR Image Mode Precision Image", 8, ASA_IMP_1P_602_dataset_data},
{"ASA_IMS_1P", "ASAR Image Mode Single Look Complex", 6, ASA_IMS_1P_dataset_data},
+ {"ASA_IMS_1P_602", "ASAR Image Mode Single Look Complex", 6, ASA_IMS_1P_602_dataset_data},
{"ASA_IM__BP", "ASAR Image Mode Browse Product", 3, ASA_IM__BP_dataset_data},
{"ASA_WSM_1P", "ASAR Wide Swath Medium Resolution Image", 8, ASA_WSM_1P_dataset_data},
+ {"ASA_WSM_1P_602", "ASAR Wide Swath Medium Resolution Image", 8, ASA_WSM_1P_602_dataset_data},
{"ASA_WS__BP", "ASAR Wide Swath Mode Browse Image", 5, ASA_WS__BP_dataset_data},
{"ASA_WVI_1P", "ASAR Wave Mode SLC Imagette and Imagette Cross Spectra", 405, ASA_WVI_1P_dataset_data},
{"ASA_WVS_1P", "ASAR Wave Mode Imagette Cross Spectra", 4, ASA_WVS_1P_dataset_data},
@@ -4220,9 +4625,31 @@ const struct DatasetDescriptorTable dddb_product_tables[33] = {
{"MER_RR__1P", "MERIS Reduced Resolution Geolocated and Calibrated TOA Radiance", 19, MER_RR__1P_dataset_data},
{"MER_RR__1P_IODD5", "MERIS Reduced Resolution Geolocated and Calibrated TOA Radiance", 19, MER_RR__1P_IODD5_dataset_data},
{"MER_RR__2P", "MERIS Reduced Resolution Geophysical Product", 23, MER_RR__2P_dataset_data},
- {"MER_RR__2P_IODD6", "MERIS Reduced Resolution Geophysical Product", 23, MER_RR__2P_IODD6_dataset_data}
-};
-const struct BandDescriptorTable dddb_band_tables[27] = {
+ {"MER_RR__2P_IODD6", "MERIS Reduced Resolution Geophysical Product", 23, MER_RR__2P_IODD6_dataset_data},
+ {"SAR_APG_1P", "ERS Simulated Alternating Polarization Ellipsoid Geocoded Image", 11, ASA_APG_1P_dataset_data},
+ {"SAR_APG_1P_602", "ERS Simulated Alternating Polarization Ellipsoid Geocoded Image", 11, ASA_APG_1P_602_dataset_data},
+ {"SAR_APM_1P", "ERS Simulated Alternating Polarization Medium Resolution Image product", 10, ASA_APM_1P_dataset_data},
+ {"SAR_APM_1P_602", "ERS Simulated Alternating Polarization Medium Resolution Image product", 10, ASA_APM_1P_602_dataset_data},
+ {"SAR_APP_1P", "ERS Simulated Alternating Polarization Mode Precision Image", 10, ASA_APP_1P_dataset_data},
+ {"SAR_APP_1P_602", "ERS Simulated Alternating Polarization Mode Precision Image", 10, ASA_APP_1P_602_dataset_data},
+ {"SAR_APS_1P", "ERS Simulated Alternating Polarization Mode Single Look Complex", 8, ASA_APS_1P_dataset_data},
+ {"SAR_APS_1P_602", "ERS Simulated Alternating Polarization Mode Single Look Complex", 8, ASA_APS_1P_602_dataset_data},
+ {"SAR_AP__BP", "ERS Simulated Alternating Polarization Browse Product", 5, ASA_AP__BP_dataset_data},
+ {"SAR_IMG_1P", "ERS Image Mode Ellipsoid Geocoded Image", 9, ASA_IMG_1P_dataset_data},
+ {"SAR_IMG_1P_602", "ERS Image Mode Ellipsoid Geocoded Image", 9, ASA_IMG_1P_602_dataset_data},
+ {"SAR_IMM_1P", "ERS Image Mode Medium Resolution Image", 8, ASA_IMM_1P_dataset_data},
+ {"SAR_IMM_1P_602", "ERS Image Mode Medium Resolution Image", 8, ASA_IMM_1P_602_dataset_data},
+ {"SAR_IMP_1P", "ERS Image Mode Precision Image", 8, ASA_IMP_1P_dataset_data},
+ {"SAR_IMP_1P_602", "ERS Image Mode Precision Image", 8, ASA_IMP_1P_602_dataset_data},
+ {"SAR_IMS_1P", "ERS Image Mode Single Look Complex", 6, ASA_IMS_1P_dataset_data},
+ {"SAR_IMS_1P_602", "ERS Image Mode Single Look Complex", 6, ASA_IMS_1P_602_dataset_data},
+ {"SAR_IM__BP", "ERS Image Mode Browse Product", 3, ASA_IM__BP_dataset_data},
+ {"SAR_WVI_1P", "ERS Wave Mode SLC Imagette and Imagette Cross Spectra", 405, ASA_WVI_1P_dataset_data},
+ {"SAR_WVS_1P", "ERS Wave Mode Imagette Cross Spectra", 4, ASA_WVS_1P_dataset_data},
+ {"SAR_WVW_2P", "ERS Wave Mode Wave Spectra", 4, ASA_WVW_2P_dataset_data},
+};
+
+const struct BandDescriptorTable dddb_band_tables[37] = {
{"ASA_APG_1P", "ASAR Alternating Polarization Geocoded Image", 6, ASA_APG_1P_band_data},
{"ASA_APM_1P", "ASAR Alternating Polarization Medium Resolution Image", 6, ASA_APM_1P_band_data},
{"ASA_APP_1P", "ASAR Alternating Polarization Precision Image", 6, ASA_APP_1P_band_data},
@@ -4249,8 +4676,19 @@ const struct BandDescriptorTable dddb_band_tables[27] = {
{"MER_RR__1P", "MERIS Level 1b Reduced Resolution Geophysical Product", 32, MER_RR__1P_band_data},
{"MER_RR__1P_IODD5", "MERIS Level 1b Reduced Resolution Geophysical Product", 32, MER_RR__1P_IODD5_band_data},
{"MER_RR__2P", "MERIS Level 2 Reduced Resolution Geophysical Product", 47, MER_RR__2P_band_data},
- {"MER_RR__2P_IODD6", "MERIS Level 2 Reduced Resolution Geophysical Product", 46, MER_RR__2P_IODD6_band_data}
+ {"MER_RR__2P_IODD6", "MERIS Level 2 Reduced Resolution Geophysical Product", 46, MER_RR__2P_IODD6_band_data},
+ {"SAR_APG_1P", "ERS Simulated Alternating Polarization Geocoded Image", 6, ASA_APG_1P_band_data},
+ {"SAR_APM_1P", "ERS Simulated Alternating Polarization Medium Resolution Image", 6, ASA_APM_1P_band_data},
+ {"SAR_APP_1P", "ERS Simulated Alternating Polarization Precision Image", 6, ASA_APP_1P_band_data},
+ {"SAR_APS_1P", "ERS Simulated Alternating Polarization SLC Image", 6, ASA_APS_1P_band_data},
+ {"SAR_AP__BP", "ERS Simulated Alternatin Polarization Mode Browse Product", 5, ASA_AP__BP_band_data},
+ {"SAR_IMG_1P", "ERS Image Mode Geocoded Image", 5, ASA_IMG_1P_band_data},
+ {"SAR_IMM_1P", "ERS Image Mode Medium Resolution Image", 5, ASA_IMM_1P_band_data},
+ {"SAR_IMP_1P", "ERS Image Mode Precision Image", 5, ASA_IMP_1P_band_data},
+ {"SAR_IMS_1P", "ERS Image Mode SLC Image", 6, ASA_IMS_1P_band_data},
+ {"SAR_IM__BP", "ERS Image Mode Browse Product", 5, ASA_IM__BP_band_data},
};
+
const struct FlagDescriptorTable dddb_flag_coding_tables[6] = {
{"ATS_NR__2P_flags", "AATSR Level 2 Flags Codings", 14, ATS_NR__2P_flags_data},
{"ATS_TOA_1P_cloud_flags", "AATSR TOA Level 1b Cloud Flags Codings", 13, ATS_TOA_1P_cloud_flags_data},
@@ -4318,6 +4756,7 @@ const struct RecordDescriptorTable dddb_asar_rec_tables[20] = {
{"ASAR_Image_MDSR_Gen", "Measurement Data Set 1", 4, ASAR_Image_MDSR_Gen_asar_rec_data},
{"ASAR_Image_MDSR_SLC", "Measurement Data Set 1", 4, ASAR_Image_MDSR_SLC_asar_rec_data},
{"ASAR_Main_ADSR", "Main Processing parameters", 220, ASAR_Main_ADSR_asar_rec_data},
+ {"ASAR_Main_ADSR_602", "Main Processing parameters", 227, ASAR_Main_ADSR_asar_602_rec_data},
{"ASAR_Map_GADS", "Map Projection parameters", 66, ASAR_Map_GADS_asar_rec_data},
{"ASAR_Ocean_Spectra_MDSR", "Ocean Wave spectrum.", 29, ASAR_Ocean_Spectra_MDSR_asar_rec_data},
{"ASAR_SQ1_Image_ADSR", "SQ ADSRs", 39, ASAR_SQ1_Image_ADSR_asar_rec_data},
@@ -4327,6 +4766,7 @@ const struct RecordDescriptorTable dddb_asar_rec_tables[20] = {
{"ASAR_Wave_Param_ADSR", "Wave Mode processing parameters", 396, ASAR_Wave_Param_ADSR_asar_rec_data},
{"ASAR_Wave_SQ_ADSR", "SQ ADSRs", 59, ASAR_Wave_SQ_ADSR_asar_rec_data},
{"ASA_CON_AX_GADS", "Contains ASAR processor configuration data", 41, ASA_CON_AX_GADS_asar_rec_data},
+ {"ASA_CON_AX_GADS_602", "Contains ASAR processor configuration data", 41, ASA_CON_AX_GADS_asar_602_rec_data},
{"ASA_INS_AX_GADS", "Contains ASAR instrument characterization data", 721, ASA_INS_AX_GADS_asar_rec_data},
{"ASA_XCA_AX_GADS", "Contains ASAR external calibration data", 31, ASA_XCA_AX_GADS_asar_rec_data},
{"ASA_XCH_AX_GADS", "Contains ASAR external characterization data", 5, ASA_XCH_AX_GADS_asar_rec_data}
diff --git a/src/epr_dddb.h b/src/epr_dddb.h
index bf11497..10f9cd9 100644
--- a/src/epr_dddb.h
+++ b/src/epr_dddb.h
@@ -75,15 +75,15 @@ struct RecordDescriptorTable {
const struct RecordDescriptor* descriptors;
};
-extern const struct DatasetDescriptorTable dddb_product_tables[33];
-extern const struct BandDescriptorTable dddb_band_tables[27];
+extern const struct DatasetDescriptorTable dddb_product_tables[64];
+extern const struct BandDescriptorTable dddb_band_tables[37];
extern const struct FlagDescriptorTable dddb_flag_coding_tables[6];
extern const struct RecordDescriptorTable dddb_meris_rec_tables[23];
extern const struct RecordDescriptorTable dddb_aatsr_rec_tables[20];
extern const struct RecordDescriptorTable dddb_asar_rec_tables[20];
-#define EPR_NUM_PRODUCT_TABLES 33
-#define EPR_NUM_BAND_TABLES 27
+#define EPR_NUM_PRODUCT_TABLES 66
+#define EPR_NUM_BAND_TABLES 37
#define EPR_NUM_FLAG_CODING_TABLES 6
#define EPR_NUM_MERIS_REC_TABLES 23
#define EPR_NUM_AATSR_REC_TABLES 20
diff --git a/src/epr_dsd.c b/src/epr_dsd.c
index 95ab027..b1913ef 100644
--- a/src/epr_dsd.c
+++ b/src/epr_dsd.c
@@ -165,6 +165,35 @@ int epr_detect_meris_iodd_version(EPR_SProductId* product_id)
}
+int epr_detect_asar_sw_version(EPR_SProductId* product_id)
+{
+ EPR_SDSD** elems;
+ int size = 0;
+ int rec_size = 0;
+ int i, version = 0;
+ char* name;
+
+ if ((strncmp("ASA", product_id->id_string, 3) == 0) ||
+ (strncmp("SAR", product_id->id_string, 3) == 0)) {
+
+ elems = (EPR_SDSD**)product_id->dsd_array->elems;
+ size = product_id->dsd_array->length;
+ for (i=0; i< size;i++){
+ name = elems[i]->ds_name;
+ if (strncmp("MAIN PROCESSING PARAMS ADS", name, 26) == 0) {
+ rec_size = elems[i]->dsr_size;
+ if (rec_size == 10069) {
+ version = 602;
+ }
+ break;
+ }
+ }
+ }
+
+ return version;
+}
+
+
/**
* Release the memory allocated through a dataset ID.
*
diff --git a/src/epr_param.c b/src/epr_param.c
index 0aa13dc..4e59a56 100644
--- a/src/epr_param.c
+++ b/src/epr_param.c
@@ -148,6 +148,13 @@ int epr_set_dyn_dddb_params(EPR_SProductId* product_id)
}
field = epr_get_field(product_id->sph_record, "LINE_LENGTH");
+ if (field == NULL) {
+ epr_set_err(e_err_invalid_value,
+ "epr_set_param: wrong SPH: unable to read LINE_LENGTH");
+ epr_free_string(tmp);
+ return 0;
+ }
+
line_length = ((uint*) field->elems)[0];
if (line_length == 0) {
epr_set_err(e_err_invalid_value,
@@ -155,7 +162,15 @@ int epr_set_dyn_dddb_params(EPR_SProductId* product_id)
epr_free_string(tmp);
return 0;
}
+
field = epr_get_field(product_id->sph_record, "LINES_PER_TIE_PT");
+ if (field == NULL) {
+ epr_set_err(e_err_invalid_value,
+ "epr_set_param: wrong SPH: unable to read LINES_PER_TIE_PT");
+ epr_free_string(tmp);
+ return 0;
+ }
+
num_tie_points_across = ((uint*) field->elems)[0];
if (num_tie_points_across == 0) {
epr_set_err(e_err_invalid_value,
@@ -177,9 +192,17 @@ int epr_set_dyn_dddb_params(EPR_SProductId* product_id)
/* AATSR does NOT have any dynamic parameters in DDDB */
/* ASAR */
- else if (strcmp(EPR_ENVISAT_PRODUCT_ASAR, epr_sub_string((char*)product_field->elems, 0, 3)) == 0) {
+ else if ((strcmp(EPR_ENVISAT_PRODUCT_ASAR, epr_sub_string((char*)product_field->elems, 0, 3)) == 0) ||
+ (strcmp(EPR_ENVISAT_PRODUCT_SAR, epr_sub_string((char*)product_field->elems, 0, 3)) == 0)) {
field = epr_get_field(product_id->sph_record, "LINE_LENGTH");
+ if (field == NULL) {
+ epr_set_err(e_err_invalid_value,
+ "epr_set_param: wrong SPH: unable to read LINE_LENGTH");
+ epr_free_string(tmp);
+ return 0;
+ }
+
line_length = ((uint*) field->elems)[0];
if (line_length == 0) {
epr_set_err(e_err_invalid_value,
diff --git a/src/epr_product.c b/src/epr_product.c
index 05ec59f..ba9b45e 100644
--- a/src/epr_product.c
+++ b/src/epr_product.c
@@ -123,6 +123,7 @@ EPR_SProductId* epr_open_product(const char* product_file_path) {
/* Product identifier filter*/
if ((strncmp(EPR_ENVISAT_PRODUCT_MERIS, product_id->id_string, 3) != 0) &&
(strncmp(EPR_ENVISAT_PRODUCT_ASAR, product_id->id_string, 3) != 0) &&
+ (strncmp(EPR_ENVISAT_PRODUCT_SAR, product_id->id_string, 3) != 0) &&
(strncmp(EPR_ENVISAT_PRODUCT_AATSR, product_id->id_string, 3) != 0)) {
epr_set_err(e_err_invalid_product_id,
"epr_open_product: invalid product identifier");
@@ -434,6 +435,9 @@ uint epr_compute_scene_width(const EPR_SProductId* product_id) {
} else if (strncmp(EPR_ENVISAT_PRODUCT_ASAR, product_id->id_string, 3) == 0) {
const EPR_SField* field = field = epr_get_field(sph_record, "LINE_LENGTH");
scan_line_length = epr_get_field_elem_as_uint(field, 0);
+ } else if (strncmp(EPR_ENVISAT_PRODUCT_SAR, product_id->id_string, 3) == 0) {
+ const EPR_SField* field = field = epr_get_field(sph_record, "LINE_LENGTH");
+ scan_line_length = epr_get_field_elem_as_uint(field, 0);
} else {
epr_set_err(e_err_illegal_arg,
"epr_compute_scene_width: unknown product type");
diff --git a/src/epr_record.c b/src/epr_record.c
index 5e7e40d..6f0dfcc 100644
--- a/src/epr_record.c
+++ b/src/epr_record.c
@@ -221,6 +221,9 @@ EPR_SRecordInfo* epr_read_record_info(EPR_SProductId* product_id, EPR_SDatasetId
r_tables = dddb_aatsr_rec_tables;
num_r_tables = EPR_NUM_AATSR_REC_TABLES;
} else if (strncmp(product_id->id_string, "ASA", 3) == 0) {
+ r_tables = dddb_asar_rec_tables;
+ num_r_tables = EPR_NUM_ASAR_REC_TABLES;
+ } else if (strncmp(product_id->id_string, "SAR", 3) == 0) {
r_tables = dddb_asar_rec_tables;
num_r_tables = EPR_NUM_ASAR_REC_TABLES;
} else {
diff --git a/src/test/CMakeLists.txt b/src/test/CMakeLists.txt
new file mode 100644
index 0000000..d33d6f5
--- /dev/null
+++ b/src/test/CMakeLists.txt
@@ -0,0 +1,33 @@
+# Copyright (c) 2013 Antonio Valentino <antonio.valentino at tiscali.it>
+
+set(TARGETS api_unit_tests
+ epr_main_test
+ epr_subset_test
+ epr_test_endian)
+
+foreach(TEST ${TARGETS})
+ add_executable(${TEST} ${TEST}.c)
+ target_link_libraries(${TEST} epr_api)
+endforeach(TEST)
+
+target_link_libraries(epr_main_test bccunit)
+
+
+# endianess
+include(TestBigEndian)
+
+TEST_BIG_ENDIAN(BIGENDIAN)
+if(${BIGENDIAN})
+ set(ENDIANESS BE)
+else(${BIGENDIAN})
+ set(ENDIANESS LE)
+endif(${BIGENDIAN})
+
+
+#add_test(TEST_API_01 api_unit_tests)
+#add_test(TEST_EPR_01 epr_main_test)
+#add_test(TEST_EPR_02 epr_subset_test)
+add_test(TEST_EPR_03 epr_test_endian)
+set_tests_properties(TEST_EPR_03 PROPERTIES PASS_REGULAR_EXPRESSION
+ ${ENDIANESS})
+
--
ENVISAT Product Reader API for C
More information about the Pkg-grass-devel
mailing list