gcpsreader.java
来自「world wind java sdk 源码」· Java 代码 · 共 352 行
JAVA
352 行
/* Copyright (C) 2001, 2008 United States Government as represented bythe Administrator of the National Aeronautics and Space Administration.All Rights Reserved.*/package gov.nasa.worldwind.formats.gcps;import gov.nasa.worldwind.util.*;/** * @author dcollins * @version $Id: GCPSReader.java 9280 2009-03-10 18:55:46Z dcollins $ */public class GCPSReader{ private String delimiter = "[\\s]"; public GCPSReader() { } public String getDelimiter() { return this.delimiter; } public void setDelimiter(String delimiter) { if (delimiter == null || delimiter.length() == 0) { String message = Logging.getMessage("nullValue.DelimiterIsNullOrEmpty"); Logging.logger().severe(message); throw new IllegalArgumentException(message); } this.delimiter = delimiter; } public static java.io.File getGCPSFileFor(java.io.File file) { if (file == null) { String message = Logging.getMessage("nullValue.FileIsNull"); Logging.logger().severe(message); throw new IllegalArgumentException(message); } java.io.File parent = file.getParentFile(); if (parent == null) return null; String tabFilename = WWIO.replaceSuffix(file.getName(), ".gcps"); // The file already has a TAB extension. Rather than returning a self reference, we return null to deonte that // a TAB file does not associate with itself. if (file.getName().equalsIgnoreCase(tabFilename)) { return null; } // Find the first sibling with the matching filename, and TAB extension. for (java.io.File child : parent.listFiles()) { if (!child.equals(file) && child.getName().equalsIgnoreCase(tabFilename)) { return child; } } return null; } public boolean canRead(java.io.File file) { if (file == null || !file.exists() || !file.canRead()) return false; java.io.FileReader fileReader = null; try { fileReader = new java.io.FileReader(file); RasterControlPointList controlPoints = new RasterControlPointList(); return this.doCanRead(fileReader, controlPoints); } catch (Exception ignored) { return false; } finally { //noinspection EmptyCatchBlock try { if (fileReader != null) fileReader.close(); } catch (java.io.IOException e) { } } } public boolean canRead(String path) { if (path == null) return false; Object streamOrException = WWIO.getFileOrResourceAsStream(path, this.getClass()); if (streamOrException == null || streamOrException instanceof Exception) return false; java.io.InputStream stream = (java.io.InputStream) streamOrException; try { java.io.InputStreamReader streamReader = new java.io.InputStreamReader(stream); RasterControlPointList controlPoints = new RasterControlPointList(); return this.doCanRead(streamReader, controlPoints); } catch (Exception ignored) { return false; } finally { try { stream.close(); } catch (java.io.IOException e) { String message = Logging.getMessage("generic.ExceptionClosingStream", stream); Logging.logger().severe(message); } } } public RasterControlPointList read(java.io.File file) throws java.io.IOException { if (file == null) { String message = Logging.getMessage("nullValue.FileIsNull"); Logging.logger().severe(message); throw new IllegalArgumentException(message); } if (!file.exists()) { String message = Logging.getMessage("generic.FileNotFound", file); Logging.logger().severe(message); throw new IllegalArgumentException(message); } if (!file.canRead()) { String message = Logging.getMessage("generic.FileNoReadPermission", file); Logging.logger().severe(message); throw new IllegalArgumentException(message); } java.io.FileReader fileReader = null; try { fileReader = new java.io.FileReader(file); RasterControlPointList controlPoints = new RasterControlPointList(); this.doRead(fileReader, controlPoints); return controlPoints; } finally { try { if (fileReader != null) fileReader.close(); } catch (java.io.IOException e) { String message = Logging.getMessage("generic.ExceptionClosingStream", file); Logging.logger().severe(message); } } } public RasterControlPointList read(String path) throws java.io.IOException { if (path == null) { String message = Logging.getMessage("nullValue.PathIsNull"); Logging.logger().severe(message); throw new IllegalArgumentException(message); } Object streamOrException = WWIO.getFileOrResourceAsStream(path, this.getClass()); if (streamOrException == null || streamOrException instanceof Exception) { String message = Logging.getMessage("generic.ExceptionAttemptingToReadFile", (streamOrException != null) ? streamOrException : path); Logging.logger().severe(message); throw new IllegalArgumentException(message); } java.io.InputStream stream = (java.io.InputStream) streamOrException; try { java.io.InputStreamReader streamReader = new java.io.InputStreamReader(stream); RasterControlPointList controlPoints = new RasterControlPointList(); this.doRead(streamReader, controlPoints); return controlPoints; } finally { try { stream.close(); } catch (java.io.IOException e) { String message = Logging.getMessage("generic.ExceptionClosingStream", stream); Logging.logger().severe(message); } } } protected boolean doCanRead(java.io.Reader reader, RasterControlPointList controlPoints) { if (reader == null) { String message = Logging.getMessage("nullValue.ReaderIsNull"); Logging.logger().severe(message); throw new IllegalArgumentException(message); } if (controlPoints == null) { String message = Logging.getMessage("nullValue.RasterControlPointListIsNull"); Logging.logger().severe(message); throw new IllegalArgumentException(message); } try { java.io.BufferedReader br = new java.io.BufferedReader(reader); String line = this.nextLine(br); java.util.regex.Pattern pattern = this.createPattern(); return pattern.matcher(line).matches(); } catch (Exception e) { return false; } } protected void doRead(java.io.Reader reader, RasterControlPointList controlPoints) throws java.io.IOException { if (reader == null) { String message = Logging.getMessage("nullValue.ReaderIsNull"); Logging.logger().severe(message); throw new IllegalArgumentException(message); } if (controlPoints == null) { String message = Logging.getMessage("nullValue.RasterControlPointListIsNull"); Logging.logger().severe(message); throw new IllegalArgumentException(message); } java.io.BufferedReader br = new java.io.BufferedReader(reader); this.readControlPoints(br, controlPoints); } protected void readControlPoints(java.io.BufferedReader reader, RasterControlPointList controlPoints) throws java.io.IOException { if (reader == null) { String message = Logging.getMessage("nullValue.ReaderIsNull"); Logging.logger().severe(message); throw new IllegalArgumentException(message); } if (controlPoints == null) { String message = Logging.getMessage("nullValue.RasterControlPointListIsNull"); Logging.logger().severe(message); throw new IllegalArgumentException(message); } java.util.regex.Pattern pattern = this.createPattern(); String line; java.util.regex.Matcher matcher; while ((line = this.nextLine(reader)) != null && (matcher = pattern.matcher(line)).matches()) { String swx = matcher.group(1); String swy = matcher.group(2); String srx = matcher.group(3); String sry = matcher.group(4); Double wx = parseDouble(swx); Double wy = parseDouble(swy); Double rx = parseDouble(srx); Double ry = parseDouble(sry); if (wx != null && wy != null && rx != null && ry != null) { RasterControlPointList.ControlPoint controlPoint = new RasterControlPointList.ControlPoint(wx, wy, rx, ry); controlPoints.add(controlPoint); } } } protected java.util.regex.Pattern createPattern() { String delim = this.getDelimiter(); StringBuilder sb = new StringBuilder(); sb.append("(.+)"); sb.append(delim).append("+"); sb.append("(.+)"); sb.append(delim).append("+"); sb.append("(.+)"); sb.append(delim).append("+"); sb.append("(.+)"); return java.util.regex.Pattern.compile(sb.toString()); } protected String nextLine(java.io.BufferedReader reader) throws java.io.IOException { // Read until the next non-whitespace line. String line; while ((line = reader.readLine()) != null && line.trim().length() == 0) { } return (line != null) ? line.trim() : null; } private static Double parseDouble(String s) { if (s == null || s.length() == 0) return null; try { return Double.parseDouble(s); } catch (NumberFormatException e) { return null; } }}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?