私は3つのテーブルを持っています:稲妻、電力線、マスト。
主な分野:
lightnings.geo_belief
-ヒットの可能性のある楕円。powerlines.geo_path
-電力線のパスのジオポリライン。masts.geo_coordinates
-マスト配置のジオポイント。
タスク:
- 電力線の廊下に当たる稲妻のストロークを計算するには(5000メートル-その半径、関数によってジオメトリとして生成されます
powerline_corridor()
) - それぞれの落雷に最も近い電力線のマストに関する情報を取得し、からの距離
lightning.geo_ellipse
を取得しmasts.geo_coordinates
ます。
だから私は稲妻を選択することができます:
SELECT l.*
FROM lightnings l
JOIN ( SELECT geo_path, powerline_corridor(geo_path, 5000::smallint) AS geo_zone
FROM powerlines WHERE id=1)
AS by_pl
ON ST_Intersects(by_pl.geo_zone, l.geo_belief)
また、私は関数を持っていますnamos_nearest_mast(powerlines.id, lightnings.geo_belief)
:
CREATE OR REPLACE FUNCTION public.namos_nearest_mast (
powerline_id integer,
geo public.geometry
)
RETURNS public.obj_powerline_masts AS
$body$
SELECT *
FROM obj_powerline_masts
WHERE powerline_id=$1
ORDER BY $2 <-> geo_coordinates ASC
LIMIT 1
$body$
LANGUAGE 'sql';
選択するための良い解決策を提案できませんでしたか?