一种基于Docker容器快速部署OSM切片服务的方法及系统与流程

专利查询2023-10-1  131


一种基于docker容器快速部署osm切片服务的方法及系统
技术领域
1.本发明涉及一种基于docker容器快速部署osm切片服务的方法及系统,特别是涉及地图服务部署的技术领域。


背景技术:

2.随着地图服务技术的迅速发展,用户对于空间数据的生成、存储、管理、分析、显示越来越重视。除了这些基本功能外,部署速度,样式精美也成为受众的附加要求。
3.在解决视觉上的布局呈现时,现有技术中往往采用的方法普遍为利用geoserver直接发布shapefile文件,因此修改样式则需要撰写sld文件。由于需要编译对应的sld文件,因此需要开发人员掌握新的标记语言sld,使得学习成本大。面对视觉上的追求时,想要制作出精美的样式便需要良好的设计功底。另外,针对撰写完的文件部署,需要完全拷贝数据文件与样式文件到新的服务器上、配置geoserver所需的java环境、配置环境变量,以及克服一些其余的小问题,因此这些操作往往会导致传统部署地图服务方式效率低,同时拷贝数据也需要花费大量时间,以文件形式保存数据也容易导致文件数据的丢失。


技术实现要素:

4.发明目的:提出一种基于docker容器快速部署osm切片服务的方法及系统,以解决现有技术存在的上述问题。
5.技术方案:第一方面,提出了一种基于docker容器快速部署osm切片服务的方法,其特征在于,采用docker开发部署osm地图服务,并利用dockerfile脚本编写样式配置,具体包括以下步骤:步骤1、获取待运行的地图部署项目,并制定对应的程序脚本;步骤2、根据需求修正程序脚本以及服务器配置文件;步骤3、通过循环迭代的方式将所需文件格式转换为数学标记语言文件,并命名为的对应的镜像文件;步骤4、打包所述镜像文件并运行,实现自定义样式的osm切片服务。
6.通过加速地图服务部署速度的同时还可以灵活配置地图样式,节省开发人员部署时间和学习成本,同时充分结合当前流行的容器化技术,利用docker消除重复的配置任务,快速构建地图服务镜像。
7.在第一方面的一些可实现方式中,为了获取更贴近个性化设计的文件样式,对mss样式文件进行更新修改。
8.在第一方面的一些可实现方式中,镜像文件的构建流程进一步包括以下步骤:步骤3.1、拉取当前项目文件的镜像文件仓库;步骤3.2、根据需求修改对应的脚本程序;步骤3.3、通过文件转换生成镜像;步骤3.4、利用文件推送脚本程序将生成的镜像文件推送至私有库。
9.进一步的,步骤3.2在修改对应的脚本程序时,针对osm开放街道地图样式文件和osm-light样式文件,采用安装catro依赖包,编译mml文件,覆盖项目中mapnik.xml文件的方式,修改对应的脚本程序。
10.进一步的,步骤3.2在修改对应的脚本程序时,在面对配置renderd.conf路由渲染配置文件修改地址映射到样式文件时,利用copy脚本替换容器内生成的renderd.conf路由渲染配置文件,修改对应的脚本程序。
11.在第一方面的一些可实现方式中,在步骤4打包所述镜像文件并运行,实现自定义样式的osm切片服务后,客户端可用leaflet在线地图或openlayers库包,对服务器暴露的80端口进行标准格式发布的地图数据访问,同时可根据renderd.conf配置的地址进行不同样式的切换。
12.在第一方面的一些可实现方式中,镜像文件创建推送完成后,可以从docker私有库被拉取到任意服务器上,在启动容器的同时启动服务,节省大量时间精力。
13.进一步的,实现快速部署osm切片服务的过程,还包括步骤5、服务器的部署过程;在镜像文件从docker私有库被拉取到任意服务器上时,所述服务器的部署过程进一步包括以下步骤:步骤5.1、登录更新后的私有库;步骤5.2、根据需求获取对应的镜像;步骤5.3、在项目文件程序代码中,导入对应的导入任意地图数据镜像文件;步骤5.4、通过指令导入任意地图数据命令启动容器,实现服务器的部署。
14.在第一方面的一些可实现方式中,实现地图样式数据配置时,进一步利用dockerfile中的脚本,引入mapnik渲染工具包,依赖第三方包carto和appache,配置不同样式的osm地图切片。
15.第二方面,提出一种基于docker容器快速部署osm切片服务的系统,该系统具体包括:用于获取所需项目的第一模块;用于编辑脚本的第二模块;用于生成镜像文件的第三模块;用于实现osm切片服务的第四模块。
16.在第二方面的一些可实现方式中,首先,所述第一模块通过指令获取所需项目文件;其次,所述第二模块根据需求对第一模块获取到的项目文件脚本进行编辑;再次,通过导入第三方依赖文件,并结合第二模块,实现样式的自定义更行修改;从次,利用所述第三模块,在循环操作下获取自定义样式文件,并形成对应的镜像文件;最后,所述第四模块根据第三模块生成的镜像文件,通过调用指令和运行指令,实现自定义样式的osm切片服务。
17.有益效果:本发明提出了一种基于docker容器快速部署osm切片服务的方法及系统,致力于加速地图服务部署速度的同时实现灵活配置地图样式。通过docker开发部署osm地图服务可以减少专业地图服务开发人员,以及免去运行环境配置、拷贝geoserver运行文件、手写sql语句等重复性劳动,从而加快运行速度。其中采用的openstreetmap地图数据是开源免费的,从而节省了投入成本。另外通过dockerfile脚本编写样式配置可以减少专业地图设计人员、减少sld等标记语言的学习成本,以及可根据动态地址调取自定义样式的地
图。
18.本发明通过充分结合容器化技术,利用docker消除重复的配置任务,快速构建地图服务镜像。在实现部署的过程中,只需拉取镜像,启动容器,极大程度上的节省开发人员部署时间和学习成本。
附图说明
19.图1为本发明实施例的数据处理流程图。
20.图2为本发明实施例的镜像文件的构建流程图。
21.图3为本发明实施例的服务器部署过程示意图。
具体实施方式
22.在下文的描述中,给出了大量具体的细节以便提供对本发明更为彻底的理解。然而,对于本领域技术人员而言显而易见的是,本发明可以无需一个或多个这些细节而得以实施。在其他的例子中,为了避免与本发明发生混淆,对于本领域公知的一些技术特征未进行描述。
23.为了克服现有技术中对开发人员成本投入过高的需求,以及配置环境变量效率低下的问题,本技术提出一种基于docker容器快速部署osm切片服务的方法及系统,通过加速地图服务部署速度的同时还可以灵活配置地图样式,节省开发人员部署时间和学习成本,同时充分结合当前流行的容器化技术,利用docker消除重复的配置任务,快速构建地图服务镜像。部署只需拉取镜像,启动容器。
24.实施例一提出一种基于docker容器快速部署osm切片服务的方法,用于加速地图服务部署速度的同时,还可以灵活配置地图样式,该方法具体包括以下步骤:步骤1、获取待运行的地图部署项目,并制定对应的程序脚本;步骤2、根据需求修正程序脚本以及服务器配置文件;步骤3、通过循环迭代的方式将所需文件格式转换为数学标记语言文件,并命名为的对应的镜像文件;步骤4、打包所述镜像文件并运行,实现自定义样式的osm切片服务。
25.本实施例中通过将所需文件格式转换为数学标记语言文件,并命名为的对应的镜像文件的方式,在不断重复的情况下可以让图层拥有多个行业内已开源的精美的样式,另外,通过修改可以撰写文件内的文件,可以在操作简单的情况下,实现图层样式的更改。
26.优选实施例中,部署自定义样式地图服务,从而实现快速部署osm切片服务的过程如下:步骤1、通过git clone指令拉取openstreetmap-tile-server开源项目脚本,并进入dockerfile文件中编写脚本;步骤2、找到注释为configure stylesheet的代码段,修改run命令后的脚本;步骤3、根据需求利用脚本控制容器内的/home/renderer/src文件夹拉取现有项目的openstreetmap-carto git仓库;所述/home/renderer/src文件夹为根据本实施例实现项目中生成的镜像容器内的路径,具体名称可根据实际应用进行调整,因此并不能作为
本发明自身的限制;步骤4、下载地图设计语言依赖包,将样式工具集文件编译成渲染器的样式文件;优选实施例中,地图设计语言依赖包采用carto@0.18.2,它的基础上具有过滤地图数据和提供诸如变量之类的特定功能。它针对mapnik渲染器,能够生成mapnikxml和mapnikxml的json变体。通过它在脚本中的设计,可实现对protect.mml文件的编译。
27.步骤5、根据需求重复以上操作,下载并构建任意由mipnik构建的开源样式项目;步骤6、新增renderd.conf路由映射配置文件,添加两个地址映射到刚刚创建的样式文件夹下,再将其用copy拷贝脚本替代原镜像文件内的/usr/local/etc/renderd.conf文件;步骤7、配置项目中openstreetmap-tiles-update-expire图层更新的有效时间;步骤8、运行dockerbuild-t=’geoserver:1.0.0’程序代码构建镜像文件;步骤9、运行dockerrun-vxxx.osm.pfd:/data.osm.pbfgeoserver:1.0.0import命令导入任意地图数据;步骤10、运行dockerrun-vopenstreetmap-data:/var/lib/postgresql/12/maingeoserver:1.0.0run命令导入任意地图数据命令启动容器;步骤11、此地图服务构建完成,客户端采用leaflet或openlayers对服务器暴露的80端口进行访问,同时可根据renderd.conf配置的地址进行不同样式的切换。
28.实施例二在实施例一基础上的进一步实施例中,在构建镜像文件时,包括如图2所示的步骤,具体的:步骤3.1、拉取当前项目文件的镜像文件仓库;步骤3.2、根据需求修改对应的脚本程序;步骤3.3、通过文件转换生成镜像;步骤3.4、利用文件推送脚本程序将生成的镜像文件推送至私有库。
29.其中,步骤3.2在修改对应的脚本程序时,针对osm样式文件和osm-light样式文件,采用安装catro依赖包,编译mml文件,覆盖项目中mapnik.xml文件的方式,修改对应的脚本程序。同时,在面对配置renderd.conf修改地址映射到样式文件时,利用copy脚本替换容器内生成的renderd.conf文件,修改对应的脚本程序。
30.本实施例由于dockerfile启动脚本中已经将容器中的80端口映射到宿主机的80端口,因此在任意客户端均能够通过80端口访问这个服务。利用开源javascript交互式地图库leaflet或openlayers便可以在浏览器端展示样式精美的地图。同时可根据配置的样式地址,改变url,获取其他样式的地图。除此之外,当镜像一旦创建推送完成,便可以从docker私有库被拉取到任意服务器上,实现启动容器便启动服务,从而节省大量时间精力。
31.实施例三现有技术中,在实现部署时,常采用的方式如下:步骤1、dockerhub拉取overv/openstreetmap-tile-server镜像dockerpull;步骤2、启动该镜像运行命令;即:dockerrun\-v/absolute/path/to/luxembourg.osm.pbf:/data.osm.pbf\-v /absolute/path/to/luxembourg.poly:/data.poly \-v openstreetmap-data:/var/lib/postgresql/12/main \overv/openstreetmap-tile-server \import步骤3、docker run exec
ꢀ‑
it overv/openstreetmap-tile-server /bin/bash 运行容器;步骤4、进入home/renderer/src/openstreetmap-carto 文件夹;步骤5、根据需要的样式用vi命令修改以.mss结尾的文件,退出并保存;步骤6、通过exit命令退出overv/openstreetmap-tile-server容器,并用docker restart imageid命令重启容器。
32.步骤7、部署成功。
33.此方案虽能够实现快速部署,但是需要手动修改容器内部mss文件来更改样式,默认样式也不够精美。同时当容器被删除时,容器内的修改将不存在。所以此方案不用于实际使用当中。
34.在实施例一基础上的进一步实施例中,在完成镜像文件打包部署后,实现自定义样式的osm切片服务过程中的服务器部署过程如图3所示,具体包括以下步骤:步骤一、登录更新后的私有库;步骤二、根据需求获取对应的镜像;步骤三、在项目文件程序代码中,导入对应的导入任意地图数据镜像文件;步骤四、通过指令导入任意地图数据命令启动容器,实现服务器的部署。
35.优选实施例中,基于实施例一中的优选实施例,具体的包括以下步骤:步骤一、通过docker login登录更新后的docker私有库;步骤二、利用docker pull拉取名为geoserver:1.0.0的镜像;步骤三、通过docker run geoserver:1.0.0 osm.pdf import命令导入任意地图数据;步骤四、利用docker run
ꢀ–
d geoserver:1.0.0 run导入任意地图数据命令启动容器。
36.本实施例容器化部署osm切片服务不仅无需配置运行环境,而且不理解地图服务部署的运维人员也可以通过docker镜像实现快速部署。只需运行导入数据命令,启动容器命令即可替代原本需要手动书写sql语句,手动编写样式文件等流程,真正实现了部署和开发解耦。加快了部署速度、解决了样式不精美的问题。
37.实施例四在实施例一基础上的进一步实施例中,提出一种基于docker容器快速部署osm切片服务的系统,用于实现一种基于docker容器快速部署osm切片服务的方法,该系统具体包括:用于获取所需项目的第一模块;用于编辑脚本的第二模块;用于生成镜像文件的第三模块;用于实现osm切片服务的第四模块。
38.具体的,首先,所述第一模块通过指令获取所需项目文件;其次,所述第二模块根据需求对第一模块获取到的项目文件脚本进行编辑;再次,通过导入第三方依赖文件,并结合第二模块,实现样式的自定义更行修改;从次,利用所述第三模块,在循环操作下获取自定义样式文件,并形成对应的镜像文件;最后,所述第四模块根据第三模块生成的镜像文件,通过调用指令和运行指令,实现自定义样式的osm切片服务。
39.如上所述,尽管参照特定的优选实施例已经表示和表述了本发明,但其不得解释为对本发明自身的限制。在不脱离所附权利要求定义的本发明的精神和范围前提下,可对其在形式上和细节上做出各种变化。

