ArcGIS Android加载标准OGC WMTS服务

博客围绕OGC wmts服务展开,因SDK限制,建议加载切片格式为png的wmts服务,给出了SDK版本为com.esri.arcgisruntime:arcgis - android:100.9.0,并提及将给出加载代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

OGC wmts服务

注:

  1. 由于SDK限制,建议加载切片格式为png的wmts服务;
  2. SDK版本:com.esri.arcgisruntime:arcgis-android:100.9.0

加载代码如下:

import com.esri.arcgisruntime.arcgisservices.LevelOfDetail;
import com.esri.arcgisruntime.arcgisservices.TileInfo;
import com.esri.arcgisruntime.geometry.Envelope;
import com.esri.arcgisruntime.geometry.Point;
import com.esri.arcgisruntime.geometry.SpatialReference;
import com.esri.arcgisruntime.layers.WebTiledLayer;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

/**
 * ArcGIS Android加载标准OGC WMTS服务
 */

public class ArcGISAndroidWMTSLayerClass {
    private static final int DPI = 96;
    private static final int minZoomLevel = 0;// 地图服务最小层级
    private static final int maxZoomLevel = 19;// 地图服务最大层级
    private static final int tileWidth = 256;// 瓦片宽度
    private static final int tileHeight = 256;// 瓦片高度

    private static final SpatialReference SRID_2000 = SpatialReference.create(4490);// 4490坐标系 支持4326 3857坐标系
    private static final double X_MIN_2000 = -180;//4490坐标系 4326 3857按实际情况配置
    private static final double Y_MIN_2000 = -90;//4490坐标系 4326 3857按实际情况配置
    private static final double X_MAX_2000 = 180;//4490坐标系 4326 3857按实际情况配置
    private static final double Y_MAX_2000 = 90;//4490坐标系 4326 3857按实际情况配置
    private static final Point ORIGIN_2000 = new Point(-180, 90, SRID_2000);//4490坐标系切片原点 4326 3857按实际情况配置
    private static final Envelope ENVELOPE_2000 = new Envelope(X_MIN_2000,
            Y_MIN_2000,
            X_MAX_2000,
            Y_MAX_2000,
            SRID_2000);

    private static final double[] SCALES = {
            295497593.05875003, 147748796.52937502,
            73874398.264687508, 36937199.132343754,
            18468599.566171877, 9234299.7830859385,
            4617149.8915429693, 2308574.9457714846,
            1154287.4728857423, 577143.73644287116,
            288571.86822143558, 144285.93411071779,
            72142.967055358895, 36071.483527679447,
            18035.741763839724, 9017.8708819198619,
            4508.9354409599309, 2254.4677204799655,
            1127.23386023998275, 563.616930119991375
    };// 4490坐标系0-19层级比例尺 4326 3857按实际情况配置
    private static final double[] RESOLUTIONS_2000 = {
            0.7031249999891485, 0.35156249999999994,
            0.17578124999999997, 0.08789062500000014,
            0.04394531250000007, 0.021972656250000007,
            0.01098632812500002, 0.00549316406250001,
            0.0027465820312500017, 0.0013732910156250009,
            0.000686645507812499, 0.0003433227539062495,
            0.00017166137695312503, 0.00008583068847656251,
            0.000042915344238281406, 0.000021457672119140645,
            0.000010728836059570307, 0.000005364418029785169,
            2.68220901489257815e-6, 1.341104507446289075e-6 };// 4490坐标系0-19层级分辨率 4326 3857按实际情况配置

    public static WebTiledLayer CreateWMTSWebTiledLayer() {
        String tilematrixset = "EPSG:4490";//4490坐标系 4326 3857按实际情况配置
        String requestStyle = "getTile";
        String format = "image/png";//由于SDK限制,建议加载png格式瓦片
        WebTiledLayer webTiledLayer = null;
        String mainUrl;
        TileInfo mainTileInfo;
        Envelope mainEnvelope;
        try {
            mainUrl = "http://{ip}:{port}/tilecache/wmts?layer=0A41D56096E24F2FB08F8A653D8B4CC9" + // 服务地址根据实际情况配置
                    "&service=wmts" +
                    "&request=" + requestStyle +
                    "&version=1.0.0" +
                    "&format=" + format +
                    "&STYLE=default" +
                    "&tilematrixset=" + tilematrixset +
                    "&tilecol={col}" +
                    "&tilerow={row}" +
                    "&tilematrix=" + tilematrixset + "{level}";
            List<LevelOfDetail> mainLevelOfDetail = new ArrayList<LevelOfDetail>();
            for (int i = minZoomLevel; i <= maxZoomLevel; i++) {
                LevelOfDetail item = new LevelOfDetail(i, RESOLUTIONS_2000[i], SCALES[i]);
                mainLevelOfDetail.add(item);
            }

            mainTileInfo = new TileInfo(
                    DPI,
                    TileInfo.ImageFormat.PNG,//由于SDK限制,建议加载png格式瓦片
                    mainLevelOfDetail,
                    ORIGIN_2000,
                    ORIGIN_2000.getSpatialReference(),
                    tileHeight,
                    tileWidth);

            webTiledLayer = new WebTiledLayer(
                    mainUrl,
                    mainTileInfo,
                    ENVELOPE_2000);
            webTiledLayer.setName("0A41D56096E24F2FB08F8A653D8B4CC9");// 名称 根据实际情况配置
            webTiledLayer.loadAsync();
        } catch (Exception e) {
            e.getCause();
        }
        return webTiledLayer;
    }
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值