一、需要的软件
- Postgresql——Postgresql是一种对象关系型数据库。本文我们使用9.3.1版本。下载地址:http://www.postgresql.org/download/
- osm2pgsql——是由OpenStreetMap开发的一个命令行工具负责将OSM数据导入到基于PostgresSql的Postgis的数据库中,这样GeoServer才能调用数据发布服务器。下载地址:http://customdebug.com/osm/osm2pgsql.zip,其次我们还要指定osm2pgsql的gitHub地址因为我们需要的两个文件在里面可以找到一个是900913.sql一个是default.style,osm2pgsql在github的地址如下:https://github.com/openstreetmap/osm2pgsql
- postgis (可选)——是一个空间数据库,它扩展自Postgresql对象关系型数据库,它添加了地理信息对象通过本地的SQL查询。因为在安装Postgresql是可以选择下载安装postgis所以它是可选的。单独下载地址:http://postgis.net/install
- GeoServer——是一种有java开发的地理信息发布服务工具,支持OGC协议,如:WMS、WFS和WCS。下载地址:http://geoserver.org/display/GEOS/Download
二、安装Postgresql和PostGIS
postgresql-9.3.1-1-windows-x64.exe下载完成后双击开始安装。
直接下一步
配置安装路径,我这里设置安装到D盘,点击下一步。
设置数据库数据的存放位置,保持默认。下一步:
给数据库的超级管理员postgres设置一个密码,下一步:
服务的端口号,保持默认,下一步:
不知道啥意思,保持默认,下一步:
直接下一步:
开始安装了。
完成后到这一步,一定要选中复选框(画红框的),点击完成:
来到这一步,按图中的选择,点击下一步:
选择图中划框的部分,点击下一步:
图中画框的部分是修改下载路径,点击下一步:
进入下载界面:等待下载完成。
点击下一步:
进入PostGis安装界面:点击I Agree:
点击下一步:
保持默认,下一步:
设置用户名、密码和端口,填写密码其他保持不变。下一步:
保持默认,下一步:
开始安装。
设置环境变量,点击【是】:
安装完成,点击【Close】
在开始菜单中找到pgAdmin III如下图:
单击,会打开Postgresql的管理工具:
在有红叉的地方右键点击【连接】弹出输入密码的对话框,输入密码,点击【确定】
数据库就连接上了。
到此Postgresql和Postgis就安装完成了,为了在命令中使用方便我们把Postgresql的bin目录添加到环境变量中。
三、安装osm2pgsql
osm2pgsql是一个绿色软件,我找一个木解压就可以了,解压完成后进入到osm2pgsql/x64或者Win32是你安装的Postgresql而定。osm2pgsql就安装完成了。
四、OSM数据导入Postgresql数据库
我们需要一个OSM格式的数据http://downloads.cloudmade.com/,这个上面有很多的OSM格数的数据,我下载了一个中的chain.osm.bz2的数据,这个大小有个77多兆足够测试用http://downloads.cloudmade.com/asia/eastern_asia/china#downloads_breadcrumbs
第一步:创建一个Postgresql的数据库
打开命令行输入createdb -U postgres -E UTF8 osm 其中osm是数据库的名称,postgres是数据库的用户名。执行完成后我们打开pgAdmin III客户端刷新,就可以看到刚才创建的数据库。
第二步:安装language plpgsql
createlang -U postgres plpgsql osm
一般这一步都不需要,默认已经安装上去了。
在数据库的【拓展】节点可以看到
第三步:添加PostGIS功能到数据库,执行如下命令:
psql -U postgres -d osm -f “你PostgreSQL安装路径/share/contrib/postgis-2.1/postgis.sql”
控制台会打印如下一些命令。
表示安装完成。
第四步:添加EPSG: 900913支持
上面提到过在osm2pgsql的github上包含900013.sql的文件下载到本地。放到一个好访问的目录中,执行如下命令:
psql -U postgres -d osm -f “本地的文件路径/900913.sql”
第五步:添加OSM数据到数据库
下载github上的osm2pgsql中的default.style文件并拷贝到本地osm2pgsql的x64目录中,把下载的chain.osm.bz2文件解压得到的chain.osm文件也拷贝到osm2pgsql的x64目录中。
新打开一个命令行进入osm2pgsql的x64目录中,执行如下命令:
osm2pgsql -U postgres -d osm -s -S ./default.style ./china.osm
一般情况下会报一个”Error reading style file line 151 (fields=4) flag ‘phstore’ is invalid in non-hstore mode“的错误,如下截图:
这说明确实hstore表示所以我们需要添加这个标识。点击pgAdmin III 工具栏中的SQL标识
在弹出的SQL编辑器中输入:create extension hstore;命令点击顶部工具栏中的
图中画框的按钮。控制台会输出“[QUERY ] create extension hstore “表示hstore扩展已经添加成功,在pgAdmin III的数据库拓展中可以看到。
还需要为命令添加一个“–hstore “选项 完整的执行命令是:“osm2pgsql -U postgres -d osm –hstore -s -S ./default.style ./china.osm “这样就正确了。
正在导入中,但不知道为啥,会有乱码。
导入成功!
五、把数据添加到GeoServer中并发布成WMS服务
GeoServer的安装这里就不介绍了,网上有很多教程,我们这里主要介绍PostGIS数据的添加与发布,后续介绍在WorldWind中使用这些数据。
第一步:创建一个工作空间
点击【提交】
第二步:创建数据存储
选择【PostGIS-PostGIS Database】
就上述的内容需要修改,其他保持默认点击【保存】
会列出数据库的图层列表,需要那个图层就点击那个图层的【发布】
第三步:发布数据
比如我们要发布planet_osm_line的数据
完成后点击【保存】,可以看到我们发布的数据
第四步:预览数据
我们会看到首页发布的图层,也可以看到我们发布的图层。