-Style1;GEOMETRYCOLLECTION(LINESTRING(49.55 194.88,49.85 194.24,50.25 194.31),POINT(49.55 194.88),POLYGON((50.25 194.24,50.24 194.38,50.36 194.32,50.25 194.24)))
-Style2;GEOMETRYCOLLECTION(LINESTRING(49.61 193.88,50.25 194.82),POINT(49.61 193.88),POLYGON((50.27 194.71,50.16 194.81,50.29 194.85,50.27 194.71)))
+Style2;GEOMETRYCOLLECTION(LINESTRING(25 169,89 114,40 70,86 43),POINT(25 169),POLYGON((80.84 41.66,84.66 48.16,86 43,80.84 41.66)) )
+Style1-thinline;GEOMETRYCOLLECTION(LINESTRING(171 154,20 140,71 74,161 53),POINT(171 154),POLYGON((153.15 48.12,156.12 60.85,161 53,153.15 48.12)) )
<imageobject>
<imagedata fileref="images/st_linecrossingdirection01.png" />
</imageobject>
- <caption><para>Line 1 fat line, Line 2 thin line, point is start point,
+ <caption><para>Line 1 fat line, Line 2 thin line, ball is start point,
triangle are end points. Query below. </para></caption>
</mediaobject>
</informalfigure>
- <programlisting>SELECT ST_LineCrossingDirection(foo.line1, foo.line2) As linecrossleft , ST_LineCrossingDirection(foo.line2, foo.line1) As linecrossright
-FROM (SELECT ST_GeomFromText('LINESTRING (49.55 194.88, 49.85 194.24, 50.25 194.31)') As line1,
-ST_GeomFromText('LINESTRING (49.61 193.88, 50.25 194.82)') As line2) As foo;
-
- linecrossleft | linecrossright
----------------+----------------
- -1 | 1
+ <programlisting>SELECT ST_LineCrossingDirection(foo.line1, foo.line2) As l1_cross_l2 , ST_LineCrossingDirection(foo.line2, foo.line1) As l2_cross_l1
+FROM (SELECT ST_GeomFromText('LINESTRING(25 169,89 114,40 70,86 43)') As line1,
+ST_GeomFromText('LINESTRING(171 154,20 140,71 74,161 53)') As line2) As foo;
+ l1_cross_l2 | l2_cross_l1
+-------------+-------------
+ 3 | -3
+</programlisting>
+<programlisting>
SELECT s1.gid, s2.gid, ST_LineCrossingDirection(s1.the_geom, s2.the_geom)
FROM streets s1 CROSS JOIN streets s2 ON (s1.gid != s2.gid AND s1.the_geom && s2.the_geom )
WHERE ST_CrossingDirection(s1.the_geom, s2.the_geom) > 0;