/** * @return * @see GeodeticCRS#toGeographicCoordinateConverter() */ @Override public CoordinateOperation toGeographicCoordinateConverter() { List<CoordinateOperation> ops = new ArrayList<CoordinateOperation>(); for (int i = 0; i < 2; i++) { if (getCoordinateSystem().getAxis(i).getDirection() == SOUTH || getCoordinateSystem().getAxis(i).getDirection() == WEST) { ops.add(new OppositeCoordinate(i)); } } // Convert from source unit to radians ops.add(UnitConversion.createUnitConverter(getCoordinateSystem().getUnit(0), RADIAN)); // switch from LON/LAT to LAT/LON coordinate if necessary if (getCoordinateSystem().getAxis(0).getDirection() == EAST || getCoordinateSystem().getAxis(0).getDirection() == WEST) { ops.add(CoordinateSwitch.SWITCH_LAT_LON); } // Add a third value to transform the geographic2D coord into a // geographic3D coord ops.add(ChangeCoordinateDimension.TO3D); return new CoordinateOperationSequence(new Identifier( CoordinateOperationSequence.class), ops); }
/** * @return * @see GeodeticCRS#fromGeographicCoordinateConverter() */ @Override public CoordinateOperation fromGeographicCoordinateConverter() { List<CoordinateOperation> ops = new ArrayList<CoordinateOperation>(); // Remove the third value to transform the geographic3D coord into a // geographic2D coord ops.add(ChangeCoordinateDimension.TO2D); // switch from LON/LAT to LAT/LON coordinate if necessary if (getCoordinateSystem().getAxis(0).getDirection() == EAST || getCoordinateSystem().getAxis(0).getDirection() == WEST) { ops.add(CoordinateSwitch.SWITCH_LAT_LON); } // Convert from radian to this coordinate system's units ops.add(UnitConversion.createUnitConverter(RADIAN, getCoordinateSystem().getUnit(0))); for (int i = 0; i < 2; i++) { if (getCoordinateSystem().getAxis(i).getDirection() == SOUTH || getCoordinateSystem().getAxis(i).getDirection() == WEST) { ops.add(new OppositeCoordinate(i)); } } return new CoordinateOperationSequence(new Identifier( CoordinateOperationSequence.class), ops); }
/** * @return * @see GeodeticCRS#fromGeographicCoordinateConverter() */ @Override public CoordinateOperation fromGeographicCoordinateConverter() { List<CoordinateOperation> ops = new ArrayList<CoordinateOperation>(); // Remove the third value to transform the geographic3D coord into a // geographic2D coord ops.add(ChangeCoordinateDimension.TO2D); // Projection ops.add(projection); // switch easting/northing coordinate if necessary if (getCoordinateSystem().getAxis(0).getDirection() == NORTH || getCoordinateSystem().getAxis(0).getDirection() == SOUTH) { ops.add(CoordinateSwitch.SWITCH_LAT_LON); } // Unit conversion if (getCoordinateSystem().getUnit(0) != METER) { ops.add(UnitConversion.createUnitConverter(METER, getCoordinateSystem().getUnit(0))); } for (int i = 0; i < 2; i++) { if (getCoordinateSystem().getAxis(i).getDirection() == SOUTH || getCoordinateSystem().getAxis(i).getDirection() == WEST) { ops.add(new OppositeCoordinate(i)); } } return new CoordinateOperationSequence(new Identifier( CoordinateOperationSequence.class), ops); }
ops.add(UnitConversion.createUnitConverter(getCoordinateSystem().getUnit(0), METER));
/** * @return * @see GeodeticCRS#fromGeographicCoordinateConverter() */ @Override public CoordinateOperation fromGeographicCoordinateConverter() { List<CoordinateOperation> ops = new ArrayList<CoordinateOperation>(); // switch from LON/LAT to LAT/LON coordinate if necessary if (getCoordinateSystem().getAxis(0).getDirection() == EAST || getCoordinateSystem().getAxis(0).getDirection() == WEST) { ops.add(CoordinateSwitch.SWITCH_LAT_LON); } // Convert from radian to this coordinate system's units ops.add(UnitConversion.createUnitConverter(RADIAN, getCoordinateSystem().getUnit(0), METER, getCoordinateSystem().getUnit(2))); for (int i = 0; i < 3; i++) { if (getCoordinateSystem().getAxis(i).getDirection() == SOUTH || getCoordinateSystem().getAxis(i).getDirection() == WEST || getCoordinateSystem().getAxis(i).getDirection() == DOWN) { ops.add(new OppositeCoordinate(i)); } } return new CoordinateOperationSequence(new Identifier( CoordinateOperationSequence.class), ops); }
/** * @return * @see GeodeticCRS#toGeographicCoordinateConverter() */ @Override public CoordinateOperation toGeographicCoordinateConverter() { List<CoordinateOperation> ops = new ArrayList<CoordinateOperation>(); for (int i = 0; i < 3; i++) { if (getCoordinateSystem().getAxis(i).getDirection() == SOUTH || getCoordinateSystem().getAxis(i).getDirection() == WEST || getCoordinateSystem().getAxis(i).getDirection() == DOWN) { ops.add(new OppositeCoordinate(i)); } } // Convert from source unit to radians ops.add(UnitConversion.createUnitConverter(getCoordinateSystem().getUnit(0), RADIAN, getCoordinateSystem().getUnit(2), METER)); // switch from LON/LAT to LAT/LON coordinate if necessary if (getCoordinateSystem().getAxis(0).getDirection() == EAST || getCoordinateSystem().getAxis(0).getDirection() == WEST) { ops.add(CoordinateSwitch.SWITCH_LAT_LON); } return new CoordinateOperationSequence(new Identifier( CoordinateOperationSequence.class), ops); }
ops.add(UnitConversion.createUnitConverter(getCoordinateSystem().getUnit(0), Unit.RADIAN, getCoordinateSystem().getUnit(2), Unit.METER)); ops.add(UnitConversion.createUnitConverter(getCoordinateSystem().getUnit(0), Unit.METER, getCoordinateSystem().getUnit(2), Unit.METER)); ops = cleverAdd(ops, UnitConversion.createUnitConverter(Unit.RADIAN, Unit.DEGREE, Unit.METER, Unit.METER)); ops.add(z_transfo); ops.add(UnitConversion.createUnitConverter(Unit.DEGREE, Unit.RADIAN, Unit.METER, Unit.METER)); ops.add(UnitConversion.createUnitConverter(Unit.RADIAN, Unit.DEGREE, Unit.METER, Unit.METER)); ops.add(UnitConversion.createUnitConverter(Unit.DEGREE, Unit.RADIAN, Unit.METER, Unit.METER)); ops.add(h_op.inverse()); new CoordinateSwitch(4, 5), // X', Y', Z, X, Y, Z' h_op, UnitConversion.createUnitConverter(Unit.RADIAN, Unit.DEGREE, Unit.METER, Unit.METER), LoadMemorizeCoordinate.loadZ, MemorizeCoordinate.memoZ, z_transfo, UnitConversion.createUnitConverter(Unit.DEGREE, Unit.RADIAN, Unit.METER, Unit.METER),
ops.add(UnitConversion.createUnitConverter(Unit.RADIAN, Unit.DEGREE, Unit.METER, Unit.METER)); ops.add(UnitConversion.createUnitConverter(Unit.RADIAN, Unit.DEGREE, Unit.METER, Unit.METER)); ops = cleverAdd(ops, UnitConversion.createUnitConverter(Unit.RADIAN, getCoordinateSystem().getUnit(0), Unit.METER, getCoordinateSystem().getUnit(2))); ops = cleverAdd(ops, UnitConversion.createUnitConverter(Unit.METER, getCoordinateSystem().getUnit(0), Unit.METER, getCoordinateSystem().getUnit(2)));