postgresql - 如何将栅格从内存位图(而不是文件)加载到 PostgreSQL 中

标签 postgresql postgis raster in-memory

我的内存中有一个位图,我想将其作为栅格加载到 PostgreSQL。

一个不利的选择是将位图保存到文件,然后使用 raster2pgsql,但正如我们 有多个相机可以高速生成图像,我们不能仅仅为了插入数据库而将它们保存到文件中。

我正在寻找直接从内存加载位图的解决方案。有什么建议吗?

我在 Windows 7 上使用 PostgrSQL 9.2 和 PostGIS2.0。 如果重要的话,图像是纯灰度级的。

最佳答案

假设您不需要转换图像(例如,通过某些 PostGIS 特定的 API),这正是 PostgreSQL 大对象 API 的用途。

您没有提到您正在使用的编程语言,因此很难更详细地说明。假设您使用的是 C,则可以使用 libpqlo_write 等。请参阅 large objects in the manual .

如果这还不能解决问题,您可能必须打开到 raster2pgsql 工具的管道并进行流式写入。并非所有程序都可以处理从管道中读取数据,有些程序需要随机访问文件,在这种情况下,您可能不得不编写临时文件。快速查看 raster2pgsql 文档表明它只是写出 SQL,因此请查看它生成的 SQL 代码。看看是否可以将其作为库链接并在代码中使用它,或者对其进行调整以从管道中读取。您甚至可以创建一个可作为文件访问的共享内存区域(在 UNIX 上)并将其指向该区域。

我怀疑您会使用 GDAL 库来完成 raster2pgsql 在您的应用程序中所做的相同工作。

(顺便说一句,对于 PostGIS 特定的方面,您可能会在 https://gis.stackexchange.com/ 上运气更好)

关于postgresql - 如何将栅格从内存位图(而不是文件)加载到 PostgreSQL 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17065956/

相关文章:

sql - 优化 Postgis 查询并了解性能

postgresql - 如何将 OSM 导出到包含所有城市和街道名称的数据库?

mongodb - 如何修复geojson以满足mongodb 2dsphere索引的需求

r - 从 R 中的 .tif 中提取颜色

java - 使用 hibernate 的外键连接

ruby-on-rails - 如何使用 Postgres 在 Rails 5.2 中设置日期的默认值?

r - 在 terra SpatRaster 中命名分类级别时,如何防止添加额外级别?

r - 使用分区命令进行加权平均计算

postgresql - liquibase 中的 Postgres 删除函数显示错误

PostgreSQL - 按 UUID 版本 1 时间戳排序