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

📄 levelset.java

📁 world wind java sdk 源码
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
    }    public final Level getFirstLevel()    {        return this.getLevel(0);    }    public final Level getLastLevel()    {        return this.getLevel(this.getNumLevels() - 1);    }    public final Level getNextToLastLevel()    {        return this.getLevel(this.getNumLevels() > 1 ? this.getNumLevels() - 2 : 0);    }    public final Level getLastLevel(Sector sector)    {        if (sector == null)        {            String msg = Logging.getMessage("nullValue.SectorIsNull");            Logging.logger().severe(msg);            throw new IllegalArgumentException(msg);        }        if (!this.getSector().intersects(sector))            return null;        Level level = this.getLevel(this.getNumLevels() - 1);        if (this.sectorLevelLimits != null)            for (SectorResolution sr : this.sectorLevelLimits)            {                if (sr.sector.intersects(sector) && sr.levelNumber <= level.getLevelNumber())                {                    level = this.getLevel(sr.levelNumber);                    break;                }            }        return level;    }    public final Level getLastLevel(Angle latitude, Angle longitude)    {        Level level = this.getLevel(this.getNumLevels() - 1);        if (this.sectorLevelLimits != null)            for (SectorResolution sr : this.sectorLevelLimits)            {                if (sr.sector.contains(latitude, longitude) && sr.levelNumber <= level.getLevelNumber())                {                    level = this.getLevel(sr.levelNumber);                    break;                }            }        return level;    }    public final boolean isFinalLevel(int levelNum)    {        return levelNum == this.getNumLevels() - 1;    }    public final boolean isLevelEmpty(int levelNumber)    {        return this.levels.get(levelNumber).isEmpty();    }    private int numColumnsInLevel(Level level)    {        int levelDelta = level.getLevelNumber() - this.getFirstLevel().getLevelNumber();        double twoToTheN = Math.pow(2, levelDelta);        return (int) (twoToTheN * this.numLevelZeroColumns);    }    private long getTileNumber(Tile tile)    {        return tile.getRow() * this.numColumnsInLevel(tile.getLevel()) + tile.getColumn();    }    private long getTileNumber(TileKey tileKey)    {        return tileKey.getRow() * this.numColumnsInLevel(this.getLevel(tileKey.getLevelNumber())) + tileKey.getColumn();    }    /**     * Instructs the level set that a tile is likely to be absent.     *     * @param tile The tile to mark as having an absent resource.     *     * @throws IllegalArgumentException if <code>tile</code> is null     */    public final void markResourceAbsent(Tile tile)    {        if (tile == null)        {            String msg = Logging.getMessage("nullValue.TileIsNull");            Logging.logger().severe(msg);            throw new IllegalArgumentException(msg);        }        tile.getLevel().markResourceAbsent(this.getTileNumber(tile));    }    /**     * Indicates whether a tile has been marked as absent.     *     * @param tileKey The key of the tile in question.     *     * @return <code>true</code> if the tile is marked absent, otherwise <code>false</code>.     *     * @throws IllegalArgumentException if <code>tile</code> is null     */    public final boolean isResourceAbsent(TileKey tileKey)    {        if (tileKey == null)        {            String msg = Logging.getMessage("nullValue.TileKeyIsNull");            Logging.logger().severe(msg);            throw new IllegalArgumentException(msg);        }        Level level = this.getLevel(tileKey.getLevelNumber());        return level.isEmpty() || level.isResourceAbsent(this.getTileNumber(tileKey));    }    /**     * Indicates whether a tile has been marked as absent.     *     * @param tile The tile in question.     *     * @return <code>true</code> if the tile is marked absent, otherwise <code>false</code>.     *     * @throws IllegalArgumentException if <code>tile</code> is null     */    public final boolean isResourceAbsent(Tile tile)    {        if (tile == null)        {            String msg = Logging.getMessage("nullValue.TileIsNull");            Logging.logger().severe(msg);            throw new IllegalArgumentException(msg);        }        return tile.getLevel().isEmpty() || tile.getLevel().isResourceAbsent(this.getTileNumber(tile));    }    /**     * Removes the absent-tile mark associated with a tile, if one is associatied.     *     * @param tile The tile to unmark.     *     * @throws IllegalArgumentException if <code>tile</code> is null     */    public final void unmarkResourceAbsent(Tile tile)    {        if (tile == null)        {            String msg = Logging.getMessage("nullValue.TileIsNull");            Logging.logger().severe(msg);            throw new IllegalArgumentException(msg);        }        tile.getLevel().unmarkResourceAbsent(this.getTileNumber(tile));    }    // Create the tile corresponding to a specified key.    public Sector computeSectorForKey(TileKey key)    {        if (key == null)        {            String msg = Logging.getMessage("nullValue.KeyIsNull");            Logging.logger().severe(msg);            throw new IllegalArgumentException(msg);        }        Level level = this.getLevel(key.getLevelNumber());        // Compute the tile's SW lat/lon based on its row/col in the level's data set.        Angle dLat = level.getTileDelta().getLatitude();        Angle dLon = level.getTileDelta().getLongitude();        Angle latOrigin = this.tileOrigin.getLatitude();        Angle lonOrigin = this.tileOrigin.getLongitude();        Angle minLatitude = Tile.computeRowLatitude(key.getRow(), dLat, latOrigin);        Angle minLongitude = Tile.computeColumnLongitude(key.getColumn(), dLon, lonOrigin);        return new Sector(minLatitude, minLatitude.add(dLat), minLongitude, minLongitude.add(dLon));    }    // Create the tile corresponding to a specified key.    public Tile createTile(TileKey key)    {        if (key == null)        {            String msg = Logging.getMessage("nullValue.KeyIsNull");            Logging.logger().severe(msg);            throw new IllegalArgumentException(msg);        }        Level level = this.getLevel(key.getLevelNumber());        // Compute the tile's SW lat/lon based on its row/col in the level's data set.        Angle dLat = level.getTileDelta().getLatitude();        Angle dLon = level.getTileDelta().getLongitude();        Angle latOrigin = this.tileOrigin.getLatitude();        Angle lonOrigin = this.tileOrigin.getLongitude();        Angle minLatitude = Tile.computeRowLatitude(key.getRow(), dLat, latOrigin);        Angle minLongitude = Tile.computeColumnLongitude(key.getColumn(), dLon, lonOrigin);        Sector tileSector = new Sector(minLatitude, minLatitude.add(dLat), minLongitude, minLongitude.add(dLon));        return new Tile(tileSector, level, key.getRow(), key.getColumn());    }    public void setExpiryTime(long expiryTime)    {        for (Level level : this.levels)        {            level.setExpiryTime(expiryTime);        }    }}

⌨️ 快捷键说明

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