一种基于Web客户端的第三方地图瓦片服务接入方法及系统与流程

文档序号:11654401阅读:358来源:国知局
一种基于Web客户端的第三方地图瓦片服务接入方法及系统与流程

本发明属于webgis系统技术领域,尤其涉及一种基于web客户端的第三方地图瓦片服务接入方法及系统。



背景技术:

在webgis系统项目的建设过程中,业主单位往往不具备基础地图的生产和发布能力。例如某市交通局建设一张地图系统,交通业务相关的地图数据为局内自建平台发布,而基础地理和影像地图的数据来源于当地国土局的所提供的服务。这种第三方平台的地图服务,接口和协议往往与开发框架预设的标准协议存在不一致的方面,导致地图显示错位、级别不对、甚至无法显示的问题。为此,开发人员需要通过技术手段将各类地图结合起来以便可以在同一个地图上显示,增加了开发难度。



技术实现要素:

鉴于上述问题,本发明的目的在于提供一种基于web客户端的第三方地图瓦片服务接入方法及系统,旨在解决由于各家第三方发布平台的差异性,导致有时接入时存在信息缺失,地图服务无法正确的叠加到地图上浏览的技术问题。

一方面,所述基于web客户端的第三方地图瓦片服务接入方法,包括下述步骤:

配置文件并根据第三方地图瓦片服务平台提供的服务接口得到地图链接模板;

当地图平移或缩放时,根据当前地图显示比例尺得到瓦片级别,然后根据地图可见视窗的地理范围、当前级别对应的地图分辨率、瓦片原点、单张瓦片的宽高计算得到所要获取瓦片的行列号区间;

在所述行列号区间内,获取所有要请求瓦片的行号和列号并代入所述地图链接模板,得到所有请求瓦片的实际请求链接;

基于所述实际请求链接向第三方地图瓦片服务平台发起请求,获取图片数据并在地图上显示出来。

进一步的,所述方法还包括:

当地图缩放时,检测当前地图显示比例尺是否在预设的显示最大比例尺最小显示比例尺之间的范围内,当超出范围时,设置瓦片不可见。

进一步的,所述地图链接模板需通过配置文件重新定义一套标准化的配置参数,包括:参考系、初始化范围、全图范围、单位、显示最大比例尺、显示最小比例尺、图层id、样式id、矩阵、格式、瓦片信息,其中瓦片信息包含分辨率、瓦片宽高、瓦片原点、地图级别定义,所述地图级别定义包括级别编号、比例尺、分辨率。

进一步的,所要获取瓦片的行列号区间为:

row=[rowmin,rowmax],col=[colmin,colmax]

其中行号下限rowmin=(xmin-originx)/(resolution*tilewidth)

行号上限rowmax=[(xmax-originx)/(resolution*tilewidth)]+1

列号下限colmin=(originy-ymax)/(resolution*tileheight)

列号上限colmax=[(originy-ymin)/(resolution*tileheight)]+1

这里xmin、ymin、xmax、ymax分别表示地图可见视窗的地理范围的x坐标最小值、y坐标最小值、x坐标最大值和y坐标最大值;

originx、originy表示瓦片原点的坐标;

tilewidth、tileheight表示瓦片的宽高;

resolution表示地图分辨率。

另一方面,所述基于web客户端的第三方地图瓦片服务接入系统,包括:

模板定义单元,用于配置文件并根据第三方地图瓦片服务平台提供的服务接口得到地图链接模板;

区间计算单元,用于当地图平移或缩放时,根据当前地图显示比例尺得到瓦片级别,然后根据地图可见视窗的地理范围、当前级别对应的地图分辨率、瓦片原点、单张瓦片的宽高计算得到所要获取瓦片的行列号区间;

链接获取单元,用于在所述行列号区间内,获取所有要请求瓦片的行号和列号并代入所述地图链接模板,得到所有请求瓦片的实际请求链接;

数据加载单元,用于基于所述实际请求链接向第三方地图瓦片服务平台发起请求,获取图片数据并在地图上显示出来。

进一步的,所述系统还包括:

判断设置单元,用于当地图缩放时,检测当前地图显示比例尺是否在预设的显示最大比例尺最小显示比例尺之间的范围内,当超出范围时,设置瓦片不可见。

进一步的,所述模板定义单元中,所述地图链接模板需通过配置文件重新定义一套标准化的配置参数,包括:参考系、初始化范围、全图范围、单位、显示最大比例尺、显示最小比例尺、图层id、样式id、矩阵、格式、瓦片信息,其中瓦片信息包含分辨率、瓦片宽高、瓦片原点、地图级别定义,所述地图级别定义包括级别编号、比例尺、分辨率。

进一步的,所要获取瓦片的行列号区间为:

row=[rowmin,rowmax],col=[colmin,colmax]

其中行号下限rowmin=(xmin-originx)/(resolution*tilewidth)

行号上限rowmax=[(xmax-originx)/(resolution*tilewidth)]+1

列号下限colmin=(originy-ymax)/(resolution*tileheight)

