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. xStream完美转换XML、JSON(转)

    xStream框架 xStream可以轻易的将Java对象和xml文档相互转换,而且可以修改某个特定的属性和节点名称,而且也支持json的转换: 前面有介绍过json-lib这个框架,在线博文:htt ...

  2. Bootstrap表格类名及对应图形

    .table:基础表格 不管制作哪种表格都离不开类名“table”.所以大家在使用Bootstrap表格时,千万注意,你的<table>元素中一定不能缺少类名“table”. .table ...

  3. windows下配置Groovy

    windows下配置Groovy环境的教程网上很容易搜到,我参考的是这篇文章,安装过程一切顺利,然而在cmd中运行Groovy -v命令时返回ERROR: JAVA_HOME is set to an ...

  4. CentOS 7 下 ifconfig command not found 解决办法

    1.查看ifconfig命令是否存在 查看 /sbin/ifconfig是否存在 2.如果ifconfig命令存在,查看环境变量设置 [root@localhost ~]# echo $PATH 如果 ...

  5. SIGPIPE信号解析

    当服务器close一个连接时,若client端接着发数据.根据TCP协议的规定,会收到一个RST响应,client再往这个服务器发送数据时,系统会发出一个SIGPIPE信号给进程,告诉进程这个连接已经 ...

  6. iframe是怎么跳转的

    在main.jsp中 <iframe frameborder="0" marginheight="0" marginwidth="0" ...

  7. 使用#include消除重复代码

    消除重复代码代码很多种,比如: 1)提炼成函数复用 2)使用宏 3)继承 4)使用闭包(boost::bind.boost::function) 上述是最为常用的,对于C++程序,闭包可能用得相对少一 ...

  8. 一个简单的编译tex的Makefile

    tex编译成pdf通常要经过以下步骤:tex-->dvi-->ps-->pdf.如果修改了tex文件想看一下效果,就要把命令重新敲一遍.虽然就几行命令,反复敲还是很烦人的.最直接的办 ...

  9. win7 64位备份时, 无法启动服务,0x80070422

    问题:当win7 64位系统在备份的时候,无法启动备份服务,错误代码:0x80070422 解决方法:计算机->管理->服务 找到 Block Level Backup Engine Se ...

  10. java学习(二)运算符

    一.运算符 赋值运算符:=  +=  -=  *=  /=  %= 算术运算符:+ - *  /  %   ++   -- int x = 3;  int y = 4   int c = x*1.0 ...