亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? mgrspoint.java

?? openmap java寫(xiě)的開(kāi)源數(shù)字地圖程序. 用applet實(shí)現(xiàn),可以像google map 那樣放大縮小地圖.
?? JAVA
?? 第 1 頁(yè) / 共 3 頁(yè)
字號(hào):
    public int getAccuracy() {        return accuracy;    }    /**     * Set the UTM parameters from a MGRS string.     *      * @param mgrsString an UPPERCASE coordinate string is expected.     */    protected void decode(String mgrsString) throws NumberFormatException {        if (mgrsString == null || mgrsString.length() == 0) {            throw new NumberFormatException("MGRSPoint coverting from nothing");        }        int length = mgrsString.length();        String hunK = null;        StringBuffer sb = new StringBuffer();        char testChar;        int i = 0;        // get Zone number        while (!Character.isLetter(testChar = mgrsString.charAt(i))) {            if (i > 2) {                throw new NumberFormatException("MGRSPoint bad conversion from: "                        + mgrsString);            }            sb.append(testChar);            i++;        }        zone_number = Integer.parseInt(sb.toString());        if (i == 0 || i + 3 > length) {            // A good MGRS string has to be 4-5 digits long,            // ##AAA/#AAA at least.            throw new NumberFormatException("MGRSPoint bad conversion from: "                    + mgrsString);        }        zone_letter = mgrsString.charAt(i++);        // Should we check the zone letter here? Why not.        if (zone_letter <= 'A' || zone_letter == 'B' || zone_letter == 'Y'                || zone_letter >= 'Z' || zone_letter == 'I'                || zone_letter == 'O') {            throw new NumberFormatException("MGRSPoint zone letter "                    + (char) zone_letter + " not handled: " + mgrsString);        }        hunK = mgrsString.substring(i, i += 2);        int set = get100kSetForZone(zone_number);        float east100k = getEastingFromChar(hunK.charAt(0), set);        float north100k = getNorthingFromChar(hunK.charAt(1), set);        // We have a bug where the northing may be 2000000 too low.        // How        // do we know when to roll over?        while (north100k < getMinNorthing(zone_letter)) {            north100k += 2000000;        }        // calculate the char index for easting/northing separator        int remainder = length - i;        if (remainder % 2 != 0) {            throw new NumberFormatException("MGRSPoint has to have an even number \nof digits after the zone letter and two 100km letters - front \nhalf for easting meters, second half for \nnorthing meters"                    + mgrsString);        }        int sep = remainder / 2;        float sepEasting = 0f;        float sepNorthing = 0f;        if (sep > 0) {            if (DEBUG)                Debug.output(" calculating e/n from " + mgrs.substring(i));            float accuracyBonus = 100000f / (float) Math.pow(10, sep);            if (DEBUG)                Debug.output(" calculated accuracy bonus as  " + accuracyBonus);            String sepEastingString = mgrsString.substring(i, i + sep);            if (DEBUG)                Debug.output(" parsed easting as " + sepEastingString);            sepEasting = Float.parseFloat(sepEastingString) * accuracyBonus;            String sepNorthingString = mgrsString.substring(i + sep);            if (DEBUG)                Debug.output(" parsed northing as " + sepNorthingString);            sepNorthing = Float.parseFloat(sepNorthingString) * accuracyBonus;        }        easting = sepEasting + east100k;        northing = sepNorthing + north100k;        if (DEBUG) {            Debug.output("Decoded " + mgrsString + " as zone number: "                    + zone_number + ", zone letter: " + zone_letter                    + ", easting: " + easting + ", northing: " + northing                    + ", 100k: " + hunK);        }    }    /**     * Create the mgrs string based on the internal UTM settings,     * using the accuracy set in the MGRSPoint.     */    protected void resolve() {        resolve(accuracy);    }    /**     * Create the mgrs string based on the internal UTM settings.     *      * @param digitAccuracy The number of digits to use for the     *        northing and easting numbers. 5 digits reflect a 1 meter     *        accuracy, 4 - 10 meter, 3 - 100 meter, 2 - 1000 meter, 1 -     *        10,000 meter.     */    protected void resolve(int digitAccuracy) {        if (zone_letter == 'Z') {            mgrs = "Latitude limit exceeded";        } else {            StringBuffer sb = new StringBuffer(zone_number + ""                    + (char) zone_letter                    + get100kID(easting, northing, zone_number));            StringBuffer seasting = new StringBuffer(Integer.toString((int) easting));            StringBuffer snorthing = new StringBuffer(Integer.toString((int) northing));            if (DEBUG) {                Debug.output(" Resolving MGRS from easting: " + seasting                        + " derived from " + easting + ", and northing: "                        + snorthing + " derived from " + northing);            }            while (digitAccuracy + 1 > seasting.length()) {                seasting.insert(0, '0');            }            // We have to be careful here, the 100k values shouldn't            // be            // used for calculating stuff here.            while (digitAccuracy + 1 > snorthing.length()) {                snorthing.insert(0, '0');            }            while (snorthing.length() > 6) {                snorthing.deleteCharAt(0);            }            if (DEBUG) {                Debug.output(" -- modified easting: " + seasting                        + " and northing: " + snorthing);            }            try {                sb.append(seasting.substring(1, digitAccuracy + 1)                        + snorthing.substring(1, digitAccuracy + 1));                mgrs = sb.toString();            } catch (IndexOutOfBoundsException ioobe) {                mgrs = null;            }        }    }    /**     * Given a UTM zone number, figure out the MGRS 100K set it is in.     */    protected int get100kSetForZone(int i) {        int set = i % NUM_100K_SETS;        if (set == 0)            set = NUM_100K_SETS;        return set;    }    /**     * Provided so that extensions to this class can provide different     * origin letters, in case of different ellipsoids. The int[]     * represents all of the first letters in the bottom left corner     * of each set box, as shown in an MGRS 100K box layout.     */    protected int[] getOriginColumnLetters() {        return originColumnLetters;    }    /**     * Provided so that extensions to this class can provide different     * origin letters, in case of different ellipsoids. The int[]     * represents all of the first letters in the bottom left corner     * of each set box, as shown in an MGRS 100K box layout.     */    protected void setOriginColumnLetters(int[] letters) {        originColumnLetters = letters;    }    /**     * Provided so that extensions to this class can provide different     * origin letters, in case of different ellipsoids. The int[]     * represents all of the second letters in the bottom left corner     * of each set box, as shown in an MGRS 100K box layout.     */    protected int[] getOriginRowLetters() {        return originRowLetters;    }    /**     * Provided so that extensions to this class can provide different     * origin letters, in case of different ellipsoids. The int[]     * represents all of the second letters in the bottom left corner     * of each set box, as shown in an MGRS 100K box layout.     */    protected void setOriginRowLetters(int[] letters) {        originRowLetters = letters;    }    /**     * Get the two letter 100k designator for a given UTM easting,     * northing and zone number value.     */    protected String get100kID(float easting, float northing, int zone_number) {        int set = get100kSetForZone(zone_number);        int setColumn = ((int) easting / 100000);        int setRow = ((int) northing / 100000) % 20;        return get100kID(setColumn, setRow, set);    }    /**     * Given the first letter from a two-letter MGRS 100k zone, and     * given the MGRS table set for the zone number, figure out the     * easting value that should be added to the other, secondary     * easting value.     */    protected float getEastingFromChar(char e, int set) {        int baseCol[] = getOriginColumnLetters();        // colOrigin is the letter at the origin of the set for the        // column        int curCol = baseCol[set - 1];        float eastingValue = 100000f;        boolean rewindMarker = false;        while (curCol != e) {            curCol++;            if (curCol == I)                curCol++;            if (curCol == O)                curCol++;            if (curCol > Z) {                if (rewindMarker) {                    throw new NumberFormatException("Bad character: " + e);                }                curCol = A;                rewindMarker = true;            }            eastingValue += 100000f;        }        if (DEBUG) {            Debug.output("Easting value for " + (char) e + " from set: " + set                    + ", col: " + curCol + " is " + eastingValue);        }        return eastingValue;    }    /**     * Given the second letter from a two-letter MGRS 100k zone, and     * given the MGRS table set for the zone number, figure out the     * northing value that should be added to the other, secondary     * northing value. You have to remember that Northings are     * determined from the equator, and the vertical cycle of letters     * mean a 2000000 additional northing meters. This happens approx.     * every 18 degrees of latitude. This method does *NOT* count any     * additional northings. You have to figure out how many 2000000     * meters need to be added for the zone letter of the MGRS     * coordinate.     *      * @param n second letter of the MGRS 100k zone     * @param set the MGRS table set number, which is dependent on the     *        UTM zone number.     */    protected float getNorthingFromChar(char n, int set) {        if (n > 'V') {            throw new NumberFormatException("MGRSPoint given invalid Northing "                    + n);        }        int baseRow[] = getOriginRowLetters();        // rowOrigin is the letter at the origin of the set for the        // column        int curRow = baseRow[set - 1];        float northingValue = 0f;        boolean rewindMarker = false;        while (curRow != n) {            curRow++;            if (curRow == I)                curRow++;            if (curRow == O)                curRow++;            // fixing a bug making whole application hang in this loop            // when 'n' is a wrong character            if (curRow > V) {                if (rewindMarker) { // making sure that this loop ends                    throw new NumberFormatException("Bad character: " + n);                }                curRow = A;                rewindMarker = true;            }            northingValue += 100000f;        }        if (DEBUG) {            Debug.output("Northing value for " + (char) n + " from set: " + set                    + ", row: " + curRow + " is " + northingValue);        }        return northingValue;    }    /**     * Get the two-letter MGRS 100k designator given information     * translated from the UTM northing, easting and zone number.     *      * @param setColumn the column index as it relates to the MGRS     *        100k set spreadsheet, created from the UTM easting.     *        Values are 1-8.     * @param setRow the row index as it relates to the MGRS 100k set     *        spreadsheet, created from the UTM northing value. Values     *        are from 0-19.     * @param set the set block, as it relates to the MGRS 100k set     *        spreadsheet, created from the UTM zone. Values are from     *        1-60.     * @return two letter MGRS 100k code.     */    protected String get100kID(int setColumn, int setRow, int set) {        if (DEBUG) {            System.out.println("set (" + set + ") column = " + setColumn                    + ", row = " + setRow);        }        int baseCol[] = getOriginColumnLetters();        int baseRow[] = getOriginRowLetters();        // colOrigin and rowOrigin are the letters at the origin of        // the set        int colOrigin = baseCol[set - 1];        int rowOrigin = baseRow[set - 1];        if (DEBUG) {            System.out.println("starting at = " + (char) colOrigin                    + (char) rowOrigin);        }        // colInt and rowInt are the letters to build to return        int colInt = colOrigin + setColumn - 1;        int rowInt = rowOrigin + setRow;        boolean rollover = false;        if (colInt > Z) {            colInt = colInt - Z + A - 1;            rollover = true;            if (DEBUG)                System.out.println("rolling over col, new value: "                        + (char) colInt);        }

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
午夜精品成人在线| 在线观看日韩国产| 国内精品视频一区二区三区八戒 | 天天av天天翘天天综合网| 亚洲欧美综合色| 亚洲人快播电影网| 夜夜亚洲天天久久| 偷偷要91色婷婷| 日韩影院免费视频| 久久精品免费观看| 国产69精品久久99不卡| 成人涩涩免费视频| 一本到高清视频免费精品| 欧美性色黄大片| 欧美高清视频在线高清观看mv色露露十八| 欧美日韩精品高清| 日韩情涩欧美日韩视频| 久久免费的精品国产v∧| 国产精品无人区| 一区二区三区四区在线| 日韩精品一区第一页| 精品一区二区三区蜜桃| 成人性生交大合| 色婷婷av一区二区三区大白胸| 欧美羞羞免费网站| 日韩无一区二区| 中文字幕国产精品一区二区| 亚洲日本中文字幕区| 天天操天天综合网| 国产曰批免费观看久久久| 91在线视频免费观看| 欧美日韩国产美女| 久久综合五月天婷婷伊人| 亚洲婷婷国产精品电影人久久| 亚洲地区一二三色| 国产成人亚洲精品狼色在线| 色婷婷亚洲一区二区三区| 欧美一区二区女人| 国产精品美女一区二区三区| 亚洲va欧美va国产va天堂影院| 麻豆视频一区二区| 99久久久久免费精品国产| 欧美高清视频一二三区 | 亚洲国产精品成人综合| 一区二区免费视频| 国产一区二区三区电影在线观看| 99免费精品视频| 欧美一级欧美三级在线观看| 国产精品嫩草久久久久| 日韩成人伦理电影在线观看| av中文字幕亚洲| 精品国产成人系列| 亚洲国产视频在线| 成人av在线资源网| 欧美成人一级视频| 亚洲一卡二卡三卡四卡| 国产精品亚洲午夜一区二区三区 | 51精品秘密在线观看| 国产精品久久久久久久蜜臀| 蜜臀av性久久久久蜜臀aⅴ| av成人老司机| 久久久青草青青国产亚洲免观| 一区二区三区四区不卡在线| 国内精品久久久久影院一蜜桃| 在线免费av一区| 国产精品乱码久久久久久| 蜜桃精品在线观看| 精品视频免费在线| 国产精品福利在线播放| 国产乱淫av一区二区三区| 88在线观看91蜜桃国自产| 亚洲欧洲国产日韩| 国产高清久久久久| 日韩三级视频在线观看| 亚洲午夜一区二区三区| 91视频你懂的| 国产精品久久久久久久裸模| 国产精品综合网| 日韩免费观看2025年上映的电影| 亚洲午夜三级在线| 波多野结衣在线一区| 久久久三级国产网站| 激情成人综合网| 日韩欧美国产三级| 免费av网站大全久久| 欧美日韩卡一卡二| 亚洲国产精品一区二区www | 久久亚洲精华国产精华液| 日本视频在线一区| 欧美日韩亚洲另类| 亚洲综合色噜噜狠狠| 91在线观看免费视频| 国产精品电影一区二区| 99久久综合国产精品| 亚洲欧美在线观看| www.亚洲色图.com| 国产精品不卡在线| 97精品久久久午夜一区二区三区| 中文字幕乱码亚洲精品一区 | 国产欧美日本一区视频| 久久精品国产99国产精品| 日韩欧美成人激情| 国模冰冰炮一区二区| 久久久久久久久久看片| 国产一区二区不卡在线| 久久久.com| 成人app下载| 亚洲精品五月天| 欧美日韩午夜精品| 天堂av在线一区| 欧美一级免费观看| 国产乱码字幕精品高清av| 亚洲国产精品av| 色妞www精品视频| 亚洲国产美女搞黄色| 91精选在线观看| 久久99国产精品成人| 日本一区二区三区四区| 91香蕉视频污| 亚洲电影视频在线| 精品日韩一区二区三区| 国产成人在线视频免费播放| 欧美国产精品专区| 在线免费精品视频| 美女mm1313爽爽久久久蜜臀| 2020国产精品自拍| 色综合久久综合网欧美综合网 | 99九九99九九九视频精品| 尤物av一区二区| 欧美一区二区三区四区五区| 国产一区在线看| 亚洲欧美日韩小说| 91精品在线观看入口| 国产乱码字幕精品高清av | 蓝色福利精品导航| 日本一区二区三区国色天香| 91久久国产综合久久| 久久成人麻豆午夜电影| 国产精品伦理在线| 337p亚洲精品色噜噜| 国产成人精品网址| 午夜精品福利视频网站| 国产欧美一区二区精品秋霞影院| 一本久久综合亚洲鲁鲁五月天| 日韩电影在线看| 国产精品电影一区二区| 欧美一级搡bbbb搡bbbb| bt7086福利一区国产| 奇米777欧美一区二区| 国产精品传媒视频| 精品久久久网站| 在线观看成人免费视频| 国产精品1024| 日韩精品亚洲专区| 成人欧美一区二区三区小说| 日韩久久久精品| 在线观看精品一区| 成人午夜看片网址| 日韩在线观看一区二区| 自拍偷拍国产精品| 久久综合色之久久综合| 欧美日韩不卡在线| av男人天堂一区| 激情欧美一区二区三区在线观看| 亚洲激情网站免费观看| 国产欧美一区二区三区沐欲| 欧美精品一级二级三级| 一本大道久久精品懂色aⅴ| 国产专区综合网| 三级在线观看一区二区| 一区二区高清视频在线观看| 中文字幕精品综合| 久久青草国产手机看片福利盒子 | 亚洲欧美激情小说另类| 久久蜜桃一区二区| 91麻豆精品国产91久久久 | 91精品麻豆日日躁夜夜躁| 色哦色哦哦色天天综合| 成人av资源在线观看| 国产一区二区免费在线| 日本在线播放一区二区三区| 亚洲综合自拍偷拍| 国产精品高潮久久久久无| 国产欧美久久久精品影院| www久久久久| 精品国产91乱码一区二区三区| 欧美裸体bbwbbwbbw| 91成人免费电影| 91视频国产资源| 色综合激情五月| 成人av电影在线网| 丰满少妇在线播放bd日韩电影| 久久99国产精品久久| 麻豆精品一区二区| 日韩av在线播放中文字幕| 午夜精品福利一区二区蜜股av| 亚洲福利国产精品| 亚洲www啪成人一区二区麻豆| 亚洲一区二区四区蜜桃| 亚洲在线视频免费观看|