列号上限colmax=[(originy-ymin)/(resolution*tileheight)]+1

这里xmin、ymin、xmax、ymax分别表示地图可见视窗的地理范围的x坐标最小值、y坐标最小值、x坐标最大值和y坐标最大值;

originx、originy表示瓦片原点的坐标;

tilewidth、tileheight表示瓦片的宽高;

resolution表示地图分辨率。

本发明的有益效果是:本发明根据不同第三方地图瓦片服务平台的服务接口定义地图链接模板,通过配置文件设置模板参数,将加载瓦片服务所需的所有参数进行自主控制,根据所有要请求瓦片的行号和列号并结合地图链接模板,得到瓦片的实际请求链接,根据实际请求链接实现了地图的有效接入和加载显示。本发明实现了一种标准化方法来描述第三方地图瓦片服务的接入过程,为此后类似场景提供了明确的工作思路和方法,形成的模块具有较好的复用度和扩展性。

附图说明

图1是本发明第一实施例提供的基于web客户端的第三方地图瓦片服务接入方法的流程图;

图2是配置参数示意图;

图3是本发明第二实施例提供的基于web客户端的第三方地图瓦片服务接入系统的结构方框图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

现有技术中,在第三方地图瓦片服务接入的过程,往往采用解析服务元数据的方式,但是由于第三方地图瓦片服务的发布平台存在不统一,并且服务元数据的描述往往也存在不完整的地方,导致有时服务接入时存在信息缺失,地图服务无法正确的叠加到地图上浏览。

另外,根据大量项目的实施经验来看,一般来说第三方服务为地图瓦片服务,因此本发明重点是形成一种方案,来解决第三方地图瓦片服务的接入问题。

为了说明本发明所述的技术方案,下面通过具体实施例来进行说明。

实施例一:

图1示出了本发明实施例提供基于web客户端的第三方地图瓦片服务接入方法的流程,为了便于说明仅示出了与本发明实施例相关的部分。

如图1所示,本实施例提供的基于web客户端的第三方地图瓦片服务接入方法包括下述步骤:

步骤s1、配置文件并根据第三方地图瓦片服务平台提供的服务接口得到地图链接模板。

由于各家第三方地图服务发布平台的差异性,未形成一个统一接口。本发明根据第三方瓦片服务所提供的服务接口,定义出地图链接模板。具体实现时,首先基于arcgistiledmapservicelayer进行扩展,tiledmapservicelayer继承自layer,是所有使用了缓存的地图服务的基类。通过它可以在程序中加入经过缓存的,来自不同数据源的地图服务。比如arcgisserver的地图服务,googlemap的地图,virtualearth的地图等。

通过配置文件重新定义以下参数,如图2所示,包括参考系、初始化范围、全图范围、单位、显示最大比例尺、显示最小比例尺、图层id、样式id、矩阵、格式、瓦片信息。其中瓦片信息包含分辨率(dpi)、瓦片宽高(基于像素单位)、瓦片原点、地图级别定义(包括级别编号、比例尺、分辨率)。以上参数为本实施例定义的通用格式参数,适用于主流地图瓦片服务的接入场景,基本上目前主流地图瓦片服务都包括上述参数。

不同的第三方地图瓦片服务发布平台的地图链接模板不同,地图链接模板实质上是一个链接请求地址。而获取一张瓦片的必要参数为级别level、行row、列col这三个参数,通用地图链接模板如下:

http://www.domain.com/l=level&r=row&c=col。

通过这三个参数可以获取一张地图瓦片。当然,不同的地图瓦片服务平台的接口可能会增加自定义扩展参数,也就是图2所示的各种参数,基于该通用地图链接模板也可以方便地进行扩展:

比如第三方地图瓦片服务中,最为常见的为ogcwmts服务,针对该地图瓦片服务,其地图链接模板如下所示:

http://www.domain.com/wmts?service=wmts&request=gettile&version=1.0.0&layer={layerid}&style={styleid}&tilematrixset={tilematrixset}&tilematrix={level}&tilerow={row}&tilecol={col}&format={format}

上述模板中,大括号{*}内为参数。

又如rest地图瓦片服务的地图链接模板为:

http://www.domain.com/tile/level/row/col。

其他类型的地图瓦片服务的地图链接模板不一一列举,但是都至少包括级别level、行row、列col这三个参数。

步骤s2、当地图平移或缩放时,根据当前地图显示比例尺得到瓦片级别,然后根据地图可见视窗的地理范围、当前级别对应的地图分辨率、瓦片原点、单张瓦片的宽高计算得到所要获取瓦片的行列号区间。

进行地图操作时,包括地图平移和缩放,都会更新和加载瓦片数据。具体实现时,首先需要获取地图可见视窗内的瓦片的行列号区间。

所要获取瓦片的行列号区间为:

row=[rowmin,rowmax],col=[colmin,colmax]

其中行号下限rowmin=(xmin-originx)/(resolution*tilewidth)

行号上限rowmax=[(xmax-originx)/(resolution*tilewidth)]+1

