PIE SDK加载2020年最新天地图服务数据
1.功能简介
2020年04月17日中华人民共和国自然资源部发布《自然资源部关于启用地理信息公共服务平台2020版的公告》,新的天地图服务更新了2米分辨率遥感影像1000万平方千米、优于1米分辨率遥感影像537万平方千米;更新了道路、水系、居民地和地名地址等地理信息[http://gi.mnr.gov.cn/202004/t20200423_2509479.html]。这些极大的优化了数据显示的精度和效果,那么在PIESDK怎么快速加载最新的天地图服务呢?
PIESDK支持用户自定义瓦片数据的加载显示,支持数据服务器的自动切换,我们只要了解自定义切图图层类的应用,就可以快速的把天地图服务加到我们的地图中,废话少说,我们直接上代码来说明。
2.功能实现说明
2.1加载天地图经纬度投影的影像服务:
/// <summary>
/// 加载天地图影像服务-经纬度投影
/// </summary>
public void AddTDTServerLayer_Img_WGS84()
{
ISpatialReference spatialReference=SpatialReferenceFactory.CreateSpatialReference(4326);
PIE.Carto.CustomerOnlineTiledLayer layer = new CustomerOnlineTiledLayer(str);
layer.Name = "天地图自定义瓦片地图-经纬度投影";
// 设置自定义在线图层的可访问主机列表
IList<int> hostList = new List<int>();
for (int i = 0; i < 8; i++)
{
hostList.Add(i);
}
layer.SetHostList(hostList);
// 定义图层的瓦片信息
PIE.Carto.TileInfo tileInfo = new TileInfo();
tileInfo.Format = (PIE.Carto.TileImageFormat)5;
tileInfo.DPI = 96;
tileInfo.CompressionQuality = 75;
// 设置每一瓦片的分辨率和比例尺信息
tileInfo.LODInfos = new List<LODInfo>();
double dResolution = 1.40625;
double dScale = 5.90995197141668E8;
for (int i = 0; i < 16; ++i)
{
PIE.Carto.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);
}
// 设置瓦片信息的坐标系信息
tileInfo.SpatialReference = spatialReference;
// 设置服务切图的起始点信息
IPoint point = new PIE.Geometry.Point();
point.PutCoords(-180, 90);
(point as IGeometry).SpatialReference = spatialReference;
tileInfo.Origin = point;
// 设置瓦片信息的范围和瓦片大小信息
IEnvelope envelope = new Envelope();
envelope.PutCoords(-180, -90, 180, 90);
tileInfo.InitialExtent = envelope;
tileInfo.FullExtent = envelope;
tileInfo.TileWidth = 256;
tileInfo.TileHeight = 256;
layer.SetTileInfo(tileInfo);
m_HookHelper.FocusMap.AddLayer(layer);
m_HookHelper.ActiveView.PartialRefresh(ViewDrawPhaseType.ViewAll);
}
服务路径如下所示:
应用中需要把19d104158f9689146523c3872c81318b调整成自己申请的天地图服务Key,服务路径下的img_c和img标识要加载影像底图服务,调整为其他即可加载对应的数据:
标识 |
说明 |
标识 |
说明 |
标识 |
说明 |
vec_c |
矢量底图 |
cva_c |
矢量注记 |
eva_c |
矢量英文注记 |
img_c |
影像底图 |
cia_c |
影像注记 |
eia_c |
影像英文注记 |
ter_c |
地形晕渲 |
cta_c |
地形注记 |
ibo_c |
全球境界 |
参考:http://lbs.tianditu.gov.cn/server/MapService.html
2.2加载天地图球面墨卡托投影的影像服务:
/// <summary>
/// 加载天地图影像服务-球面墨卡托投影
/// </summary>
public void AddTDTServerLayer_Img_Mercator()
{
ISpatialReference spatialReference=SpatialReferenceFactory.CreateSpatialReference(3857);
PIE.Carto.CustomerOnlineTiledLayer layer = new CustomerOnlineTiledLayer(str);
layer.Name = "天地图自定义瓦片地图-球面墨卡托";
// 设置自定义在线图层的可访问主机列表
IList<int> hostList = new List<int>();
for (int i = 0; i < 8; i++)
{
hostList.Add(i);
}
layer.SetHostList(hostList);
// 定义图层的瓦片信息
PIE.Carto.TileInfo tileInfo = new TileInfo();
tileInfo.Format = (PIE.Carto.TileImageFormat)5;
tileInfo.DPI = 96;
tileInfo.CompressionQuality = 75;
// 设置每一瓦片的分辨率和比例尺信息
tileInfo.LODInfos = new List<LODInfo>();
double dResolution = 156543.033928041;
double dScale = 591658710.909131;
for (int i = 0; i < 16; ++i)
{
PIE.Carto.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);
}
// 设置瓦片信息的坐标系信息
tileInfo.SpatialReference = spatialReference;
// 设置服务切图的起始点信息
IPoint point = new PIE.Geometry.Point();
point.PutCoords(-20037508.3427892, 20037508.3427892);
(point as IGeometry).SpatialReference = spatialReference;
tileInfo.Origin = point;
// 设置瓦片信息的范围和瓦片大小信息
IEnvelope envelope = new Envelope();
envelope.PutCoords(-20037508.3427892, -20037508.3427892, 20037508.3427892, 20037508.3427892);
tileInfo.InitialExtent = envelope;
tileInfo.FullExtent = envelope;
tileInfo.TileWidth = 256;
tileInfo.TileHeight = 256;
layer.SetTileInfo(tileInfo);
m_HookHelper.FocusMap.AddLayer(layer);
m_HookHelper.ActiveView.PartialRefresh(ViewDrawPhaseType.ViewAll);
}
服务路径如下所示:
应用中需要把19d104158f9689146523c3872c81318b调整成自己申请的天地图服务Key,服务路径下的img_w和img标识要加载影像底图服务,调整为其他即可加载对应的数据:
标识 |
说明 |
标识 |
说明 |
标识 |
说明 |
vec_w |
矢量底图 |
cva_w |
矢量注记 |
eva_w |
矢量英文注记 |
img_w |
影像底图 |
cia_w |
影像注记 |
eia_w |
影像英文注记 |
ter_w |
地形晕渲 |
cta_w |
地形注记 |
ibo_w |
全球境界 |
参考:http://lbs.tianditu.gov.cn/server/MapService.html
2.3示例截图
图1 加载天地图经纬度投影的影像服务
图2 加载天地图球面墨卡托投影的影像服务
3.快速加载方案
PIE-SDK For .Net也提供了无编码的加载方式,加载方案为到"航天宏图杯"二次开发大赛培训群众下载【2020年天地图在线服务数据加载扩展包】,解压到PIESDK安装目录下,同名文件夹覆盖,启动PIESDK桌面,点击[地理信息]->[自定义切片服务],在弹出的窗体中选择对应的服务,点击[加载]按钮,即可实现天地图在线数据服务的加载。
图3 服务类型选择和加载
图4 天地图在线服务加载