自定義服務數據,將符合要求的矢量數據和柵格數據集等數據以服務的方式發佈,將數據存儲在某服務器中,在有網絡的狀況下能夠根據URL就能夠訪問,比較常見的服務數據類型的有ArcGIS Server,天地圖在線地圖,百度在線地圖,高德在線地圖等,若是沒有他們大型的服務器能夠發佈就能夠本身自定義發佈並調用。瀏覽器
第一步服務器 |
設置自定義服務URL(即服務連接地址)網絡 |
第二步ide |
根據URL獲得自定義圖層tiledLayer測試 |
第三步url |
設置瓦片信息並設置爲自定義圖層tiledLayer的瓦片信息spa |
第四步code |
將tiledLayer添加到地圖控件中並設置顯示範圍orm |
接口/類視頻 |
方法 |
說明 |
PIE.Carto.CustomerOnlineTiledLayer |
SetTileInfo |
設置瓦片信息 |
Name |
圖層名稱 |
|
PIE.Carto.TileInfo |
Format |
瓦片圖像格式 |
DPI |
每英寸點數 |
|
CompressionQuality |
壓縮的質量 |
|
LODInfos |
LOD信息 |
|
SpatialReference |
空間參考 |
|
InitialExtent |
初始化範圍 |
|
FullExtent |
全圖範圍 |
|
TileWidth |
瓦片寬度 |
|
TileHeight |
瓦片高度 |
|
PIE.Carto.LODInfo |
Level |
瓦片級別 |
Resolution |
瓦片分辨率 |
|
Scale |
瓦片比例尺 |
項目路徑 |
百度雲盤地址下/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 } |
註明:
一、若是想加載自定義註記圖(效果如上圖所示),能夠將代碼的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爲用戶獲取令牌)。