/* * * Copyright 2009-2013 The MITRE Corporation. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * ************************************************************************** * NOTICE * This software was produced for the U. S. Government under Contract No. * W15P7T-12-C-F600, and is subject to the Rights in Noncommercial Computer * Software and Noncommercial Computer Software Documentation Clause * 252.227-7014 (JUN 1995) * * (c) 2012 The MITRE Corporation. All Rights Reserved. * ************************************************************************** */ package org.opensextant.regex.geo; import java.util.Map; import org.opensextant.geodesy.UTM; /** * *. * * @author ubaldino */ public class UTMParser { /** * Log object private static final Logger LOGGER = * LoggerFactory.getLogger(UTMParser.class); */ public static final char UTM_NORTH = 'N'; public static final char UTM_SOUTH = 'S'; private UTMParser() { } public static UTM parseUTM(Map<String, String> elements) { String z = elements.get("UTMZone"); String z1 = elements.get("UTMZoneZZ"); // 0-5\d String z2 = elements.get("UTMZoneZ"); // \d if (z == null) { z = z1 != null ? z1 : z2; } if (z == null) { return null; } int zz = Integer.parseInt(z); String b = elements.get("UTMBand"); if (b == null) { return null; } // TODO: is 'n' valid for UTM band? char h = b.charAt(0); if (h != UTM_NORTH && h != UTM_SOUTH) { h = UTM.getHemisphere(h); } String easting = elements.get("UTMEasting"); String northing = elements.get("UTMNorthing"); Integer eastingValue = Integer.parseInt(easting); Integer northingValue = Integer.parseInt(northing); return new UTM(zz, h, eastingValue.doubleValue(), northingValue.doubleValue()); } }