書式
SDO_UTIL.BEARING_TILT_FOR_POINTS( start_point IN SDO_GEOMETRY, end_point IN SDO_GEOMETRY, tol IN NUMBER, bearing OUT NUMBER, tilt OUT NUMBER ) RETURN SDO_GEOMETRY;
説明
開始点から終了点への方位と傾きを計算します。
パラメータ
方位と傾きを計算するときの基点となる開始点ジオメトリ・オブジェクトを指定します。測地座標系に基づく点ジオメトリを指定する必要があります。
方位と傾きを計算するときに使用する終了点ジオメトリ・オブジェクトを指定します。start_point
と同じ測地座標系に基づく点ジオメトリを指定する必要があります。
許容差(「許容差」を参照)。
北を基準として時計回りに測定されるラジアンの数値を指定します。
法線を基準に測定されるラジアンの数値を指定します。
使用上の注意
入力する点ジオメトリは、同一の測地座標系に基づく必要があります。非測地座標系に基づく場合、出力される方位はNULL値になります。
傾きは、高さの値の差を点と点の距離で除算した結果の逆正接として計算されます(高さは距離計算から除外されます)。つまり、tilt = atan(height_difference/distance)
となります。
ラジアンを10進度に変換したり、10進度をラジアンに変換するには、SDO_UTIL.CONVERT_UNITファンクションを使用します。開始点を基準として指定された距離および方位に存在する点ジオメトリを戻すには、SDO_UTIL.POINT_AT_BEARINGファンクションを使用します。
例
次の例では、2つの地点(経度/緯度で指定)の方位と傾きを計算します。開始点の標高は0 (ゼロ)で、終了点の標高は5000メートルです。この例で表示される方位と傾きの値はラジアンです。
DECLARE bearing NUMBER; tilt NUMBER; BEGIN SDO_UTIL.BEARING_TILT_FOR_POINTS( SDO_GEOMETRY(2001, 8307, SDO_POINT_TYPE(-71.5, 43, 0), NULL, NULL), -- start_point SDO_GEOMETRY(2001, 8307, SDO_POINT_TYPE(-71, 43.5, 5000), NULL, NULL), -- end_point 0.05, --tolerance bearing, tilt); DBMS_OUTPUT.PUT_LINE('Bearing = ' || bearing); DBMS_OUTPUT.PUT_LINE('Tilt = ' || tilt); END; / Bearing = .628239101930666 Tilt = .0725397288678286910476298724869396973718
次の例は前述の例と同じですが、表示される方位と結果はラジアンではなく10進度です。
DECLARE bearing NUMBER; tilt NUMBER; BEGIN SDO_UTIL.BEARING_TILT_FOR_POINTS( SDO_GEOMETRY(2001, 8307, SDO_POINT_TYPE(-71.5, 43, 0), NULL, NULL), -- start_point SDO_GEOMETRY(2001, 8307, SDO_POINT_TYPE(-71, 43.5, 5000), NULL, NULL), -- end_point 0.05, --tolerance bearing, tilt); DBMS_OUTPUT.PUT_LINE('Bearing in degrees = ' || bearing * 180 / 3.1415926535897932384626433832795); DBMS_OUTPUT.PUT_LINE('Tilt in degrees = ' || tilt * 180 / 3.1415926535897932384626433832795); END; / Bearing in degrees = 35.99544906571628894295547577999851892359 Tilt in degrees = 4.15622031114988533540349823511872120415