private List<LatLonPoint> calcLatLon1DBoundaryPoints(int maxPointsInYEdge, int maxPointsInXEdge) {
if (!isLatLon1D) {
throw new UnsupportedOperationException("Coordinate system is not 1D latitude/longitude.");
}
checkMaxPointsInEdges(maxPointsInYEdge, maxPointsInXEdge);
int numYtotal = latAxis.getNcoords();
int numXtotal = lonAxis.getNcoords();
int strideY = calcStride(numYtotal, maxPointsInYEdge);
int strideX = calcStride(numXtotal, maxPointsInXEdge);
List<LatLonPoint> points = new LinkedList<>();
for (int i = 0; i < numXtotal; i += strideX) {
points.add(new LatLonPointImpl(latAxis.getCoordEdgeFirst(), lonAxis.getCoordEdge1(i)));
}
for (int j = 0; j < numYtotal; j += strideY) {
points.add(new LatLonPointImpl(latAxis.getCoordEdge1(j), lonAxis.getCoordEdgeLast()));
}
for (int i = numXtotal - 1; i >= 0; i -= strideX) {
points.add(new LatLonPointImpl(latAxis.getCoordEdgeLast(), lonAxis.getCoordEdge2(i)));
}
for (int j = numYtotal - 1; j >= 0; j -= strideY) {
points.add(new LatLonPointImpl(latAxis.getCoordEdge2(j), lonAxis.getCoordEdgeFirst()));
}
assertNotExceedingMaxBoundaryPoints(points.size(), maxPointsInYEdge, maxPointsInXEdge);
return points;
}