org.geolatte.geom.crs.CartesianCoordinateSystem3D Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of geolatte-geom Show documentation
Show all versions of geolatte-geom Show documentation
This geoLatte-geom library offers a geometry model that conforms to the OGC Simple Features for SQL
specification.
The newest version!
package org.geolatte.geom.crs;
import org.geolatte.geom.C3D;
import org.geolatte.geom.C3DM;
import java.util.Arrays;
import java.util.List;
/**
* Created by Karel Maesen, Geovise BVBA on 28/11/14.
*/
public class CartesianCoordinateSystem3D extends CoordinateSystem {
private final static List REQUIRED_AXIS_NORMAL_ORDER = Arrays.asList(0, 1, 2);
public CartesianCoordinateSystem3D(StraightLineAxis firstAxis, StraightLineAxis secondAxis,
StraightLineAxis thirdAxis) {
super(firstAxis, secondAxis, thirdAxis);
checkAxes();
}
private void checkAxes() {
List order = getAxisNormalOrder();
if (!order.containsAll(REQUIRED_AXIS_NORMAL_ORDER)) {
throw new IllegalArgumentException("Require order 0, 1 and 2 axes");
}
}
@Override
public Class getPositionClass() {
return C3D.class;
}
@Override
public CoordinateSystem> merge(OneDimensionCoordinateSystem> coordinateSystem) {
CoordinateSystemAxis axis = coordinateSystem.getAxis();
return extend(axis);
}
@Override
public CoordinateSystem extend(CoordinateSystemAxis axis) {
if (axis instanceof MeasureStraightLineAxis) {
return new CartesianCoordinateSystem3DM((StraightLineAxis) getAxis(0), (StraightLineAxis) getAxis(1),
(VerticalStraightLineAxis) getAxis(2), (MeasureStraightLineAxis) axis);
}
throw new UnsupportedOperationException();
}
@Override
public boolean hasZ() {
return true;
}
@Override
public boolean hasM() {
return false;
}
}