../images/st_isvalid07.png \
../images/st_isvalid08.png \
../images/st_linecrossingdirection01.png \
+ ../images/st_linecrossingdirection02.png \
../images/st_line_interpolate_point01.png \
../images/st_line_substring01.png \
../images/st_minimumboundingcircle01.png \
-Style2;LINESTRING(25 169,89 114,40 70,86 43)
-Style2;GEOMETRYCOLLECTION(POINT(25 169),POLYGON((80.84 41.66,84.66 48.16,86 43,80.84 41.66)) )
+Style2;GEOMETRYCOLLECTION(LINESTRING(25 169,89 114,40 70,86 43), POINT(25 169),POLYGON((78.26 40.98,83.98 50.74,86 43,78.26 40.98)) )
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)) )
-Style2;LINESTRING(25 169,89 114,40 70,86 43)
-Style2;GEOMETRYCOLLECTION(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, 2.99 90.16),POINT(171 154),POLYGON((153.15 48.12,156.12 60.85,161 53,153.15 48.12)) )
+Style2-thinline;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, 2.99 90.16),POINT(171 154),POLYGON((6.66 84.21,2.99 90.16,8.94 93.83,6.66 84.21)) )
# This file describes the styles used to render the png images
# The styleName attribute for every style should be unique.
#
-# To use a style, prefix the wkt string with the styleName; i.e.
+# To use a style, prefix the wkt string with the styleName; i.e.
# Style1;POINT(50 50)
#
# convert -list color
polygonStrokeColor = DarkGreen
polygonStrokeWidth = 0
+[Style]
+# The second layer in the rendered WKT image
+styleName = Style2-thinline
+pointSize = 6
+pointColor = DarkSeaGreen4
+lineWidth = 3
+lineColor = DarkSeaGreen4
+polygonFillColor = DarkSeaGreen4
+polygonStrokeColor = DarkGreen
+polygonStrokeWidth = 0
<refsection>
<title>Examples</title>
<!-- TODO: We really badly need diagrams here and more examples -->
- <informalfigure>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/st_linecrossingdirection01.png" />
- </imageobject>
- <caption><para>Line 1 fat line, Line 2 thin line, ball is start point,
+ <informaltable>
+ <tgroup cols="2">
+ <tbody>
+ <row>
+ <entry><para><informalfigure>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/st_linecrossingdirection01.png" />
+ </imageobject>
+ <caption><para>Line 1 (green), Line 2 ball is start point,
triangle are end points. Query below. </para></caption>
- </mediaobject>
- </informalfigure>
-<programlisting>SELECT ST_LineCrossingDirection(foo.line1, foo.line2) As l1_cross_l2 ,
+ </mediaobject>
+ </informalfigure>
+ <programlisting>
+SELECT ST_LineCrossingDirection(foo.line1, foo.line2) As l1_cross_l2 ,
ST_LineCrossingDirection(foo.line2, foo.line1) As l2_cross_l1
-FROM (SELECT
+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
+ 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 ST_LineCrossingDirection(foo.line1, foo.line2) As l1_cross_l2 ,
+ </programlisting>
+ </para>
+ </entry>
+
+ <entry>
+ <para><informalfigure>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/st_linecrossingdirection02.png" />
+ </imageobject>
+ <caption><para>Line 1 (green), Line 2 ball is start point,
+ triangle are end points. Query below.</para></caption>
+ </mediaobject>
+ </informalfigure>
+ <programlisting>
+SELECT ST_LineCrossingDirection(foo.line1, foo.line2) As l1_cross_l2 ,
ST_LineCrossingDirection(foo.line2, foo.line1) As l2_cross_l1
-FROM (SELECT
+FROM (SELECT
ST_GeomFromText('LINESTRING(25 169,89 114,40 70,86 43)') As line1,
ST_GeomFromText('LINESTRING (171 154, 20 140, 71 74, 2.99 90.16)') As line2
) As foo;
- l1_cross_l2 | l2_cross_l1
+ l1_cross_l2 | l2_cross_l1
-------------+-------------
- 2 | -3
-</programlisting>
+ 2 | -3
+ </programlisting>
+ </para>
+ </entry>
+ </row>
+ </tbody>
+ </tgroup>
+</informaltable>
+
<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 )