私はPostgreSQL 9.5データベースに2つのテーブル、すなわちpt
とlines
を持っています。表pt
はpoint geometry
を含み、表lines
はline geometry
およびvalues (numeric)
を含む。次のクエリは、すべてのpt
ためlines
50内メートル探索距離を選択し、行に新しい点を投影有する値> 500PostGIS/PostgreSQLで最高位のジオメトリを選択するにはどうすればよいですか?
Select distinct on (pt_id)
pt.gid as pt_id,
case when lines.value > 500
then st_closestpoint(lines.geom, pt.geom)
else null
end as new_pt
from
pt
left join lines on
st_dwithin(pt.geom, lines.geom, 50)
order by pt_id;
サンプルシナリオは、以下の図に示されている:
上記のクエリを変更して、最高値の行が最高ランクを持ち、new_pt
が最高ランクの行に投影されるように、順位/優先度条件を追加する必要があります。大規模なデータセットのクエリが最初に各行にランクを割り当ててから、プロジェクトが最も高い値を持つ行をポイントするように、上記のコードを変更するにはどうすればよいですか?
ありがとうございすべきだと思います。ランクを追加する必要はありませんか? –
いいえ、値が最も高い行が選択されます。ここではrank()は必要ありません(使用することはできますが、この方法は短くなります) – filiprem