1.  GeoServer简介

GeoServer是OpenGIS Web服务器规范的J2EE实现的社区开源项目,利用GeoServer可以方便的发布地图数据,允许用户对特征数据进行更新、删除、插入操作,通过GeoServer可以容易的在用户之间迅速共享空间地理信息。它能兼容WMS和 WFS 特性;支持 PostGIS、Shapefile、ArcSDE、Oracle、VPF、MySQL、MapInfo;支持上百种投影;能够将网络地图输出为 jpeg、gif、png、SVG、KML等格式;支持AJAX 的地图客户端OpenLayers。

GeoServer的安装参考:https://blog.csdn.net/qq_35732147/article/details/81869864

GeoServer发布WMTS服务参考:

https://blog.csdn.net/weixin_38843590/article/details/79879317

2.  应用介绍说明

2.1.  应用场景介绍

应用项目中经常遇到WebGIS和桌面GIS中共享一份地图或多个桌面端共享一份地图,应对这个问题的最优的方案就是把数据发布成一份地图服务,通过WMTS地图服务实现不同终端的数据共享。下面我们介绍如何在PIE中加载GeoServer发布的地图服务。

2.2.  实现思路介绍

要在PIE中加载GeoServer地图服务,可以通过PIE的自定义瓦片服务接口ICustomerOnlineTiledLayer来完成。要实现它我们需要知道瓦片的地址,那么如何找到GeoServer中WMTS服务的瓦片地址呢?下面演示如何在google浏览器下获得瓦片的路径:

粘贴得到:http://localhost:8080/geoserver/gwc/service/wmts?layer=PIEServer%3AWorldBaseMap&style=&tilematrixset=EPSG%3A4326&Service=WMTS&Request=GetTile&Version=1.0.0&Format=image%2Fpng&TileMatrix=EPSG%3A4326%3A7&TileCol=201&TileRow=44

标红的7代表切片的级别,标红的201代表切片的列编号,标红的44代表切片的行编号,修改为对应的标识符为:

http://localhost:8080/geoserver/gwc/service/wmts?layer=PIEServer%3AWorldBaseMap&style=&tilematrixset=EPSG%3A4326&Service=WMTS&Request=GetTile&Version=1.0.0&Format=image%2Fpng&TileMatrix=EPSG%3A4326%3A[$Level]&TileCol=[$Column]&TileRow=[$Row]

2.3. 核心接口和方法

接口/类

方法

说明

ICustomerOnlineTiledLayer

SetTileInfo(TileInfo info);

设置瓦片信息

TileInfo

DPI

切片DPI,一般为96;

SpatialReference

地图服务坐标系;

Origin

地图服务切片起始点;

InitialExtent

地图服务的数据范围;

FullExtent

地图服务的全局范围

Format

切片的格式,一般为Png;

TileWidth

切片宽度,一般为256;

TileHeight

切片高度,一般为256;

LODInfos

切片级别信息;

LODInfo

Level

切片级别编号;(从0开始)

Resolution

该级别分辨率;

Scale

该级别比例尺;

2.4. 示例代码

项目路径

百度云盘地址下/PIE示例程序/14.SDK拓展开发/04PIE SDK与GeoServer结合/PIEMapApplication_GeoServer

数据路径

百度云盘地址下/PIE示例数据/栅格数据/04.World/World.tif

视频路径

百度云盘地址下/PIE视频教程/14.SDK拓展开发/ PIE SDK与GeoServer结合.avi

示例代码

 /// <summary>
/// 增加用户自定义切片服务图层
/// </summary>
public void AddCustomTiledLayer()
{
// 创建自定义瓦片地图服务图层
string url = "http://localhost:8080/geoserver/gwc/service/wmts?layer=PIEServer%3A
WorldBaseMap&style=&tilematrixset=EPSG%3A4326&Service=WMTS&Request=GetTil
e&Version=1.0.&Format=image%2Fpng&TileMatrix=EPSG%3A4326%3A[$Level]&TileC
ol=[$Column]&TileRow=[$Row]";
CustomerOnlineTiledLayer layer = new CustomerOnlineTiledLayer(url);
layer.Name = "World"; // 设置自定义瓦片地图服务图层的地图切片信息
PIE.Carto.TileInfo tileInfo = new TileInfo();
tileInfo.Format = (PIE.Carto.TileImageFormat);
tileInfo.DPI = ;
tileInfo.TileWidth = ;
tileInfo.TileHeight = ;
tileInfo.CompressionQuality = ;
tileInfo.LODInfos = new List<LODInfo>();
double dResolution = 0.703125;
double dScale = 2.95497598570834E8;
for (int i = ; i < ; ++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);
}
ISpatialReference spatialReference = SpatialReferenceFactory.CreateSpatialReference();
tileInfo.SpatialReference = spatialReference; // 设置自定义瓦片地图服务图层的起始点和范围信息
IPoint point = new PIE.Geometry.Point();
point.PutCoords(-180, );
(point as IGeometry).SpatialReference = spatialReference;
tileInfo.Origin = point;
IEnvelope envelope = new Envelope();
envelope.PutCoords(-180, -, , );
tileInfo.InitialExtent = envelope;
tileInfo.FullExtent = envelope;
layer.SetTileInfo(tileInfo); // 加载到地图并刷新
m_HookHelper.FocusMap.AddLayer(layer);
m_HookHelper.ActiveView.PartialRefresh(ViewDrawPhaseType.ViewAll);
}

2.5.  示例截图

