利用postgresql12.2+postgis+geosever2.16进行地图发布(一)

写在前面:配置这个东西配了好久才成功,网上关于这方面的帖子还是很多的,帮助虽然很大但总会遇到些小毛病。以下配置所需postgresql12.2的版本组合经过测试完全可用,默认是64位Win10计算机。感谢其他发帖人的宝贵经验,在此表示感谢。

基本思路

1.安装postgresql
2.安装postgis
3.安装geoserver
4.下载osm的pbf的地图数据
5.用postgresql+postgis导入OSM的pbf地图
6.利用geoserver连接postgis数据进行地图发布
7.自定义地图样式

准备工作

需要的工具如下:
1、postgresql12.2
下载地址:https://www.postgresql.org//

2、postgis
下载地址:http://download.osgeo.org/postgis/windows/pg12/

利用postgresql12.2+postgis+geosever2.16进行地图发布(一)
有人说安装完postgresql可以直接用自带的Stack Builder安装,但我的总是安装不上,只好自己下载了,
这里选用的是postgis-bundle-pg12x64-setup-3.0.1-3.exe

3、geoserver-2.16.1
下载地址:https://sourceforge.net/projects/geoserver/files/GeoServer/2.16.1/geoserver-2.16.1-bin.zip/download
利用postgresql12.2+postgis+geosever2.16进行地图发布(一)
需要注意的是geoserver有好几种安装方式, 官网下载页面http://geoserver.org/download/包有三种部署方式:

  1. 平台独立二进制文件,包含tomcat和系统文件可以解压直接运行不需要安装。
  2. 适用于Windows平台的安装程序。
  3. 用于servlet容器的Web Archive (war)编译后的War包。
    利用postgresql12.2+postgis+geosever2.16进行地图发布(一)

这里选用的是平台独立二进制文件,因为它本身自带有服务器,相对来说减少了很多工作,操作起来也比较简单,随用随开。另外前提要有Java环境,并且弹出下载界面的时间有点长,请耐心等待。

4、osm2pgsql

下载地址:http://customdebug.com/osm/osm2pgsql.zip

5、OSM地图数据,这里选用的是china-latest.osm.pbf

下载地址:https://download.geofabrik.de/

利用postgresql12.2+postgis+geosever2.16进行地图发布(一)
这里有各个地区的OSM地图,点击Asia,再选择China下载就行了。

6、default.style文件

下载地址:https://github.com/openstreetmap/osm2pgsql/blob/master/default.style

osm2pgsql下载好之后解压,解压完成之后,将下载的default.style放入到.\osm2pgsql\x64文件夹下,如下所示:
利用postgresql12.2+postgis+geosever2.16进行地图发布(一)
关于default.style文件网上有人说要把里面的“#”去掉,经实际操作对于这个版本完全没必要,去掉了还会有更多问题。

安装

1.安装PostgreSQL

  1. 注意选择安装路径,尽量不装在C盘,我的安装地址是E:\GIS\postgresql\install,记住这个路径,后面会用到。
  2. 过程中间会让你输入超级用户postgres的密码,一定要记住,后面创建及配置数据库的时候会用到。
  3. 有个端口号默认是5432,不要改动。
  4. 以下四个全部勾选:

利用postgresql12.2+postgis+geosever2.16进行地图发布(一)

2.安装PostGIS

直接点击postgis-bundle-pg12x64-setup-3.0.1-3.exe,在弹出的界面点击同意,如下图:

利用postgresql12.2+postgis+geosever2.16进行地图发布(一)
记得勾选 Creat spatial database:

利用postgresql12.2+postgis+geosever2.16进行地图发布(一)
选择安装目录,注意要选在PostgreSQL的安装目录下(否则一定安装失败!!!)

利用postgresql12.2+postgis+geosever2.16进行地图发布(一)
接下来需要输入数据库连接信息,用户就是超级用户,密码就是之前所设定的密码,其他不动:

利用postgresql12.2+postgis+geosever2.16进行地图发布(一)
会创建一个数据库的模板:

利用postgresql12.2+postgis+geosever2.16进行地图发布(一)
模板数据库名称可以改动,点击安装,过程中会弹出三个选择窗口,一律同意,等待安装完成即可。(图略)

