⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dtedframeutil.java

📁 openmap java写的开源数字地图程序. 用applet实现,可以像google map 那样放大缩小地图.
💻 JAVA
字号:
// **********************************************************************// // <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/dataAccess/dted/DTEDFrameUtil.java,v $// $RCSfile: DTEDFrameUtil.java,v $// $Revision: 1.2.2.2 $// $Date: 2004/10/14 18:26:41 $// $Author: dietrick $// // **********************************************************************package com.bbn.openmap.dataAccess.dted;/** * This class does the conversions that are required for converting * latitudes and longitudes into filenames, and from string values of * latitudes and longitudes from within a DTED file to float values. */public class DTEDFrameUtil {    /**     * Conversion of string found in DTED file to float value.     *      * @param text_lat the String representation of the latitude, from     *        the file.     * @return the latitude in decimal degrees.     */    public static float stringToLat(String text_lat) {        int offset = 0;        int hemisphere = 1;        String s_seconds;        if (text_lat.length() > 7 && text_lat.charAt(6) != '.')            offset = 1;        char[] contents = text_lat.toCharArray();        String s_degrees = String.valueOf(contents, offset, 2);        String s_minutes = String.valueOf(contents, 2 + offset, 2);        if (text_lat.charAt(6 + offset) == '.') {            s_seconds = String.valueOf(contents, 4 + offset, 4);            if (text_lat.charAt(8 + offset) == 'S')                hemisphere = -1;        } else {            s_seconds = String.valueOf(contents, 4 + offset, 2);            if (text_lat.charAt(6 + offset) == 'S')                hemisphere = -1;        }        float result = Float.valueOf(s_degrees).floatValue()                + (Float.valueOf(s_minutes).floatValue() / 60.0F)                + (Float.valueOf(s_seconds).floatValue() / 3600.0F);        result *= hemisphere;        return result;    }    /**     * Conversion of a string value of a longitude to a float.     *      * @param text_lon the longitude String representation, out of a     *        DTED file.     * @return the longitude in decimal degrees.     */    public static float stringToLon(String text_lon) {        int hemisphere = 1;        String s_seconds;        char[] contents = text_lon.toCharArray();        String s_degrees = String.valueOf(contents, 0, 3);        String s_minutes = String.valueOf(contents, 3, 2);        if (text_lon.charAt(7) == '.') {            s_seconds = String.valueOf(contents, 5, 4);            if (text_lon.charAt(9) == 'W')                hemisphere = -1;        } else {            s_seconds = String.valueOf(contents, 5, 2);            if (text_lon.charAt(7) == 'W')                hemisphere = -1;        }        float result = Float.valueOf(s_degrees).floatValue()                + (Float.valueOf(s_minutes).floatValue() / 60.0F)                + (Float.valueOf(s_seconds).floatValue() / 3600.0F);        result *= hemisphere;        return result;    }    /**     * Conversion of a float latitude value and DTED level to a DTED     * filename. DTED filenames are based on these two factors -<n/s>     * <value>.dt{0,1} DTED Level 0 files are named .dt0. Level 1 and     * higher are named .dt1, rather than .dt{level}     *      * @param lat latitude in decimal degrees.     * @param level the DTED level.     * @return part of the DTED directory path that longitude     *         contributes to.     */    public static String latToFileString(float lat, int level) {        String direction;        if (lat >= 0) {            direction = "n";            lat = (float) Math.floor(lat);        } else {            direction = "s";            lat = (float) Math.ceil(lat * -1);        }        //      int ilat = new Float(lat).intValue();        //      result = new String(direction + ilat + ".dt" + level);        // The two lines above wrongly manages lat < 10. It generates        // n5.dt0 instead of n05.dt0 - sokolov@system.ecology.su.se -        // 14        // April 1999        java.text.DecimalFormat fd = new java.text.DecimalFormat("00");        String result = direction + fd.format(lat) + ".dt" + level;        return result;    }    /**     * Conversion of a float longitude value to a DTED parent     * directory of frame files. DTED parent directories are based on     * latitude -<w/e><value>.     *      * @param lon longitude in decimal degrees.     * @return part of the DTED directory path that longitude     *         contributes to.     */    public static String lonToFileString(float lon) {        String result, direction;        if (lon >= 0) {            direction = "e";            lon = (float) Math.floor(lon);        } else {            direction = "w";            lon = (float) Math.ceil(lon * -1);        }        //      int ilon = new Float(lon).intValue();        //      if (ilon > 100) result = new String(direction + ilon);        //      else result = new String(direction + "0" + ilon);        // The three lines above wrongly manages lon < 10. It        // generates e05 instead of e005 -        // sokolov@system.ecology.su.se        // - 14 April 1999        java.text.DecimalFormat fd = new java.text.DecimalFormat("000");        result = direction + fd.format(lon);        return result;    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -