2016-11-22 18 views
0

私は、ジオメトリデータ型を使用して、道路セグメントを含むSQL Serverのテーブルを持っている: ID(int型)、はGeom(幾何学)、名前(VARCHAR(150))SQL Serverのジオメトリ交点

私が欲しいですこの "Main St @ George St @ Bob Street"のような名前を結合した連結列で、交差点ごとに1つの道路セグメントの交差点である点を含むビューを作成します。

私は明確な交点のgeomを作成するために取り組んでこれを持っているが、私は一つ一つのために通りの名前を集約し、連結する方法の手掛かりを持っていない:

select geometry::STGeomFromText(t2.[g], 26917) as Geom 
from 
(
    select distinct g 
    from 
    (
     select r1.[geom].STIntersection(r2.[geom]).ToString() as [g] 
     from [Roads] r1 inner join 
     [Roads] r2 on 
     r1.[geom].STTouches(r2.[geom]) = 1 
     and r1.[ID] <> r2.[ID] 
    ) t 
) t2 

答えて

0
select 
       RoadA 
      , RoadB 
      , '@ ' + RoadA + ' @ ' +RoadB as Intersecion 
      , geometry::STGeomFromText(t2.[g], 26917) as Geom 
from 
(
    select distinct g 
      , RoadA 
       , RoadB 
    from 
    (
     select r1.[Geom].STIntersection(r2.[Geom]).ToString() as [g] 
       , r1.Name as RoadA 
       , r2.name as RoadB 

     from Roads r1 inner join 
     Roads r2 on 
     r1.[Geom].STTouches(r2.[Geom]) = 1 
     and r1.[ID] <> r2.[ID] 
    ) t 
) t2 
+0

これは、かなり近いですありがとう。実際には道路セグメントごとに1つのポイントが作成されるため、4つの道路セグメントがある場合は、それぞれのポイントを1つずつ生成します。ただ一つのポイントを持つ方法はありますか? – firsttube