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為用戶獲取令牌)。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM