0

私はpostgisが初めてで、同じレイヤーの開始点と終了点の2つの初期点を与える線ストリングを測定しようとしています(ジオメトリタイプは線ストリングです)。このラインストリングは、道路、川、地下パイプなどを表しています。

「length3d」という名前のpostgis関数を使用すると、1行(テーブルの1レコード)を測定できますが、複数の連続した行を測定する必要があります。この例のようなもの (説明例の次の注釈を使用)

  • |し| --> 線の始点
  • |え| --> 線の終点
  • @ --> ポイントインライン
  • (s) --> ユーザー開始点
  • (e) --> ユーザーエンドポイント

例:

|S|===@===@===(s)==|E-S|===@==@===@==|E-S|===@===@===(e)==@==|E|

ラインストリング形式:

LINESTRING(-6.366424 38.93301,-6.3625 38.938,-6.361 38.9572,-6.36158230284898 38.9397667955807,-6.36131118520776)

ユーザー ポイントは、ラインを構成する 2 つの既存のポイントの間にある可能性があります。

|し| |ES|へ DB |ES| 上の 1 つのレコードです。|ES|へ はその他のレコードで |ES| |E|へ その他の記録です。

(s) から (e) までの距離を測定するにはどうすればよいですか?

前もって感謝します!

4

1 に答える 1

1

PL/pgSQLを使用すると、パスの各コンポーネント ((s) から [ES]、[ES] から [ES] など) を測定する関数を作成できます。

(s) と (e) の間の線を表す一時的な線ストリング (または複数線ストリング) を前処理して作成し、そのST_Length3D上で直接使用することができます。

于 2011-04-28T16:45:30.873 に答える