列号下限colmin=(originy-ymax)/(resolution*tileheight)

列号上限colmax=[(originy-ymin)/(resolution*tileheight)]+1

这里xmin、ymin、xmax、ymax分别表示地图可见视窗的地理范围的x坐标最小值、y坐标最小值、x坐标最大值和y坐标最大值;

originx、originy表示瓦片原点的坐标;

tilewidth、tileheight表示瓦片的宽高;

resolution表示地图分辨率。

行号范围在rowmin至rowmax之间、列号范围在colmin至colmax之间的地图瓦片是所要获取的瓦片。

步骤s3、在所述行列号区间内,获取所有要请求瓦片的行号和列号并代入所述地图链接模板,得到所有请求瓦片的实际请求链接。

使用双循环计算方法获取到所有要请求瓦片的行号row和列号col,即首先在[rowmin,rowmax]范围内,从小到到依次取值,假设有m个取值,针对当前的行号取值,在[colmin,colmax]范围内遍历列号,假设有n个列号,这样就可以得到m*n块瓦片的行列号,然后代入到实际的第三方地图瓦片服务的地图链接模板中,形成所有瓦片请求的实际请求链接,即得到了各块所要请求的瓦片的实际请求地址。

步骤s4、基于所述实际请求链接向第三方地图瓦片服务平台发起请求,获取图片数据并在地图上显示出来。

最后根据际请求链接直接向第三方地图瓦片服务平台发起请求,可以准确、方便的从第三方地图瓦片服务平台获取到瓦片图片数据,然后在当前地图上加载显示出来。整个过程的通用性高,为此后类似场景提供了明确的工作思路和方法,形成的模块具有较好的复用度和扩展性。

步骤s5、当地图缩放时,检测当前地图显示比例尺是否在预设的显示最大比例尺最小显示比例尺之间的范围内,当超出范围时,设置瓦片不可见。

在标准化的配置参数中,有显示最大比例尺、显示最小比例尺,如果当前地图显示比例尺不在该范围内,则设置瓦片不可见,避免出现显示错误。

实施例二:

图3示出了本发明实施例提供基于web客户端的第三方地图瓦片服务接入系统的结构,为了便于说明仅示出了与本发明实施例相关的部分。

如图3所示,本实施例提供的基于web客户端的第三方地图瓦片服务接入系统包括:

模板定义单元1,用于配置文件并根据第三方地图瓦片服务平台提供的服务接口得到地图链接模板;

区间计算单元2,用于当地图平移或缩放时,根据当前地图显示比例尺得到瓦片级别,然后根据地图可见视窗的地理范围、当前级别对应的地图分辨率、瓦片原点、单张瓦片的宽高计算得到所要获取瓦片的行列号区间;

链接获取单元3,用于在所述行列号区间内,获取所有要请求瓦片的行号和列号并代入所述地图链接模板,得到所有请求瓦片的实际请求链接;

数据加载单元4,用于基于所述实际请求链接向第三方地图瓦片服务平台发起请求,获取图片数据并在地图上显示出来。

进一步的,所述系统还包括:

判断设置单元5,用于当地图缩放时,检测当前地图显示比例尺是否在预设的显示最大比例尺最小显示比例尺之间的范围内,当超出范围时,设置瓦片不可见。

本实施例提供的各个功能单元对应实现了实施例一中的步骤s1-s5,具体实现过程这里不再赘述。

其中,所述模板定义单元中,所述地图链接模板需通过配置文件重新定义一套标准化的配置参数,包括:参考系、初始化范围、全图范围、单位、显示最大比例尺、显示最小比例尺、图层id、样式id、矩阵、格式、瓦片信息,其中瓦片信息包含分辨率、瓦片宽高、瓦片原点、地图级别定义,所述地图级别定义包括级别编号、比例尺、分辨率。

所要获取瓦片的行列号区间为:

row=[rowmin,rowmax],col=[colmin,colmax]

其中行号下限rowmin=(xmin-originx)/(resolution*tilewidth)

行号上限rowmax=[(xmax-originx)/(resolution*tilewidth)]+1

列号下限colmin=(originy-ymax)/(resolution*tileheight)

列号上限colmax=[(originy-ymin)/(resolution*tileheight)]+1

这里xmin、ymin、xmax、ymax分别表示地图可见视窗的地理范围的x坐标最小值、y坐标最小值、x坐标最大值和y坐标最大值;

originx、originy表示瓦片原点的坐标;

tilewidth、tileheight表示瓦片的宽高;

resolution表示地图分辨率。

本发明实施例根据不同第三方地图瓦片服务平台的服务接口定义地图链接模板,通过配置文件设置模板参数,将加载瓦片服务所需的所有参数进行自主控制,根据所有要请求瓦片的行号和列号并结合地图链接模板,得到瓦片的实际请求链接,根据实际请求链接实现了地图的有效接入和加载显示。本发明实现了一种标准化方法来描述第三方地图瓦片服务的接入过程,为此后类似场景提供了明确的工作思路和方法,形成的模块具有较好的复用度和扩展性。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1