PostGIS2.0を使用して、ラスター/ポリゴンの交差を行います。どの操作を使用する必要があるのか、これを実行する最も速い方法は何かを理解するのが困難です。私の問題は次のとおりです。
- ポリゴンとラスターがあります
- ポリゴン内にあるすべてのピクセルを見つけて、ピクセル値の合計を取得したい
- (更新された問題):クエリを実行すると、元のラスターに存在しないいくつかのピクセルの大きな値を取得しています
ST_Intersects()またはを使用する必要があるかどうかがわかりませんST_Intersection()。また、ピクセルを合計するための最良のアプローチが何であるかわかりません。これが私が試した最初のアプローチです(#1):
SELECT 
    r.rast 
FROM
    raster as r, 
    polygon as p
WHERE
    ST_Intersects(r.rast, p.geom)これはrast値のリストを返しますが、これをどうすればいいのかわかりません。を使用して要約統計を計算しようとしましたST_SummaryStats()が、これがポリゴン内にあるすべてのピクセルの加重和であるかどうかはわかりません。
SELECT  
        (result).count,
        (result).sum    
FROM (  
         SELECT 
            ST_SummaryStats(r.rast) As result
         FROM
            raster As r, 
            polygon As p
         WHERE
            ST_Intersects(r.rast, p.geom)    
    ) As tmp私が試した他のアプローチ(#2)はST_Intersection()次を使用します:
 SELECT
        (gv).geom,         
        (gv).val
 FROM 
 (
    SELECT 
        ST_Intersection(r.rast, p.geom) AS gv
    FROM 
        raster as r, 
        polygon as p           
    WHERE 
        ST_Intersects(r.rast, p.geom)
      ) as foo;これにより、さらに分析するジオメトリのリストが返されますが、これは効率が悪いと思われます。
どちらが最も速い操作順序なのかもわかりません。ポリゴンを常に選択するraster, polygonかpolygon, raster、ポリゴンをラスターに変換する必要がありraster, rasterますか?
編集:R.K.のリンクからのいくつかの詳細でアプローチ#2を更新しました。
アプローチ#2を使用して、出力に次のエラーがあることに気付きました。これは、出力を理解できなかった理由の一部です。元のラスターの画像と、そのラスターを交差させるために使用されているポリゴンのアウトラインが上に重ねられています。

そして、これがPostGISを使用した交差の結果です。

結果の問題は、元のラスタにはない21474836の値が返されることです。なぜこれが起こっているのか分かりません。どこか小さい数字に関連していると思われます(ほぼ0で除算)が、間違った結果を返します。
ST_SummaryStats()#1に使用しましたが、#2にそれを行う方法がわかりません。