如何将栅格数据加载到运行postgis的postgres服务器中?使用sql函数或QGIS有哪些选择?

时间:2016-10-27 13:54:09

标签: sql-server postgresql postgis raster

我正在为我大学的农业计划设置服务器,以管理州内许多实验站的数据。这项工作的一部分是从所有教授和研究人员的生长季节加载和制作栅格数据(多光谱.tif文件)。 我是SQL服务器和postgis扩展的新手,但我已经想出了如何创建角色,创建服务器,添加扩展以及所有这些好东西。 我无法发现的是如何将栅格数据上传到服务器。目前我正在测试localhost,但最终需要能够加载到运行Ubuntu的服务器上。

我曾尝试使用SQL命令raster2pgsql,但我无法执行它。这个函数在postgis的所有发行版中都是标准的吗?或者我是否需要从其他来源(自制程序)重新安装扩展程序?

我还尝试通过QGIS插件加载栅格"加载所有",这似乎也无法将我的栅格(或矢量)数据加载到本地服务器。这是将批量数据加载到服务器中的最简单方法,还是不必要?

我确定我可能在整个过程中错过了一些简单的步骤,因为我对此很新,但感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

raster2pgsql几乎是以 方式将光栅文件导入PostGIS。

您可以使用它来上传文件目录,但我有时更喜欢先使用QGIS的Raster-> Miscellaneous-> Merge方法将相关的图块拼接在一起,然后只需将合并的图块上传为单个图块geotif

当你说你无法执行raster2pgsql时,我认为你的意思是你在这些方面遇到错误?

bash: raster2pgsql: command not found

如果是这样,有两个可能的问题:

1)PostGIS是否在本地安装?

2)你的路上是raster2pgsql吗?

听起来你已经通过自制软件在本地安装了PostGIS。 raster2pgsql是标准的(至少根据我的经验),因此问题很可能是您的bash环境无法解析raster2pgsql可执行路径。

您可以尝试使用以下内容找到postgres的路径:

brew info postgres

请注意,我不会使用home-brew,因此您可能需要稍微调整一下,然后调查结果路径以找到postgres bin目录,该目录可能位于以下某处:

/path/to/homebrew/postgres/Versions/9.6/bin/raster2pgsql

或者,您可以尝试:

sudo find ~/ -name raster2pgsql

  

如果您仍然无法找到它,请尝试下载并安装适用于Mac的postgres应用,在这种情况下,您会找到raster2pgsql位于:

     

/Applications/Postgres.app/Contents/Versions/9.6/bin/raster2pgsql

     

如果您使用postgres应用程序路线,您不必通过应用程序实际安装和运行第二个或替代Postgres数据库,这只是一个方便的方式来获取raster2pgsql可执行文件。

找到完整路径后,您可以简单地使用完整路径调用raster2pgsql命令,例如

/Applications/Postgres.app/Contents/Versions/9.6/bin/raster2pgsql ...etc...

或者将postgres bin目录添加到您的环境PATH变量。