/** * * Copyright 2012-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.extractors.xcoord; import java.util.Map; import org.opensextant.geodesy.UTM; /** * * @author ubaldino */ public class UTMParser { /** * */ public static final char UTM_NORTH = 'N'; /** * */ public static final char UTM_SOUTH = 'S'; /** * TODO: Needs lots of false positive filtering mainly using context. Did * text indicate this is UTM? Where there units, e.g., "m"? * * Those things are currently optional. * * @param text * @param elements * @return */ public static UTM parseUTM(String text, 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 e = elements.get("UTMEasting"); String n = elements.get("UTMNorthing"); Integer E = Integer.parseInt(e); Integer N = Integer.parseInt(n); UTM utm = new UTM(ZZ, h, E.doubleValue(), N.doubleValue()); return utm; } }