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为用户获取令牌)。

转载于:https://www.cnblogs.com/PIESat/p/10795679.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值