This is an automated email from the ASF dual-hosted git repository.

jiayu pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/sedona.git


The following commit(s) were added to refs/heads/master by this push:
     new 5a71767887 [GH-2678] Add SVG illustrations for predicate functions 
(#2681)
5a71767887 is described below

commit 5a717678871ad1006a78b5ecb9f6b6cae04d3fea
Author: Jia Yu <[email protected]>
AuthorDate: Wed Mar 4 12:52:13 2026 -0700

    [GH-2678] Add SVG illustrations for predicate functions (#2681)
---
 docs/api/flink/Predicates/ST_Contains.md           |  3 +++
 docs/api/flink/Predicates/ST_CoveredBy.md          |  3 +++
 docs/api/flink/Predicates/ST_Covers.md             |  3 +++
 docs/api/flink/Predicates/ST_Crosses.md            |  3 +++
 docs/api/flink/Predicates/ST_DWithin.md            |  3 +++
 docs/api/flink/Predicates/ST_Disjoint.md           |  3 +++
 docs/api/flink/Predicates/ST_Equals.md             |  3 +++
 docs/api/flink/Predicates/ST_Intersects.md         |  3 +++
 docs/api/flink/Predicates/ST_OrderingEquals.md     |  3 +++
 docs/api/flink/Predicates/ST_Overlaps.md           |  3 +++
 docs/api/flink/Predicates/ST_Relate.md             |  3 +++
 docs/api/flink/Predicates/ST_Touches.md            |  3 +++
 docs/api/flink/Predicates/ST_Within.md             |  3 +++
 .../vector-data/Predicates/ST_Contains.md          |  3 +++
 .../vector-data/Predicates/ST_CoveredBy.md         |  3 +++
 .../snowflake/vector-data/Predicates/ST_Covers.md  |  3 +++
 .../snowflake/vector-data/Predicates/ST_Crosses.md |  3 +++
 .../snowflake/vector-data/Predicates/ST_DWithin.md |  3 +++
 .../vector-data/Predicates/ST_Disjoint.md          |  3 +++
 .../snowflake/vector-data/Predicates/ST_Equals.md  |  3 +++
 .../vector-data/Predicates/ST_Intersects.md        |  3 +++
 .../vector-data/Predicates/ST_OrderingEquals.md    |  3 +++
 .../vector-data/Predicates/ST_Overlaps.md          |  3 +++
 .../snowflake/vector-data/Predicates/ST_Relate.md  |  3 +++
 .../snowflake/vector-data/Predicates/ST_Touches.md |  3 +++
 .../snowflake/vector-data/Predicates/ST_Within.md  |  3 +++
 docs/api/sql/Predicates/ST_Contains.md             |  3 +++
 docs/api/sql/Predicates/ST_CoveredBy.md            |  3 +++
 docs/api/sql/Predicates/ST_Covers.md               |  3 +++
 docs/api/sql/Predicates/ST_Crosses.md              |  3 +++
 docs/api/sql/Predicates/ST_DWithin.md              |  3 +++
 docs/api/sql/Predicates/ST_Disjoint.md             |  3 +++
 docs/api/sql/Predicates/ST_Equals.md               |  3 +++
 docs/api/sql/Predicates/ST_Intersects.md           |  3 +++
 docs/api/sql/Predicates/ST_OrderingEquals.md       |  3 +++
 docs/api/sql/Predicates/ST_Overlaps.md             |  3 +++
 docs/api/sql/Predicates/ST_Relate.md               |  3 +++
 docs/api/sql/Predicates/ST_Touches.md              |  3 +++
 docs/api/sql/Predicates/ST_Within.md               |  3 +++
 docs/image/ST_Contains/ST_Contains_false.svg       | 15 +++++++++++
 docs/image/ST_Contains/ST_Contains_true.svg        | 15 +++++++++++
 docs/image/ST_CoveredBy/ST_CoveredBy_false.svg     | 15 +++++++++++
 docs/image/ST_CoveredBy/ST_CoveredBy_true.svg      | 15 +++++++++++
 docs/image/ST_Covers/ST_Covers_false.svg           | 15 +++++++++++
 docs/image/ST_Covers/ST_Covers_true.svg            | 15 +++++++++++
 docs/image/ST_Crosses/ST_Crosses_false.svg         | 17 ++++++++++++
 docs/image/ST_Crosses/ST_Crosses_true.svg          | 17 ++++++++++++
 docs/image/ST_DWithin/ST_DWithin_false.svg         | 18 +++++++++++++
 docs/image/ST_DWithin/ST_DWithin_true.svg          | 18 +++++++++++++
 docs/image/ST_Disjoint/ST_Disjoint_false.svg       | 15 +++++++++++
 docs/image/ST_Disjoint/ST_Disjoint_true.svg        | 15 +++++++++++
 docs/image/ST_Equals/ST_Equals_false.svg           | 21 +++++++++++++++
 docs/image/ST_Equals/ST_Equals_true.svg            | 21 +++++++++++++++
 docs/image/ST_Intersects/ST_Intersects_false.svg   | 15 +++++++++++
 docs/image/ST_Intersects/ST_Intersects_true.svg    | 15 +++++++++++
 .../ST_OrderingEquals/ST_OrderingEquals_false.svg  | 30 ++++++++++++++++++++++
 .../ST_OrderingEquals/ST_OrderingEquals_true.svg   | 30 ++++++++++++++++++++++
 docs/image/ST_Overlaps/ST_Overlaps_false.svg       | 15 +++++++++++
 docs/image/ST_Overlaps/ST_Overlaps_true.svg        | 15 +++++++++++
 docs/image/ST_Relate/ST_Relate_false.svg           | 18 +++++++++++++
 docs/image/ST_Relate/ST_Relate_true.svg            | 18 +++++++++++++
 docs/image/ST_Touches/ST_Touches_false.svg         | 15 +++++++++++
 docs/image/ST_Touches/ST_Touches_true.svg          | 15 +++++++++++
 docs/image/ST_Within/ST_Within_false.svg           | 15 +++++++++++
 docs/image/ST_Within/ST_Within_true.svg            | 15 +++++++++++
 65 files changed, 565 insertions(+)

diff --git a/docs/api/flink/Predicates/ST_Contains.md 
b/docs/api/flink/Predicates/ST_Contains.md
index 5e462e3f22..161b1ec6e5 100644
--- a/docs/api/flink/Predicates/ST_Contains.md
+++ b/docs/api/flink/Predicates/ST_Contains.md
@@ -21,6 +21,9 @@
 
 Introduction: Return true if A fully contains B
 
+![ST_Contains returning true](../../../image/ST_Contains/ST_Contains_true.svg 
"ST_Contains returning true")
+![ST_Contains returning 
false](../../../image/ST_Contains/ST_Contains_false.svg "ST_Contains returning 
false")
+
 Format: `ST_Contains (A: Geometry, B: Geometry)`
 
 Return type: `Boolean`
diff --git a/docs/api/flink/Predicates/ST_CoveredBy.md 
b/docs/api/flink/Predicates/ST_CoveredBy.md
index 5d7de256d9..1524b8b51a 100644
--- a/docs/api/flink/Predicates/ST_CoveredBy.md
+++ b/docs/api/flink/Predicates/ST_CoveredBy.md
@@ -21,6 +21,9 @@
 
 Introduction: Return true if A is covered by B
 
+![ST_CoveredBy returning 
true](../../../image/ST_CoveredBy/ST_CoveredBy_true.svg "ST_CoveredBy returning 
true")
+![ST_CoveredBy returning 
false](../../../image/ST_CoveredBy/ST_CoveredBy_false.svg "ST_CoveredBy 
returning false")
+
 Format: `ST_CoveredBy (A: Geometry, B: Geometry)`
 
 Return type: `Boolean`
diff --git a/docs/api/flink/Predicates/ST_Covers.md 
b/docs/api/flink/Predicates/ST_Covers.md
index 909412f6ba..d67fe7750a 100644
--- a/docs/api/flink/Predicates/ST_Covers.md
+++ b/docs/api/flink/Predicates/ST_Covers.md
@@ -21,6 +21,9 @@
 
 Introduction: Return true if A covers B
 
+![ST_Covers returning true](../../../image/ST_Covers/ST_Covers_true.svg 
"ST_Covers returning true")
+![ST_Covers returning false](../../../image/ST_Covers/ST_Covers_false.svg 
"ST_Covers returning false")
+
 Format: `ST_Covers (A: Geometry, B: Geometry)`
 
 Return type: `Boolean`
diff --git a/docs/api/flink/Predicates/ST_Crosses.md 
b/docs/api/flink/Predicates/ST_Crosses.md
index d160ce32c1..a4341994ea 100644
--- a/docs/api/flink/Predicates/ST_Crosses.md
+++ b/docs/api/flink/Predicates/ST_Crosses.md
@@ -21,6 +21,9 @@
 
 Introduction: Return true if A crosses B
 
+![ST_Crosses returning true](../../../image/ST_Crosses/ST_Crosses_true.svg 
"ST_Crosses returning true")
+![ST_Crosses returning false](../../../image/ST_Crosses/ST_Crosses_false.svg 
"ST_Crosses returning false")
+
 Format: `ST_Crosses (A: Geometry, B: Geometry)`
 
 Return type: `Boolean`
diff --git a/docs/api/flink/Predicates/ST_DWithin.md 
b/docs/api/flink/Predicates/ST_DWithin.md
index dbf866cd45..68c2cf2aeb 100644
--- a/docs/api/flink/Predicates/ST_DWithin.md
+++ b/docs/api/flink/Predicates/ST_DWithin.md
@@ -21,6 +21,9 @@
 
 Introduction: Returns true if 'leftGeometry' and 'rightGeometry' are within a 
specified 'distance'.
 
+![ST_DWithin returning true](../../../image/ST_DWithin/ST_DWithin_true.svg 
"ST_DWithin returning true")
+![ST_DWithin returning false](../../../image/ST_DWithin/ST_DWithin_false.svg 
"ST_DWithin returning false")
+
 If `useSpheroid` is passed true, ST_DWithin uses Sedona's ST_DistanceSpheroid 
to check the spheroid distance between the centroids of two geometries. The 
unit of the distance in this case is meter.
 
 If `useSpheroid` is passed false, ST_DWithin uses Euclidean distance and the 
unit of the distance is the same as the CRS of the geometries. To obtain the 
correct result, please consider using ST_Transform to put data in an 
appropriate CRS.
diff --git a/docs/api/flink/Predicates/ST_Disjoint.md 
b/docs/api/flink/Predicates/ST_Disjoint.md
index 32c9d93537..0a2601459e 100644
--- a/docs/api/flink/Predicates/ST_Disjoint.md
+++ b/docs/api/flink/Predicates/ST_Disjoint.md
@@ -21,6 +21,9 @@
 
 Introduction: Return true if A and B are disjoint
 
+![ST_Disjoint returning true](../../../image/ST_Disjoint/ST_Disjoint_true.svg 
"ST_Disjoint returning true")
+![ST_Disjoint returning 
false](../../../image/ST_Disjoint/ST_Disjoint_false.svg "ST_Disjoint returning 
false")
+
 Format: `ST_Disjoint (A: Geometry, B: Geometry)`
 
 Return type: `Boolean`
diff --git a/docs/api/flink/Predicates/ST_Equals.md 
b/docs/api/flink/Predicates/ST_Equals.md
index 6051d3f9d4..09a599c202 100644
--- a/docs/api/flink/Predicates/ST_Equals.md
+++ b/docs/api/flink/Predicates/ST_Equals.md
@@ -21,6 +21,9 @@
 
 Introduction: Return true if A equals to B
 
+![ST_Equals returning true](../../../image/ST_Equals/ST_Equals_true.svg 
"ST_Equals returning true")
+![ST_Equals returning false](../../../image/ST_Equals/ST_Equals_false.svg 
"ST_Equals returning false")
+
 Format: `ST_Equals (A: Geometry, B: Geometry)`
 
 Return type: `Boolean`
diff --git a/docs/api/flink/Predicates/ST_Intersects.md 
b/docs/api/flink/Predicates/ST_Intersects.md
index c2f0b8a669..d1b3089199 100644
--- a/docs/api/flink/Predicates/ST_Intersects.md
+++ b/docs/api/flink/Predicates/ST_Intersects.md
@@ -21,6 +21,9 @@
 
 Introduction: Return true if A intersects B
 
+![ST_Intersects returning 
true](../../../image/ST_Intersects/ST_Intersects_true.svg "ST_Intersects 
returning true")
+![ST_Intersects returning 
false](../../../image/ST_Intersects/ST_Intersects_false.svg "ST_Intersects 
returning false")
+
 Format: `ST_Intersects (A: Geometry, B: Geometry)`
 
 Return type: `Boolean`
diff --git a/docs/api/flink/Predicates/ST_OrderingEquals.md 
b/docs/api/flink/Predicates/ST_OrderingEquals.md
index bc30455a7b..a2ac11249d 100644
--- a/docs/api/flink/Predicates/ST_OrderingEquals.md
+++ b/docs/api/flink/Predicates/ST_OrderingEquals.md
@@ -21,6 +21,9 @@
 
 Introduction: Returns true if the geometries are equal and the coordinates are 
in the same order
 
+![ST_OrderingEquals returning 
true](../../../image/ST_OrderingEquals/ST_OrderingEquals_true.svg 
"ST_OrderingEquals returning true")
+![ST_OrderingEquals returning 
false](../../../image/ST_OrderingEquals/ST_OrderingEquals_false.svg 
"ST_OrderingEquals returning false")
+
 Format: `ST_OrderingEquals(A: geometry, B: geometry)`
 
 Return type: `Boolean`
diff --git a/docs/api/flink/Predicates/ST_Overlaps.md 
b/docs/api/flink/Predicates/ST_Overlaps.md
index 9a735eb688..c7cff2b13a 100644
--- a/docs/api/flink/Predicates/ST_Overlaps.md
+++ b/docs/api/flink/Predicates/ST_Overlaps.md
@@ -21,6 +21,9 @@
 
 Introduction: Return true if A overlaps B
 
+![ST_Overlaps returning true](../../../image/ST_Overlaps/ST_Overlaps_true.svg 
"ST_Overlaps returning true")
+![ST_Overlaps returning 
false](../../../image/ST_Overlaps/ST_Overlaps_false.svg "ST_Overlaps returning 
false")
+
 Format: `ST_Overlaps (A: Geometry, B: Geometry)`
 
 Return type: `Boolean`
diff --git a/docs/api/flink/Predicates/ST_Relate.md 
b/docs/api/flink/Predicates/ST_Relate.md
index 53e0f83b53..c623848c37 100644
--- a/docs/api/flink/Predicates/ST_Relate.md
+++ b/docs/api/flink/Predicates/ST_Relate.md
@@ -23,6 +23,9 @@ Introduction: The first variant of the function computes and 
returns the [Dimens
 
 The second variant of the function evaluates whether the two input geometries 
satisfy a specific spatial relationship defined by the provided 
`intersectionMatrix` pattern.
 
+![ST_Relate with intersectionMatrix pattern returning 
true](../../../image/ST_Relate/ST_Relate_true.svg "ST_Relate with 
intersectionMatrix pattern returning true")
+![ST_Relate with intersectionMatrix pattern returning 
false](../../../image/ST_Relate/ST_Relate_false.svg "ST_Relate with 
intersectionMatrix pattern returning false")
+
 !!!Note
     It is important to note that this function is not optimized for use in 
spatial join operations. Certain DE-9IM relationships can hold true for 
geometries that do not intersect or are disjoint. As a result, it is 
recommended to utilize other dedicated spatial functions specifically optimized 
for spatial join processing.
 
diff --git a/docs/api/flink/Predicates/ST_Touches.md 
b/docs/api/flink/Predicates/ST_Touches.md
index 43274424ac..3590cd5a18 100644
--- a/docs/api/flink/Predicates/ST_Touches.md
+++ b/docs/api/flink/Predicates/ST_Touches.md
@@ -21,6 +21,9 @@
 
 Introduction: Return true if A touches B
 
+![ST_Touches returning true](../../../image/ST_Touches/ST_Touches_true.svg 
"ST_Touches returning true")
+![ST_Touches returning false](../../../image/ST_Touches/ST_Touches_false.svg 
"ST_Touches returning false")
+
 Format: `ST_Touches (A: Geometry, B: Geometry)`
 
 Return type: `Boolean`
diff --git a/docs/api/flink/Predicates/ST_Within.md 
b/docs/api/flink/Predicates/ST_Within.md
index f41ccc6b75..3aae37a747 100644
--- a/docs/api/flink/Predicates/ST_Within.md
+++ b/docs/api/flink/Predicates/ST_Within.md
@@ -21,6 +21,9 @@
 
 Introduction: Return true if A is within B
 
+![ST_Within returning true](../../../image/ST_Within/ST_Within_true.svg 
"ST_Within returning true")
+![ST_Within returning false](../../../image/ST_Within/ST_Within_false.svg 
"ST_Within returning false")
+
 Format: `ST_Within (A: Geometry, B: Geometry)`
 
 Return type: `Boolean`
diff --git a/docs/api/snowflake/vector-data/Predicates/ST_Contains.md 
b/docs/api/snowflake/vector-data/Predicates/ST_Contains.md
index 93b8eda4cd..5ce7c69d43 100644
--- a/docs/api/snowflake/vector-data/Predicates/ST_Contains.md
+++ b/docs/api/snowflake/vector-data/Predicates/ST_Contains.md
@@ -21,6 +21,9 @@
 
 Introduction: Return true if A fully contains B
 
+![ST_Contains returning 
true](../../../../image/ST_Contains/ST_Contains_true.svg "ST_Contains returning 
true")
+![ST_Contains returning 
false](../../../../image/ST_Contains/ST_Contains_false.svg "ST_Contains 
returning false")
+
 Format: `ST_Contains (A:geometry, B:geometry)`
 
 Return type: `Boolean`
diff --git a/docs/api/snowflake/vector-data/Predicates/ST_CoveredBy.md 
b/docs/api/snowflake/vector-data/Predicates/ST_CoveredBy.md
index 51e02dc57f..ef79807600 100644
--- a/docs/api/snowflake/vector-data/Predicates/ST_CoveredBy.md
+++ b/docs/api/snowflake/vector-data/Predicates/ST_CoveredBy.md
@@ -21,6 +21,9 @@
 
 Introduction: Return true if A is covered by B
 
+![ST_CoveredBy returning 
true](../../../../image/ST_CoveredBy/ST_CoveredBy_true.svg "ST_CoveredBy 
returning true")
+![ST_CoveredBy returning 
false](../../../../image/ST_CoveredBy/ST_CoveredBy_false.svg "ST_CoveredBy 
returning false")
+
 Format: `ST_CoveredBy (A:geometry, B:geometry)`
 
 Return type: `Boolean`
diff --git a/docs/api/snowflake/vector-data/Predicates/ST_Covers.md 
b/docs/api/snowflake/vector-data/Predicates/ST_Covers.md
index 9606039564..c05a7f13a7 100644
--- a/docs/api/snowflake/vector-data/Predicates/ST_Covers.md
+++ b/docs/api/snowflake/vector-data/Predicates/ST_Covers.md
@@ -21,6 +21,9 @@
 
 Introduction: Return true if A covers B
 
+![ST_Covers returning true](../../../../image/ST_Covers/ST_Covers_true.svg 
"ST_Covers returning true")
+![ST_Covers returning false](../../../../image/ST_Covers/ST_Covers_false.svg 
"ST_Covers returning false")
+
 Format: `ST_Covers (A:geometry, B:geometry)`
 
 Return type: `Boolean`
diff --git a/docs/api/snowflake/vector-data/Predicates/ST_Crosses.md 
b/docs/api/snowflake/vector-data/Predicates/ST_Crosses.md
index 62160489a9..9fda9fcd2c 100644
--- a/docs/api/snowflake/vector-data/Predicates/ST_Crosses.md
+++ b/docs/api/snowflake/vector-data/Predicates/ST_Crosses.md
@@ -21,6 +21,9 @@
 
 Introduction: Return true if A crosses B
 
+![ST_Crosses returning true](../../../../image/ST_Crosses/ST_Crosses_true.svg 
"ST_Crosses returning true")
+![ST_Crosses returning 
false](../../../../image/ST_Crosses/ST_Crosses_false.svg "ST_Crosses returning 
false")
+
 Format: `ST_Crosses (A:geometry, B:geometry)`
 
 Return type: `Boolean`
diff --git a/docs/api/snowflake/vector-data/Predicates/ST_DWithin.md 
b/docs/api/snowflake/vector-data/Predicates/ST_DWithin.md
index c5d80aef7d..577bae336d 100644
--- a/docs/api/snowflake/vector-data/Predicates/ST_DWithin.md
+++ b/docs/api/snowflake/vector-data/Predicates/ST_DWithin.md
@@ -21,6 +21,9 @@
 
 Introduction: Returns true if 'leftGeometry' and 'rightGeometry' are within a 
specified 'distance'. This function essentially checks if the shortest distance 
between the envelope of the two geometries is <= the provided distance.
 
+![ST_DWithin returning true](../../../../image/ST_DWithin/ST_DWithin_true.svg 
"ST_DWithin returning true")
+![ST_DWithin returning 
false](../../../../image/ST_DWithin/ST_DWithin_false.svg "ST_DWithin returning 
false")
+
 Format: `ST_DWithin (leftGeometry: Geometry, rightGeometry: Geometry, 
distance: Double)`
 
 Return type: `Boolean`
diff --git a/docs/api/snowflake/vector-data/Predicates/ST_Disjoint.md 
b/docs/api/snowflake/vector-data/Predicates/ST_Disjoint.md
index 37fe90206e..f2470a8d39 100644
--- a/docs/api/snowflake/vector-data/Predicates/ST_Disjoint.md
+++ b/docs/api/snowflake/vector-data/Predicates/ST_Disjoint.md
@@ -21,6 +21,9 @@
 
 Introduction: Return true if A and B are disjoint
 
+![ST_Disjoint returning 
true](../../../../image/ST_Disjoint/ST_Disjoint_true.svg "ST_Disjoint returning 
true")
+![ST_Disjoint returning 
false](../../../../image/ST_Disjoint/ST_Disjoint_false.svg "ST_Disjoint 
returning false")
+
 Format: `ST_Disjoint (A:geometry, B:geometry)`
 
 Return type: `Boolean`
diff --git a/docs/api/snowflake/vector-data/Predicates/ST_Equals.md 
b/docs/api/snowflake/vector-data/Predicates/ST_Equals.md
index d4d3a401d5..89b1815849 100644
--- a/docs/api/snowflake/vector-data/Predicates/ST_Equals.md
+++ b/docs/api/snowflake/vector-data/Predicates/ST_Equals.md
@@ -21,6 +21,9 @@
 
 Introduction: Return true if A equals to B
 
+![ST_Equals returning true](../../../../image/ST_Equals/ST_Equals_true.svg 
"ST_Equals returning true")
+![ST_Equals returning false](../../../../image/ST_Equals/ST_Equals_false.svg 
"ST_Equals returning false")
+
 Format: `ST_Equals (A:geometry, B:geometry)`
 
 Return type: `Boolean`
diff --git a/docs/api/snowflake/vector-data/Predicates/ST_Intersects.md 
b/docs/api/snowflake/vector-data/Predicates/ST_Intersects.md
index b1e607f01b..ff1c27230a 100644
--- a/docs/api/snowflake/vector-data/Predicates/ST_Intersects.md
+++ b/docs/api/snowflake/vector-data/Predicates/ST_Intersects.md
@@ -21,6 +21,9 @@
 
 Introduction: Return true if A intersects B
 
+![ST_Intersects returning 
true](../../../../image/ST_Intersects/ST_Intersects_true.svg "ST_Intersects 
returning true")
+![ST_Intersects returning 
false](../../../../image/ST_Intersects/ST_Intersects_false.svg "ST_Intersects 
returning false")
+
 Format: `ST_Intersects (A:geometry, B:geometry)`
 
 Return type: `Boolean`
diff --git a/docs/api/snowflake/vector-data/Predicates/ST_OrderingEquals.md 
b/docs/api/snowflake/vector-data/Predicates/ST_OrderingEquals.md
index aec3536dbf..439cc9ab96 100644
--- a/docs/api/snowflake/vector-data/Predicates/ST_OrderingEquals.md
+++ b/docs/api/snowflake/vector-data/Predicates/ST_OrderingEquals.md
@@ -21,6 +21,9 @@
 
 Introduction: Returns true if the geometries are equal and the coordinates are 
in the same order
 
+![ST_OrderingEquals returning 
true](../../../../image/ST_OrderingEquals/ST_OrderingEquals_true.svg 
"ST_OrderingEquals returning true")
+![ST_OrderingEquals returning 
false](../../../../image/ST_OrderingEquals/ST_OrderingEquals_false.svg 
"ST_OrderingEquals returning false")
+
 Format: `ST_OrderingEquals(A: geometry, B: geometry)`
 
 Return type: `Boolean`
diff --git a/docs/api/snowflake/vector-data/Predicates/ST_Overlaps.md 
b/docs/api/snowflake/vector-data/Predicates/ST_Overlaps.md
index 69b3203d09..d3b01fc18d 100644
--- a/docs/api/snowflake/vector-data/Predicates/ST_Overlaps.md
+++ b/docs/api/snowflake/vector-data/Predicates/ST_Overlaps.md
@@ -21,6 +21,9 @@
 
 Introduction: Return true if A overlaps B
 
+![ST_Overlaps returning 
true](../../../../image/ST_Overlaps/ST_Overlaps_true.svg "ST_Overlaps returning 
true")
+![ST_Overlaps returning 
false](../../../../image/ST_Overlaps/ST_Overlaps_false.svg "ST_Overlaps 
returning false")
+
 Format: `ST_Overlaps (A:geometry, B:geometry)`
 
 Return type: `Boolean`
diff --git a/docs/api/snowflake/vector-data/Predicates/ST_Relate.md 
b/docs/api/snowflake/vector-data/Predicates/ST_Relate.md
index acdf258efa..8e46de7c36 100644
--- a/docs/api/snowflake/vector-data/Predicates/ST_Relate.md
+++ b/docs/api/snowflake/vector-data/Predicates/ST_Relate.md
@@ -23,6 +23,9 @@ Introduction: The first variant of the function computes and 
returns the [Dimens
 
 The second variant of the function evaluates whether the two input geometries 
satisfy a specific spatial relationship defined by the provided 
`intersectionMatrix` pattern.
 
+![ST_Relate with intersectionMatrix pattern returning 
true](../../../../image/ST_Relate/ST_Relate_true.svg "ST_Relate with 
intersectionMatrix pattern returning true")
+![ST_Relate with intersectionMatrix pattern returning 
false](../../../../image/ST_Relate/ST_Relate_false.svg "ST_Relate with 
intersectionMatrix pattern returning false")
+
 !!!Note
     It is important to note that this function is not optimized for use in 
spatial join operations. Certain DE-9IM relationships can hold true for 
geometries that do not intersect or are disjoint. As a result, it is 
recommended to utilize other dedicated spatial functions specifically optimized 
for spatial join processing.
 
diff --git a/docs/api/snowflake/vector-data/Predicates/ST_Touches.md 
b/docs/api/snowflake/vector-data/Predicates/ST_Touches.md
index 8d35ae36bb..c5c340a4b7 100644
--- a/docs/api/snowflake/vector-data/Predicates/ST_Touches.md
+++ b/docs/api/snowflake/vector-data/Predicates/ST_Touches.md
@@ -21,6 +21,9 @@
 
 Introduction: Return true if A touches B
 
+![ST_Touches returning true](../../../../image/ST_Touches/ST_Touches_true.svg 
"ST_Touches returning true")
+![ST_Touches returning 
false](../../../../image/ST_Touches/ST_Touches_false.svg "ST_Touches returning 
false")
+
 Format: `ST_Touches (A:geometry, B:geometry)`
 
 Return type: `Boolean`
diff --git a/docs/api/snowflake/vector-data/Predicates/ST_Within.md 
b/docs/api/snowflake/vector-data/Predicates/ST_Within.md
index 11d350ee27..a735287863 100644
--- a/docs/api/snowflake/vector-data/Predicates/ST_Within.md
+++ b/docs/api/snowflake/vector-data/Predicates/ST_Within.md
@@ -21,6 +21,9 @@
 
 Introduction: Return true if A is fully contained by B
 
+![ST_Within returning true](../../../../image/ST_Within/ST_Within_true.svg 
"ST_Within returning true")
+![ST_Within returning false](../../../../image/ST_Within/ST_Within_false.svg 
"ST_Within returning false")
+
 Format: `ST_Within (A:geometry, B:geometry)`
 
 Return type: `Boolean`
diff --git a/docs/api/sql/Predicates/ST_Contains.md 
b/docs/api/sql/Predicates/ST_Contains.md
index 6bb7018ee3..6e572c3a84 100644
--- a/docs/api/sql/Predicates/ST_Contains.md
+++ b/docs/api/sql/Predicates/ST_Contains.md
@@ -21,6 +21,9 @@
 
 Introduction: Return true if A fully contains B
 
+![ST_Contains returning true](../../../image/ST_Contains/ST_Contains_true.svg 
"ST_Contains returning true")
+![ST_Contains returning 
false](../../../image/ST_Contains/ST_Contains_false.svg "ST_Contains returning 
false")
+
 Format: `ST_Contains (A: Geometry, B: Geometry)`
 
 Return type: `Boolean`
diff --git a/docs/api/sql/Predicates/ST_CoveredBy.md 
b/docs/api/sql/Predicates/ST_CoveredBy.md
index 28024f1be0..db27de4ac7 100644
--- a/docs/api/sql/Predicates/ST_CoveredBy.md
+++ b/docs/api/sql/Predicates/ST_CoveredBy.md
@@ -21,6 +21,9 @@
 
 Introduction: Return true if A is covered by B
 
+![ST_CoveredBy returning 
true](../../../image/ST_CoveredBy/ST_CoveredBy_true.svg "ST_CoveredBy returning 
true")
+![ST_CoveredBy returning 
false](../../../image/ST_CoveredBy/ST_CoveredBy_false.svg "ST_CoveredBy 
returning false")
+
 Format: `ST_CoveredBy (A: Geometry, B: Geometry)`
 
 Return type: `Boolean`
diff --git a/docs/api/sql/Predicates/ST_Covers.md 
b/docs/api/sql/Predicates/ST_Covers.md
index 1af8c5a94b..65c1aa9cac 100644
--- a/docs/api/sql/Predicates/ST_Covers.md
+++ b/docs/api/sql/Predicates/ST_Covers.md
@@ -21,6 +21,9 @@
 
 Introduction: Return true if A covers B
 
+![ST_Covers returning true](../../../image/ST_Covers/ST_Covers_true.svg 
"ST_Covers returning true")
+![ST_Covers returning false](../../../image/ST_Covers/ST_Covers_false.svg 
"ST_Covers returning false")
+
 Format: `ST_Covers (A: Geometry, B: Geometry)`
 
 Return type: `Boolean`
diff --git a/docs/api/sql/Predicates/ST_Crosses.md 
b/docs/api/sql/Predicates/ST_Crosses.md
index 94263a24ba..eaf00ea2f6 100644
--- a/docs/api/sql/Predicates/ST_Crosses.md
+++ b/docs/api/sql/Predicates/ST_Crosses.md
@@ -21,6 +21,9 @@
 
 Introduction: Return true if A crosses B
 
+![ST_Crosses returning true](../../../image/ST_Crosses/ST_Crosses_true.svg 
"ST_Crosses returning true")
+![ST_Crosses returning false](../../../image/ST_Crosses/ST_Crosses_false.svg 
"ST_Crosses returning false")
+
 Format: `ST_Crosses (A: Geometry, B: Geometry)`
 
 Return type: `Boolean`
diff --git a/docs/api/sql/Predicates/ST_DWithin.md 
b/docs/api/sql/Predicates/ST_DWithin.md
index c0b1640a19..37244ec301 100644
--- a/docs/api/sql/Predicates/ST_DWithin.md
+++ b/docs/api/sql/Predicates/ST_DWithin.md
@@ -21,6 +21,9 @@
 
 Introduction: Returns true if 'leftGeometry' and 'rightGeometry' are within a 
specified 'distance'.
 
+![ST_DWithin returning true](../../../image/ST_DWithin/ST_DWithin_true.svg 
"ST_DWithin returning true")
+![ST_DWithin returning false](../../../image/ST_DWithin/ST_DWithin_false.svg 
"ST_DWithin returning false")
+
 If `useSpheroid` is passed true, ST_DWithin uses Sedona's ST_DistanceSpheroid 
to check the spheroid distance between the centroids of two geometries. The 
unit of the distance in this case is meter.
 
 If `useSpheroid` is passed false, ST_DWithin uses Euclidean distance and the 
unit of the distance is the same as the CRS of the geometries. To obtain the 
correct result, please consider using ST_Transform to put data in an 
appropriate CRS.
diff --git a/docs/api/sql/Predicates/ST_Disjoint.md 
b/docs/api/sql/Predicates/ST_Disjoint.md
index 014c8847f7..89bfcb6fea 100644
--- a/docs/api/sql/Predicates/ST_Disjoint.md
+++ b/docs/api/sql/Predicates/ST_Disjoint.md
@@ -21,6 +21,9 @@
 
 Introduction: Return true if A and B are disjoint
 
+![ST_Disjoint returning true](../../../image/ST_Disjoint/ST_Disjoint_true.svg 
"ST_Disjoint returning true")
+![ST_Disjoint returning 
false](../../../image/ST_Disjoint/ST_Disjoint_false.svg "ST_Disjoint returning 
false")
+
 Format: `ST_Disjoint (A: Geometry, B: Geometry)`
 
 Return type: `Boolean`
diff --git a/docs/api/sql/Predicates/ST_Equals.md 
b/docs/api/sql/Predicates/ST_Equals.md
index 13819a585b..da2344e8eb 100644
--- a/docs/api/sql/Predicates/ST_Equals.md
+++ b/docs/api/sql/Predicates/ST_Equals.md
@@ -21,6 +21,9 @@
 
 Introduction: Return true if A equals to B
 
+![ST_Equals returning true](../../../image/ST_Equals/ST_Equals_true.svg 
"ST_Equals returning true")
+![ST_Equals returning false](../../../image/ST_Equals/ST_Equals_false.svg 
"ST_Equals returning false")
+
 Format: `ST_Equals (A: Geometry, B: Geometry)`
 
 Return type: `Boolean`
diff --git a/docs/api/sql/Predicates/ST_Intersects.md 
b/docs/api/sql/Predicates/ST_Intersects.md
index 8fad90600e..bcb43f84a2 100644
--- a/docs/api/sql/Predicates/ST_Intersects.md
+++ b/docs/api/sql/Predicates/ST_Intersects.md
@@ -21,6 +21,9 @@
 
 Introduction: Return true if A intersects B
 
+![ST_Intersects returning 
true](../../../image/ST_Intersects/ST_Intersects_true.svg "ST_Intersects 
returning true")
+![ST_Intersects returning 
false](../../../image/ST_Intersects/ST_Intersects_false.svg "ST_Intersects 
returning false")
+
 Format: `ST_Intersects (A: Geometry, B: Geometry)`
 
 Return type: `Boolean`
diff --git a/docs/api/sql/Predicates/ST_OrderingEquals.md 
b/docs/api/sql/Predicates/ST_OrderingEquals.md
index 168c568f99..5711938f94 100644
--- a/docs/api/sql/Predicates/ST_OrderingEquals.md
+++ b/docs/api/sql/Predicates/ST_OrderingEquals.md
@@ -21,6 +21,9 @@
 
 Introduction: Returns true if the geometries are equal and the coordinates are 
in the same order
 
+![ST_OrderingEquals returning 
true](../../../image/ST_OrderingEquals/ST_OrderingEquals_true.svg 
"ST_OrderingEquals returning true")
+![ST_OrderingEquals returning 
false](../../../image/ST_OrderingEquals/ST_OrderingEquals_false.svg 
"ST_OrderingEquals returning false")
+
 Format: `ST_OrderingEquals(A: geometry, B: geometry)`
 
 Return type: `Boolean`
diff --git a/docs/api/sql/Predicates/ST_Overlaps.md 
b/docs/api/sql/Predicates/ST_Overlaps.md
index f36e4d0fcc..a4eb3e13f3 100644
--- a/docs/api/sql/Predicates/ST_Overlaps.md
+++ b/docs/api/sql/Predicates/ST_Overlaps.md
@@ -21,6 +21,9 @@
 
 Introduction: Return true if A overlaps B
 
+![ST_Overlaps returning true](../../../image/ST_Overlaps/ST_Overlaps_true.svg 
"ST_Overlaps returning true")
+![ST_Overlaps returning 
false](../../../image/ST_Overlaps/ST_Overlaps_false.svg "ST_Overlaps returning 
false")
+
 Format: `ST_Overlaps (A: Geometry, B: Geometry)`
 
 Return type: `Boolean`
diff --git a/docs/api/sql/Predicates/ST_Relate.md 
b/docs/api/sql/Predicates/ST_Relate.md
index 53e0f83b53..c623848c37 100644
--- a/docs/api/sql/Predicates/ST_Relate.md
+++ b/docs/api/sql/Predicates/ST_Relate.md
@@ -23,6 +23,9 @@ Introduction: The first variant of the function computes and 
returns the [Dimens
 
 The second variant of the function evaluates whether the two input geometries 
satisfy a specific spatial relationship defined by the provided 
`intersectionMatrix` pattern.
 
+![ST_Relate with intersectionMatrix pattern returning 
true](../../../image/ST_Relate/ST_Relate_true.svg "ST_Relate with 
intersectionMatrix pattern returning true")
+![ST_Relate with intersectionMatrix pattern returning 
false](../../../image/ST_Relate/ST_Relate_false.svg "ST_Relate with 
intersectionMatrix pattern returning false")
+
 !!!Note
     It is important to note that this function is not optimized for use in 
spatial join operations. Certain DE-9IM relationships can hold true for 
geometries that do not intersect or are disjoint. As a result, it is 
recommended to utilize other dedicated spatial functions specifically optimized 
for spatial join processing.
 
diff --git a/docs/api/sql/Predicates/ST_Touches.md 
b/docs/api/sql/Predicates/ST_Touches.md
index ffd78fb299..1d00ddbee2 100644
--- a/docs/api/sql/Predicates/ST_Touches.md
+++ b/docs/api/sql/Predicates/ST_Touches.md
@@ -21,6 +21,9 @@
 
 Introduction: Return true if A touches B
 
+![ST_Touches returning true](../../../image/ST_Touches/ST_Touches_true.svg 
"ST_Touches returning true")
+![ST_Touches returning false](../../../image/ST_Touches/ST_Touches_false.svg 
"ST_Touches returning false")
+
 Format: `ST_Touches (A: Geometry, B: Geometry)`
 
 Return type: `Boolean`
diff --git a/docs/api/sql/Predicates/ST_Within.md 
b/docs/api/sql/Predicates/ST_Within.md
index 856eff193a..c881a6f447 100644
--- a/docs/api/sql/Predicates/ST_Within.md
+++ b/docs/api/sql/Predicates/ST_Within.md
@@ -21,6 +21,9 @@
 
 Introduction: Return true if A is fully contained by B
 
+![ST_Within returning true](../../../image/ST_Within/ST_Within_true.svg 
"ST_Within returning true")
+![ST_Within returning false](../../../image/ST_Within/ST_Within_false.svg 
"ST_Within returning false")
+
 Format: `ST_Within (A: Geometry, B: Geometry)`
 
 Return type: `Boolean`
diff --git a/docs/image/ST_Contains/ST_Contains_false.svg 
b/docs/image/ST_Contains/ST_Contains_false.svg
new file mode 100644
index 0000000000..3240721bac
--- /dev/null
+++ b/docs/image/ST_Contains/ST_Contains_false.svg
@@ -0,0 +1,15 @@
+<svg xmlns="http://www.w3.org/2000/svg"; viewBox="0 0 400 300" width="400" 
height="300" style="background:#ffffff">
+  <defs>
+    <style>
+      text { font-family: 'Segoe UI', Arial, Helvetica, sans-serif; }
+    </style>
+  </defs>
+  <text x="200" y="22" text-anchor="middle" font-size="16" font-weight="bold" 
fill="#333333">ST_Contains(A, B)</text>
+  <rect x="325" y="8" width="60" height="22" rx="4" fill="#c0392b" />
+  <text x="355" y="24" text-anchor="middle" font-size="12" font-weight="bold" 
fill="white">FALSE</text>
+  <path d="M 184.51 196.48 L 308.45 196.48 L 308.45 72.54 L 184.51 72.54 L 
184.51 196.48 Z" fill="rgba(217,74,74,0.25)" stroke="#d94a4a" 
stroke-width="2.5" fill-rule="evenodd" />
+  <text x="234.08" y="146.9" text-anchor="middle" font-size="15" 
font-weight="bold" fill="#d94a4a">B</text>
+  <path d="M 91.55 227.46 L 246.48 227.46 L 246.48 103.52 L 91.55 103.52 L 
91.55 227.46 Z" fill="rgba(74,144,217,0.25)" stroke="#4a90d9" 
stroke-width="2.5" fill-rule="evenodd" />
+  <text x="153.52" y="177.89" text-anchor="middle" font-size="15" 
font-weight="bold" fill="#4a90d9">A</text>
+  <text x="200" y="290" text-anchor="middle" font-size="12" fill="#666666" 
font-style="italic">B is not fully inside A</text>
+</svg>
\ No newline at end of file
diff --git a/docs/image/ST_Contains/ST_Contains_true.svg 
b/docs/image/ST_Contains/ST_Contains_true.svg
new file mode 100644
index 0000000000..cc2da2600b
--- /dev/null
+++ b/docs/image/ST_Contains/ST_Contains_true.svg
@@ -0,0 +1,15 @@
+<svg xmlns="http://www.w3.org/2000/svg"; viewBox="0 0 400 300" width="400" 
height="300" style="background:#ffffff">
+  <defs>
+    <style>
+      text { font-family: 'Segoe UI', Arial, Helvetica, sans-serif; }
+    </style>
+  </defs>
+  <text x="200" y="22" text-anchor="middle" font-size="16" font-weight="bold" 
fill="#333333">ST_Contains(A, B)</text>
+  <rect x="325" y="8" width="60" height="22" rx="4" fill="#27ae60" />
+  <text x="355" y="24" text-anchor="middle" font-size="12" font-weight="bold" 
fill="white">TRUE</text>
+  <path d="M 147.62 202.38 L 252.38 202.38 L 252.38 123.81 L 147.62 123.81 L 
147.62 202.38 Z" fill="rgba(217,74,74,0.25)" stroke="#d94a4a" 
stroke-width="2.5" fill-rule="evenodd" />
+  <text x="189.52" y="170.95" text-anchor="middle" font-size="15" 
font-weight="bold" fill="#d94a4a">B</text>
+  <path d="M 95.24 228.57 L 304.76 228.57 L 304.76 71.43 L 95.24 71.43 L 95.24 
228.57 Z" fill="rgba(74,144,217,0.25)" stroke="#4a90d9" stroke-width="2.5" 
fill-rule="evenodd" />
+  <text x="179.05" y="165.71" text-anchor="middle" font-size="15" 
font-weight="bold" fill="#4a90d9">A</text>
+  <text x="200" y="290" text-anchor="middle" font-size="12" fill="#666666" 
font-style="italic">A fully contains B</text>
+</svg>
\ No newline at end of file
diff --git a/docs/image/ST_CoveredBy/ST_CoveredBy_false.svg 
b/docs/image/ST_CoveredBy/ST_CoveredBy_false.svg
new file mode 100644
index 0000000000..598760be91
--- /dev/null
+++ b/docs/image/ST_CoveredBy/ST_CoveredBy_false.svg
@@ -0,0 +1,15 @@
+<svg xmlns="http://www.w3.org/2000/svg"; viewBox="0 0 400 300" width="400" 
height="300" style="background:#ffffff">
+  <defs>
+    <style>
+      text { font-family: 'Segoe UI', Arial, Helvetica, sans-serif; }
+    </style>
+  </defs>
+  <text x="200" y="22" text-anchor="middle" font-size="16" font-weight="bold" 
fill="#333333">ST_CoveredBy(A, B)</text>
+  <rect x="325" y="8" width="60" height="22" rx="4" fill="#c0392b" />
+  <text x="355" y="24" text-anchor="middle" font-size="12" font-weight="bold" 
fill="white">FALSE</text>
+  <path d="M 153.52 196.48 L 308.45 196.48 L 308.45 72.54 L 153.52 72.54 L 
153.52 196.48 Z" fill="rgba(217,74,74,0.25)" stroke="#d94a4a" 
stroke-width="2.5" fill-rule="evenodd" />
+  <text x="215.49" y="146.9" text-anchor="middle" font-size="15" 
font-weight="bold" fill="#d94a4a">B</text>
+  <path d="M 91.55 227.46 L 246.48 227.46 L 246.48 103.52 L 91.55 103.52 L 
91.55 227.46 Z" fill="rgba(74,144,217,0.25)" stroke="#4a90d9" 
stroke-width="2.5" fill-rule="evenodd" />
+  <text x="153.52" y="177.89" text-anchor="middle" font-size="15" 
font-weight="bold" fill="#4a90d9">A</text>
+  <text x="200" y="290" text-anchor="middle" font-size="12" fill="#666666" 
font-style="italic">A extends beyond B</text>
+</svg>
\ No newline at end of file
diff --git a/docs/image/ST_CoveredBy/ST_CoveredBy_true.svg 
b/docs/image/ST_CoveredBy/ST_CoveredBy_true.svg
new file mode 100644
index 0000000000..d6f311bdd7
--- /dev/null
+++ b/docs/image/ST_CoveredBy/ST_CoveredBy_true.svg
@@ -0,0 +1,15 @@
+<svg xmlns="http://www.w3.org/2000/svg"; viewBox="0 0 400 300" width="400" 
height="300" style="background:#ffffff">
+  <defs>
+    <style>
+      text { font-family: 'Segoe UI', Arial, Helvetica, sans-serif; }
+    </style>
+  </defs>
+  <text x="200" y="22" text-anchor="middle" font-size="16" font-weight="bold" 
fill="#333333">ST_CoveredBy(A, B)</text>
+  <rect x="325" y="8" width="60" height="22" rx="4" fill="#27ae60" />
+  <text x="355" y="24" text-anchor="middle" font-size="12" font-weight="bold" 
fill="white">TRUE</text>
+  <path d="M 102.94 230.88 L 297.06 230.88 L 297.06 69.12 L 102.94 69.12 L 
102.94 230.88 Z" fill="rgba(217,74,74,0.25)" stroke="#d94a4a" 
stroke-width="2.5" fill-rule="evenodd" />
+  <text x="180.59" y="166.18" text-anchor="middle" font-size="15" 
font-weight="bold" fill="#d94a4a">B</text>
+  <path d="M 135.29 198.53 L 232.35 198.53 L 232.35 133.82 L 135.29 133.82 L 
135.29 198.53 Z" fill="rgba(74,144,217,0.25)" stroke="#4a90d9" 
stroke-width="2.5" fill-rule="evenodd" />
+  <text x="174.12" y="172.65" text-anchor="middle" font-size="15" 
font-weight="bold" fill="#4a90d9">A</text>
+  <text x="200" y="290" text-anchor="middle" font-size="12" fill="#666666" 
font-style="italic">A is covered by B (A on boundary of B is OK)</text>
+</svg>
\ No newline at end of file
diff --git a/docs/image/ST_Covers/ST_Covers_false.svg 
b/docs/image/ST_Covers/ST_Covers_false.svg
new file mode 100644
index 0000000000..f709e8e06a
--- /dev/null
+++ b/docs/image/ST_Covers/ST_Covers_false.svg
@@ -0,0 +1,15 @@
+<svg xmlns="http://www.w3.org/2000/svg"; viewBox="0 0 400 300" width="400" 
height="300" style="background:#ffffff">
+  <defs>
+    <style>
+      text { font-family: 'Segoe UI', Arial, Helvetica, sans-serif; }
+    </style>
+  </defs>
+  <text x="200" y="22" text-anchor="middle" font-size="16" font-weight="bold" 
fill="#333333">ST_Covers(A, B)</text>
+  <rect x="325" y="8" width="60" height="22" rx="4" fill="#c0392b" />
+  <text x="355" y="24" text-anchor="middle" font-size="12" font-weight="bold" 
fill="white">FALSE</text>
+  <path d="M 184.51 196.48 L 308.45 196.48 L 308.45 72.54 L 184.51 72.54 L 
184.51 196.48 Z" fill="rgba(217,74,74,0.25)" stroke="#d94a4a" 
stroke-width="2.5" fill-rule="evenodd" />
+  <text x="234.08" y="146.9" text-anchor="middle" font-size="15" 
font-weight="bold" fill="#d94a4a">B</text>
+  <path d="M 91.55 227.46 L 246.48 227.46 L 246.48 103.52 L 91.55 103.52 L 
91.55 227.46 Z" fill="rgba(74,144,217,0.25)" stroke="#4a90d9" 
stroke-width="2.5" fill-rule="evenodd" />
+  <text x="153.52" y="177.89" text-anchor="middle" font-size="15" 
font-weight="bold" fill="#4a90d9">A</text>
+  <text x="200" y="290" text-anchor="middle" font-size="12" fill="#666666" 
font-style="italic">B extends beyond A</text>
+</svg>
\ No newline at end of file
diff --git a/docs/image/ST_Covers/ST_Covers_true.svg 
b/docs/image/ST_Covers/ST_Covers_true.svg
new file mode 100644
index 0000000000..43b794f9b1
--- /dev/null
+++ b/docs/image/ST_Covers/ST_Covers_true.svg
@@ -0,0 +1,15 @@
+<svg xmlns="http://www.w3.org/2000/svg"; viewBox="0 0 400 300" width="400" 
height="300" style="background:#ffffff">
+  <defs>
+    <style>
+      text { font-family: 'Segoe UI', Arial, Helvetica, sans-serif; }
+    </style>
+  </defs>
+  <text x="200" y="22" text-anchor="middle" font-size="16" font-weight="bold" 
fill="#333333">ST_Covers(A, B)</text>
+  <rect x="325" y="8" width="60" height="22" rx="4" fill="#27ae60" />
+  <text x="355" y="24" text-anchor="middle" font-size="12" font-weight="bold" 
fill="white">TRUE</text>
+  <path d="M 121.43 202.38 L 226.19 202.38 L 226.19 123.81 L 121.43 123.81 L 
121.43 202.38 Z" fill="rgba(217,74,74,0.25)" stroke="#d94a4a" 
stroke-width="2.5" fill-rule="evenodd" />
+  <text x="163.33" y="170.95" text-anchor="middle" font-size="15" 
font-weight="bold" fill="#d94a4a">B</text>
+  <path d="M 95.24 228.57 L 304.76 228.57 L 304.76 71.43 L 95.24 71.43 L 95.24 
228.57 Z" fill="rgba(74,144,217,0.25)" stroke="#4a90d9" stroke-width="2.5" 
fill-rule="evenodd" />
+  <text x="179.05" y="165.71" text-anchor="middle" font-size="15" 
font-weight="bold" fill="#4a90d9">A</text>
+  <text x="200" y="290" text-anchor="middle" font-size="12" fill="#666666" 
font-style="italic">A covers B (B on boundary of A is OK)</text>
+</svg>
\ No newline at end of file
diff --git a/docs/image/ST_Crosses/ST_Crosses_false.svg 
b/docs/image/ST_Crosses/ST_Crosses_false.svg
new file mode 100644
index 0000000000..1254f97d40
--- /dev/null
+++ b/docs/image/ST_Crosses/ST_Crosses_false.svg
@@ -0,0 +1,17 @@
+<svg xmlns="http://www.w3.org/2000/svg"; viewBox="0 0 400 300" width="400" 
height="300" style="background:#ffffff">
+  <defs>
+    <style>
+      text { font-family: 'Segoe UI', Arial, Helvetica, sans-serif; }
+    </style>
+  </defs>
+  <text x="200" y="22" text-anchor="middle" font-size="16" font-weight="bold" 
fill="#333333">ST_Crosses(A, B)</text>
+  <rect x="325" y="8" width="60" height="22" rx="4" fill="#c0392b" />
+  <text x="355" y="24" text-anchor="middle" font-size="12" font-weight="bold" 
fill="white">FALSE</text>
+  <path d="M 140.54 224.32 L 259.46 224.32 L 259.46 135.14 L 140.54 135.14 L 
140.54 224.32 Z" fill="rgba(217,74,74,0.25)" stroke="#d94a4a" 
stroke-width="2.5" fill-rule="evenodd" />
+  <text x="188.11" y="188.65" text-anchor="middle" font-size="15" 
font-weight="bold" fill="#d94a4a">B</text>
+  <polyline points="81.08,75.68 318.92,75.68" fill="none" stroke="#4a90d9" 
stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" />
+  <circle cx="81.08" cy="75.68" r="3" fill="#4a90d9" />
+  <circle cx="318.92" cy="75.68" r="3" fill="#4a90d9" />
+  <text x="324.92" y="67.68" font-size="15" font-weight="bold" 
fill="#4a90d9">A</text>
+  <text x="200" y="290" text-anchor="middle" font-size="12" fill="#666666" 
font-style="italic">A does not cross B</text>
+</svg>
\ No newline at end of file
diff --git a/docs/image/ST_Crosses/ST_Crosses_true.svg 
b/docs/image/ST_Crosses/ST_Crosses_true.svg
new file mode 100644
index 0000000000..4744e84182
--- /dev/null
+++ b/docs/image/ST_Crosses/ST_Crosses_true.svg
@@ -0,0 +1,17 @@
+<svg xmlns="http://www.w3.org/2000/svg"; viewBox="0 0 400 300" width="400" 
height="300" style="background:#ffffff">
+  <defs>
+    <style>
+      text { font-family: 'Segoe UI', Arial, Helvetica, sans-serif; }
+    </style>
+  </defs>
+  <text x="200" y="22" text-anchor="middle" font-size="16" font-weight="bold" 
fill="#333333">ST_Crosses(A, B)</text>
+  <rect x="325" y="8" width="60" height="22" rx="4" fill="#27ae60" />
+  <text x="355" y="24" text-anchor="middle" font-size="12" font-weight="bold" 
fill="white">TRUE</text>
+  <path d="M 147.62 228.57 L 252.38 228.57 L 252.38 123.81 L 147.62 123.81 L 
147.62 228.57 Z" fill="rgba(217,74,74,0.25)" stroke="#d94a4a" 
stroke-width="2.5" fill-rule="evenodd" />
+  <text x="189.52" y="186.67" text-anchor="middle" font-size="15" 
font-weight="bold" fill="#d94a4a">B</text>
+  <polyline points="95.24,228.57 304.76,71.43" fill="none" stroke="#4a90d9" 
stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" />
+  <circle cx="95.24" cy="228.57" r="3" fill="#4a90d9" />
+  <circle cx="304.76" cy="71.43" r="3" fill="#4a90d9" />
+  <text x="310.76" y="63.43000000000001" font-size="15" font-weight="bold" 
fill="#4a90d9">A</text>
+  <text x="200" y="290" text-anchor="middle" font-size="12" fill="#666666" 
font-style="italic">A crosses B</text>
+</svg>
\ No newline at end of file
diff --git a/docs/image/ST_DWithin/ST_DWithin_false.svg 
b/docs/image/ST_DWithin/ST_DWithin_false.svg
new file mode 100644
index 0000000000..06ced2d40a
--- /dev/null
+++ b/docs/image/ST_DWithin/ST_DWithin_false.svg
@@ -0,0 +1,18 @@
+<svg xmlns="http://www.w3.org/2000/svg"; viewBox="0 0 400 300" width="400" 
height="300" style="background:#ffffff">
+  <defs>
+    <style>
+      text { font-family: 'Segoe UI', Arial, Helvetica, sans-serif; }
+    </style>
+  </defs>
+  <text x="200" y="22" text-anchor="middle" font-size="16" font-weight="bold" 
fill="#333333">ST_DWithin(A, B, d)</text>
+  <rect x="325" y="8" width="60" height="22" rx="4" fill="#c0392b" />
+  <text x="355" y="24" text-anchor="middle" font-size="12" font-weight="bold" 
fill="white">FALSE</text>
+  <circle cx="180.0" cy="150.0" r="80.0" fill="rgba(243,156,18,0.1)" 
stroke="#f39c12" stroke-width="1.5" stroke-dasharray="6,4" />
+  <line x1="180.0" y1="150.0" x2="300.0" y2="150.0" stroke="#f39c12" 
stroke-width="1.5" stroke-dasharray="6,4" />
+  <text x="246.0" y="144.0" font-size="13" fill="#f39c12" 
font-style="italic">d</text>
+  <circle cx="300.0" cy="150.0" r="5" fill="#d94a4a" stroke="#d94a4a" 
stroke-width="1.5" />
+  <text x="309.0" y="143.0" font-size="15" font-weight="bold" 
fill="#d94a4a">B</text>
+  <circle cx="180.0" cy="150.0" r="5" fill="#4a90d9" stroke="#4a90d9" 
stroke-width="1.5" />
+  <text x="189.0" y="143.0" font-size="15" font-weight="bold" 
fill="#4a90d9">A</text>
+  <text x="200" y="290" text-anchor="middle" font-size="12" fill="#666666" 
font-style="italic">Distance between A and B > d</text>
+</svg>
\ No newline at end of file
diff --git a/docs/image/ST_DWithin/ST_DWithin_true.svg 
b/docs/image/ST_DWithin/ST_DWithin_true.svg
new file mode 100644
index 0000000000..bd2e048912
--- /dev/null
+++ b/docs/image/ST_DWithin/ST_DWithin_true.svg
@@ -0,0 +1,18 @@
+<svg xmlns="http://www.w3.org/2000/svg"; viewBox="0 0 400 300" width="400" 
height="300" style="background:#ffffff">
+  <defs>
+    <style>
+      text { font-family: 'Segoe UI', Arial, Helvetica, sans-serif; }
+    </style>
+  </defs>
+  <text x="200" y="22" text-anchor="middle" font-size="16" font-weight="bold" 
fill="#333333">ST_DWithin(A, B, d)</text>
+  <rect x="325" y="8" width="60" height="22" rx="4" fill="#27ae60" />
+  <text x="355" y="24" text-anchor="middle" font-size="12" font-weight="bold" 
fill="white">TRUE</text>
+  <circle cx="200.0" cy="150.0" r="84.62" fill="rgba(243,156,18,0.1)" 
stroke="#f39c12" stroke-width="1.5" stroke-dasharray="6,4" />
+  <line x1="200.0" y1="150.0" x2="263.46" y2="150.0" stroke="#f39c12" 
stroke-width="1.5" stroke-dasharray="6,4" />
+  <text x="237.73" y="144.0" font-size="13" fill="#f39c12" 
font-style="italic">d</text>
+  <circle cx="263.46" cy="150.0" r="5" fill="#d94a4a" stroke="#d94a4a" 
stroke-width="1.5" />
+  <text x="272.46" y="143.0" font-size="15" font-weight="bold" 
fill="#d94a4a">B</text>
+  <circle cx="200.0" cy="150.0" r="5" fill="#4a90d9" stroke="#4a90d9" 
stroke-width="1.5" />
+  <text x="209.0" y="143.0" font-size="15" font-weight="bold" 
fill="#4a90d9">A</text>
+  <text x="200" y="290" text-anchor="middle" font-size="12" fill="#666666" 
font-style="italic">Distance between A and B ≤ d</text>
+</svg>
\ No newline at end of file
diff --git a/docs/image/ST_Disjoint/ST_Disjoint_false.svg 
b/docs/image/ST_Disjoint/ST_Disjoint_false.svg
new file mode 100644
index 0000000000..bc94b72d92
--- /dev/null
+++ b/docs/image/ST_Disjoint/ST_Disjoint_false.svg
@@ -0,0 +1,15 @@
+<svg xmlns="http://www.w3.org/2000/svg"; viewBox="0 0 400 300" width="400" 
height="300" style="background:#ffffff">
+  <defs>
+    <style>
+      text { font-family: 'Segoe UI', Arial, Helvetica, sans-serif; }
+    </style>
+  </defs>
+  <text x="200" y="22" text-anchor="middle" font-size="16" font-weight="bold" 
fill="#333333">ST_Disjoint(A, B)</text>
+  <rect x="325" y="8" width="60" height="22" rx="4" fill="#c0392b" />
+  <text x="355" y="24" text-anchor="middle" font-size="12" font-weight="bold" 
fill="white">FALSE</text>
+  <path d="M 170.27 194.59 L 318.92 194.59 L 318.92 75.68 L 170.27 75.68 L 
170.27 194.59 Z" fill="rgba(217,74,74,0.25)" stroke="#d94a4a" 
stroke-width="2.5" fill-rule="evenodd" />
+  <text x="229.73" y="147.03" text-anchor="middle" font-size="15" 
font-weight="bold" fill="#d94a4a">B</text>
+  <path d="M 81.08 224.32 L 229.73 224.32 L 229.73 105.41 L 81.08 105.41 L 
81.08 224.32 Z" fill="rgba(74,144,217,0.25)" stroke="#4a90d9" 
stroke-width="2.5" fill-rule="evenodd" />
+  <text x="140.54" y="176.76" text-anchor="middle" font-size="15" 
font-weight="bold" fill="#4a90d9">A</text>
+  <text x="200" y="290" text-anchor="middle" font-size="12" fill="#666666" 
font-style="italic">A and B share some area</text>
+</svg>
\ No newline at end of file
diff --git a/docs/image/ST_Disjoint/ST_Disjoint_true.svg 
b/docs/image/ST_Disjoint/ST_Disjoint_true.svg
new file mode 100644
index 0000000000..2698406352
--- /dev/null
+++ b/docs/image/ST_Disjoint/ST_Disjoint_true.svg
@@ -0,0 +1,15 @@
+<svg xmlns="http://www.w3.org/2000/svg"; viewBox="0 0 400 300" width="400" 
height="300" style="background:#ffffff">
+  <defs>
+    <style>
+      text { font-family: 'Segoe UI', Arial, Helvetica, sans-serif; }
+    </style>
+  </defs>
+  <text x="200" y="22" text-anchor="middle" font-size="16" font-weight="bold" 
fill="#333333">ST_Disjoint(A, B)</text>
+  <rect x="325" y="8" width="60" height="22" rx="4" fill="#27ae60" />
+  <text x="355" y="24" text-anchor="middle" font-size="12" font-weight="bold" 
fill="white">TRUE</text>
+  <path d="M 230.77 211.54 L 323.08 211.54 L 323.08 88.46 L 230.77 88.46 L 
230.77 211.54 Z" fill="rgba(217,74,74,0.25)" stroke="#d94a4a" 
stroke-width="2.5" fill-rule="evenodd" />
+  <text x="267.69" y="162.31" text-anchor="middle" font-size="15" 
font-weight="bold" fill="#d94a4a">B</text>
+  <path d="M 76.92 211.54 L 169.23 211.54 L 169.23 88.46 L 76.92 88.46 L 76.92 
211.54 Z" fill="rgba(74,144,217,0.25)" stroke="#4a90d9" stroke-width="2.5" 
fill-rule="evenodd" />
+  <text x="113.85" y="162.31" text-anchor="middle" font-size="15" 
font-weight="bold" fill="#4a90d9">A</text>
+  <text x="200" y="290" text-anchor="middle" font-size="12" fill="#666666" 
font-style="italic">A and B do not intersect at all</text>
+</svg>
\ No newline at end of file
diff --git a/docs/image/ST_Equals/ST_Equals_false.svg 
b/docs/image/ST_Equals/ST_Equals_false.svg
new file mode 100644
index 0000000000..091717d89a
--- /dev/null
+++ b/docs/image/ST_Equals/ST_Equals_false.svg
@@ -0,0 +1,21 @@
+<svg xmlns="http://www.w3.org/2000/svg"; viewBox="0 0 400 300" width="400" 
height="300" style="background:#ffffff">
+  <defs>
+    <style>
+      text { font-family: 'Segoe UI', Arial, Helvetica, sans-serif; }
+    </style>
+  </defs>
+  <text x="200" y="22" text-anchor="middle" font-size="16" font-weight="bold" 
fill="#333333">ST_Equals(A, B)</text>
+  <rect x="325" y="8" width="60" height="22" rx="4" fill="#c0392b" />
+  <text x="355" y="24" text-anchor="middle" font-size="12" font-weight="bold" 
fill="white">FALSE</text>
+  <polyline points="76.92,180.77 200.0,88.46 323.08,150.0" fill="none" 
stroke="#d94a4a" stroke-width="2.5" stroke-linecap="round" 
stroke-linejoin="round" />
+  <circle cx="76.92" cy="180.77" r="3" fill="#d94a4a" />
+  <circle cx="200.0" cy="88.46" r="3" fill="#d94a4a" />
+  <circle cx="323.08" cy="150.0" r="3" fill="#d94a4a" />
+  <text x="206.0" y="80.46" font-size="15" font-weight="bold" 
fill="#d94a4a">B</text>
+  <polyline points="76.92,211.54 200.0,119.23 323.08,180.77" fill="none" 
stroke="#4a90d9" stroke-width="2.5" stroke-linecap="round" 
stroke-linejoin="round" />
+  <circle cx="76.92" cy="211.54" r="3" fill="#4a90d9" />
+  <circle cx="200.0" cy="119.23" r="3" fill="#4a90d9" />
+  <circle cx="323.08" cy="180.77" r="3" fill="#4a90d9" />
+  <text x="206.0" y="111.23" font-size="15" font-weight="bold" 
fill="#4a90d9">A</text>
+  <text x="200" y="290" text-anchor="middle" font-size="12" fill="#666666" 
font-style="italic">A and B are different geometries</text>
+</svg>
\ No newline at end of file
diff --git a/docs/image/ST_Equals/ST_Equals_true.svg 
b/docs/image/ST_Equals/ST_Equals_true.svg
new file mode 100644
index 0000000000..a7631e19c6
--- /dev/null
+++ b/docs/image/ST_Equals/ST_Equals_true.svg
@@ -0,0 +1,21 @@
+<svg xmlns="http://www.w3.org/2000/svg"; viewBox="0 0 400 300" width="400" 
height="300" style="background:#ffffff">
+  <defs>
+    <style>
+      text { font-family: 'Segoe UI', Arial, Helvetica, sans-serif; }
+    </style>
+  </defs>
+  <text x="200" y="22" text-anchor="middle" font-size="16" font-weight="bold" 
fill="#333333">ST_Equals(A, B)</text>
+  <rect x="325" y="8" width="60" height="22" rx="4" fill="#27ae60" />
+  <text x="355" y="24" text-anchor="middle" font-size="12" font-weight="bold" 
fill="white">TRUE</text>
+  <polyline points="76.92,196.15 200.0,103.85 323.08,165.38" fill="none" 
stroke="#d94a4a" stroke-width="2.5" stroke-linecap="round" 
stroke-linejoin="round" stroke-dasharray="6,3" />
+  <circle cx="76.92" cy="196.15" r="3" fill="#d94a4a" />
+  <circle cx="200.0" cy="103.85" r="3" fill="#d94a4a" />
+  <circle cx="323.08" cy="165.38" r="3" fill="#d94a4a" />
+  <text x="206.0" y="95.85" font-size="15" font-weight="bold" fill="#d94a4a">B 
(= A)</text>
+  <polyline points="76.92,196.15 200.0,103.85 323.08,165.38" fill="none" 
stroke="#4a90d9" stroke-width="2.5" stroke-linecap="round" 
stroke-linejoin="round" />
+  <circle cx="76.92" cy="196.15" r="3" fill="#4a90d9" />
+  <circle cx="200.0" cy="103.85" r="3" fill="#4a90d9" />
+  <circle cx="323.08" cy="165.38" r="3" fill="#4a90d9" />
+  <text x="206.0" y="95.85" font-size="15" font-weight="bold" 
fill="#4a90d9">A</text>
+  <text x="200" y="290" text-anchor="middle" font-size="12" fill="#666666" 
font-style="italic">A and B represent the same geometry</text>
+</svg>
\ No newline at end of file
diff --git a/docs/image/ST_Intersects/ST_Intersects_false.svg 
b/docs/image/ST_Intersects/ST_Intersects_false.svg
new file mode 100644
index 0000000000..db3305552d
--- /dev/null
+++ b/docs/image/ST_Intersects/ST_Intersects_false.svg
@@ -0,0 +1,15 @@
+<svg xmlns="http://www.w3.org/2000/svg"; viewBox="0 0 400 300" width="400" 
height="300" style="background:#ffffff">
+  <defs>
+    <style>
+      text { font-family: 'Segoe UI', Arial, Helvetica, sans-serif; }
+    </style>
+  </defs>
+  <text x="200" y="22" text-anchor="middle" font-size="16" font-weight="bold" 
fill="#333333">ST_Intersects(A, B)</text>
+  <rect x="325" y="8" width="60" height="22" rx="4" fill="#c0392b" />
+  <text x="355" y="24" text-anchor="middle" font-size="12" font-weight="bold" 
fill="white">FALSE</text>
+  <path d="M 230.77 211.54 L 323.08 211.54 L 323.08 88.46 L 230.77 88.46 L 
230.77 211.54 Z" fill="rgba(217,74,74,0.25)" stroke="#d94a4a" 
stroke-width="2.5" fill-rule="evenodd" />
+  <text x="267.69" y="162.31" text-anchor="middle" font-size="15" 
font-weight="bold" fill="#d94a4a">B</text>
+  <path d="M 76.92 211.54 L 169.23 211.54 L 169.23 88.46 L 76.92 88.46 L 76.92 
211.54 Z" fill="rgba(74,144,217,0.25)" stroke="#4a90d9" stroke-width="2.5" 
fill-rule="evenodd" />
+  <text x="113.85" y="162.31" text-anchor="middle" font-size="15" 
font-weight="bold" fill="#4a90d9">A</text>
+  <text x="200" y="290" text-anchor="middle" font-size="12" fill="#666666" 
font-style="italic">A and B share no points</text>
+</svg>
\ No newline at end of file
diff --git a/docs/image/ST_Intersects/ST_Intersects_true.svg 
b/docs/image/ST_Intersects/ST_Intersects_true.svg
new file mode 100644
index 0000000000..57f34d4ad2
--- /dev/null
+++ b/docs/image/ST_Intersects/ST_Intersects_true.svg
@@ -0,0 +1,15 @@
+<svg xmlns="http://www.w3.org/2000/svg"; viewBox="0 0 400 300" width="400" 
height="300" style="background:#ffffff">
+  <defs>
+    <style>
+      text { font-family: 'Segoe UI', Arial, Helvetica, sans-serif; }
+    </style>
+  </defs>
+  <text x="200" y="22" text-anchor="middle" font-size="16" font-weight="bold" 
fill="#333333">ST_Intersects(A, B)</text>
+  <rect x="325" y="8" width="60" height="22" rx="4" fill="#27ae60" />
+  <text x="355" y="24" text-anchor="middle" font-size="12" font-weight="bold" 
fill="white">TRUE</text>
+  <path d="M 173.81 176.19 L 304.76 176.19 L 304.76 71.43 L 173.81 71.43 L 
173.81 71.43 L 173.81 176.19 Z" fill="rgba(217,74,74,0.25)" stroke="#d94a4a" 
stroke-width="2.5" fill-rule="evenodd" />
+  <text x="217.46" y="123.81" text-anchor="middle" font-size="15" 
font-weight="bold" fill="#d94a4a">B</text>
+  <path d="M 95.24 228.57 L 226.19 228.57 L 226.19 123.81 L 95.24 123.81 L 
95.24 228.57 Z" fill="rgba(74,144,217,0.25)" stroke="#4a90d9" 
stroke-width="2.5" fill-rule="evenodd" />
+  <text x="147.62" y="186.67" text-anchor="middle" font-size="15" 
font-weight="bold" fill="#4a90d9">A</text>
+  <text x="200" y="290" text-anchor="middle" font-size="12" fill="#666666" 
font-style="italic">A and B share at least one point</text>
+</svg>
\ No newline at end of file
diff --git a/docs/image/ST_OrderingEquals/ST_OrderingEquals_false.svg 
b/docs/image/ST_OrderingEquals/ST_OrderingEquals_false.svg
new file mode 100644
index 0000000000..d38aad0404
--- /dev/null
+++ b/docs/image/ST_OrderingEquals/ST_OrderingEquals_false.svg
@@ -0,0 +1,30 @@
+<svg xmlns="http://www.w3.org/2000/svg"; viewBox="0 0 400 300" width="400" 
height="300" style="background:#ffffff">
+  <defs>
+    <style>
+      text { font-family: 'Segoe UI', Arial, Helvetica, sans-serif; }
+    </style>
+  </defs>
+  <text x="200" y="22" text-anchor="middle" font-size="16" font-weight="bold" 
fill="#333333">ST_OrderingEquals(A, B)</text>
+  <rect x="325" y="8" width="60" height="22" rx="4" fill="#c0392b" />
+  <text x="355" y="24" text-anchor="middle" font-size="12" font-weight="bold" 
fill="white">FALSE</text>
+  <line x1="200" y1="35" x2="200" y2="270" stroke="#ddd" stroke-width="1" 
stroke-dasharray="4,4" />
+  <text x="100" y="45" text-anchor="middle" font-size="15" font-weight="bold" 
fill="#4a90d9">Geometry A</text>
+  <text x="300" y="45" text-anchor="middle" font-size="15" font-weight="bold" 
fill="#d94a4a">Geometry B</text>
+  <path d="M 150.0 177.5 L 100.0 102.5 L 50.0 177.5 L 150.0 177.5 Z" 
fill="rgba(74,144,217,0.25)" stroke="#4a90d9" stroke-width="2.5" 
fill-rule="evenodd" />
+  <circle cx="150.0" cy="177.5" r="9" fill="white" stroke="#4a90d9" 
stroke-width="1.5" />
+  <text x="150.0" y="181.5" text-anchor="middle" font-size="10" 
font-weight="bold" fill="#4a90d9">1</text>
+  <circle cx="100.0" cy="102.5" r="9" fill="white" stroke="#4a90d9" 
stroke-width="1.5" />
+  <text x="100.0" y="106.5" text-anchor="middle" font-size="10" 
font-weight="bold" fill="#4a90d9">2</text>
+  <circle cx="50.0" cy="177.5" r="9" fill="white" stroke="#4a90d9" 
stroke-width="1.5" />
+  <text x="50.0" y="181.5" text-anchor="middle" font-size="10" 
font-weight="bold" fill="#4a90d9">3</text>
+  <polygon points="125.0,140.0 126.39,151.09 134.71,145.55" fill="#4a90d9" />
+  <path d="M 300.0 102.5 L 250.0 177.5 L 350.0 177.5 L 300.0 102.5 Z" 
fill="rgba(217,74,74,0.25)" stroke="#d94a4a" stroke-width="2.5" 
fill-rule="evenodd" />
+  <circle cx="300.0" cy="102.5" r="9" fill="white" stroke="#d94a4a" 
stroke-width="1.5" />
+  <text x="300.0" y="106.5" text-anchor="middle" font-size="10" 
font-weight="bold" fill="#d94a4a">1</text>
+  <circle cx="250.0" cy="177.5" r="9" fill="white" stroke="#d94a4a" 
stroke-width="1.5" />
+  <text x="250.0" y="181.5" text-anchor="middle" font-size="10" 
font-weight="bold" fill="#d94a4a">2</text>
+  <circle cx="350.0" cy="177.5" r="9" fill="white" stroke="#d94a4a" 
stroke-width="1.5" />
+  <text x="350.0" y="181.5" text-anchor="middle" font-size="10" 
font-weight="bold" fill="#d94a4a">3</text>
+  <polygon points="275.0,140.0 284.71,134.45 276.39,128.91" fill="#d94a4a" />
+  <text x="200" y="290" text-anchor="middle" font-size="12" fill="#666666" 
font-style="italic">Same geometry, different start vertex</text>
+</svg>
\ No newline at end of file
diff --git a/docs/image/ST_OrderingEquals/ST_OrderingEquals_true.svg 
b/docs/image/ST_OrderingEquals/ST_OrderingEquals_true.svg
new file mode 100644
index 0000000000..605cc05e4f
--- /dev/null
+++ b/docs/image/ST_OrderingEquals/ST_OrderingEquals_true.svg
@@ -0,0 +1,30 @@
+<svg xmlns="http://www.w3.org/2000/svg"; viewBox="0 0 400 300" width="400" 
height="300" style="background:#ffffff">
+  <defs>
+    <style>
+      text { font-family: 'Segoe UI', Arial, Helvetica, sans-serif; }
+    </style>
+  </defs>
+  <text x="200" y="22" text-anchor="middle" font-size="16" font-weight="bold" 
fill="#333333">ST_OrderingEquals(A, B)</text>
+  <rect x="325" y="8" width="60" height="22" rx="4" fill="#27ae60" />
+  <text x="355" y="24" text-anchor="middle" font-size="12" font-weight="bold" 
fill="white">TRUE</text>
+  <line x1="200" y1="35" x2="200" y2="270" stroke="#ddd" stroke-width="1" 
stroke-dasharray="4,4" />
+  <text x="100" y="45" text-anchor="middle" font-size="15" font-weight="bold" 
fill="#4a90d9">Geometry A</text>
+  <text x="300" y="45" text-anchor="middle" font-size="15" font-weight="bold" 
fill="#d94a4a">Geometry B</text>
+  <path d="M 150.0 177.5 L 100.0 102.5 L 50.0 177.5 L 150.0 177.5 Z" 
fill="rgba(74,144,217,0.25)" stroke="#4a90d9" stroke-width="2.5" 
fill-rule="evenodd" />
+  <circle cx="150.0" cy="177.5" r="9" fill="white" stroke="#4a90d9" 
stroke-width="1.5" />
+  <text x="150.0" y="181.5" text-anchor="middle" font-size="10" 
font-weight="bold" fill="#4a90d9">1</text>
+  <circle cx="100.0" cy="102.5" r="9" fill="white" stroke="#4a90d9" 
stroke-width="1.5" />
+  <text x="100.0" y="106.5" text-anchor="middle" font-size="10" 
font-weight="bold" fill="#4a90d9">2</text>
+  <circle cx="50.0" cy="177.5" r="9" fill="white" stroke="#4a90d9" 
stroke-width="1.5" />
+  <text x="50.0" y="181.5" text-anchor="middle" font-size="10" 
font-weight="bold" fill="#4a90d9">3</text>
+  <polygon points="125.0,140.0 126.39,151.09 134.71,145.55" fill="#4a90d9" />
+  <path d="M 350.0 177.5 L 300.0 102.5 L 250.0 177.5 L 350.0 177.5 Z" 
fill="rgba(217,74,74,0.25)" stroke="#d94a4a" stroke-width="2.5" 
fill-rule="evenodd" />
+  <circle cx="350.0" cy="177.5" r="9" fill="white" stroke="#d94a4a" 
stroke-width="1.5" />
+  <text x="350.0" y="181.5" text-anchor="middle" font-size="10" 
font-weight="bold" fill="#d94a4a">1</text>
+  <circle cx="300.0" cy="102.5" r="9" fill="white" stroke="#d94a4a" 
stroke-width="1.5" />
+  <text x="300.0" y="106.5" text-anchor="middle" font-size="10" 
font-weight="bold" fill="#d94a4a">2</text>
+  <circle cx="250.0" cy="177.5" r="9" fill="white" stroke="#d94a4a" 
stroke-width="1.5" />
+  <text x="250.0" y="181.5" text-anchor="middle" font-size="10" 
font-weight="bold" fill="#d94a4a">3</text>
+  <polygon points="325.0,140.0 326.39,151.09 334.71,145.55" fill="#d94a4a" />
+  <text x="200" y="290" text-anchor="middle" font-size="12" fill="#666666" 
font-style="italic">Same geometry, same vertex order</text>
+</svg>
\ No newline at end of file
diff --git a/docs/image/ST_Overlaps/ST_Overlaps_false.svg 
b/docs/image/ST_Overlaps/ST_Overlaps_false.svg
new file mode 100644
index 0000000000..7866946e6d
--- /dev/null
+++ b/docs/image/ST_Overlaps/ST_Overlaps_false.svg
@@ -0,0 +1,15 @@
+<svg xmlns="http://www.w3.org/2000/svg"; viewBox="0 0 400 300" width="400" 
height="300" style="background:#ffffff">
+  <defs>
+    <style>
+      text { font-family: 'Segoe UI', Arial, Helvetica, sans-serif; }
+    </style>
+  </defs>
+  <text x="200" y="22" text-anchor="middle" font-size="16" font-weight="bold" 
fill="#333333">ST_Overlaps(A, B)</text>
+  <rect x="325" y="8" width="60" height="22" rx="4" fill="#c0392b" />
+  <text x="355" y="24" text-anchor="middle" font-size="12" font-weight="bold" 
fill="white">FALSE</text>
+  <path d="M 147.62 202.38 L 252.38 202.38 L 252.38 123.81 L 147.62 123.81 L 
147.62 202.38 Z" fill="rgba(217,74,74,0.25)" stroke="#d94a4a" 
stroke-width="2.5" fill-rule="evenodd" />
+  <text x="189.52" y="170.95" text-anchor="middle" font-size="15" 
font-weight="bold" fill="#d94a4a">B</text>
+  <path d="M 95.24 228.57 L 304.76 228.57 L 304.76 71.43 L 95.24 71.43 L 95.24 
228.57 Z" fill="rgba(74,144,217,0.25)" stroke="#4a90d9" stroke-width="2.5" 
fill-rule="evenodd" />
+  <text x="179.05" y="165.71" text-anchor="middle" font-size="15" 
font-weight="bold" fill="#4a90d9">A</text>
+  <text x="200" y="290" text-anchor="middle" font-size="12" fill="#666666" 
font-style="italic">B is fully inside A (no overlap, A contains B)</text>
+</svg>
\ No newline at end of file
diff --git a/docs/image/ST_Overlaps/ST_Overlaps_true.svg 
b/docs/image/ST_Overlaps/ST_Overlaps_true.svg
new file mode 100644
index 0000000000..2307682689
--- /dev/null
+++ b/docs/image/ST_Overlaps/ST_Overlaps_true.svg
@@ -0,0 +1,15 @@
+<svg xmlns="http://www.w3.org/2000/svg"; viewBox="0 0 400 300" width="400" 
height="300" style="background:#ffffff">
+  <defs>
+    <style>
+      text { font-family: 'Segoe UI', Arial, Helvetica, sans-serif; }
+    </style>
+  </defs>
+  <text x="200" y="22" text-anchor="middle" font-size="16" font-weight="bold" 
fill="#333333">ST_Overlaps(A, B)</text>
+  <rect x="325" y="8" width="60" height="22" rx="4" fill="#27ae60" />
+  <text x="355" y="24" text-anchor="middle" font-size="12" font-weight="bold" 
fill="white">TRUE</text>
+  <path d="M 173.81 176.19 L 304.76 176.19 L 304.76 71.43 L 173.81 71.43 L 
173.81 176.19 Z" fill="rgba(217,74,74,0.25)" stroke="#d94a4a" 
stroke-width="2.5" fill-rule="evenodd" />
+  <text x="226.19" y="134.29" text-anchor="middle" font-size="15" 
font-weight="bold" fill="#d94a4a">B</text>
+  <path d="M 95.24 228.57 L 226.19 228.57 L 226.19 123.81 L 95.24 123.81 L 
95.24 228.57 Z" fill="rgba(74,144,217,0.25)" stroke="#4a90d9" 
stroke-width="2.5" fill-rule="evenodd" />
+  <text x="147.62" y="186.67" text-anchor="middle" font-size="15" 
font-weight="bold" fill="#4a90d9">A</text>
+  <text x="200" y="290" text-anchor="middle" font-size="12" fill="#666666" 
font-style="italic">A and B overlap but neither contains the other</text>
+</svg>
\ No newline at end of file
diff --git a/docs/image/ST_Relate/ST_Relate_false.svg 
b/docs/image/ST_Relate/ST_Relate_false.svg
new file mode 100644
index 0000000000..a761352a41
--- /dev/null
+++ b/docs/image/ST_Relate/ST_Relate_false.svg
@@ -0,0 +1,18 @@
+<svg xmlns="http://www.w3.org/2000/svg"; viewBox="0 0 400 300" width="400" 
height="300" style="background:#ffffff">
+  <defs>
+    <style>
+      text { font-family: 'Segoe UI', Arial, Helvetica, sans-serif; }
+    </style>
+  </defs>
+  <text x="200" y="22" text-anchor="middle" font-size="16" font-weight="bold" 
fill="#333333">ST_Relate(A, B, 'T*T***T**')</text>
+  <rect x="325" y="8" width="60" height="22" rx="4" fill="#c0392b" />
+  <text x="355" y="24" text-anchor="middle" font-size="12" font-weight="bold" 
fill="white">FALSE</text>
+  <path d="M 212.09 137.91 L 212.09 65.38 L 284.62 65.38 L 284.62 137.91 L 
212.09 137.91 Z" fill="rgba(217,74,74,0.25)" stroke="#d94a4a" 
stroke-width="2.5" fill-rule="evenodd" />
+  <text x="241.1" y="108.9" text-anchor="middle" font-size="15" 
font-weight="bold" fill="#d94a4a">B</text>
+  <polyline points="115.38,234.62 163.74,186.26" fill="none" stroke="#4a90d9" 
stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" />
+  <circle cx="115.38" cy="234.62" r="3" fill="#4a90d9" />
+  <circle cx="163.74" cy="186.26" r="3" fill="#4a90d9" />
+  <text x="169.74" y="178.26" font-size="15" font-weight="bold" 
fill="#4a90d9">A</text>
+  <text x="200" y="270" text-anchor="middle" font-size="13" fill="#333333" 
font-family="monospace">DE-9IM: FF1FF0102</text>
+  <text x="200" y="290" text-anchor="middle" font-size="12" fill="#666666" 
font-style="italic">Geometries do not match the DE-9IM pattern</text>
+</svg>
\ No newline at end of file
diff --git a/docs/image/ST_Relate/ST_Relate_true.svg 
b/docs/image/ST_Relate/ST_Relate_true.svg
new file mode 100644
index 0000000000..3b20233b50
--- /dev/null
+++ b/docs/image/ST_Relate/ST_Relate_true.svg
@@ -0,0 +1,18 @@
+<svg xmlns="http://www.w3.org/2000/svg"; viewBox="0 0 400 300" width="400" 
height="300" style="background:#ffffff">
+  <defs>
+    <style>
+      text { font-family: 'Segoe UI', Arial, Helvetica, sans-serif; }
+    </style>
+  </defs>
+  <text x="200" y="22" text-anchor="middle" font-size="16" font-weight="bold" 
fill="#333333">ST_Relate(A, B, '1010F0212')</text>
+  <rect x="325" y="8" width="60" height="22" rx="4" fill="#27ae60" />
+  <text x="355" y="24" text-anchor="middle" font-size="12" font-weight="bold" 
fill="white">TRUE</text>
+  <path d="M 171.79 178.21 L 171.79 65.38 L 284.62 65.38 L 284.62 178.21 L 
171.79 178.21 Z" fill="rgba(217,74,74,0.25)" stroke="#d94a4a" 
stroke-width="2.5" fill-rule="evenodd" />
+  <text x="216.92" y="133.08" text-anchor="middle" font-size="15" 
font-weight="bold" fill="#d94a4a">B</text>
+  <polyline points="115.38,234.62 228.21,121.79" fill="none" stroke="#4a90d9" 
stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" />
+  <circle cx="115.38" cy="234.62" r="3" fill="#4a90d9" />
+  <circle cx="228.21" cy="121.79" r="3" fill="#4a90d9" />
+  <text x="234.21" y="113.79" font-size="15" font-weight="bold" 
fill="#4a90d9">A</text>
+  <text x="200" y="270" text-anchor="middle" font-size="13" fill="#333333" 
font-family="monospace">DE-9IM: 1010F0212</text>
+  <text x="200" y="290" text-anchor="middle" font-size="12" fill="#666666" 
font-style="italic">A line entering a polygon matches the DE-9IM pattern</text>
+</svg>
\ No newline at end of file
diff --git a/docs/image/ST_Touches/ST_Touches_false.svg 
b/docs/image/ST_Touches/ST_Touches_false.svg
new file mode 100644
index 0000000000..bea2e05d63
--- /dev/null
+++ b/docs/image/ST_Touches/ST_Touches_false.svg
@@ -0,0 +1,15 @@
+<svg xmlns="http://www.w3.org/2000/svg"; viewBox="0 0 400 300" width="400" 
height="300" style="background:#ffffff">
+  <defs>
+    <style>
+      text { font-family: 'Segoe UI', Arial, Helvetica, sans-serif; }
+    </style>
+  </defs>
+  <text x="200" y="22" text-anchor="middle" font-size="16" font-weight="bold" 
fill="#333333">ST_Touches(A, B)</text>
+  <rect x="325" y="8" width="60" height="22" rx="4" fill="#c0392b" />
+  <text x="355" y="24" text-anchor="middle" font-size="12" font-weight="bold" 
fill="white">FALSE</text>
+  <path d="M 170.27 194.59 L 318.92 194.59 L 318.92 75.68 L 170.27 75.68 L 
170.27 194.59 Z" fill="rgba(217,74,74,0.25)" stroke="#d94a4a" 
stroke-width="2.5" fill-rule="evenodd" />
+  <text x="229.73" y="147.03" text-anchor="middle" font-size="15" 
font-weight="bold" fill="#d94a4a">B</text>
+  <path d="M 81.08 224.32 L 229.73 224.32 L 229.73 105.41 L 81.08 105.41 L 
81.08 224.32 Z" fill="rgba(74,144,217,0.25)" stroke="#4a90d9" 
stroke-width="2.5" fill-rule="evenodd" />
+  <text x="140.54" y="176.76" text-anchor="middle" font-size="15" 
font-weight="bold" fill="#4a90d9">A</text>
+  <text x="200" y="290" text-anchor="middle" font-size="12" fill="#666666" 
font-style="italic">A and B overlap (interiors intersect)</text>
+</svg>
\ No newline at end of file
diff --git a/docs/image/ST_Touches/ST_Touches_true.svg 
b/docs/image/ST_Touches/ST_Touches_true.svg
new file mode 100644
index 0000000000..f3697ac3ff
--- /dev/null
+++ b/docs/image/ST_Touches/ST_Touches_true.svg
@@ -0,0 +1,15 @@
+<svg xmlns="http://www.w3.org/2000/svg"; viewBox="0 0 400 300" width="400" 
height="300" style="background:#ffffff">
+  <defs>
+    <style>
+      text { font-family: 'Segoe UI', Arial, Helvetica, sans-serif; }
+    </style>
+  </defs>
+  <text x="200" y="22" text-anchor="middle" font-size="16" font-weight="bold" 
fill="#333333">ST_Touches(A, B)</text>
+  <rect x="325" y="8" width="60" height="22" rx="4" fill="#27ae60" />
+  <text x="355" y="24" text-anchor="middle" font-size="12" font-weight="bold" 
fill="white">TRUE</text>
+  <path d="M 200.0 211.54 L 323.08 211.54 L 323.08 88.46 L 200.0 88.46 L 200.0 
211.54 Z" fill="rgba(217,74,74,0.25)" stroke="#d94a4a" stroke-width="2.5" 
fill-rule="evenodd" />
+  <text x="249.23" y="162.31" text-anchor="middle" font-size="15" 
font-weight="bold" fill="#d94a4a">B</text>
+  <path d="M 76.92 211.54 L 200.0 211.54 L 200.0 88.46 L 76.92 88.46 L 76.92 
211.54 Z" fill="rgba(74,144,217,0.25)" stroke="#4a90d9" stroke-width="2.5" 
fill-rule="evenodd" />
+  <text x="126.15" y="162.31" text-anchor="middle" font-size="15" 
font-weight="bold" fill="#4a90d9">A</text>
+  <text x="200" y="290" text-anchor="middle" font-size="12" fill="#666666" 
font-style="italic">A touches B at their boundaries only</text>
+</svg>
\ No newline at end of file
diff --git a/docs/image/ST_Within/ST_Within_false.svg 
b/docs/image/ST_Within/ST_Within_false.svg
new file mode 100644
index 0000000000..e90d7352b2
--- /dev/null
+++ b/docs/image/ST_Within/ST_Within_false.svg
@@ -0,0 +1,15 @@
+<svg xmlns="http://www.w3.org/2000/svg"; viewBox="0 0 400 300" width="400" 
height="300" style="background:#ffffff">
+  <defs>
+    <style>
+      text { font-family: 'Segoe UI', Arial, Helvetica, sans-serif; }
+    </style>
+  </defs>
+  <text x="200" y="22" text-anchor="middle" font-size="16" font-weight="bold" 
fill="#333333">ST_Within(A, B)</text>
+  <rect x="325" y="8" width="60" height="22" rx="4" fill="#c0392b" />
+  <text x="355" y="24" text-anchor="middle" font-size="12" font-weight="bold" 
fill="white">FALSE</text>
+  <path d="M 153.52 196.48 L 308.45 196.48 L 308.45 72.54 L 153.52 72.54 L 
153.52 196.48 Z" fill="rgba(217,74,74,0.25)" stroke="#d94a4a" 
stroke-width="2.5" fill-rule="evenodd" />
+  <text x="215.49" y="146.9" text-anchor="middle" font-size="15" 
font-weight="bold" fill="#d94a4a">B</text>
+  <path d="M 91.55 227.46 L 246.48 227.46 L 246.48 103.52 L 91.55 103.52 L 
91.55 227.46 Z" fill="rgba(74,144,217,0.25)" stroke="#4a90d9" 
stroke-width="2.5" fill-rule="evenodd" />
+  <text x="153.52" y="177.89" text-anchor="middle" font-size="15" 
font-weight="bold" fill="#4a90d9">A</text>
+  <text x="200" y="290" text-anchor="middle" font-size="12" fill="#666666" 
font-style="italic">A extends beyond B</text>
+</svg>
\ No newline at end of file
diff --git a/docs/image/ST_Within/ST_Within_true.svg 
b/docs/image/ST_Within/ST_Within_true.svg
new file mode 100644
index 0000000000..d3c49da750
--- /dev/null
+++ b/docs/image/ST_Within/ST_Within_true.svg
@@ -0,0 +1,15 @@
+<svg xmlns="http://www.w3.org/2000/svg"; viewBox="0 0 400 300" width="400" 
height="300" style="background:#ffffff">
+  <defs>
+    <style>
+      text { font-family: 'Segoe UI', Arial, Helvetica, sans-serif; }
+    </style>
+  </defs>
+  <text x="200" y="22" text-anchor="middle" font-size="16" font-weight="bold" 
fill="#333333">ST_Within(A, B)</text>
+  <rect x="325" y="8" width="60" height="22" rx="4" fill="#27ae60" />
+  <text x="355" y="24" text-anchor="middle" font-size="12" font-weight="bold" 
fill="white">TRUE</text>
+  <path d="M 81.08 224.32 L 318.92 224.32 L 318.92 75.68 L 81.08 75.68 L 81.08 
224.32 Z" fill="rgba(217,74,74,0.25)" stroke="#d94a4a" stroke-width="2.5" 
fill-rule="evenodd" />
+  <text x="176.22" y="164.86" text-anchor="middle" font-size="15" 
font-weight="bold" fill="#d94a4a">B</text>
+  <path d="M 140.54 194.59 L 229.73 194.59 L 229.73 135.14 L 140.54 135.14 L 
140.54 194.59 Z" fill="rgba(74,144,217,0.25)" stroke="#4a90d9" 
stroke-width="2.5" fill-rule="evenodd" />
+  <text x="176.22" y="170.81" text-anchor="middle" font-size="15" 
font-weight="bold" fill="#4a90d9">A</text>
+  <text x="200" y="290" text-anchor="middle" font-size="12" fill="#666666" 
font-style="italic">A is fully within B</text>
+</svg>
\ No newline at end of file

Reply via email to