/** Computes the zone from a meridian in the zone. */ @Override public int zone(final double φ, final double λ) { int zone = super.zone(φ, λ); switch (zone) { /* * Between 56° and 64°, zone 32 is widened to 9° at the expense of zone 31 to accommodate Norway. * Between 72° and 84°, zones 33 and 35 are widened to 12° to accommodate Svalbard. To compensate, * zones 31 and 37 are widened to 9° and zones 32, 34, and 36 are eliminated. * In this switch statement, only the zones that are reduced or eliminated needs to appear. */ case 31: if (isNorway (φ)) {if (λ >= 3) zone++; } break; // 3° is zone 31 central meridian. case 32: if (isSvalbard(φ)) {if (λ >= 9) zone++; else zone--;} break; // 9° is zone 32 central meridian. case 34: if (isSvalbard(φ)) {if (λ >= 21) zone++; else zone--;} break; // 21° is zone 34 central meridian. case 36: if (isSvalbard(φ)) {if (λ >= 33) zone++; else zone--;} break; // 33° is zone 36 central meridian. } return zone; }
/** Computes the zone from a meridian in the zone. */ @Override public int zone(final double φ, final double λ) { int zone = super.zone(φ, λ); switch (zone) { /* * Between 56° and 64°, zone 32 is widened to 9° at the expense of zone 31 to accommodate Norway. * Between 72° and 84°, zones 33 and 35 are widened to 12° to accommodate Svalbard. To compensate, * zones 31 and 37 are widened to 9° and zones 32, 34, and 36 are eliminated. * In this switch statement, only the zones that are reduced or eliminated needs to appear. */ case 31: if (isNorway (φ)) {if (λ >= 3) zone++; } break; // 3° is zone 31 central meridian. case 32: if (isSvalbard(φ)) {if (λ >= 9) zone++; else zone--;} break; // 9° is zone 32 central meridian. case 34: if (isSvalbard(φ)) {if (λ >= 21) zone++; else zone--;} break; // 21° is zone 34 central meridian. case 36: if (isSvalbard(φ)) {if (λ >= 33) zone++; else zone--;} break; // 33° is zone 36 central meridian. } return zone; }
/** Indicates whether the given zone needs to be handled in a special way for the given latitude. */ @Override public boolean isSpecialCase(final int zone, final double φ) { if (zone >= 31 && zone <= 37) { return isSvalbard(φ) || (zone <= 32 && isNorway(φ)); } return false; }
/** Indicates whether the given zone needs to be handled in a special way for the given latitude. */ @Override public boolean isSpecialCase(final int zone, final double φ) { if (zone >= 31 && zone <= 37) { return isSvalbard(φ) || (zone <= 32 && isNorway(φ)); } return false; }