zoukankan      html  css  js  c++  java
  • PIE SDK加载2020年最新天地图服务数据

    1.功能简介

    2020年04月17日中华人民共和国自然资源部发布《自然资源部关于启用地理信息公共服务平台2020版的公告》,新的天地图服务更新了2米分辨率遥感影像1000万平方千米、优于1米分辨率遥感影像537万平方千米;更新了道路、水系、居民地和地名地址等地理信息[http://gi.mnr.gov.cn/202004/t20200423_2509479.html]。这些极大的优化了数据显示的精度和效果,那么在PIESDK怎么快速加载最新的天地图服务呢?

    PIESDK支持用户自定义瓦片数据的加载显示,支持数据服务器的自动切换,我们只要了解自定义切图图层类的应用,就可以快速的把天地图服务加到我们的地图中,废话少说,我们直接上代码来说明。

    2.功能实现说明

    2.1加载天地图经纬度投影的影像服务:

    /// <summary>

    /// 加载天地图影像服务-经纬度投影

    /// </summary>

    public void AddTDTServerLayer_Img_WGS84()

    {

    string str = "http://t[$Host].tianditu.gov.cn/img_c/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=img&STYLE=default&TILEMATRIXSET=c&FORMAT=tiles&TILEMATRIX=[$Level]&TILEROW=[$Row]&TILECOL=[$Column]&tk=19d104158f9689146523c3872c81318b";

    ISpatialReference spatialReference=SpatialReferenceFactory.CreateSpatialReference(4326);

    PIE.Carto.CustomerOnlineTiledLayer layer = new CustomerOnlineTiledLayer(str);

    layer.Name = "天地图自定义瓦片地图-经纬度投影";

    // 设置自定义在线图层的可访问主机列表

    IList<int> hostList = new List<int>();

    for (int i = 0; i < 8; i++)

    {

    hostList.Add(i);

    }

    layer.SetHostList(hostList);

    // 定义图层的瓦片信息

    PIE.Carto.TileInfo tileInfo = new TileInfo();

    tileInfo.Format = (PIE.Carto.TileImageFormat)5;

    tileInfo.DPI = 96;

    tileInfo.CompressionQuality = 75;

    // 设置每一瓦片的分辨率和比例尺信息

    tileInfo.LODInfos = new List<LODInfo>();

    double dResolution = 1.40625;

    double dScale = 5.90995197141668E8;

    for (int i = 0; i < 16; ++i)

    {

    PIE.Carto.LODInfo lodInfo = new LODInfo();

    lodInfo.Level = i;

    lodInfo.Resolution = dResolution / Math.Pow(2.0, i);

    lodInfo.Scale = dScale / Math.Pow(2.0, i); ;

    tileInfo.LODInfos.Add(lodInfo);

    }

    // 设置瓦片信息的坐标系信息

    tileInfo.SpatialReference = spatialReference;

    // 设置服务切图的起始点信息

    IPoint point = new PIE.Geometry.Point();

    point.PutCoords(-180, 90);

    (point as IGeometry).SpatialReference = spatialReference;

    tileInfo.Origin = point;

    // 设置瓦片信息的范围和瓦片大小信息

    IEnvelope envelope = new Envelope();

    envelope.PutCoords(-180, -90, 180, 90);

    tileInfo.InitialExtent = envelope;

    tileInfo.FullExtent = envelope;

    tileInfo.TileWidth = 256;

    tileInfo.TileHeight = 256;

    layer.SetTileInfo(tileInfo);

    m_HookHelper.FocusMap.AddLayer(layer);

    m_HookHelper.ActiveView.PartialRefresh(ViewDrawPhaseType.ViewAll);

    }

    服务路径如下所示:

    http://t[$Host].tianditu.gov.cn/img_c/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=img&STYLE=default&TILEMATRIXSET=c&FORMAT=tiles&TILEMATRIX=[$Level]&TILEROW=[$Row]&TILECOL=[$Column]&tk=19d104158f9689146523c3872c81318b

    应用中需要把19d104158f9689146523c3872c81318b调整成自己申请的天地图服务Key,服务路径下的img_cimg标识要加载影像底图服务,调整为其他即可加载对应的数据:

    标识

    说明

    标识

    说明

    标识

    说明

    vec_c

    矢量底图

    cva_c

    矢量注记

    eva_c

    矢量英文注记

    img_c

    影像底图

    cia_c

    影像注记

    eia_c

    影像英文注记

    ter_c

    地形晕渲

    cta_c

    地形注记

    ibo_c

    全球境界

    参考:http://lbs.tianditu.gov.cn/server/MapService.html

    2.2加载天地图球面墨卡托投影的影像服务:

    /// <summary>

    /// 加载天地图影像服务-球面墨卡托投影

    /// </summary>

    public void AddTDTServerLayer_Img_Mercator()

    {

    string str = "http://t[$Host].tianditu.gov.cn/img_w/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=img&STYLE=default&TILEMATRIXSET=w&FORMAT=tiles&TILEMATRIX=[$Level]&TILEROW=[$Row]&TILECOL=[$Column]&tk=19d104158f9689146523c3872c81318b";

    ISpatialReference spatialReference=SpatialReferenceFactory.CreateSpatialReference(3857);

    PIE.Carto.CustomerOnlineTiledLayer layer = new CustomerOnlineTiledLayer(str);

    layer.Name = "天地图自定义瓦片地图-球面墨卡托";

    // 设置自定义在线图层的可访问主机列表

    IList<int> hostList = new List<int>();

    for (int i = 0; i < 8; i++)

    {

    hostList.Add(i);

    }

    layer.SetHostList(hostList);

    // 定义图层的瓦片信息

    PIE.Carto.TileInfo tileInfo = new TileInfo();

    tileInfo.Format = (PIE.Carto.TileImageFormat)5;

    tileInfo.DPI = 96;

    tileInfo.CompressionQuality = 75;

    // 设置每一瓦片的分辨率和比例尺信息

    tileInfo.LODInfos = new List<LODInfo>();

    double dResolution = 156543.033928041;

    double dScale = 591658710.909131;

    for (int i = 0; i < 16; ++i)

    {

    PIE.Carto.LODInfo lodInfo = new LODInfo();

    lodInfo.Level = i;

    lodInfo.Resolution = dResolution / Math.Pow(2.0, i);

    lodInfo.Scale = dScale / Math.Pow(2.0, i); ;

    tileInfo.LODInfos.Add(lodInfo);

    }

    // 设置瓦片信息的坐标系信息

    tileInfo.SpatialReference = spatialReference;

    // 设置服务切图的起始点信息

    IPoint point = new PIE.Geometry.Point();

    point.PutCoords(-20037508.3427892, 20037508.3427892);

    (point as IGeometry).SpatialReference = spatialReference;

    tileInfo.Origin = point;

    // 设置瓦片信息的范围和瓦片大小信息

    IEnvelope envelope = new Envelope();

    envelope.PutCoords(-20037508.3427892, -20037508.3427892, 20037508.3427892, 20037508.3427892);

    tileInfo.InitialExtent = envelope;

    tileInfo.FullExtent = envelope;

    tileInfo.TileWidth = 256;

    tileInfo.TileHeight = 256;

    layer.SetTileInfo(tileInfo);

    m_HookHelper.FocusMap.AddLayer(layer);

    m_HookHelper.ActiveView.PartialRefresh(ViewDrawPhaseType.ViewAll);

    }

    服务路径如下所示:

    http://t[$Host].tianditu.gov.cn/img_w/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=img&STYLE=default&TILEMATRIXSET=w&FORMAT=tiles&TILEMATRIX=[$Level]&TILEROW=[$Row]&TILECOL=[$Column]&tk=19d104158f9689146523c3872c81318b

    应用中需要把19d104158f9689146523c3872c81318b调整成自己申请的天地图服务Key,服务路径下的img_wimg标识要加载影像底图服务,调整为其他即可加载对应的数据:

    标识

    说明

    标识

    说明

    标识

    说明

    vec_w

    矢量底图

    cva_w

    矢量注记

    eva_w

    矢量英文注记

    img_w

    影像底图

    cia_w

    影像注记

    eia_w

    影像英文注记

    ter_w

    地形晕渲

    cta_w

    地形注记

    ibo_w

    全球境界

    参考:http://lbs.tianditu.gov.cn/server/MapService.html

    2.3示例截图

    1 加载天地图经纬度投影的影像服务

    2 加载天地图球面墨卡托投影的影像服务

    3.快速加载方案

    PIE-SDK For .Net也提供了无编码的加载方式,加载方案为到"航天宏图杯"二次开发大赛培训群众下载【2020年天地图在线服务数据加载扩展包】,解压到PIESDK安装目录下,同名文件夹覆盖,启动PIESDK桌面,点击[地理信息]->[自定义切片服务],在弹出的窗体中选择对应的服务,点击[加载]按钮,即可实现天地图在线数据服务的加载。

    3 服务类型选择和加载

    4 天地图在线服务加载

  • 相关阅读:
    Java 流(Stream)、文件(File)和IO
    Java 数组
    [导入]daily report
    [导入]Daily Report (Learn some basic knowlage about American football.)
    [导入]Thow to use the AspnetUpload control 2.1
    [导入]ASP.Net环境下使用Jmail组件发送邮件
    [导入]Thow to use the AspnetUpload control 2.1(2)
    [导入]常用26句生活用语[英语]
    [导入]表单验证与Cookies
    [导入]希望这将又是一个新的开始
  • 原文地址:https://www.cnblogs.com/PIESat/p/12790751.html
Copyright © 2011-2022 走看看