Skip to content
Updated Intersection Matrix Calculation (markdown) authored by eswiss's avatar eswiss
...@@ -198,7 +198,7 @@ I ∩ I = 1, if at least one line segment of the MultilineString enters the inte ...@@ -198,7 +198,7 @@ I ∩ I = 1, if at least one line segment of the MultilineString enters the inte
I ∩ B = 0, if the interior of one line segment of the MultilineString is inside the polygon, else .false I ∩ B = 0, if the interior of one line segment of the MultilineString is inside the polygon, else .false
I ∩ E = 2 I ∩ E = 2
B ∩ I = 1, if one line segment of the boundary of the Polygon overlaps one line segment from the MultilineString, else 0, if the interior of the MultilineString touches the Polygon at most at a set of points, else .false B ∩ I = 1, if one line segment of the boundary of the Polygon overlaps one line segment from the MultilineString, else 0, if the interior of the MultilineString touches the Polygon at most at a set of points, else .false
B ∩ B = 0, if the endpoints of the MultilineString touch the line segments of the boundary at one or more points, else .false B ∩ B = 0, if the endpoints of the MultilineString touch the line segments of the boundary of the Polygon at one or more points, else .false
B ∩ E = 1 B ∩ E = 1
E ∩ I = 1, if part of one line segment of the MultilineString lies outside of the Polygon, else .false (Note this value cannot be 0.) E ∩ I = 1, if part of one line segment of the MultilineString lies outside of the Polygon, else .false (Note this value cannot be 0.)
E ∩ B = 0, if at least one endpoint of the MultilineString lies outside of the Polygon, else .false E ∩ B = 0, if at least one endpoint of the MultilineString lies outside of the Polygon, else .false
...@@ -229,6 +229,18 @@ E ∩ B = .false ...@@ -229,6 +229,18 @@ E ∩ B = .false
E ∩ E = 2 E ∩ E = 2
If the order of the two geometries is reversed, the intersection matrix would be the transpose of the above. If the order of the two geometries is reversed, the intersection matrix would be the transpose of the above.
The IM for a MultiPolygon and a MultilineString (not LinearRing), in that order, that do intersect is
I ∩ I = 1, if at least one line segment of the MultilineString enters the interior of the MultiPolygon, else .false (Note this value cannot be 0.)
I ∩ B = 0, if the interior of one line segment of the MultilineString is inside the MultiPolygon, else .false
I ∩ E = 2
B ∩ I = 1, if one line segment of the boundary of the MultiPolygon overlaps one line segment from the MultilineString, else 0, if the interior of the MultilineString touches the MultiPolygon at most at a set of points, else .false
B ∩ B = 0, if the endpoints of the MultilineString touch the line segments of the boundary of the MultiPolygon at one or more points, else .false
B ∩ E = 1
E ∩ I = 1, if part of one line segment of the MultilineString lies outside of the MultiPolygon, else .false (Note this value cannot be 0.)
E ∩ B = 0, if at least one endpoint of the MultilineString lies outside of the MultiPolygon, else .false
E ∩ E = 2
If the order of the two geometries is reversed, the intersection matrix would be the transpose of the above.
**The dimension of the intersection of two geometries, both of which are dimension .two, is either .zero,.one, .two., or .false** **The dimension of the intersection of two geometries, both of which are dimension .two, is either .zero,.one, .two., or .false**
if a line segment from one polygon boundary crosses over a line segment of the boundary of the other polygon, then return .two. If one polygon is completely contained inside another polygon, but not completely contained inside a hole within the first polygon, return .two. If the boundaries of the two polygons overlap perfectly, return .two. If the boundaries of the two polygons overlap on any sub-segment, return .one. If the boundaries of the two polygons touch at one or more points, return .zero, else return .false. if a line segment from one polygon boundary crosses over a line segment of the boundary of the other polygon, then return .two. If one polygon is completely contained inside another polygon, but not completely contained inside a hole within the first polygon, return .two. If the boundaries of the two polygons overlap perfectly, return .two. If the boundaries of the two polygons overlap on any sub-segment, return .one. If the boundaries of the two polygons touch at one or more points, return .zero, else return .false.
\ No newline at end of file