SQL の例: 重要な管

この例では、ネットワークの情報と GIS レイヤーのデータを組み合わせて使用し、ネットワーク内の重要な管を識別する方法を示します。一連の SQL ステートメントによって、すべての条件を満たす管が特定されるまで、選択が絞り込まれます。次に、SQL を使用して、選択した管に値を設定します。

下の図 1 に、GIS とネットワークのデータを示します。

この例では困難な地盤で損傷の大きな管を探します。具体的には、病院の近くでこのような管を選択します。なぜなら、そのような管の破損は大きな問題になる可能性があるためです。

上の図 1 は、対象領域を示しています。

対象となるさまざまな道路や建物について、以下のステージで説明します。

ステップ ステップの説明 クエリー イメージの例

A

最初の SQL オブジェクトは、次の条件に基づいて複数の管を選択します。

  • 管のフィールドが 300 以上である。この場合、単位はミリメートルです。
  • 管の材質が CO (コンクリート)である。
  • 管が GIS レイヤー内でタイプ「B Road」として定義されたオブジェクトから 2 メートル以内にある。この例では、B Road は補助道路であり、図 1 では暗い赤色の線で示されています。
    • gislayer は、[GIS レイヤー]ボックスで指定したレイヤーです。
    • STRUCTUREgislayer のフィールドです。これは、[フィールド]で定義しておくこともできます。
    • [検索タイプ]フィールドには、特定の距離内にある管を検索することを指定します。その他のオプションを使用すると、GIS オブジェクトと交差する、含む、または含まれるオブジェクトを検索できます。
  • 管の user number 7 フィールドには「>= 2」の値があり、この値はアセット管理システムから読み込まれた管の条件スコアを表します。この場合、状態スコアには 1 から 5 のスケールが使用され、値が大きいほど管の状態が悪いことを示します。崩壊した管のスコアは 5 になります。つまり、ここでは既知の問題がある管を選択しています。

SQL オブジェクトがネットワークに適用されると、SQL ステートメントの条件を満たすすべてのネットワーク オブジェクトが選択されます。

SQL query context:
  • オブジェクト タイプ:
  • [空間]検索タイプ: 距離
  • [空間]レイヤー タイプ: GIS レイヤー
  • [空間]レイヤー: [SHP]インフラストラクチャ
  • [空間]距離: 2.0


width >= 300 AND material = "CO" AND gislayer.STRUCTURE = "B Road" AND user_number_7 >= 2

B

2 番目の SQL オブジェクトは、1 番目の SQL オブジェクトによる選択を絞り込みます。[現在の選択にフィルタを適用]がオンになっていることに注意してください。これにより、SQL が適用されるネットワーク オブジェクトは選択済みのものに限定されます。これはパワフルなツールです。

  • このクエリーは、選択されたオブジェクトを別の GIS レイヤーのデータと照合してテストします。このレイヤーは土壌タイプを表しており、図 1 では異なるグレーのシェーディングで表示されています。
  • WRAPCLASS フィールドには土壌タイプの情報が含まれます。WRAP は冬季許容雨量のことです。
  • この場合は、岩の多い土壌や水浸しの可能性のある土壌など、管までの掘削に特別な設備機器が必要になる可能性のある困難な土壌タイプを探しています。
SQL query context:
  • オブジェクト タイプ:
  • [空間]検索タイプ: 距離
  • [空間]レイヤー タイプ: GIS レイヤー
  • [空間]レイヤー: [SHP]インフラストラクチャ
  • 現在の選択にフィルタを適用 = オン


gislayer.WRAPCLASS = 1 OR gislayer.WRAPCLASS = 3 

C

3 番目の SQL オブジェクトでは、選択した管が病院の近くにあるかどうかを確認するために検査します。病院の近くで管が崩壊したために、交通が遮断されたり、地域に汚水が放出されたりすると、重大な問題になる可能性が高いため、このような状況で損傷した管を修復することは、他の場所よりも重要になります。

  • 病院の建物から一定の距離内にある管をすべて選択します。
  • ここでは、さらに一歩進んで、実際にデータ フィールドとフラグをオブジェクトに設定して、後で簡単に識別できるようにします。Criticality フィールドは 5 (最高値を表す)に設定します。また、Criticality フィールド フラグも設定しています。これは、フィールドの設定に使用されるメソッドのコードでも、SQL を実行したユーザーのイニシャルでもかまいません。
  • 図 1 では、病院の建物は薄い緑色で示されています。一連の SQL ステートメントで設定したすべての条件を満たす管は 1 本のみです。その管が赤で強調表示されています。
SQL query context:
  • オブジェクト タイプ:
  • [空間]検索タイプ: 距離
  • [空間]レイヤー タイプ: GIS レイヤー
  • [空間]レイヤー: [SHP]インフラストラクチャ
  • [空間]距離: 30.0


SET 
  criticality = 5,
  criticality_flag = "AA"
 WHERE gislayer.STRUCTURE = "Hospital"

D

SQL クエリーをグループ化して自動的に実行し、プロセスをさらに効率化できます。

ここでは、上記の 3 つのクエリーは、同じ保管クエリー グループに配置されています。このグループをネットワークにドラッグすると、グループに含まれるすべてのクエリーがアルファベット順に実行されます。

そのため、個々のクエリーに名前を付ける際に少し注意するだけで、強力な複数ステップのクエリーを作成できます。