use of com.revolsys.geometry.cs.unit.TimeUnit in project com.revolsys.open by revolsys.
the class EpsgCoordinateSystems method loadUnitOfMeasure.
private static void loadUnitOfMeasure() {
try (ChannelReader reader = newChannelReader("unitOfMeasure")) {
if (reader != null) {
while (true) {
final int id = reader.getInt();
final byte type = reader.getByte();
final int baseId = reader.getInt();
final boolean deprecated = readBoolean(reader);
final double conversionFactorB = reader.getDouble();
final double conversionFactorC = reader.getDouble();
double conversionFactor;
if (Double.isFinite(conversionFactorB)) {
if (Double.isFinite(conversionFactorC)) {
conversionFactor = conversionFactorB / conversionFactorC;
} else {
conversionFactor = conversionFactorB;
}
} else {
conversionFactor = conversionFactorC;
}
final String name = reader.getStringUtf8ByteCount();
final EpsgAuthority authority = new EpsgAuthority(id);
UnitOfMeasure unit;
switch(type) {
case 0:
final ScaleUnit baseScaleUnit = (ScaleUnit) UNIT_BY_ID.get(baseId);
unit = new ScaleUnit(name, baseScaleUnit, conversionFactor, authority, deprecated);
break;
case 1:
final LinearUnit baseLinearUnit = (LinearUnit) UNIT_BY_ID.get(baseId);
if (id == 9001) {
unit = new Metre(name, baseLinearUnit, conversionFactor, authority, deprecated);
} else {
unit = new LinearUnit(name, baseLinearUnit, conversionFactor, authority, deprecated);
}
break;
case 2:
final AngularUnit baseAngularUnit = (AngularUnit) UNIT_BY_ID.get(baseId);
if (id == 9102) {
unit = new Degree(name, baseAngularUnit, conversionFactor, authority, deprecated);
} else if (id == 9105) {
unit = new Grad(name, baseAngularUnit, conversionFactor, authority, deprecated);
} else if (id == 9110) {
unit = new DegreeSexagesimalDMS(name, baseAngularUnit, conversionFactor, authority, deprecated);
} else {
unit = new AngularUnit(name, baseAngularUnit, conversionFactor, authority, deprecated);
}
break;
case 3:
final TimeUnit baseTimeUnit = (TimeUnit) UNIT_BY_ID.get(baseId);
unit = new TimeUnit(name, baseTimeUnit, conversionFactor, authority, deprecated);
break;
default:
throw new IllegalArgumentException("Invalid unitId=" + id);
}
UNIT_BY_NAME.put(name, unit);
UNIT_BY_ID.put(id, unit);
}
}
} catch (final NoSuchResourceException e) {
} catch (final WrappedException e) {
if (Exceptions.isException(e, EOFException.class)) {
} else {
throw e;
}
}
}
Aggregations