// ********************************************************************** // // <copyright> // // BBN Technologies // 10 Moulton Street // Cambridge, MA 02138 // (617) 873-8000 // // Copyright (C) BBNT Solutions LLC. All rights reserved. // // </copyright> // ********************************************************************** // // $Source: /cvs/distapps/openmap/src/openmap/com/bbn/openmap/layer/vpf/TileDirectory.java,v $ // $RCSfile: TileDirectory.java,v $ // $Revision: 1.3 $ // $Date: 2004/10/14 18:06:09 $ // $Author: dietrick $ // // ********************************************************************** package com.bbn.openmap.layer.vpf; /** * This class maps latitudes and longitudes to a particular tile * directory. */ public class TileDirectory { /** the name of the subdirectory */ final private String tilename; /** the boundaries */ final private float westlon, southlat, eastlon, northlat; /** the tile ID of this object */ final private int tileID; /** * Construct a TileDirectory with a path and boundaries. * * @param path the directory path * @param n the northern boundary * @param s the southern boundary * @param e the eastern boundary * @param w the western boundary * @param tileID our tile identifier */ public TileDirectory(String path, int tileID, float n, float s, float e, float w) { StringBuffer strbuf = new StringBuffer(path.toLowerCase()); // strbuf.append(File.separator); strbuf.append("/"); // in Java land with the BinaryFile. tilename = strbuf.toString().intern(); this.tileID = tileID; if (e < w) { e += 360.0; } westlon = w; eastlon = e; northlat = n; southlat = s; } /** * Construct an untiled TileDirectory. Since this object does not * have valid boundaries, it is an error to call inRegion on it * * @see #inRegion(float, float, float, float) */ public TileDirectory() { tilename = ""; this.tileID = -1; westlon = eastlon = northlat = southlat = Float.NaN; } /** * Return the path for this tile * * @return a string path */ public String getPath() { return tilename; } /** * Return the tile identifier for this tile * * @return the tile id (-1 for untiled coverage) */ public int getTileID() { return tileID; } /** * Return a string describing ourselves * * @return a string usable as a directory path component */ public String toString() { return (tilename); } /** * Figure out if our region overlaps the passed in region * * @return <code>true</code> if the regions overlap * @param n the northern boundary * @param s the southern boundary * @param e the eastern boundary * @param w the western boundary */ public boolean inRegion(float n, float s, float e, float w) { // take care of the easy case first... if ((s > northlat) || (n < southlat)) { return false; } if (e < w) { e += 360.0f; } if ((w > eastlon) || (e < westlon)) { return false; } return true; } }