単純なクエリを試してみると

 SELECT "Water_Service_Area_Boundaries_Non_Cadastral"."Network", count(*), sum(st_length(geometry)) FROM "W_Mains_DSC_ExclAbandoned", "Water_Service_Area_Boundaries_Non_Cadastral" WHERE ST_Intersects("Water_Service_Area_Boundaries_Non_Cadastral", "W_Mains_DSC_ExclAbandoned") GROUP BY "Water_Service_Area_Boundaries_Non_Cadastral"."Network"  

このエラーが発生します

Query preparation error on PRAGMA table_info(_tview): ambiguous column name: geometry 

カウントを使用して単純なグループを作成するために機能します。

次の場合も問題なく機能します

  Select sum(st_length(geometry)), count(*) From W_Mains_DSC_ExclAbandoned  

独立して機能するが、一緒につながれた場合には機能しないクエリのサブセットの例

全長だけ

example1

グループのみ

example2

単にst_lengthを追加した場合

example3

ST_Intersectsこれは正しいカウントを提供しますが、プラグマジオメトリを提供します合計が追加されたときにエラーを試行します

example4

コメント

  • ST_Lengthには投影情報(SRID)が必要です。 gis.stackexchange.com/questions/35462/ …
  • 最初のクエリは、列geometryを持つ2つのテーブルを参照します。 ST_length()を実行するジオメトリ列を指定する必要があります。 Network列のテーブルを指定したのと同じように
  • '理解できないのは、これら2つの理由です。問題のあるクエリは、単独で実行すると機能します。 '質問にスクリーンショットを追加します。
  • @she_weeds申し訳ありませんが、.geometryがないと' tはエラーを出しましたが、'カウントに適切な値を与えなかったため、交差が機能しませんでした'。ただし、ネットワークエリアで回線の長さを実行する際の問題でも、同じ問題が発生します。

回答

私の意見では、ST_Length_Spheroid()を使用していないため、 SRID は必要ありません。

@she_weedsが指しているのは確かに正しい。

 SELECT ws."Network", count(ws."Network"), sum(st_length(ws.geometry)) FROM "Water_Service_Area_Boundaries_Non_Cadastral" AS ws, "W_Mains_DSC_ExclAbandoned" AS wmain WHERE ST_Intersects(ws.geometry, wmain.geometry) GROUP BY ws."Network"  

コメント

  • ありがとうございます。'長さが必要な入力データセットの1つのジオメトリであることを知っておく必要がありました。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です