From 281a15239724d3d21cb7cf2dab4e25abfd22be53 Mon Sep 17 00:00:00 2001 From: Robert Butora <robert.butora@inaf.it> Date: Sat, 27 Apr 2024 17:47:14 +0200 Subject: [PATCH] implements GRID pixels coord-system to Pos Band Time --- .../engine/src/common/include/ast4vl.hpp | 2 + data-access/engine/src/common/src/ast4vl.cpp | 16 ++- .../engine/src/common/src/ast_frameset.cpp | 129 +++++++++++++++--- .../engine/src/common/src/ast_frameset.hpp | 8 +- data-access/engine/src/common/src/cutout.cpp | 57 ++++++-- data-access/engine/src/vlkb/src/main.cpp | 2 +- .../engine/src/vlkb/src/service_string.hpp | 1 + .../src/main/java/cutout/CutoutImpl.java | 79 ++++++++++- java-libs/lib/vlkb-volib-0.9.0.jar | Bin 21531 -> 0 bytes java-libs/lib/vlkb-volib-0.9.1-SNAPSHOT.jar | Bin 0 -> 22253 bytes 10 files changed, 255 insertions(+), 39 deletions(-) delete mode 100644 java-libs/lib/vlkb-volib-0.9.0.jar create mode 100644 java-libs/lib/vlkb-volib-0.9.1-SNAPSHOT.jar diff --git a/data-access/engine/src/common/include/ast4vl.hpp b/data-access/engine/src/common/include/ast4vl.hpp index 46571ab..95d714e 100644 --- a/data-access/engine/src/common/include/ast4vl.hpp +++ b/data-access/engine/src/common/include/ast4vl.hpp @@ -25,12 +25,14 @@ struct uint_bounds { unsigned int pix1; unsigned int pix2; + unsigned char type; }; struct double_xy { double x; double y; + unsigned char type; }; struct overlap_ranges diff --git a/data-access/engine/src/common/src/ast4vl.cpp b/data-access/engine/src/common/src/ast4vl.cpp index a0da6e3..c436835 100644 --- a/data-access/engine/src/common/src/ast4vl.cpp +++ b/data-access/engine/src/common/src/ast4vl.cpp @@ -29,7 +29,7 @@ std::ostream& operator<<( std::ostream &out, struct Bounds const& p) std::ostream& operator<<( std::ostream &out, struct uint_bounds const& p) { - out << "(" << p.pix1 << ", " << p.pix2 << ")"; + out << "(" << p.pix1 << ", " << p.pix2 << " " << p.type <<")"; return out; } @@ -128,6 +128,11 @@ std::vector<uint_bounds> calc_overlap(const std::string header, const coordinate vector<uint_bounds> uint_bounds_vec; + LOG_STREAM << "uint_bounds: " << uint_bounds_vec.size() + << " pix_ranges:: " << pix_ranges.pixel_ranges.size() + << endl; + + LOG_STREAM << "pix ranges[uint]:"; for(double_xy dbl_range : pix_ranges.pixel_ranges) { @@ -144,20 +149,23 @@ std::vector<uint_bounds> calc_overlap(const std::string header, const coordinate // FitsChan uses GRID Domain for FITS-pixel coords if(dbl_range.x <= dbl_range.y) { - uint_bounds ui_range{round(dbl_range.x), /*round*/(dbl_range.y)}; + uint_bounds ui_range{round(dbl_range.x), /*round*/(dbl_range.y), dbl_range.type}; uint_bounds_vec.push_back(ui_range); LOG_STREAM << " " << ui_range; } else { - uint_bounds ui_range{round(dbl_range.y), /*round*/(dbl_range.x)}; + uint_bounds ui_range{round(dbl_range.y), /*round*/(dbl_range.x), dbl_range.type}; uint_bounds_vec.push_back(ui_range); LOG_STREAM << " " << ui_range; } - } LOG_STREAM << endl; + LOG_STREAM << "uint_bounds: " << uint_bounds_vec.size() + << " pix_ranges:: " << pix_ranges.pixel_ranges.size() + << endl; + return uint_bounds_vec; } diff --git a/data-access/engine/src/common/src/ast_frameset.cpp b/data-access/engine/src/common/src/ast_frameset.cpp index f08299b..6721561 100644 --- a/data-access/engine/src/common/src/ast_frameset.cpp +++ b/data-access/engine/src/common/src/ast_frameset.cpp @@ -58,6 +58,7 @@ ast::frameset::frameset(string header) ,m_has_specframe{false} ,m_has_stokes_axis{false} ,m_has_time_axis{false} + ,m_axis_type(AXES_CNT,' ') { LOG_trace(__func__); @@ -89,7 +90,7 @@ ast::frameset::frameset(string header) int ix; for( ix = 0; ix < NAXIS; ix++ ) { - char keyword[ 9 ]; + char keyword[ 9 + 7 ];// +7 silence warning about ix being int can be too long sprintf( keyword, "NAXIS%d", ix + 1 ); if( !astGetFitsI( fchan, keyword, &(NAXISn[ix]) ) ) @@ -137,7 +138,7 @@ ast::frameset::frameset(string header) LOG_STREAM << "m_has_specframe: " << boolalpha << m_has_specframe << endl; if(m_has_specframe) set_spec_axis(); - set_pol_time_axis(); + set_pol_time_sky_axis(); assert_valid_state(); @@ -299,6 +300,7 @@ void ast::frameset::set_spec_axis(void) (domain_val.compare("DSBSPECTRUM") == 0)) { m_spec_axis = axis; + m_axis_type[axis-1] = 'b'; set_axis = true; break; } @@ -312,7 +314,7 @@ void ast::frameset::set_spec_axis(void) -void ast::frameset::set_pol_time_axis(void) +void ast::frameset::set_pol_time_sky_axis(void) { LOG_trace(__func__); @@ -323,6 +325,10 @@ void ast::frameset::set_pol_time_axis(void) LOG_STREAM << "m_NAXIS vs Naxes :" << m_NAXIS << " vs " << naxes << endl; LOG_STREAM << "Domains/Symbols in header FrameSet(CURRENT): "; + + int has_n_sky_axis = 0; + int sky_axis[2]; + int axis; for(axis=1; axis<(naxes+1);axis++) { @@ -341,17 +347,57 @@ void ast::frameset::set_pol_time_axis(void) if((domain_val.find("STOKES") != string::npos) && (symbol_val.compare("STOKES") == 0)) { m_stokes_axis = axis; + m_axis_type[axis-1] = 'p'; m_has_stokes_axis = true; //break; } else if(domain_val.compare("TIME") == 0) { m_time_axis = axis; + m_axis_type[axis-1] = 't'; m_has_time_axis = true; //break; } + else if(domain_val.compare("SKY") == 0) + { + if(has_n_sky_axis >= 2) + { + LOG_STREAM << "too many sky axes found. Alread have: " + << has_n_sky_axis << " axes set" << endl; + } + else + { + sky_axis[has_n_sky_axis] = axis; + has_n_sky_axis++; + } + //break; + } } LOG_STREAM << endl; + + // identify Lon Lat: + // AST doc says Lon/LatAxis macros return 1,2 only + // unclear what it returns when applied to FrameSet + // and also IsLonAxis IsLatAxis is applicable to Frame only + if(has_n_sky_axis == 2) + { + int ix_lon = astGetI(m_hdr_fs,"LonAxis") - 1; + int ix_lat = astGetI(m_hdr_fs,"LatAxis") - 1; + if ( !astOK || (ix_lon == ix_lat)) + throw runtime_error(failed_with_status(__FILE__,__LINE__,"astGetI( Lon/LatAxis ) or Lon equals Lat")); + + bool lon_first = (ix_lon < ix_lat); + m_sky_lon_axis = lon_first ? sky_axis[0] : sky_axis[1]; + m_sky_lat_axis = lon_first ? sky_axis[1] : sky_axis[0]; + m_axis_type[m_sky_lon_axis-1] = 'o'; + m_axis_type[m_sky_lat_axis-1] = 'a'; + m_has_skyframe = true; + } + else + { + m_has_skyframe = false; + LOG_STREAM << "unexpected count of sky axes in frame set: " << has_n_sky_axis << endl; + } } @@ -718,7 +764,11 @@ void ast::frameset::set_bounds_to_rect(coordinates& coord) my_assert(coord.p_lon_deg.size()==coord.p_lat_deg.size(), __FILE__,__LINE__,"coord::p_lon and p_lat sizes differ"); - int npnt = coord.p_lon_deg.size(); + constexpr int int_max_value {std::numeric_limits<int>::max()}; + my_assert(coord.p_lon_deg.size() > int_max_value, + __FILE__,__LINE__,"coord-polygon too long for astPolygon"); + + int npnt = (int)coord.p_lon_deg.size(); int dim = npnt; double points[2][dim]; const double * pts = &(points[0][0]); @@ -863,12 +913,13 @@ overlap_ranges ast::frameset::overlap(coordinates coord) /* overwrite bounds for sky-axis and spec axis if given by coord input */ - int ix_lon = astGetI(m_hdr_fs,"LonAxis") - 1; - int ix_lat = astGetI(m_hdr_fs,"LatAxis") - 1; - if ( !astOK ) - throw runtime_error(failed_with_status(__FILE__,__LINE__,"astGetI( Lon/LatAxis )")); + int ix_lon = m_sky_lon_axis - 1; //astGetI(m_hdr_fs,"LonAxis") - 1; + int ix_lat = m_sky_lat_axis - 1; //astGetI(m_hdr_fs,"LatAxis") - 1; + //if ( !astOK ) + // throw runtime_error(failed_with_status(__FILE__,__LINE__,"astGetI( Lon/LatAxis )")); - LOG_STREAM << "LonAxis LatAxis indeces (zero-based): " << to_string(ix_lon) << " " << to_string(ix_lat) << endl; + LOG_STREAM << "lon/lat axes indeces (zero-based): " + << to_string(ix_lon) << " " << to_string(ix_lat) << endl; set_bounds_to_rect(coord); @@ -896,7 +947,7 @@ overlap_ranges ast::frameset::overlap(coordinates coord) /* FIXME ast-overlap computation breaks if bands do not overlap - suspect AST bug ? */ if((( up[m_spec_axis-1] < coord.vl_kmps) && ( up[m_spec_axis-1] < coord.vu_kmps)) || - ((low[m_spec_axis-1] > coord.vl_kmps) && (low[m_spec_axis-1] > coord.vu_kmps))) + ((low[m_spec_axis-1] > coord.vl_kmps) && (low[m_spec_axis-1] > coord.vu_kmps))) { /* set values only to get correct debug print for client */ low[m_spec_axis-1] = coord.vl_kmps; @@ -981,7 +1032,7 @@ overlap_ranges ast::frameset::overlap(coordinates coord) int ix; for(ix=0; ix<m_NAXIS; ix++) { - pix_ranges.push_back({lbnd[ix],ubnd[ix]}); + pix_ranges.push_back({lbnd[ix],ubnd[ix],m_axis_type[ix]}); } } @@ -1089,10 +1140,10 @@ std::vector<point2d> ast::frameset::sky_vertices(void) throw runtime_error(failed_with_status(__FILE__,__LINE__,"astTranP(pix -> wcs vertices)")); - const int ixlon = astGetI(m_hdr_fs,"LonAxis") - 1; - const int ixlat = astGetI(m_hdr_fs,"LatAxis") - 1; - if ( !astOK ) - throw runtime_error(failed_with_status(__FILE__,__LINE__,"astGetI( Lon/LatAxis )")); + const int ixlon = m_sky_lon_axis - 1; //astGetI(m_hdr_fs,"LonAxis") - 1; + const int ixlat = m_sky_lat_axis - 1; //astGetI(m_hdr_fs,"LatAxis") - 1; + //if ( !astOK ) + // throw runtime_error(failed_with_status(__FILE__,__LINE__,"astGetI( Lon/LatAxis )")); LOG_STREAM << "VERT ix_lon ix_lat: " << ixlon << " " << ixlat << endl; @@ -1203,7 +1254,18 @@ void ast::frameset::assert_valid_state(void) if(m_has_specframe) my_assert( (m_spec_axis >= 1)/*&&(m_spec_axis <=m_NAXIS) FIXME should be Naxes of m_hdr_fs */, - __FILE__,__LINE__, ": m_spec_axis is " + to_string(m_spec_axis) + " and must be 1 .. " + to_string(m_NAXIS) ); + __FILE__,__LINE__, ": m_spec_axis is " + to_string(m_spec_axis) + + " and must be 1 .. " + to_string(m_NAXIS) ); + + if(m_has_skyframe) + { + my_assert( (m_sky_lon_axis >= 1), + __FILE__,__LINE__, ": m_sky_lon_axis is " + to_string(m_sky_lon_axis) + + " and must be 1 .. " + to_string(m_NAXIS) ); + my_assert( (m_sky_lat_axis >= 1), + __FILE__,__LINE__, ": m_sky_lat_axis is " + to_string(m_sky_lat_axis) + + " and must be 1 .. " + to_string(m_NAXIS) ); + } /* check AstFrameSet */ @@ -1331,6 +1393,41 @@ std::ostream& ast::frameset::serialize(std::ostream& ostrm) const LOG_STREAM << "TimeUnit(" << unit << ") "; } + ostrm << " | "; + + ostrm << "has skyframe: " << m_has_skyframe; + if(m_has_skyframe) + { + ostrm << " [lon,lat] at axes (one-based) [" + << to_string(m_sky_lon_axis) << "," + << to_string(m_sky_lat_axis) << "] "; + + string system_key_lon{"System("+to_string(m_sky_lon_axis)+")"}; + const char * csystem_lon = astGetC(m_hdr_fs, system_key_lon.c_str()); + string system_lon(csystem_lon); + LOG_STREAM << "System[Lon](" << system_lon << ") "; + + string system_key_lat{"System("+to_string(m_sky_lat_axis)+")"}; + const char * csystem_lat = astGetC(m_hdr_fs, system_key_lat.c_str()); + string system_lat(csystem_lat); + LOG_STREAM << "System[Lat](" << system_lat << ") "; + + string unit_key_lon{"Unit("+to_string(m_sky_lon_axis)+")"}; + const char * cunit_lon = astGetC(m_hdr_fs, unit_key_lon.c_str()); + string unit_lon(cunit_lon); + LOG_STREAM << "Unit[Lon](" << unit_lon << ") "; + + string unit_key_lat{"Unit("+to_string(m_sky_lat_axis)+")"}; + const char * cunit_lat = astGetC(m_hdr_fs, unit_key_lat.c_str()); + string unit_lat(cunit_lat); + LOG_STREAM << "Unit[Lat](" << unit_lat << ") "; + } + + ostrm << " axes types: >"; + //for(char cc : m_axis_type) ostrm << cc; + for(int ix=0; ix<AXES_CNT;ix++) ostrm << m_axis_type[ix]; + ostrm << "<"; + ostrm << endl; return ostrm; diff --git a/data-access/engine/src/common/src/ast_frameset.hpp b/data-access/engine/src/common/src/ast_frameset.hpp index 23caabe..413c926 100644 --- a/data-access/engine/src/common/src/ast_frameset.hpp +++ b/data-access/engine/src/common/src/ast_frameset.hpp @@ -46,7 +46,7 @@ class frameset AstRegion * create_header_region(void); void set_spec_axis(void); - void set_pol_time_axis(void); + void set_pol_time_sky_axis(void); void log_NAXISn(void); void* find_skyframe(void); @@ -68,6 +68,12 @@ class frameset bool m_has_time_axis; int m_time_axis; + + bool m_has_skyframe; + int m_sky_lon_axis; + int m_sky_lat_axis; + + std::vector<char> m_axis_type;//[ AXES_CNT ]; // o=lon a=lat b=spec/band t=time p=pol/stokes }; } diff --git a/data-access/engine/src/common/src/cutout.cpp b/data-access/engine/src/common/src/cutout.cpp index 3651f26..b1875b3 100644 --- a/data-access/engine/src/common/src/cutout.cpp +++ b/data-access/engine/src/common/src/cutout.cpp @@ -147,29 +147,62 @@ int to_v_type(enum specsystem specsys) int to_v_valid(enum specsystem specsys) { - return specsys == specsystem::NONE ? 0 : 1; + return specsys == specsystem::NONE ? 0 : 1; } string to_cfitsio_format(vector<uint_bounds> bounds) { - my_assert(!bounds.empty(),__FILE__,__LINE__,"bounds vector is empty" ); + my_assert(!bounds.empty(),__FILE__,__LINE__,"bounds vector is empty" ); - stringstream ss; - ss << "["; - ss << bounds[0].pix1 << ":" << bounds[0].pix2; - for(unsigned int i = 1; i < bounds.size(); i++) - { - ss << " " << bounds[i].pix1 << ":" << bounds[i].pix2; - } - ss << "]"; - return ss.str(); + stringstream ss; + ss <<"["; + ss << bounds[0].pix1 << ":" << bounds[0].pix2; + for(unsigned int i = 1; i < bounds.size(); i++) + { + ss << " " << bounds[i].pix1 << ":" << bounds[i].pix2; + } + ss << "]"; + return ss.str(); } +string axistype2string(unsigned char cc) +{ + switch(cc) + { + case 'o': return "LON"; break; + case 'a': return "LAT"; break; + case 'b': return "BAND"; break; + case 't': return "TIME"; break; + case 'p': return "POL"; break; + default: + throw invalid_argument(cc + " is not a valid axis type"); + } +} + + + +string to_cfitsio_format_with_axis_type(vector<uint_bounds> bounds) +{ + my_assert(!bounds.empty(),__FILE__,__LINE__,"bounds vector is empty" ); + + stringstream ss; + ss << to_cfitsio_format(bounds); + ss << " AXES "; + + for(unsigned int i = 0; i < bounds.size(); i++) + { + ss << " " << axistype2string(bounds[i].type); + } + + return ss.str(); +} + + coordinates to_coordinates(const position pos, const band bnd, const time_axis time, const std::vector<std::string> pol) { -coordinates coord; + coordinates coord; coord.skysys = pos.sys; if(pos.shape == area::RANGE) diff --git a/data-access/engine/src/vlkb/src/main.cpp b/data-access/engine/src/vlkb/src/main.cpp index af3e0f0..52b41da 100644 --- a/data-access/engine/src/vlkb/src/main.cpp +++ b/data-access/engine/src/vlkb/src/main.cpp @@ -384,7 +384,7 @@ int cmd_overlap(int argc, char * argv[]) if((ov_code >= 2) && (ov_code <= 5)) { rc = EXIT_SUCCESS; - cout << to_cfitsio_format(bnds) << endl; + cout << to_cfitsio_format_with_axis_type(bnds) << endl; } else if((ov_code == 1) || (ov_code == 6)) { diff --git a/data-access/engine/src/vlkb/src/service_string.hpp b/data-access/engine/src/vlkb/src/service_string.hpp index 416dc21..2ce27c9 100644 --- a/data-access/engine/src/vlkb/src/service_string.hpp +++ b/data-access/engine/src/vlkb/src/service_string.hpp @@ -11,5 +11,6 @@ skysystem to_skysystem(std::string str); specsystem to_specsystem(std::string str); specsystem to_specsystem(int i); std::string to_cfitsio_format(std::vector<uint_bounds> bounds); +std::string to_cfitsio_format_with_axis_type(std::vector<uint_bounds> bounds); #endif diff --git a/data-access/servlet/src/main/java/cutout/CutoutImpl.java b/data-access/servlet/src/main/java/cutout/CutoutImpl.java index f22075e..dbcb5e3 100644 --- a/data-access/servlet/src/main/java/cutout/CutoutImpl.java +++ b/data-access/servlet/src/main/java/cutout/CutoutImpl.java @@ -112,7 +112,6 @@ class CutoutImpl implements Cutout if(bos == null) throw new AssertionError("byte output stream for bounds was not created, is null"); - //String coordString = genRegionForVlkbOverlapCmd(pos, band); JsonEncoder jReq = new JsonEncoder(); jReq.add(pos); jReq.add(band); @@ -139,10 +138,8 @@ class CutoutImpl implements Cutout { boundsString = new String(bos.toByteArray()); - // remove end-of-line (was added by vlkb_ast.cpp: cout << ... << endl) - String lineSeparator = System.lineSeparator(); - boundsString = boundsString.replace(lineSeparator, ""); - LOGGER.info("BOUNDS: " + boundsString); + boundsString = replaceWithGrid(boundsString, pos, band, time, pol); + LOGGER.info("boundsString(with GRID): " + boundsString); has_overlap = !((boundsString != null) && boundsString.trim().isEmpty()); @@ -199,6 +196,78 @@ class CutoutImpl implements Cutout + private String replaceWithGrid(String wcsBounds, Pos pos, Band band, Time time, Pol pol) + { + // remove end-of-line (was added by vlkb_ast.cpp: cout << ... << endl) + String lineSeparator = System.lineSeparator(); + wcsBounds = wcsBounds.replace(lineSeparator, ""); + LOGGER.info("BOUNDS: " + wcsBounds); + + // replace in wcsBounds those bounds where pos,band,time or pol has system=GRID + + String[] substr = wcsBounds.split("(?=AXES)", 2); + for(String ss : substr) LOGGER.info("boundsResult: " + ss); + + String boundsString = substr[0]; + boolean noOverlap = ((boundsString != null) && boundsString.trim().isEmpty()); + if(noOverlap) + { + boundsString = ""; // no overlap + } + else + { + String axesTypes = ""; + if(substr.length > 1) + { + axesTypes = substr[1].replace("AXES"," ").trim(); + LOGGER.info("AXES TYPES: " + axesTypes); + + String[] bnds = normalize(boundsString); + String[] types = normalize(axesTypes); + // assert: bnds.length == types.length + LOGGER.info("boundsCount: " + bnds.length + " typesCount: " + types.length); + + if(bnds.length == types.length) + boundsString = replaceBounds(bnds, types, pos, band); + } + } + return boundsString; + } + + private String replaceBounds(String[] bnds, String[] types, Pos pos, Band band) + { + int ix; + for(ix=0; ix<bnds.length; ix++) + { + if(types[ix].equals("LON") && (pos.system == Pos.System.GRID)) + { + bnds[ix] = pos.lonBoundsString(); + } + else if(types[ix].equals("LAT") && (pos.system == Pos.System.GRID)) + { + bnds[ix] = pos.latBoundsString(); + } + else if(types[ix].equals("BAND") && (band.system == Band.System.GRID)) + { + bnds[ix] = band.boundsString(); + } + } + + LOGGER.info("replaced: " + String.join(" ", bnds)) ; + + return "[" + String.join(" ", bnds) + "]"; + } + + // MAKE SURE vlkb overlap returns space delimited bounds: [ a:b c:d ] + // normalize: strip [,] if any, and split into array by space + private String[] normalize(String spaceStr) + { + String other = spaceStr.replace("[","").replace("]",""); + LOGGER.info("normalize: " + other); + return other.split("\\s+"); + } + + private NullValueCount doCountNullValues(String absPathname, int hdunum) throws IOException, InterruptedException { diff --git a/java-libs/lib/vlkb-volib-0.9.0.jar b/java-libs/lib/vlkb-volib-0.9.0.jar deleted file mode 100644 index 7a469173ef91db8367fb58af748e1f668e405fe3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21531 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 L*cce3eL*|`A5BYI diff --git a/java-libs/lib/vlkb-volib-0.9.1-SNAPSHOT.jar b/java-libs/lib/vlkb-volib-0.9.1-SNAPSHOT.jar new file mode 100644 index 0000000000000000000000000000000000000000..554db77940832d36d03f0cad3addef64dfa3fdc8 GIT binary patch literal 22253 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 literal 0 HcmV?d00001 -- GitLab