3.安装Geoserver

  1. 首先,电脑上安装有JRE环境,也就是java的运行环境,这里不详细介绍JDK安装的过程。

  2. 解压geoserver-2.16.1-bin.zip,打开geoserver-2.16.1文件夹,打开bin文件夹,点击startup.bat文件进行启动:

利用postgresql12.2+postgis+geosever2.16进行地图发布(一)
等待到 main started 表示服务器已启动:

利用postgresql12.2+postgis+geosever2.16进行地图发布(一)
3. 启动完成后,在浏览器输入http://localhost:8080/geoserver/web/即可打开geoserver的首页,使用账号密码登陆,账号为:admin 密码为geoserver

利用postgresql12.2+postgis+geosever2.16进行地图发布(一)
这样geoserver就安装部署完成,等配置好数据库后就能发布地图。

配置数据库,导入OMS数据到pgsql中

1.新建数据库osm1

  1. Win+R,输入cmd,回车进入命令行。转到在数据库安装位置bin文件夹下,输入建库语句createdb -U postgres -E UTF8 osm1

利用postgresql12.2+postgis+geosever2.16进行地图发布(一)

  1. 输入psql -U postgres -d postgres 进入数据库,然后输入\l查看已经创建好的数据库,如下所示就表明数据库osm1创建成功。

利用postgresql12.2+postgis+geosever2.16进行地图发布(一)

2.修改pg_hba.conf

  1. 找到文件pg_hba.conf(文件路径:…\postgresql\install\data)

利用postgresql12.2+postgis+geosever2.16进行地图发布(一)

  1. 将里面的md5,下图所示的两个md5改为trust:(已经改好)

利用postgresql12.2+postgis+geosever2.16进行地图发布(一)

3.加载postgis对象和函数定义(postgis.sql)

在数据库安装位置bin文件夹下打开dos窗口,输入命令psql -U postgres -d osm1 -f “postgis.sql文件的路径”。(引号去掉)

postgis.sql文件在…postgresql\install\share\contrib\postgis-3.0文件夹下

利用postgresql12.2+postgis+geosever2.16进行地图发布(一)
成功加载:

利用postgresql12.2+postgis+geosever2.16进行地图发布(一)

4.加载坐标系统定义(spatial_ref_sys.sql)

在dos窗口下输入命令 psql -U postgres -d osm1 -f “spatial_ref_sys.sql文件的路径”(引号去掉)

spatial_ref_sys.sql文件在…postgresql\install\share\contrib\postgis-3.0文件夹下

利用postgresql12.2+postgis+geosever2.16进行地图发布(一)
有的人说需要900913.sql文件,但在网上这个文件已经很难搜到了,如果没特殊需求,用spatial_ref_sys.sql就行了。对于其他坐标系的加载还在探索中。

5.导入OSM数据

命令行转到osm2pgsql文件夹下的.\osm2pgsql\x64,输入命令osm2pgsql -d osm1 –U postgres -P 5432 -C 12000 -S “…\osm2pgsql\x64\default.style” china-latest.osm.pbf。输出过程中只要没有报错,乱码不用去理会,如图所示:

利用postgresql12.2+postgis+geosever2.16进行地图发布(一)
运行中有可能报错:

利用postgresql12.2+postgis+geosever2.16进行地图发布(一)
好像是内存的问题,记得及时清理缓存,多试几次就好了,一般这一步都要加载10几分钟。

导入成功:

利用postgresql12.2+postgis+geosever2.16进行地图发布(一)

6.验证

打开pgAdmin4,会发现osm1库中多了4张表,如图所示:
利用postgresql12.2+postgis+geosever2.16进行地图发布(一)

地图发布

(下一篇详细叙述)

利用postgresql12.2+postgis+geosever2.16进行地图发布(一)
感谢前辈们的分享,欢迎各位批评指正!
主要参考材料:
链接:https://www.jianshu.com/p/cb5e53415d32
链接:https://blog.****.net/antma/article/details/83580859
链接:https://blog.****.net/cao812755156/article/details/80919521