前言
软件:PostgreSQL 9.4 + PostGIS 2.5.1
矢量数据:CarThefts.shp:某市汽车盗窃案发地 ( Point )
Streets.shp:某市街道分布 ( Polyline )
Tracts2000.shp:某市2000 年人口普查区数据 ( Polygon )
栅格数据:guizhou.tif:贵州行政区划
PostgreSQL导入矢量、栅格数据
1. 打开 pgAdmin
2. 创建数据库 GeoDataDB
右键【Databases】 ,选择【Create】-【Database…】填写参数
3. 加载 postGIS 扩展
在菜单栏处点击【工具】-【查询工具】,弹出SQL窗口,输入SQL语句,并执行查询
注:创建数据库后,需要通过添加postgis插件,才可以转换为空间数据库,才可以导入空间数据
4. 菜单栏打开SQL编辑器,通过运行PostGIS函数确认是否成功创建空间数据库
PostGIS_Full_Version() —— 返回完整的PostGIS版本信息和配置信息
5. 菜单栏点击 PostGIS Shapefile and DBF Loader Exporter
注:如果之前已经创建好空间数据库,也可以在【windows开始】直接打开
6. 导入矢量数据
注:导入成功后,可以在 GeoDataDB > 架构 > public > 数据表 看到导入的数据
注:如果有大量数据,可以用 python 批量导入
7. 打开cmd,进入postgresql安装目录/lib,运行以下代码,导入栅格数据(如果要geoserver发布数据库中的栅格数据,还需要一些其他操作,所以这里建议不导入栅格数据,具体可看下面的内容)
# 【】是通常需要修改的部分,大部分都默认即可(文件位置,数据命名,数据库名)
raster2pgsql -s 4326 -I -C -M 【D:\guizhou\raster.tif】 -F -t 256x256 【guizhou】 | psql -h localhost -p 5432 -U postgres -d 【GeoDataDB】 -W
注:运行后需要填入postgres用户的密码。参数解释[链接]
8. 至此成功导入矢量、栅格数据
Geoserver发布矢量数据
之前做过类似的,只不过是把数据源从本地shp改成postgreSQL数据库,这里不再赘述了。 [点击此处跳转]
注:这里把数据库数据全部加载了,矢量数据只需要再填写边界盒就可发布了,但栅格数据还不行,具体看下部分内容
Geoserver发布栅格数据
Geoserver发布本地的栅格数据(如:tif) 很简单 [链接] [Bug],但利用GeoServer发布postgreSQL中的栅格数据比较麻烦,需要用到Image Mosaic JDBC
插件。因为看到一篇不错的文章,所以就不重复写了 [链接] (文中构建金字塔和切割瓦片不是必需的,但对于高分辨率影像数据量到一定程度还是必需的)。
版本要匹配。 这里给个 2.15.1 版本,其他版本修改网址即可。[下载链接]
其他:Geoserver的ImageMosaic数据源(实现将一个文件夹下面的所有影像文件发布成一个服务的需求