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

📄 dtedcoveragemanager.java

📁 openmap java写的开源数字地图程序. 用applet实现,可以像google map 那样放大缩小地图.
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
        if (proj instanceof Cylindrical)            LineType = OMGraphic.LINETYPE_STRAIGHT;        else            LineType = OMGraphic.LINETYPE_RHUMB;        if (startx > endx) {            ret1 = getCoverageRects(startx, starty, 179, endy, LineType);            ret2 = getCoverageRects(-180, starty, endx, endy, LineType);            ret1[0].add(ret2[0]);            ret1[1].add(ret2[1]);            ret1[2].add(ret2[2]);            return ret1;        } else            return getCoverageRects(startx, starty, endx, endy, LineType);    }    /**     * Method looks at the coverage arrays, and returns the applicable     * rectangles representing the frame coverages.     *      * @param startx the western-most longitude.     * @param starty the southern-most latitude.     * @param endx the eastern-most longitude.     * @param endy the northern-most latitude.     * @param LineType the type of line to use on the rectangles -     *        Cylindrical projections can use straight lines, but     *        other projections should use Rhumb lines.     * @return an array of lists, one for each level of dted data.     */    public OMGraphicList[] getCoverageRects(int startx, int starty, int endx,                                            int endy, int LineType) {        OMGraphicList gl0 = new OMGraphicList();        OMGraphicList gl1 = new OMGraphicList();        OMGraphicList gl2 = new OMGraphicList();        OMGraphicList[] ret = new OMGraphicList[3];        ret[0] = gl0;        ret[1] = gl1;        ret[2] = gl2;        OMRect rect;        for (int lat = starty; lat <= endy; lat++) {            for (int lon = startx; lon <= endx; lon++) {                if (level0Frames[lat + 90][lon + 180]) {                    rect = new OMRect((float) lat, (float) lon, (float) lat + 1, (float) lon + 1, LineType);                    rect.setLinePaint(level0Color);                    if (fillRects)                        rect.setFillPaint(level0Color);                    gl0.add(rect);                }                if (level1Frames[lat + 90][lon + 180]) {                    rect = new OMRect((float) lat + .1f, (float) lon + .1f, (float) lat + .9f, (float) lon + .9f, LineType);                    rect.setLinePaint(level1Color);                    if (fillRects)                        rect.setFillPaint(level1Color);                    gl1.add(rect);                }                if (level2Frames[lat + 90][lon + 180]) {                    rect = new OMRect((float) lat + .2f, (float) lon + .2f, (float) lat + .8f, (float) lon + .8f, LineType);                    rect.setLinePaint(level2Color);                    if (fillRects)                        rect.setFillPaint(level2Color);                    gl2.add(rect);                }            }        }        return ret;    }    /**     * Read in the coverage file, which is basically three     * byte[180][360] written out to file. These are converted to     * booleans.     *      * @param coverage the path to the file.     * @return whether the file was read! True means yes.     */    public boolean readCoverageFile(String coverage) {        try {            Debug.message("dtedcov",                    "DTEDCoverageManager: Reading coverage file - " + coverage);            BinaryBufferedFile binFile = new BinaryBufferedFile(coverage);            level0Frames = new boolean[180][];            level1Frames = new boolean[180][];            level2Frames = new boolean[180][];            byte[] row = new byte[360];            for (int level = 0; level < 3; level++) {                for (int lat = 0; lat < 180; lat++) {                    binFile.read(row);                    if (level == 0)                        level0Frames[lat] = convertBytesToBooleans(row);                    else if (level == 1)                        level1Frames[lat] = convertBytesToBooleans(row);                    else                        level2Frames[lat] = convertBytesToBooleans(row);                }            }            return true;        } catch (IOException ioe) {            Debug.message("dtedcov",                    "DTEDCoverageManager: No coverage file - will create one at "                            + coverage);            level0Frames = null;            level1Frames = null;            level2Frames = null;            return false;        }    }    /**     * Read in the coverage file, which is basically three     * byte[180][360] written out to file. These are converted to     * booleans.     *      * @param urlCov an url to a coverage file, if available. Should     *        be null if not used.     * @param coverage the path to the file.     * @return whether the file was read! True means yes.     */    protected boolean readCoverageFile(String urlCov, String coverage) {        URL url = null;        BufferedInputStream bin = null;        BinaryBufferedFile binFile = null;        level0Frames = null;        level1Frames = null;        level2Frames = null;        if (urlCov != null) {            Debug.message("dtedcov",                    "DTEDCoverageManager: Reading coverage file from URL - "                            + urlCov);            try {                url = new URL(urlCov);                bin = new BufferedInputStream(url.openStream());            } catch (MalformedURLException mue) {                System.err.println("DTEDCoverageManager: Weird URL given : \""                        + urlCov + "\"");                bin = null;            } catch (java.io.IOException e) {                System.err.println("DTEDCoverageManager: Unable to read coverage file at \""                        + urlCov + "\"");                bin = null;            }        }        if (bin == null && coverage != null) {            try {                Debug.message("dtedcov",                        "DTEDCoverageManager: Reading coverage file - "                                + coverage);                binFile = new BinaryBufferedFile(coverage);            } catch (java.io.IOException e) {                System.err.println("DTEDCoverageManager: Unable to read coverage file at \""                        + coverage + "\"");            }        }        if (bin != null || binFile != null) {            try {                level0Frames = new boolean[180][];                level1Frames = new boolean[180][];                level2Frames = new boolean[180][];                byte[] row = new byte[360];                for (int level = 0; level < 3; level++) {                    for (int lat = 0; lat < 180; lat++) {                        if (bin != null) {                            for (int k = 0; k < row.length; k++) {                                row[k] = (byte) bin.read();                            }                        } else                            binFile.read(row);                        if (level == 0)                            level0Frames[lat] = convertBytesToBooleans(row);                        else if (level == 1)                            level1Frames[lat] = convertBytesToBooleans(row);                        else                            level2Frames[lat] = convertBytesToBooleans(row);                    }                }                return true;            } catch (IOException ioe) {                System.err.println("DTECoverageLayer: Error reading coverage.");                level0Frames = null;                level1Frames = null;                level2Frames = null;            }        }        if (level0Frames == null) {            System.err.println("DTEDCoverageManager: Error reading coverage file - will try to create a valid one at "                    + coverage);        }        return false;    }    /**     * Convert the bytes read in to the file to the booleans used in     * the coverage arrays.     *      * @param row array of bytes     * @return array of booleans     */    protected boolean[] convertBytesToBooleans(byte[] row) {        boolean[] ret = new boolean[row.length];        for (int i = 0; i < row.length; i++)            ret[i] = (row[i] == 0) ? false : true;        return ret;    }    /**     * Convert the booleans to write out to bytes.     *      * @param row the input array of booleans     * @return an array of bytes.     */    protected byte[] convertBooleansToBytes(boolean[] row) {        byte[] ret = new byte[row.length];        for (int i = 0; i < row.length; i++)            ret[i] = (row[i]) ? (byte) 1 : (byte) 0;        return ret;    }    /**     * Write the coverage summary to a file.     *      * @param covFilename the file name to write the arrays into.     */    public void writeCoverageFile(String covFilename) {        try {            Debug.message("dtedcov",                    "DTEDCoverageManager: Writing coverage summary file...");            FileOutputStream binFile = new FileOutputStream(covFilename);            byte[] row;            for (int level = 0; level < 3; level++) {                if (Debug.debugging("dtedcov")) {                    Debug.output("-- level " + level);                }                for (int lat = 0; lat < 180; lat++) {                    if (level == 0) {                        row = convertBooleansToBytes(level0Frames[lat]);                    } else if (level == 1) {                        row = convertBooleansToBytes(level1Frames[lat]);                    } else {                        row = convertBooleansToBytes(level2Frames[lat]);                    }                    binFile.write(row);                    if (Debug.debugging("dtedcov")) {                        Debug.output("--- latitude " + lat);                    }                }            }            binFile.close();        } catch (IOException ioe) {            System.err.println("DTEDCoverageManager: Error writing coverage file!");        }    }    /**     * Add a ProgressListener that will display build progress.     */    public void addProgressListener(ProgressListener list) {        progressSupport.addProgressListener(list);    }    /**     * Remove a ProgressListener that displayed build progress.     */    public void removeProgressListener(ProgressListener list) {        progressSupport.removeProgressListener(list);    }    /**     * Clear all progress listeners.     */    public void clearProgressListeners() {        progressSupport.removeAll();    }    /**     * Fire an build update to progress listeners.     *      * @param frameNumber the current frame count     * @param totalFrames the total number of frames.     */    protected void fireProgressUpdate(int type, String task, int frameNumber,                                      int totalFrames) {        progressSupport.fireUpdate(type, task, totalFrames, frameNumber);    }}

⌨️ 快捷键说明

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