• PIE SDK加载自定义服务数据


    1.功能简介

      自定义服务数据,将符合要求的矢量数据和栅格数据集等数据以服务的方式发布,将数据存储在某服务器中,在有网络的情况下可以根据URL就可以访问,比较常见的服务数据类型的有ArcGIS Server,天地图在线地图,百度在线地图,高德在线地图等,如果没有他们大型的服务器可以发布就可以自己自定义发布并调用。

    2. 功能实现说明

    2.1. 实现思路及原理说明

    第一步

    设置自定义服务URL(即服务链接地址)

    第二步

    根据URL得到自定义图层tiledLayer

    第三步

    设置瓦片信息并设置为自定义图层tiledLayer的瓦片信息

    第四步

    将tiledLayer添加到地图控件中并设置显示范围

    2.2 . 核心接口与方法

    接口/类

    方法

    说明

    PIE.Carto.CustomerOnlineTiledLayer

    SetTileInfo

    设置瓦片信息

    Name

    图层名称

     

     

     

     

    PIE.Carto.TileInfo

    Format

    瓦片图像格式

    DPI

    每英寸点数

    CompressionQuality

    压缩的质量

    LODInfos

    LOD信息

    SpatialReference

    空间参考

    InitialExtent

    初始化范围

    FullExtent

    全图范围

    TileWidth

    瓦片宽度

    TileHeight

    瓦片高度

     

    PIE.Carto.LODInfo

    Level

    瓦片级别

    Resolution

    瓦片分辨率

    Scale

    瓦片比例尺

    2.3. 示例代码

    项目路径

    百度云盘地址下/PIE示例程序/03.数据加载/14. 打开自定义服务数据

    视频路径

    百度云盘地址下/PIE视频教程/03.数据加载/14.打开自定义服务数据.avi

    示例代码

     1         /// <summary>
     2         /// 自定义服务影像图加载
     3         /// </summary>
     4         /// <param name="sender"></param>
     5         /// <param name="e"></param>
     6         private void toolStripButton1_CustomerServer_Click(object sender, EventArgs e)
     7         {
     8              string strUrl = "http://imageservices.cresda.com/seis/v3/wmts/tile/1027/131?service=WMTS&request=GetTile&version=1.0.0&layer=&style=&tilematrixSet=&format=image%2Fpng&transparent=false&width=256&height=256&token=guest&zIndex=0&maxNativeZoom=10&srs=EPSG%3A4326&tilematrix=[$Level]&tilerow=[$Row]&tilecol=[$Column]";
     9             //根据url字符串得到自定义在线地图图层
    10             CustomerOnlineTiledLayer tiledLayer = new CustomerOnlineTiledLayer(strUrl);
    11             tiledLayer.Name = "自定义服务影像";
    12 //设置瓦片信息
    13             TileInfo tileInfo = new TileInfo();
    14             tileInfo.Format = TileImageFormat.Png;
    15             tileInfo.DPI = 96;
    16             tileInfo.CompressionQuality = 75;
    17             tileInfo.LODInfos = new List<LODInfo>();
    18             double dResolution = 1.40625;
    19             double dScale = 5.90995197141668E8;
    20             for (int i = 0; i < 16; ++i)//显示16级数据
    21             {
    22                 LODInfo lodInfo = new LODInfo();
    23                 lodInfo.Level = i;
    24                 lodInfo.Resolution = dResolution / Math.Pow(2.0, i);
    25                 lodInfo.Scale = dScale / Math.Pow(2.0, i); ;
    26                 tileInfo.LODInfos.Add(lodInfo);
    27             }
    28             //设置瓦片开始位置
    29             ISpatialReference spatialReference = SpatialReferenceFactory.CreateSpatialReference(4326);
    30             tileInfo.SpatialReference = spatialReference;
    31             IPoint point = new PIE.Geometry.Point();
    32             point.PutCoords(-180, 90);//开始点切片
    33             (point as IGeometry).SpatialReference = spatialReference;
    34             tileInfo.Origin = point;
    35 
    36             //设置瓦片显示范围
    37             IEnvelope envelope = new Envelope();
    38             envelope.PutCoords(-180, -90, 180, 90);
    39             tileInfo.InitialExtent = envelope;
    40             tileInfo.FullExtent = envelope;
    41             tileInfo.TileWidth = 256;
    42             tileInfo.TileHeight = 256;
    43             tiledLayer.SetTileInfo(tileInfo);
    44 
    45             //加载影像并设置地图显示范围
    46             mapControlMain.FocusMap.AddLayer(tiledLayer);
    47             IEnvelope envelop = new Envelope();
    48             envelop.PutCoords(60, 10, 160, 60);
    49             mapControlMain.ActiveView.Extent = envelop;          mapControlMain.ActiveView.PartialRefresh(ViewDrawPhaseType.ViewAll);
    50         }
    View Code

    2.4 . 示例截图

     

    注明:

    1、如果想加载自定义注记图(效果如上图所示),可以将代码的URL修改为:

      stringstrUrl= "http://t0.tianditu.gov.cn/cva_c/wmts?service=WMTS&request=GetTile&version=1.0.0&layer=cva&style=&tilematrixSet=c&format=tiles&transparent=false&width=256&height=256&zIndex=200&tk=f2b11a204a2f84fc62bc5af15e483b48&token=guest&srs=EPSG%3A4326&tilematrix=[$Level]&tilerow=[$Row]&tilecol=[$Column]";

    上述链接用浏览器打开报错为: 400 Bad Request,原因是,为了用加载一个URL加载全球的服务数据将链接在请求服务信息中的返回瓦片比例尺级别和行列号用了模糊查找,如果为了测试可以将链接中的[$Level]、[$Row] 和[$Column] 换成你要浏览的参数即可,例如level为10,row为150, column为858,下图左为注记图,右为影像图,

                                                                   

    2、本文提供的链接为资源卫星中心发布的服务,示例中URL的token为guest,如果大家想用自己的token,可以自己注册一个(token为用户获取令牌)。

  • 相关阅读:
    uva 11275 3D Triangles (3D-Geometry)
    uva 12296 Pieces and Discs (Geometry)
    poj 1514 Metal Cutting (dfs+多边形切割)
    poj 1474 Video Surveillance (半平面交)
    poj 3335 Rotating Scoreboard (Half Plane Intersection)
    poj 2451 Uyuw's Concert (半平面交)
    poj 1279 Art Gallery (Half Plane Intersection)
    hdu 1255 覆盖的面积 (Bruceforce)
    # WinForm关闭窗体确认
    List<T>随机返回一个
  • 原文地址:https://www.cnblogs.com/PIESat/p/10795679.html
Copyright © 2020-2023  润新知