PIE SDK加载自定义服务数据

1.功能简介

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

2. 功能实现说明

2.1. 实现思路及原理说明

第一步服务器

设置自定义服务URL(即服务连接地址)网络

第二步ide

根据URL获得自定义图层tiledLayer测试

第三步url

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

第四步code

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

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 . 示例截图

 

注明:

一、若是想加载自定义注记图(效果如上图所示),能够将代码的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,下图左为注记图,右为影像图,

                                                               

二、本文提供的连接为资源卫星中心发布的服务,示例中URL的token为guest,若是你们想用本身的token,能够本身注册一个(token为用户获取令牌)。

相关文章
相关标签/搜索