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

示例代码

         /// <summary>
/// 自定义服务影像图加载
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void toolStripButton1_CustomerServer_Click(object sender, EventArgs e)
{
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]";
//根据url字符串得到自定义在线地图图层
CustomerOnlineTiledLayer tiledLayer = new CustomerOnlineTiledLayer(strUrl);
tiledLayer.Name = "自定义服务影像";
//设置瓦片信息
TileInfo tileInfo = new TileInfo();
tileInfo.Format = TileImageFormat.Png;
tileInfo.DPI = ;
tileInfo.CompressionQuality = ;
tileInfo.LODInfos = new List<LODInfo>();
double dResolution = 1.40625;
double dScale = 5.90995197141668E8;
for (int i = ; i < ; ++i)//显示16级数据
{
LODInfo lodInfo = new LODInfo();
lodInfo.Level = i;
lodInfo.Resolution = dResolution / Math.Pow(2.0, i);
lodInfo.Scale = dScale / Math.Pow(2.0, i); ;
tileInfo.LODInfos.Add(lodInfo);
}
//设置瓦片开始位置
ISpatialReference spatialReference = SpatialReferenceFactory.CreateSpatialReference();
tileInfo.SpatialReference = spatialReference;
IPoint point = new PIE.Geometry.Point();
point.PutCoords(-, );//开始点切片
(point as IGeometry).SpatialReference = spatialReference;
tileInfo.Origin = point; //设置瓦片显示范围
IEnvelope envelope = new Envelope();
envelope.PutCoords(-, -, , );
tileInfo.InitialExtent = envelope;
tileInfo.FullExtent = envelope;
tileInfo.TileWidth = ;
tileInfo.TileHeight = ;
tiledLayer.SetTileInfo(tileInfo); //加载影像并设置地图显示范围
mapControlMain.FocusMap.AddLayer(tiledLayer);
IEnvelope envelop = new Envelope();
envelop.PutCoords(, , , );
mapControlMain.ActiveView.Extent = envelop; mapControlMain.ActiveView.PartialRefresh(ViewDrawPhaseType.ViewAll);
}

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

PIE SDK加载自定义服务数据的更多相关文章

  1. PIE SDK加载WMS服务数据

    1.   功能简介 WMS服务,WMS是OGC标准中比较简单也是比较重要的标准之一.它全称是“Web Map Service”(网络地图服务):利用具有地理空间位置信息的数据制作地图.其中将地图定义为 ...

  2. PIE加载自定义服务数据详细介绍

    这段时间我一直在研究如何用PIE加载在线地图服务,遇到了许多问题,多亏了技术员小姐姐的帮助,才让我能正确加载ArcGIS Online在线服务.天地图在线地图和谷歌在线地图.我是根据博客园PIE官方博 ...

  3. mxnet自定义dataloader加载自己的数据

    实际上关于pytorch加载自己的数据之前有写过一篇博客,但是最近接触了mxnet,发现关于这方面的教程很少 如果要加载自己定义的数据的话,看mxnet关于mnist基本上能够推测12 看pytorc ...

  4. Arcgis for Js之加载wms服务

    概述:本节讲述Arcgis for Js加载ArcgisServer和GeoServer发布的wms服务. 1.定义resourceInfo var resourceInfo = { extent: ...

  5. cesium加载WFS服务(GeoServer发布)

    需求: 为了便于前端渲染数据,自定义图层渲染. 思路: 获取地图服务中的要素进行渲染. 工具: GeoServer 2.6.4,cesium, 思路有了就开始找资料写代码,cesium有接口可以加载W ...

  6. [Yii2.0] 以Yii 2.0风格加载自定义类或命名空间 [配置使用Yii2 autoloader]

    Yii 2.0最显著的特征之一就是引入了命名空间,因此对于自定义类的引入方式也同之前有所不同.这篇文章讨论一下如何利用Yii 2.0的自动加载机制,向系统中引入自定义类和命名空间.本文旨在抛砖引玉,如 ...

  7. hive 压缩全解读(hive表存储格式以及外部表直接加载压缩格式数据);HADOOP存储数据压缩方案对比(LZO,gz,ORC)

    数据做压缩和解压缩会增加CPU的开销,但可以最大程度的减少文件所需的磁盘空间和网络I/O的开销,所以最好对那些I/O密集型的作业使用数据压缩,cpu密集型,使用压缩反而会降低性能. 而hive中间结果 ...

  8. TensorFlow2.0(10):加载自定义图片数据集到Dataset

    .caret, .dropup > .btn > .caret { border-top-color: #000 !important; } .label { border: 1px so ...

  9. PHP+Ajax点击加载更多列表数据实例

    一款简单实用的PHP+Ajax点击加载更多列表数据实例,实现原理:通过“更多”按钮向服务端发送Ajax请求,PHP根据分页参数查询将最新的几条记录,数据以JSON形式返回,前台Query解析JSON数 ...

随机推荐

  1. javascript总结30 :DOM事件

    事件: 1 在js中可以说一整套事件能完成一个功能: 事件的定义:当什么时候执行什么事: 使用事件的基本结构:事件源+事件类型=执行的指令 2 事件三要素:事件源 事件类型, 驱动程序(匿名函数). ...

  2. javascript总结27 :特殊引用类型String/Number/Boolean

    为了方便操作基本数据类型,JavaScript还提供了三个特殊的引用类型:String/Number/Boolean 1  Number 例如: var s1 = "zhangsan&quo ...

  3. 使用word写博客

    目前大部分的博客作者在写博客这件事情上都会遇到以下3个痛点:1.所有博客平台关闭了文档发布接口,用户无法使用Word,Windows Live Writer等工具来发布博客.2.发布到博客或公众号平台 ...

  4. Linux Crontab 任务管理工具命令以及示例

    Crontab 是 Linux 平台下的一款用于循环执行例行任务的工具,Linux 系统由 cron (crond) 这个系统服务来控制任务 , Linux系统本来就有很多的计划任务需要启动 , 所以 ...

  5. JavaScript - this详解 (三)

    闭包 this 执行上下文决定了变量作用域 而闭包,它其实是一种决策,是一种模式,让我们可以灵活的改变变量作用域. 按惯例,上栗子 var global = 'global';function out ...

  6. ubuntun16.0 登陆密码忘记

    1. 开机,如下图所示(没有装虚拟机,手机拍的图片凑合这看把): 2. 此时会有一个选项:Advanced Options for Ubuntu, 选中直接回车 ,如下图: 3. 看到里面有很多选项, ...

  7. 3、Semantic-UI之定义容器

    3.1 定义容器   在主流的前端框架中都会有容器的概念,但是在Semantic-UI中,如果要定义容器需要通过class="ui container",定义容器后,浏览器会根据不 ...

  8. 解决安装VC6.0后出现MSDEV.EXE错误,无法用打开工程解决方法

    问题:安装VC6.0后,在打开项目或添加文件时,出现如下错误: 可能导致原因:由于Ms安装软件的兼容性问题,导致VC6.0安装不完全, 解决方法:--网上打sp6补丁的方法貌似不可用,所以可以采用另一 ...

  9. [LeetCode 题解]: Merge k Sorted Lists

    Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity. 题 ...

  10. android之实现底部TabHost

    先说布局文件,如下:利用android:layout_alignParentBottom="true" 实现底部显示 <?xml version="1.0" ...