PostgreSQL+PostGIS+GeoServer学习笔记

本文详细介绍了如何安装配置GeoServer、PostgreSQL与PostGIS,以及如何使用Osmosis和osm2pgsql将OpenStreetMap数据导入PostgreSQL数据库。此外,还提供了配置GeoServer以显示OSM数据的方法,以及如何使用SLD样式美化地图。

1.安装java SE

2.安装PostgreSQL+PostGIS

安装包下载地址:http://www.enterprisedb.com/products-services-training/pgdownload#windows。根据自己电脑的实际情况下载相应的安装包。安装过程很简单,一直点next就行,要注意的有以下几点:

——最最重要的一点!!!关掉360,万恶的360!!!

——安装路径不要有空格;

——中间有让你输入超级用户postgres的密码,这个密码要记住,后面创建及配置数据库的时候会用到;

——启动Stack Builder(如下图),安装PostGIS;

issue:安装程序运行到99%最后出现了一个未知错误,最后改用最新版postgresql-11.1-1-windows-x64才得以解决。

3.安装GeoServer geoserver-2.14.1

https://sourceforge.net/projects/geoserver/files/GeoServer/2.14.1/geoserver-2.14.1.exe/download

注意先安装java

E:\ProgramPostgreSQL\GeoServer 2.14.1\bin里有个startup.bat可以启动geoserver

打开  http://localhost:8080/geoserver/web/  右上角登陆 默认账号admin 密码geoserver

4.使用osmosis向PostgreSQL导入OpenStreetMap数据

      4.1下载

下载地图数据,如:https://download.geofabrik.de/asia/china-latest.osm.pbf

osmosis下载地址:https://wiki.openstreetmap.org/wiki/Osmosis/Quick_Install_(Windows)

解压缩后手动运行bat文件,如"C:\Program Files (x86)\osmosis\bin\osmosis.bat"

教程: https://wiki.openstreetmap.org/wiki/Osmosis/PostGIS_Setup

 

      4.2新建一个数据库

        打开管理后台E:\ProgramPostgreSQL\11\pgAdmin 4\bin\pgAdmin4.exe  使用模板创建一个新数据库, 如:chinaosm

        参考:https://blog.youkuaiyun.com/vili_sky/article/details/78771276 

      4.3为数据库创建Schema(模式)

          使用命令 E:\ProgramPostgreSQL\11\bin>psql -U postgres -d chinaosm -f E:\ProgramPostgreSQL\osmosis\script\pgsimple_schema_0.6.sql

      4.4导入OSM数据至PostgreSQL数据库 

使用命令:

E:\ProgramPostgreSQL\osmosis\bin>osmosis --read-pbf file=E:\ProgramPostgreSQL\china-latest.osm.pbf --write-pgsimp database=chinaosm user="postgres" password="————" host="localhost"

注意:--read-pbf 中的pdf对应.pbf格式的文件,-xml对应.osm格式的文件,具体参考:https://wiki.openstreetmap.org/wiki/Osmosis/PostGIS_Setup

--write-pgsimp 中的-pgsimp对应pgsimple_schema_0.6.sql这类的数据表模式,模式不对应则一直出现数据库模式版本不对应的问题:The database schema version of 5 does not match the expected version of 6.

导入数据会花费比较久的时间,信息: Pipeline executing, waiting for completion.

等我导入完成再继续写

………………

信息: Total execution time: 856868 milliseconds.

一个20mb的文件用了14分钟。。。

You can either use write pgsql or write pgsql dump. This example uses write pgsql

osmosis --read-pbf extract.osm.pbf --log-progress --write-pgsql database=pgsnapshot 

这样貌似可以看进度

另外更常用的办法是osm2pgsql:

E:\ProgramPostgreSQL\osm2pgsql\x64>osm2pgsql -d china -U postgres -P 5432 -C 12000 -S "E:\ProgramPostgreSQL\osm2pgsql\default.style" E:\ProgramPostgreSQL\china-latest.osm.pbf

5.配置GeoServer

参考:https://www.cnblogs.com/kkyyhh96/p/6379515.html

打开  http://localhost:8080/geoserver/web/

https://blog.youkuaiyun.com/cao812755156/article/details/80919521  获取OSM数据,并通过osm2pgsql导入postgreSQL数据库

下一步进行安装 GeoServer 并绑定数据。

下载OSM数据,使用 osm2pgsql 导入至PostgreSQL(PostGIS),安装GeoServer并绑定数据(二)

生产环境部署

https://www.aliyun.com/zixun/content/6_18_2074935.html 一步步DIY: OSM-Web服务器(一) PostgreSql 配置以及osm2pgsql原始PBF数据导入

6.Geoserver样式(SLD)配置

http://blog.sciencenet.cn/blog-427394-586457.html

SLD's which can be used to style the OSM data in GeoServer

https://github.com/FlorentDotMe/archives/tree/master/2013.03.23-OSM-Styles-for-GeoServer

https://github.com/mitchelljj/openstreetmap-sld

下面这篇文章讲了怎么把OSM的4个图层分为更细的图层,并分别配置SLD样式

