Skip to content

Commit

Permalink
Merge pull request #1035 from DenverCoder544/printout_coordinates
Browse files Browse the repository at this point in the history
Printout coordinates
  • Loading branch information
ZakarFin authored Dec 15, 2023
2 parents 5918465 + 84e2eee commit a6fdb79
Show file tree
Hide file tree
Showing 7 changed files with 304 additions and 69 deletions.
Original file line number Diff line number Diff line change
@@ -1,20 +1,22 @@
package fi.nls.oskari.control.data;

import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.IOException;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Optional;
import javax.imageio.ImageIO;

import fi.nls.oskari.annotation.OskariActionRoute;
import fi.nls.oskari.control.ActionException;
import fi.nls.oskari.control.ActionParameters;
import fi.nls.oskari.control.ActionParamsException;
import fi.nls.oskari.control.feature.AbstractWFSFeaturesHandler;
import fi.nls.oskari.domain.User;
import fi.nls.oskari.domain.map.OskariLayer;
import fi.nls.oskari.log.LogFactory;
import fi.nls.oskari.log.Logger;
import fi.nls.oskari.service.ServiceException;
import fi.nls.oskari.util.ConversionHelper;
import fi.nls.oskari.util.JSONHelper;
import fi.nls.oskari.util.ResponseHelper;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import org.opengis.referencing.FactoryException;
import org.oskari.print.PrintService;
import org.oskari.print.request.PrintFormat;
Expand All @@ -24,19 +26,16 @@
import org.oskari.service.user.UserLayerService;
import org.oskari.service.wfs.client.OskariWFSClient;

import fi.nls.oskari.annotation.OskariActionRoute;
import fi.nls.oskari.control.ActionException;
import fi.nls.oskari.control.ActionParameters;
import fi.nls.oskari.control.ActionParamsException;
import fi.nls.oskari.control.feature.AbstractWFSFeaturesHandler;
import fi.nls.oskari.domain.User;
import fi.nls.oskari.domain.map.OskariLayer;
import fi.nls.oskari.log.LogFactory;
import fi.nls.oskari.log.Logger;
import fi.nls.oskari.service.ServiceException;
import fi.nls.oskari.util.ConversionHelper;
import fi.nls.oskari.util.ResponseHelper;
import fi.nls.oskari.util.JSONHelper;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Optional;

@OskariActionRoute("GetPrint")
public class GetPrintHandler extends AbstractWFSFeaturesHandler {
Expand All @@ -49,6 +48,9 @@ public class GetPrintHandler extends AbstractWFSFeaturesHandler {
private static final String PARM_MAPLAYERS = "mapLayers";
private static final String PARM_FORMAT = "format";
private static final String PARM_SRSNAME = "srs";

private static final String PARM_COORDINATE_SRSNAME = "coordinateSRS";

private static final String PARM_TILES = "tiles";
private static final String PARM_TITLE = "pageTitle";
private static final String PARM_SCALE = "pageScale";
Expand All @@ -62,6 +64,8 @@ public class GetPrintHandler extends AbstractWFSFeaturesHandler {
private static final String PARM_FORMATTED_TIME = "formattedTime";
private static final String PARM_TIMESERIES_LABEL = "timeseriesPrintLabel";

private static final String PARM_COORDINATE_INFO = "coordinateInfo";

private static final String ALLOWED_FORMATS = Arrays.toString(new String[] {
PrintFormat.PDF.contentType, PrintFormat.PNG.contentType
});
Expand Down Expand Up @@ -132,6 +136,13 @@ private PrintRequest createPrintRequest(ActionParameters params)
} catch (FactoryException e) {
throw new ActionParamsException("Invalid value for param: " + PARM_SRSNAME);
}

try {
request.setPrintoutSrsName(params.getRequiredParam(PARM_COORDINATE_SRSNAME));
} catch (FactoryException e) {
throw new ActionParamsException("Invalid value for param: " + PARM_COORDINATE_SRSNAME);
}

request.setResolution(params.getRequiredParamDouble(PARM_RESOLUTION));
request.setTitle(params.getHttpParam(PARM_TITLE));
request.setShowLogo(params.getHttpParam(PARM_LOGO, true));
Expand All @@ -142,10 +153,11 @@ private PrintRequest createPrintRequest(ActionParameters params)
request.setTime(params.getHttpParam(PARM_TIME, ""));
request.setFormattedTime(params.getHttpParam(PARM_FORMATTED_TIME, ""));
request.setTimeseriesLabel(params.getHttpParam(PARM_TIMESERIES_LABEL, ""));

request.setCoordinateInfo(params.getHttpParam(PARM_COORDINATE_INFO, ""));
setPagesize(params, request);
setCoordinates(params.getRequiredParam(PARM_COORD), request);
setFormat(params.getRequiredParam(PARM_FORMAT), request);
request.setLang(params.getHttpParam("lang", "en"));

List<PrintLayer> layers = getLayers(params);

Expand Down Expand Up @@ -442,6 +454,7 @@ private void handlePDF(PrintRequest pr, ActionParameters params) throws ActionEx
printService.getPDF(pr, doc);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
doc.save(baos);

ResponseHelper.writeResponse(params, 200, PrintFormat.PDF.contentType, baos);
} catch (IOException | ServiceException e) {
throw new ActionException("Failed to create PDF", e);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ public class ProjectionHelper implements PointTransformer {
private static Logger log = LogFactory.getLogger(ProjectionHelper.class);
private static String LONG_SRS_NAME_BASE = "urn:ogc:def:crs:EPSG::";

private static final String UNIT_DEGREES = "deg";
public static Point transformPoint(final double lon, final double lat, final String sourceSRS, final String targetSRS) {
return transformPoint(new Point(lon, lat), sourceSRS, targetSRS);
}
Expand Down Expand Up @@ -125,6 +126,9 @@ public static boolean isFirstAxisNorth(CoordinateReferenceSystem crs) {
crs.getCoordinateSystem().getAxis(0).getDirection().absolute() == AxisDirection.DISPLAY_UP;
}

public static boolean isUnitDegrees(CoordinateReferenceSystem crs) {
return UNIT_DEGREES.equals(crs.getCoordinateSystem().getAxis(0).getUnit().toString());
}
/**
* Return epsg short
* urn:ogc:def:crs:EPSG::32635 --> EPSG:32635
Expand Down
Loading

0 comments on commit a6fdb79

Please sign in to comment.