PIE SDK与GeoServer结合说明文档的更多相关文章

  1. PIE SDK与OpenCV结合说明文档

    1.功能简介 OpenCV是基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux.Windows.Android和Mac OS操作系统上.它轻量级而且高效——由一系列 C 函数和少量 ...

  2. PIE SDK与Matlab结合说明文档

    1.功能简介 Matlab是三大数学软件之一,它在数学类科技应用软件中在数值计算方面首屈一指.Matlab可以进行矩阵运算.绘制函数和数据.实现算法.创建用户界面.连接其他编程语言的程序等,主要应用于 ...

  3. PIE SDK与Python结合说明文档

    1.功能简介 Python是一种跨平台语言.无论是在Windows.Linux.Unix还是Mac Os系统,我们都可以使用Python.甚至在Linux.Unix及Mac OS系统内已经集成了Pyt ...

  4. PIE SDK 文章目录索引

    1.PIE SDK介绍 1.1.  PIE软件介绍 1.2.  PIE SDK介绍 1.3.  PIE支持项目介绍 1.4.  PIE.NET-SDK插件式二次开发介绍 1.5.  PIE.NET-S ...

  5. Highcharts选项配置详细说明文档(zz)

    http://www.helloweba.com/view-blog-156.html Highcharts提供大量的选项配置参数,您可以轻松定制符合用户要求的图表,目前官网只提供英文版的开发配置说明 ...

  6. BasicExcel说明文档

    BasicExcel说明文档 BasicExcel原始链接:http://www.codeproject.com/Articles/13852/BasicExcel-A-Class-to-Read-a ...

  7. Highcharts选项配置详细说明文档

    Highcharts提供大量的选项配置参数,您可以轻松定制符合用户要求的图表,目前官网只提供英文版的开发配置说明文档,而中文版的文档网上甚少,且零散不全.这里,我把Highcharts常用的最核心的参 ...

  8. ASP.NET Core WebApi使用Swagger生成api说明文档看这篇就够了

    引言 在使用asp.net core 进行api开发完成后,书写api说明文档对于程序员来说想必是件很痛苦的事情吧,但文档又必须写,而且文档的格式如果没有具体要求的话,最终完成的文档则完全取决于开发者 ...

  9. PIE SDK组件式开发综合运用示例

    1. 功能概述 关于PIE SDK的功能开发,在我们的博客上已经分门别类的进行了展示,点击PIESat博客就可以访问,为了初学者入门,本章节将对从PIE SDK组件式二次开发如何搭建界面.如何综合开发 ...

随机推荐

  1. 打开程序出现.Net Framework Initialization Error – Unable to find a version of the runtime to run this applicatio的解决办法

    部署一个VS2010开发的程序时遇到 了一个非常奇怪的问题,客户端上已经安装了.net framework 4.0,但运行时还是会弹出错误: .Net Framework Initialization ...

  2. k8s启动Pod遇到CrashLoopBackOff的解决方法

    1.用kubectl get pod 当看到上面的状态后执行第2步 2.查看pod详情 [root@cc hzb]# kubectl describe pod ceph-mysql-hzb-pod 找 ...

  3. Prolific PL2303 usb 转串口Win8 Win8.1驱动

    买了根USB转RS232串口的线,Pl2303芯片的.卖家和官方都称不支持Win8,但鄙人不信在Win7上能用在Win8/8.1就用不起来. 官方最新版的v1.9.0的驱动描述说不支持Win 8/8. ...

  4. (二)ASP.NET中JavaScript的中英文(多语言)实现方案(二)

    在ASP.NET中JavaScript的中英文(多语言)实现方案中简单的介绍了js实现多语言的一种方案.下面将要讲述另外一种方法,尽管很相似,但是有些地方也是需要细细琢磨的,不说了,先看看. 在Lan ...

  5. css中padding和magin的区别

    1.Margin 用来设置页面中一个元素所占空间的边缘到相邻元素之间的距离. 如果提供全部四个参数值,将按上-右-下-左的顺序作用于四边.   如果只提供一个,将用于全部的四边.   如果提供两个,第 ...

  6. linux 挂载和使用文件系统

    从分区,到创建文件系统,再到把磁盘或分区挂载到一个目录后才能够使用. Windows或Mac系统会自动进行挂载,一旦创建好文件系统后会自动挂载到系统上,Windows我们称之为C\D盘,而Linux需 ...

  7. C# WPF 开发随想

    最近项目遇到切换窗口的时候偶尔出现闪屏的问题,前前后后花了两天的时间还是没有找到问题所在,一部分一部分的注释代码,看逻辑,开布局,还是一无所获. 最后还是他人的提醒下,直接不切换窗口,在同一个窗口中布 ...

  8. MVC的 url 传递参数无效

    有些符号(例如“=”)在URL中 直接传递是无效的,如果要在URL中传递这些特殊符号,那么就要使用他们的编码了.下表中列出了一些URL特殊符号及编码       十六进制值 1. + URL 中+号表 ...

  9. 「HNOI 2014」 江南乐

    \(Description\) \(n\)堆石子,每堆石子有\(s_i\)个,两个人轮流操作,每次可以将一对不少于\(F\)的石子尽量平均分成\(m\)堆,\(m\)每次自选,不能操作者输.共有\(T ...

  10. $().click()和$().on('click',function(){})的区别

    1. $(选择器).click(fn) 当选中的选择器被点击时触发回调函数fn.只针对与页面已存在的选择器. HTML代码: <!DOCTYPE html> <html lang=& ...