技术特征:
1.一种基于docker容器快速部署osm切片服务的方法,其特征在于,采用docker开发部署osm地图服务,并利用dockerfile脚本编写样式配置,具体包括以下步骤:步骤1、获取待运行的地图部署项目,并制定对应的程序脚本;步骤2、根据需求修正程序脚本以及服务器配置文件;步骤3、通过循环迭代的方式将所需文件格式转换为数学标记语言文件,并命名为的对应的镜像文件;步骤4、打包所述镜像文件并运行,实现自定义样式的osm切片服务。2.根据权利要求1所述的一种基于docker容器快速部署osm切片服务的方法,其特征在于,为了获取更贴近个性化设计的文件样式,对mss样式文件进行更新修改。3.根据权利要求1所述的一种基于docker容器快速部署osm切片服务的方法,其特征在于,镜像文件的构建流程进一步包括以下步骤:步骤3.1、拉取当前项目文件的镜像文件仓库;步骤3.2、根据需求修改对应的脚本程序;步骤3.3、通过文件转换生成镜像文件;步骤3.4、利用文件推送脚本程序将生成的镜像文件推送至私有库。4.根据权利要求3所述的一种基于docker容器快速部署osm切片服务的方法,其特征在于,步骤3.2在修改对应的脚本程序时,针对osm开放街道地图样式文件和osm-light样式文件,采用安装catro依赖包,编译mml文件,覆盖项目中mapnik.xml文件的方式,修改对应的脚本程序。5.根据权利要求3所述的一种基于docker容器快速部署osm切片服务的方法,其特征在于,步骤3.2在修改对应的脚本程序时,在面对配置renderd.conf路由渲染配置文件修改地址映射到样式文件时,利用copy脚本替换容器内生成的renderd.conf路由渲染配置文件,修改对应的脚本程序。6.根据权利要求1所述的一种基于docker容器快速部署osm切片服务的方法,其特征在于,在步骤4打包所述镜像文件并运行,实现自定义样式的osm切片服务后,客户端可用leaflet在线地图或openlayers库包,对服务器暴露的80端口进行标准格式发布的地图数据访问,同时可根据renderd.conf配置的地址进行不同样式的切换。7.根据权利要求1所述的一种基于docker容器快速部署osm切片服务的方法,其特征在于,镜像文件创建推送完成后,可以从docker私有库被拉取到任意服务器上,在启动容器的同时启动服务,节省大量时间精力。8.根据权利要求7所述的一种基于docker容器快速部署osm切片服务的方法,其特征在于,实现快速部署osm切片服务的过程,还包括步骤5、服务器的部署过程;在镜像文件从docker私有库被拉取到任意服务器上时,所述服务器的部署过程进一步
包括以下步骤:步骤5.1、登录更新后的私有库;步骤5.2、根据需求获取对应的镜像文件;步骤5.3、在项目文件程序代码中,导入对应的导入任意地图数据镜像文件;步骤5.4、通过指令导入任意地图数据命令启动容器,实现服务器的部署。9.根据权利要求1所述的一种基于docker容器快速部署osm切片服务的方法,其特征在于,实现地图样式数据配置时,进一步利用dockerfile中的脚本,引入mapnik渲染工具包,依赖第三方包carto和appache,配置不同样式的osm地图切片。10.一种基于docker容器快速部署osm切片服务的系统,用于实现权利要求1-9任意一项方法,其特征在于,包括:用于获取所需项目的第一模块;用于编辑脚本的第二模块;用于生成镜像文件的第三模块;用于实现osm切片服务的第四模块;首先,所述第一模块通过指令获取所需项目文件;其次,所述第二模块根据需求对第一模块获取到的项目文件脚本进行编辑;再次,通过导入第三方依赖文件,并结合第二模块,实现样式的自定义更行修改;从次,利用所述第三模块,在循环操作下获取自定义样式文件,并形成对应的镜像文件;最后,所述第四模块根据第三模块生成的镜像文件,通过调用指令和运行指令,实现自定义样式的osm切片服务。

技术总结
本发明提出了一种基于Docker容器快速部署OSM切片服务的方法及系统,致力于加速地图服务部署速度的同时实现灵活配置地图样式。其中方法具体包括:步骤1、获取待运行的地图部署项目,并制定对应的程序脚本;步骤2、根据需求修正程序脚本以及服务器配置文件;步骤3、通过循环迭代的方式将所需文件格式转换为数学标记语言文件,并命名为的对应的镜像文件;步骤4、打包所述镜像文件并运行,实现自定义样式的osm切片服务。通过充分结合容器化技术,利用docker消除重复的配置任务,快速构建地图服务镜像。在实现部署的过程中,只需拉取镜像,启动容器,极大程度上的节省开发人员部署时间和学习成本。习成本。习成本。


技术研发人员:陈蓉 赖海光 郑成辉
受保护的技术使用者:南京控维通信科技有限公司
技术研发日:2021.11.30
技术公布日:2022/3/8

最新回复(0)