worldwind java对WMS/WMST服务的支持

前文讲到worldwind java对Tile服务的加载点击查看,实际上,worldwind java对WMS服务/WMST服务的支持方式与对tile服务的支持类似。步骤如下:

  • 重写makeLevels,构建图层所要的信息LevelSet
  • 构建TileUrlBuilder,以建立不同tile的url服务地址

makeLevels的例子如下:

private static AVList makeLevels(TileUrlBuilder ub,String labelName,int numEmptyLevel,int numLevels,double dLevelZeroLat,double dLevelZeroLon,String strFormatSuffix,String serviceURL,int iTileWidth,int iTileHeight)
    {
        AVList params = new AVListImpl();

        params.setValue(AVKey.TILE_WIDTH, iTileWidth);              
        params.setValue(AVKey.TILE_HEIGHT, iTileHeight);
        params.setValue(AVKey.DATA_CACHE_NAME, "Earth/"+labelName); 
        params.setValue(AVKey.SERVICE, serviceURL);
        params.setValue(AVKey.DATASET_NAME, labelName);
        params.setValue(AVKey.FORMAT_SUFFIX, strFormatSuffix);      
        params.setValue(AVKey.NUM_LEVELS, numLevels);               
        params.setValue(AVKey.NUM_EMPTY_LEVELS, numEmptyLevel);     
        params.setValue(AVKey.LEVEL_ZERO_TILE_DELTA, new LatLon(Angle.fromDegrees(dLevelZeroLat), Angle.fromDegrees(dLevelZeroLon)));
        params.setValue(AVKey.SECTOR, Sector.FULL_SPHERE);  
        params.setValue(AVKey.TILE_URL_BUILDER, ub);

        return params;
    }

上面的函数中,最核心的仍然是TileUrlBuilder,这里以天地图的数据源为例,说明WMST服务的加载。以TileUrlBuilderCustom为基础,构建TileUrlBuilderCustomTianDiTu,代码如下:

public class TileUrlBuilderCustomTianDiTu extends TileUrlBuilderCustom {

    public TileUrlBuilderCustomTianDiTu(String urlFormat,String serverPre) {
        super(urlFormat,serverPre);
    }

    @Override
    protected double computeTileUrlTMS(double lat) {
        return lat;
    }

    @Override
    protected String computeTileUrl(String strTemp, int x, int y, int zoom) {
        return "";
    }

    public URL getURL(Tile tile, String imageFormat) throws MalformedURLException {
        int row = (int) Math.pow(2, (tile.getLevelNumber() + 2)) - 1 - tile.getRow();
        int col = tile.getColumn();
        int level = tile.getLevelNumber()+3;

        String strTemp1 = computeTileUrlRandom(urlFormat,col,row,level);

        strTemp1 = strTemp1.replace(strXTag,String.valueOf(col));
        strTemp1 = strTemp1.replace(strYTag,String.valueOf(row));
        strTemp1 = strTemp1.replace(strZTag,String.valueOf(level));

        URL url = new URL(strTemp1);
        return url;
    }
}

天地图数据的载入

TileUrlBuilder tb = new TileUrlBuilderCustomTianDiTu("http://t{s}.tianditu.com/DataServer?T=vec_c&x={x}&y={y}&l={z}","01234567")

将这里的TileUrlBuilder 传给上面的makeLevels,即可实现数据的载入。

天地图官网有很多数据服务的地址,可以通过这种方式一一加载。

下图为加载天地图地形数据的示例图。
这里写图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值