Postgresql+Geoserver搭建本地地图服务器(一)

前言

由于网络地图服务器的不稳定以及实验需要,老师要求我搭建了一个本地的地图服务器用于数据可视化,方便组员使用。

正文

我采用的是Postgresql+Geoserver搭建的本地服务器。
搭建环境要求:

  • Postgresql——Postgresql是一种对象关系型数据库。
  • osm2pgsql——是由OpenStreetMap开发的一个命令行工具负责将OSM数据导入到基于PostgresSql的Postgis的数据库中,这样GeoServer才能调用数据发布服务器。其次我们还要指定osm2pgsql的gitHub地址因为我们需要的两个文件在里面可以找到一个是900913.sql一个是default.style。
  • postgis (可选)——是一个空间数据库,它扩展自Postgresql对象关系型数据库,它添加了地理信息对象通过本地的SQL查询。因为在安装Postgresql是可以选择下载安装postgis所以它是可选的。
  • GeoServer——是一种有java开发的地理信息发布服务工具

步骤

安装Postgresql和PostGIS

postgresql-9.3.1-1-windows-x64.exe下载完成后双击开始安装。

设置一下安装路径和数据库的超级管理员postgres的密码

完成后到这一步,一定要选中复选框(画红框的),点击完成

来到这一步,按图中的选择,点击下一步

选择图中划框的部分,点击下一步

图中画框的部分是修改下载路径,点击下一步,开始下载

点击下一步

进入PostGis安装界面:点击I Agree

点击下一步

设置用户名、密码和端口,填写密码其他保持不变。下一步

保持默认,下一步

设置环境变量,点击【是】

安装完成,点击【Close】,到这一步就安装完成拉。

在开始菜单中找到pgAdmin III如下图:

单击,会打开Postgresql的管理工具

在有红叉的地方右键点击【连接】弹出输入密码的对话框,输入密码,点击【确定】

数据库就连接上了(●’◡’●)

到此Postgresql和Postgis就安装完成了,为了在命令中使用方便我们把Postgresql的bin目录添加到环境变量中。(如何设置环境变量可以百度一下,也可以不设置)

安装osm2pgsql

osm2pgsql是一个绿色软件,我找一个解压就可以了,解压完成后进入到osm2pgsql/x64或者Win32是你安装的Postgresql而定。(只需要解压就可以了,后面再命令行里进入这个文件夹,然后就可运行了)

OSM数据导入Postgresql数据库

第一步:创建一个Postgresql的数据库

打开命令行输入
createdb -U postgres -E UTF8 osm
(如果没有设置环境变量需要先进入到PostgreSQL安装文件/PostgreSQL/9.3/bin/文件夹下,后面的命令全都是在此目录中), 其中osm是数据库的名称,postgres是数据库的用户名。执行完成后我们打开pgAdmin III客户端刷新,就可以看到刚才创建的数据库。(若出现用户“….”认证失败,则需要先登录数据库psql –U postgres )

第二步:安装language plpgsql

执行如下命令:
createlang -U postgres plpgsql osm

一般这一步都不需要,默认已经安装上去了

在数据库的【拓展】节点可以看到

第三步:添加PostGIS功能到数据库

执行如下命令:
psql -U postgres -d osm -f “你PostgreSQL安装路径/share/contrib/postgis-2.1/postgis.sql”
默认安装路径为:C:\Program Files\PostgreSQL\9.5\share,控制台会打印如下一些命令。

表示安装完成

第四步:添加EPSG: 900913支持

上面提到过在osm2pgsql的github上包含900013.sql的文件下载到本地。放到一个好访问的目录中,执行如下命令:
psql -U postgres -d osm -f “本地的文件路径/900913.sql”

第五步:添加OSM数据到数据库

下载github上的osm2pgsql中的default.style文件并拷贝到本地osm2pgsql的x64目录中,把下载的beijing.osm.bz2(已经提供)文件解压得到的beijing.osm文件也拷贝到osm2pgsql的x64目录中。
新打开一个命令行进入osm2pgsql的x64目录中,执行如下命令:
osm2pgsql -U postgres -d osm -s -S ./default.style ./beijing.osm
一般情况下会报一个”Error reading style file line 151 (fields=4) flag ‘phstore’ is invalid in non-hstore mode“的错误,如下截图

这说明确实hstore表示所以我们需要添加这个标识。打开pgAdmin III ,选中当前osm数据库,点击工具栏中的SQL标识

在弹出的SQL编辑器中输入:create extension hstore;命令点击顶部工具栏中的

图中画框的按钮。控制台会输出“[QUERY ] create extension hstore “表示hstore扩展已经添加成功,在pgAdmin III的数据库拓展中可以看到。

还需要为命令添加一个“–hstore “选项 完整的执行命令是:“osm2pgsql –k –d osm –U postgres –S ./default.style ./Beijing.osm “这样就正确了。(与原博客不同,原来无法运行,会报错)

正在导入中,但不知道为啥,会有乱码

导入成功!

GeoServer安装与配置

java运行环境

GeoServer安装

GeoServer既可以以window服务形式安装,也可以作为应用软件来安装。
从官网http://geoserver.org/下载最新geoServer版本geoserver-2.3.4exe

一直下一步,到选择当前java运行环境,点击next继续

GeoServer提供一个web基本配置来让你远程管理应用,默认账号(admin和geoserver)

选择Install as a service。(service是要通过浏览器打开,默认的是当做应用软件打开,都可以选择)

检查设置,点击install完成

安装成功

把数据添加到GeoServer中并发布成WMS服务

打开GeoSever(如果安装是service,使用浏览输入http://localhost:8080/geoserver/web/即可),使用admin和geoserver登录

第一步:创建一个工作空间

第二步:创建数据存储


就上述的内容需要修改,其他保持默认点击【保存】


会列出数据库的图层列表,需要哪个图层就点击那个图层的【发布】

第三步:发布数据

比如我们要发布planet_osm_line的数据

完成后点击【保存】,可以看到我们发布的数据

第四步:预览数据

我们会看到首页发布的图层,也可以看到我们发布的图层。

点击OpenLayers打开预览

后记

  1. 整个过程还是比较顺利的,没出什么大问题
  2. 下一篇将介绍如何将自己的轨迹数据导入数据库进行展示和如何同时展现多个图层