private void addGeographicTransformation(GeodeticDatum targetDatum, CoordinateOperation coordOp, boolean addInverseOp) { if (geographicTransformations.get(targetDatum) == null) { geographicTransformations.put(targetDatum, new HashSet<CoordinateOperation>()); } else if (geographicTransformations.get(targetDatum).contains(coordOp)) return; geographicTransformations.get(targetDatum).add(coordOp); if (addInverseOp) { try { targetDatum.addGeographicTransformation(this, coordOp.inverse(), false); } catch (NonInvertibleOperationException e) { e.printStackTrace(); } } }
@Override public GeocentricTransformation inverse() throws NonInvertibleOperationException { CoordinateOperation[] inverse_sequence = new CoordinateOperation[sequence.length]; for (int i = 0; i < sequence.length; i++) { // If one of the CoordinateOperation is not invertible, it // will throw a NonInvertibleOperationException. inverse_sequence[sequence.length - i - 1] = sequence[i].inverse(); //if (inverse_sequence[sequence.length-i-1] == null) return null; } return new GeocentricTransformationSequence(getIdentifier(), inverse_sequence, precision); }
CoordinateOperation op = result.get(i); try { if (op.inverse().equals(result.get(i-1))) { result.remove(i); result.remove(i-1);
|| op1.equals(op2.inverse())) { lst1.remove(lst1.size() - 1); lst2.remove(0);
/** * Creates the inverse CoordinateOperation. * @return * @throws org.cts.op.NonInvertibleOperationException */ @Override public CoordinateOperation inverse() throws NonInvertibleOperationException { CoordinateOperation[] inverse_sequence = new CoordinateOperation[sequence.length]; for (int i = 0; i < sequence.length; i++) { // If one of the CoordinateOperation is not invertible, it // will throw a NonInvertibleOperationException. inverse_sequence[sequence.length - i - 1] = sequence[i].inverse(); //if (inverse_sequence[sequence.length-i-1] == null) return null; } return new CoordinateOperationSequence(getIdentifier(), inverse_sequence, precision); }
} else { addGeographicTransformation(targetDatum, new GeocentricTransformationSequence( new Identifier(CoordinateOperation.class), op1, op2.inverse()), true);