private static HashMap<String, Double> checkVisibility( String spatialcontext, GeoFeature feature, Database db, String viewpoint) throws SQLException, ClassNotFoundException, IOException { double tolerance; if (viewpoint == null || viewpoint.isEmpty()) { tolerance = POINTCLOUD_TOLERANCE; } else { ResultSet startViewpoint = db.getViewpoint(spatialcontext, viewpoint); if (startViewpoint.next()) { String filename = Config.getProperty("pointcloudpath") + startViewpoint.getString("filename"); Transformation t = new Transformation(startViewpoint.getString("pointcloud_trans")); t.transform(new Transformation(startViewpoint.getString("viewpoint_trans"))); feature.transform(t.inverse()); tolerance = feature.getPointTol(filename); feature.transform(t); if (tolerance < POINTCLOUD_TOLERANCE) { tolerance = POINTCLOUD_TOLERANCE; } } else { tolerance = POINTCLOUD_TOLERANCE; } } // result.last(); // int size = result.getRow(); // result.beforeFirst(); ResultSet result = db.getViewpoints(spatialcontext); HashMap<String, Double> visibility = new HashMap<>(); while (result.next()) { // user.setStatus(result.getRow() * 90 / size); String filename = Config.getProperty("pointcloudpath") + result.getString("filename"); Transformation t = new Transformation(result.getString("pointcloud_trans")); t.transform(new Transformation(result.getString("viewpoint_trans"))); feature.transform(t.inverse()); visibility.put(result.getString("name"), feature.visible(tolerance, filename)); feature.transform(t); } return visibility; }