【问题标题】:How to export raster from PostGIS in one go?如何一次性从 PostGIS 导出栅格?
【发布时间】:2019-04-02 20:57:00
【问题描述】:

在光栅导出脚本的简化规范示例(我经常在论坛和书中看到)中,OID(由 lo_create(0) 返回,这里是 9585208 em>) 必须在倒数第二个脚本行之前知道 (lo_export 9585208 'C:/temp/raster.png'):

SELECT oid, lowrite(lo_open(oid, 131072), img) As num_bytes
FROM (
    VALUES (
        lo_create(0),
        (SELECT ST_AsPNG(rast)
        FROM bag_o_rasters
        LIMIT 1)
    )
) As v(oid, img);

lo_export 9585208 'C:/temp/raster.png'

SELECT lo_unlink(9585208);

我很难弄清楚如何让 PSQL cli 实用程序一次性运行此脚本,即如何将 lo_create(0) 返回的 OID 传达给 lo_export 命令。 lo_export 似乎是客户端命令,它无法消化任何查询结果...请帮助...

【问题讨论】:

    标签: postgresql psql postgis-raster


    【解决方案1】:

    最后,有一个 PSQL 命令 \gset 将值存储到脚本变量中,文档说:

    \gset 将当前查询缓冲区发送到服务器并存储查询的 输出到 psql 变量中。要执行的查询必须返回 正好一排。该行的每一列存储到一个单独的 变量,与列同名。

    这里是相应修改的脚本:

    SELECT lo_create(0) as blob_oid
    
    \gset
    
    SELECT oid, lowrite(lo_open(oid, 131072), img) As num_bytes
    FROM (
        VALUES (
            :blob_oid,
            (SELECT ST_AsPNG(rast)
            FROM bag_o_rasters
            LIMIT 1)
        )
    ) As v(oid,img);
    
    \lo_export :blob_oid 'C:/temp/raster.png'
    
    SELECT lo_unlink(:blob_oid);
    

    【讨论】:

      猜你喜欢
      • 2020-09-29
      • 1970-01-01
      • 1970-01-01
      • 2017-01-16
      • 1970-01-01
      • 1970-01-01
      • 2016-03-27
      • 2017-03-25
      • 1970-01-01
      相关资源
      最近更新 更多