private EXGeographicBoundingBox getGeographicBoundingBox(Envelope env, String epsgCode) { Envelope newEnvelope; if ("EPSG:4326".equals(epsgCode)) { newEnvelope = env; } else { try { GeometryFactory gf = new GeometryFactory(); Polygon poly = (Polygon) gf.toGeometry(env); ST_Transform transformFunction = new ST_Transform(); CoordinateReferenceSystem inputCRS = DataSourceFactory.getCRSFactory().getCRS(epsgCode); Value val = transformFunction.evaluate( null, ValueFactory.createValue(poly, inputCRS), ValueFactory.createValue("EPSG:4326")); newEnvelope = val.getAsGeometry().getEnvelopeInternal(); } catch (FunctionException fe) { return getDummyGeographic(); } catch (CRSException ex) { return getDummyGeographic(); } } EXGeographicBoundingBox ret = new EXGeographicBoundingBox(); ret.setEastBoundLongitude(newEnvelope.getMaxX()); ret.setWestBoundLongitude(newEnvelope.getMinX()); ret.setNorthBoundLatitude(newEnvelope.getMaxY()); ret.setSouthBoundLatitude(newEnvelope.getMinY()); return ret; }
private EXGeographicBoundingBox getDummyGeographic() { EXGeographicBoundingBox ret = new EXGeographicBoundingBox(); ret.setEastBoundLongitude(EAST); ret.setWestBoundLongitude(WEST); ret.setNorthBoundLatitude(NORTH); ret.setSouthBoundLatitude(SOUTH); return ret; }