在Geoserver发布地图中,数据获取与处理、图层样式调节是最繁琐最复杂的工作,最近一直在寻找Geoserver能不能直接发布OSM官网地图使用OSM官方样式,最终实现OSM官方地图的离线发布。每次进Geoserver官网左侧有官方发布的OSM地图,通过F12查看网络请求链接为Geoserver发布的地图服务。
在官网文档搜索,确实发现了Geoserver发布OSM地图的项目说明,在Geosolution也提到了发布OSM地图相关说明,因此在Github搜索发现了该项目。下面将讲述如何发布OSM官方地图。
1.下载Github项目:GitHub - geosolutions-it/osm-styles: OSM Bright styles for GeoServer (at last!)
2.安装Geoserver,需要安装的插件(插件版本要与Geoserver版本一致):
geoserver-2.19.2-css-plugin.zip、geoserver-2.19.2-feature-pregeneralized-plugin.zip
3. 准备一台Linux系统服务器,用到的Imposm工具只能Linux系统上运行,推荐VMware虚拟机安装Linux系统
4.下载Imposm工具:imposm-0.11.1-linux-x86-64.tar.gz
5.下载GeoPackage-1.9 GB数据: https://www.dropbox.com/s/bqzxzkpmpybeytr/osm-lowres.gpkg?dl=1
4.下载.osm.pbf格式数据:Geofabrik Download Server
下载的插件压缩包解压,将其中jar包放到.../geoserver/WEB-INF/lib目录下,Tomcat安装的位置在 tomcat安装目录/webapps/geoserver/WEB-INF/lib,geoserver-版本号-bin单独安装的位置在geoserver-2.19.2-bin/webapps/geoserver/WEB-INF/lib
Linux安装教程网上很多,可根据Vmware上安装Linux(centos7)图文教程安装,使用连接SSH工具连接。这里主要讲述如何安装Imposm。
将下载的imposm-0.11.1-linux-x86-64.tar.gz安装包上传到Linux系统中,使用解压命令解压
tar -zxvf imposm-0.11.1-linux-x86-64.tar.gz
查看版本号:
[root@localhost ~]# cd imposm-0.11.1-linux-x86-64/
[root@localhost imposm-0.11.1-linux-x86-64]# ./imposm version
0.11.1
[root@localhost imposm-0.11.1-linux-x86-64]#
添加Postgis扩展:CREATE EXTENSION postgis;
由于全国数据量太大,以下载台湾OSM数据为例:taiwan-latest.osm.pbf,将下载数据放入Linux中imposm-0.11.1-linux-x86-64根目录下。
将GitHub下载的 osm-styles 项目中的osm-styles-master/imposm/dump-pg.sh和osm-styles-master/imposm/mapping.yml导入Linux中imposm-0.11.1-linux-x86-64根目录下。
数据库连接链接:postgis://用户名:密码@windows系统本机的ip地址:端口/数据库名,先后执行下面命令导入数据:
./imposm import -mapping mapping.yml -read taiwan-latest.osm.pbf
./imposm import -mapping mapping.yml -write -connection postgis://postgres:[email protected]:5432/osm -overwritecache
执行第一个命令读取osm文件:
执行第二个命令,将osm数据导入pg数据库,等待导入完成:
QGIS连接数据库查看:
1. 将GitHub下载的 osm-styles 项目解压,除imposm全部替换到.../webapps/geoserver/data目录下,里面包含了图层、图层组、各个图层样式等。
2.将下载的GeoPackage-1.9 GB数据,放入../webapps/geoserver/data/data目录下
3.启动Geoserver,插件必须提前安装,修改osm数据存储的用户名、密码、数据库名等
${}都是需要填写的参数
注意schema参数是import,不是public
可以看出和OSM官网地图样式完全一致!