From 09bc64631954956f6ed960decabcb41de809e8f1 Mon Sep 17 00:00:00 2001 From: Robert Butora <robert.butora@inaf.it> Date: Wed, 10 Apr 2024 14:38:51 +0300 Subject: [PATCH] adds missing implementation of POLYGON to SQL query in DbPSearch --- .../src/main/java/vlkb/search/DbPSearch.java | 22 ++++++++++++------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/data-discovery/src/main/java/vlkb/search/DbPSearch.java b/data-discovery/src/main/java/vlkb/search/DbPSearch.java index 4355231..dbd4494 100644 --- a/data-discovery/src/main/java/vlkb/search/DbPSearch.java +++ b/data-discovery/src/main/java/vlkb/search/DbPSearch.java @@ -71,19 +71,25 @@ public class DbPSearch inputRegion = "sbox '( ("+ sw_lon + "d, " + sw_lat + "d), (" + ne_lon +"d, " + ne_lat + "d) )'"; } - else - { // FIXME how to deal with Polygon ? -> use enclose-RECT -> RANGE - /* lon = coord.lon; - lat = coord.lat; - radius = coord.radius; - dlon = coord.dlon; - dlat = coord.dlat;*/ + else if (shape.equals("POLYGON")) + { + // FIXME redefine Polygon as point-array: + assert(coord.pos.polygon.lon.length == coord.pos.polygon.lat.length); + // Polygon has at least 3 points + inputRegion = "spoly '( (" + coord.pos.polygon.lon[0] + "d, " + coord.pos.polygon.lat[0] + "d),"; + for(int ii=1; ii < coord.pos.polygon.lon.length; ii++) + { + inputRegion += ", (" + coord.pos.polygon.lon[ii] + "d, " + coord.pos.polygon.lat[ii] + "d)"; + } + inputRegion += " )'"; + } + else + { throw new IllegalArgumentException("Coord::shape was: " + shape + " but valid is CIRCLE or RECT"); } boolean vel_valid = (coord.band != null) && (coord.band.system != Band.System.NONE);//coord.vel_valid; -// String vel_type = coord.vel_type; String theQuery; if(coord.pos.system == Pos.System.GALACTIC) -- GitLab