https://www.cnblogs.com/think8848/p/6013939.html

--------------------- 
参考文章:

GIS开发者网:https://www.giserdqy.com/

PostgreSQL+PostGIS安装以及用Osmosis导入openstreetmap地图数据

作者:bobantangzlt 
来源:优快云 
原文:https://blog.youkuaiyun.com/bobantangzlt/article/details/17091625 

 

导入OSM数据至PostgreSQL数据库
作者:vili_sky 
来源:优快云 
原文:https://blog.youkuaiyun.com/vili_sky/article/details/78771276 

搭建简易Web GIS网站:使用GeoServer+PostgreSQL+PostGIS+OpenLayers3
作者:天靖居士
来源:cnblogs 
原文:https://www.cnblogs.com/kkyyhh96/p/6379515.html

在 Docker 中部署 PostgreSQLPostGIS 并集成 GeoServer 是构建地理信息系统(GIS)应用的常见需求。以下是完整的部署方案,结合了多个配置选项和最佳实践。 ### 部署 PostgreSQLPostGIS 首先,需要部署一个包含 PostGIS 扩展的 PostgreSQL 数据库。推荐使用已集成 PostGIS 的镜像,例如 `kartoza/postgis` 或 `beginor/postgis`,以避免手动安装扩展的步骤。 使用 `docker run` 命令部署 PostgreSQLPostGIS: ```bash docker run -d \ --name postgis \ -e POSTGRES_USER=docker \ -e POSTGRES_PASS=docker \ -e POSTGRES_DB=gis \ -e ALLOW_IP_RANGE=0.0.0.0/0 \ -p 5432:5432 \ -v /path/to/data:/var/lib/postgresql \ kartoza/postgis:14-3.1 ``` 该命令将启动一个包含 PostGIS 扩展的 PostgreSQL 容器,并设置数据库用户名、密码、数据库名以及允许连接的 IP 范围[^3]。 ### 部署 GeoServer GeoServer 可以通过 Docker 镜像轻松部署,并与 PostgreSQL/PostGIS 容器连接。使用以下命令启动 GeoServer 容器: ```bash docker run -d \ --name geoserver \ -p 8080:8080 \ -v /path/to/geoserver/data:/opt/geoserver/data_dir \ -e GEOSERVER_ADMIN_PASSWORD=yourpassword \ -e GEOSERVER_ADMIN_USER=admin \ --link postgis:postgis \ kartoza/geoserver:2.20.1 ``` 此命令将启动 GeoServer 容器,并将其链接到之前创建的 PostGIS 容器,以便配置数据源时能够访问空间数据库。 ### 使用 Docker Compose 部署整体环境 更推荐的方式是使用 `docker-compose` 同时管理 PostgreSQL/PostGISGeoServer 的部署。以下是一个完整的 `docker-compose.yml` 配置示例: ```yaml version: '3.9' volumes: geoserver-data: geo-db-data: services: db: image: kartoza/postgis:14-3.1 volumes: - geo-db-data:/var/lib/postgresql ports: - "5432:5432" environment: - POSTGRES_DB=gis - POSTGRES_USER=docker - POSTGRES_PASS=docker - ALLOW_IP_RANGE=0.0.0.0/0 restart: on-failure healthcheck: test: "exit 0" geoserver: image: kartoza/geoserver:2.20.1 volumes: - geoserver-data:/opt/geoserver/data_dir ports: - "8080:8080" environment: - GEOSERVER_DATA_DIR=/opt/geoserver/data_dir - GEOSERVER_ADMIN_PASSWORD=yourpassword - GEOSERVER_ADMIN_USER=admin restart: on-failure depends_on: db: condition: service_healthy healthcheck: test: curl --fail -s http://localhost:8080/ || exit 1 interval: 1m30s timeout: 10s retries: 3 ``` 该 `docker-compose.yml` 文件定义了两个服务:`db`(PostgreSQL + PostGIS)和 `geoserver`,并配置了健康检查和依赖关系,确保 GeoServer 在数据库服务健康后才启动。 ### 配置 GeoServer 数据源连接 PostGIS 进入 GeoServer 管理界面(默认访问地址为 `http://localhost:8080/geoserver`),创建新的数据源: - 数据源类型选择 **PostGIS**。 - 数据库:`gis` - 用户名:`docker` - 密码:`docker` - 主机名:`db`(对应 `docker-compose` 中的服务名) - 端口:`5432` 保存后,即可在 GeoServer 中发布基于 PostGIS 的空间图层[^3]。 ### 数据持久化与备份 建议将 PostgreSQL 数据目录挂载为宿主机目录,以便实现数据持久化和备份: ```yaml volumes: - /host/path/to/data:/var/lib/postgresql/data ``` 此外,可定期使用 `pg_dump` 命令对 PostGIS 数据库进行备份: ```bash docker exec -t postgis pg_dump -U docker -Fc gis > gis_backup.dump ``` ### 安全与访问控制 为了增强安全性,建议: - 使用强密码策略。 - 配置防火墙规则限制 5432 端口的访问。 - 在生产环境中使用 HTTPS 代理 GeoServer 的 Web 服务。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值