|
|
Line 1: |
Line 1: |
| [[File:DE-9IM-logoSmall.png|right]]
| | Do girls really love Ugg Bottes? Did I sound stupid you? Well, not because in this fashion world, some love these boots, some hate them a few others are amazed at its prominence and growing popularity. But many love due to the fact and yearn for them undoubtedly once involving their lifetime.<br><br>There is a search feature, if anything to know every book (for example) you have the phrase, "covered wagon." Just type it in so you can get a listing of every book as part of your Kindle where that phrase if acquired. And if every one of these features aren't enough, you'll also make use of the experimental basic web feature to check weather, movie listings, or even the ugg news.<br><br>When first receiving these boots from any store, you must first determine that the pair of boots are in brand new condition. One can never be too picky when purchasing ugg boots. When you discover it that the pair of boots are in brand new condition, you can start the caring process to ones boots.<br><br>In fact, in order to find cheap boots, you could also visit those outlet web stores. Outlet store usually have plenty overstocked items also in order market sales volume, they are likely to sell goods at less expensive prices. Compared to those products prices you normally find at retail stores, prices presented by outlet stores are cheaper and more modest. So if you are planning to buy a pair of such shoes, you can check out outlet stores in your areas first off. If you can really find such boots you can find or at a very discounted price, it can actually be extreme fun.<br><br>Henry thump-thump-thumps to your home. Carolyn is filling the kettle with water -- so she's found it -- sporting that mom-smile, the the one which makes him feel perhaps a ten year-old who hasn't done his homework. But suddenly that smile falls off her face. Henry can almost hear it shatter on your floor, as getting glass ashtray. Hah, victory! But what has he carried out earn it?<br><br>For unauthorized some of his or her design, fakes are having pigskin or cowhide definitely not necessary injure or harm toes. Some manufacturers employ single-faced pigskin a good alternative to sheepskin/ double-faced. To specify fakes, take a close look into a boots learn if you possibly could find small holes designed to determine if are generally constructed with pigskin.<br><br>If you have any concerns regarding where and how to use [http://horizonafrica.com/img/ ugg boots factory outlet], you can get hold of us at the web site. |
| | |
| The '''Dimensionally Extended nine-Intersection Model (DE-9IM)''' is a [[topological]] [[Interpretation (logic)|model]]
| |
| and a [[Specification (technical standard)|standard]] used to describe the [[spatial relation]]s of
| |
| two regions (two [[2D geometric model|geometries in two-dimensions]], '''R'''<sup>2</sup>),
| |
| in [[Geometry]], [[Point-set topology]], [[Geospatial topology]], and fields related to [[Spatial analysis|computer spatial analysis]]. | |
| | |
| The representation was developed by Clementini and others,<ref>
| |
| {{cite book |last=Clementini |first=Eliseo |coauthors=Paolino Di Felice and Peter van Oosterom |editor1-first=David |editor1-last=Abel |editor2-last=Ooi |editor2-first=Beng Chin |chapter=A small set of formal topological relationships suitable for end-user interaction |title=Advances in Spatial Databases: Third International Symposium, SSD '93 Singapore, June 23–25, 1993 Proceedings |series=Lecture Notes in Computer Science |volume=692/1993 |year=1993 |publisher=Springer |doi=10.1007/3-540-56869-7_16 |pages=277–295}}</ref><ref>{{cite journal |last1=Clementini |first1=Eliseo |last2=Sharma |first2=Jayant |last3=Egenhofer |first3=Max J. |year=1994 |title=Modelling topological spatial relations: Strategies for query processing |journal=Computers & Graphics |volume=18 |issue=6 |pages=815–822 |doi=10.1016/0097-8493(94)90007-8 }}</ref>
| |
| based on the seminal works of Egenhofer and others<ref>
| |
| M.J. Egenhofer and R.D.Franzosa (1991), "Point-set topological spatial relations", [http://dx.doi.org/10.1080/02693799108927841 Int. J. GIS, vol.5, no.2, 161-174].</ref>
| |
| ,<ref name="sdh1990">M.J.Egenhofer and J.R.Herring (1990), "A Mathematical Framework for the Definition of Topological Relationships", http://www.spatial.maine.edu/~max/MJEJRH-SDH1990.pdf</ref>
| |
| and was used as a basis for standards of ''[[Information retrieval|queries]]'' and ''[[First-order logic|assertions]]'' in [[geographic information systems]] (GIS) and [[spatial database]]s.
| |
| | |
| The matrix offer an approach to classify geometry relations: roughly speaking, with a true/false matrix domain,
| |
| there are 512 possible 2D topologic relations, that can be grouped into ''binary classification schemes''.
| |
| For English speakers, there are about 10 different schemes that have a name, that is, 10 relation types with usual semantics. "Intersects", "Touches", "Equals", and others. When testing two geometries about a scheme, the result of this test is a '''''spatial predicate''''' named by the scheme.
| |
| | |
| == Matrix model ==
| |
| The DE-9IM model is based on a 3×3 intersection [[Matrix (mathematics)|matrix]] with the form:
| |
| | |
| <center><math>
| |
| \operatorname{DE9IM}(a,b) = \begin{bmatrix}
| |
| \dim(I(a) \cap I(b)) & \dim(I(a) \cap B(b)) & \dim(I(a) \cap E(b)) \\
| |
| \dim(B(a) \cap I(b)) & \dim(B(a) \cap B(b)) & \dim(B(a) \cap E(b))\\
| |
| \dim(E(a) \cap I(b)) & \dim(E(a) \cap B(b)) & \dim(E(a) \cap E(b))
| |
| \end{bmatrix}
| |
| </math>
| |
| </center>
| |
| | |
| where ''dim'' is the maximum number of [[dimension]]s of the [[Intersection (set theory)|intersection]] (∩) of the [[Interior (topology)|interior]] (I), [[Boundary (topology)|boundary]] (B), and [[Exterior (topology)|exterior]] (E) of geometries ''a'' and ''b''.
| |
| In the notation of topological space operators, the matrix elements can be expressed also as
| |
| : ''I''(''a'')=''a''<sup>o</sup> ''B''(''a'')=∂''a'' ''E''(''a'')=''a''<sup>''e''</sup>
| |
| | |
| The dimension of [[empty set]]s (∅) are denoted as −1 or <tt>F</tt> (false). The dimension of non-empty sets (¬∅) are denoted with the maximum number of dimensions of the intersection, specifically <tt>0</tt> for [[Point (geometry)|points]], <tt>1</tt> for [[Line (geometry)|lines]], <tt>2</tt> for [[area]]s. Then, the [[Data domain|domain]] of the model is {<tt>0</tt>,<tt>1</tt>,<tt>2</tt>,<tt>F</tt>}.
| |
| | |
| A simplified version of ''dim''(''x'') values are obtained mapping the values {<tt>0,1,2</tt>} to <tt>T</tt> (true), so using the [[boolean domain]] {<tt>T</tt>,<tt>F</tt>}. The matrix, denoted with operators, can by expressed as
| |
| <center><math>
| |
| \operatorname{bin}(\operatorname{DE9IM}(a,b)) = \operatorname{9IM}(a,b) = \begin{bmatrix}
| |
| a^o \cap b^o \ne \emptyset & a^o \cap \partial{b} \ne \emptyset & a^o \cap b^e \ne \emptyset \\
| |
| \partial{a} \cap b^o\ne\emptyset & \partial{a} \cap \partial{b}\ne\emptyset & \partial{a} \cap b^e\ne\emptyset \\
| |
| a^e \cap b^o\ne\emptyset & a^e \cap \partial{b}\ne\emptyset & a^e \cap b^e\ne\emptyset
| |
| \end{bmatrix}
| |
| </math>
| |
| </center>
| |
| | |
| Both matrix forms, with dimensional and boolean domains, can be [[Serialization|serialized]] as "''DE-9IM string codes''", that is, can be represented in a single-line string pattern. Since 1999 the ''string codes'' have a [[#Standards|standard]]<ref name="firstStd">The "[[OpenGIS]] Simple Features Specification For SQL", [http://portal.opengeospatial.org/files/?artifact_id=829 Revision 1.1], was released at May 5, 1999. It was the first international standard to establish the format conventions for ''DE-9IM string codes'', and the names of the "Named Spatial Relationship predicates based on the DE-9IM" (see section with this title).</ref> format for database analysis.
| |
| | |
| For output checking or pattern analysis, a matrix value (or a string code) can be checked by a "[[Mask (computing)|mask]]": a desired output value with optional [[asterisk]] symbols as [[Wildcard character|wildcards]] — that is, "<tt>*</tt>" indicating output positions that the designer does not care about (free values or "don't-care positions").
| |
| Then, the mask's domain is {<tt>0</tt>,<tt>1</tt>,<tt>2</tt>,<tt>T</tt>,<tt>F</tt>,<tt>*<tt>}, or {<tt>T<tt>,<tt>F<tt>,<tt>*<tt>} for the boolean form.
| |
| | |
| The simplified models, ''4-Intersection'' and ''9-Intersection'', proposed before ''DE-9IM'' for express ''spatial relations''<ref name="4vs9">M. J. Egenhofer, J. Sharma, and D. Mark (1993) "[http://www.spatial.maine.edu/~max/4Vs9.pdf A Critical Comparison of the 4-Intersection and 9-Intersection Models for Spatial Relations: Formal Analysis]", In: [http://mapcontext.com/autocarto/proceedings/auto-carto-11/index.html Auto-Carto XI].</ref> (and originating the labels ''4IM'' and ''9IM'') can replace the ''DE-9IM'' to optimize calculations, when input conditions satisfy specific constraints.
| |
| | |
| === Illustration ===
| |
| Visually, for two overlapping polygonal geometries, this looks like:<ref>[http://postgis.org/documentation/manual-svn/using_postgis_dbmanagement.html Chapter 4. Using PostGIS: Data Management and Queries]</ref>
| |
| {| border="0" align="center"
| |
| |-
| |
| |
| |
| | align="center" |
| |
| {| border="0" summary="manufactured viewport for HTML img" cellspacing="0" cellpadding="0"
| |
| |-
| |
| | align="center" valign="middle" | ''b'' [[File:de9im04.png]]
| |
| |}
| |
| |-
| |
| | align="center" valign="middle" |
| |
| {| border="0" summary="manufactured viewport for HTML img" cellspacing="0" cellpadding="0"
| |
| |-
| |
| | align="center" valign="middle" | ''a''<br>[[File:de9im03.png]]
| |
| |}
| |
| |
| |
| {| border="0"
| |
| |-
| |
| ! align="center" |
| |
| ! align="center" | <strong>Interior</strong>
| |
| ! align="center" | <strong>Boundary</strong>
| |
| ! align="center" | <strong>Exterior</strong>
| |
| |-
| |
| | align="center" | <strong>Interior</strong>
| |
| | align="center" style="border-right: 2px solid #BCB; border-bottom: 2px solid #BCB;"| [[File:de9im05.png]]
| |
| | |
| ''dim''[<tt>''I''(''a'')<big style="color:red">∩</big>''I''(''b'')</tt>] = '''2'''
| |
| | align="center" style="border-right: 2px solid #BCB; border-bottom: 2px solid #BCB;" | [[File:de9im06.png]]
| |
| | |
| ''dim''[<tt>''I''(''a'')<big style="color:red">∩</big>''B''(''b'')</tt>] = '''1'''
| |
| | align="center" style="border-bottom: 2px solid #BCB;" | [[File:de9im07.png]]
| |
| | |
| ''dim''[<tt>''I''(''a'')<big style="color:red">∩</big>''E''(''b'')</tt>] = '''2'''
| |
| |-
| |
| | align="center" | <span class="bold"><strong>Boundary</strong></span>
| |
| | align="center" style="border-right: 2px solid #BCB; border-bottom: 2px solid #BCB;" | <div class="informalfigure"><div>[[File:de9im08.png]]</div></div>
| |
| | |
| ''dim''[<tt>''B''(''a'')<big style="color:red">∩</big>''I''(''b'')</tt>] = <strong>1</strong>
| |
| | align="center" style="border-right: 2px solid #BCB; border-bottom: 2px solid #BCB;" | <div class="informalfigure"><div>[[File:de9im09.png]]</div></div>
| |
| | |
| ''dim''[<tt>''B''(''a'')<big style="color:red">∩</big>''B''(''b'')</tt>] = <strong>0</strong>
| |
| | align="center" style="border-bottom: 2px solid #BCB;"| <div class="informalfigure"><div>[[File:de9im10.png]]</div></div>
| |
| | |
| ''dim''[<tt>''B''(''a'')<big style="color:red">∩</big>''E''(''b'')</tt>] = <strong>1</strong>
| |
| |-
| |
| | align="center" | <span class="bold"><strong>Exterior</strong></span>
| |
| | align="center" style="border-right: 2px solid #BCB;"| <div class="informalfigure"><div>[[File:de9im11.png]]</div></div>
| |
| | |
| ''dim''[<tt>''E''(''a'')<big style="color:red">∩</big>''I''(''b'')</tt>] = <strong>2</strong>
| |
| | align="center" style="border-right: 2px solid #BCB;"| <div class="informalfigure"><div>[[File:de9im12.png]]</div></div>
| |
| | |
| ''dim''[<tt>''E''(''a'')<big style="color:red">∩</big>''B''(''b'')</tt>] = <strong>1</strong>
| |
| | align="center" | <div class="informalfigure"><div>[[File:de9im13.png]]</div></div>
| |
| | |
| ''dim''[<tt>''E''(''a'')<big style="color:red">∩</big>''E''(''b'')</tt>] = <strong>2</strong>
| |
| |}
| |
| |}
| |
| Reading from left-to-right and top-to-bottom, the resulted ''DE-9IM''(''a'',''b'') string code is '<tt><strong>212101212</strong></tt>', a compacted form for say "<tt>II=2, IB=1, IE=2, BI=1, BB=0, BE=1, EI=2, EB=1, EE=2</tt>".
| |
| | |
| == Spatial predicates ==
| |
| The model express important '''''space relations''''' because they are invariant to [[Rotation (mathematics)|rotation]], [[Translation (geometry)|translation]] and [[Scaling (geometry)|scaling]] transformations; but, in its most general form the ''DE-9IM'' model is too complex to make it usable. So, the adoption of "named predicates" have been specified.
| |
| | |
| '''Spatial predicates''' are [[Binary relation|binary]] invariant ''space relations'', with more usual semantics.
| |
| The ''spatial predicate'' [[Subroutine|functions]] that can be derived (expressed by masks) from ''DE-9IM'' include:<ref name="sdh1990"/>
| |
| <ref>{{citation |url=http://www.vividsolutions.com/jts/javadoc/com/vividsolutions/jts/geom/IntersectionMatrix.html |title=JTS: Class IntersectionMatrix |publisher=Vivid Solutions, Inc.}}</ref>
| |
| | |
| <center><math>
| |
| \begin{bmatrix}
| |
| II & IB & IE \\
| |
| BI & BB & BE \\
| |
| EI & EB & EE
| |
| \end{bmatrix}
| |
| </math>
| |
| </center>
| |
| | |
| Predicates defined with masks of domain {T,F,*}
| |
| {| class="wikitable"
| |
| |-
| |
| ! style="width:8em" | Name (synonym)
| |
| !colspan="4"| Intersection matrix and mask code string<br>([[Boolean algebra#Basic operations|boolean OR]] between matrices)
| |
| !Meaning and definition,<ref name="sdh1990"/><ref name="JTS2">[http://www.vividsolutions.com/jts/javadoc/com/vividsolutions/jts/geom/Geometry.html Geometry]</ref>
| |
| !Same
| |
| |-
| |
| !rowspan="2"| Equals
| |
| |colspan="4"| <math>\Bigl[\begin{smallmatrix}
| |
| \mathrm{T}&\mathrm{*}&\mathrm{F}\\
| |
| \mathrm{*}&\mathrm{*}&\mathrm{F}\\
| |
| \mathrm{F}&\mathrm{F}&\mathrm{*}
| |
| \end{smallmatrix}\Bigr]</math>
| |
| |rowspan="2"|<center>''II'' ∧ ~''IE'' ∧ ~''BE'' ∧ ~''EI'' ∧ ~''EB''</center>''a'' and ''b'' are topologically [[Equality (relational operator)|equal]]. "Two geometries are topologically equal if their interiors intersect and no part of the interior or boundary of one geometry intersects the exterior of the other".<ref>JTS Technical Specifications of 2003.</ref>
| |
| |rowspan="2"|''Within'' & ''Contains''
| |
| |-
| |
| | <code>T*F**FFF*</code>
| |
| |
| |
| |
| |
| |
| |
| |-
| |
| !rowspan="2"| Disjoint
| |
| |colspan="4"| <math>\Bigl[\begin{smallmatrix}
| |
| \mathrm{F}&\mathrm{F}&\mathrm{*}\\
| |
| \mathrm{F}&\mathrm{F}&\mathrm{*}\\
| |
| \mathrm{*}&\mathrm{*}&\mathrm{*}
| |
| \end{smallmatrix}\Bigr]</math>
| |
| |rowspan="2"|<center>''~II'' ∧ ~''IB'' ∧ ~''BI'' ∧ ~''BB''</center>''a'' and ''b'' are [[Disjoint sets|disjoint]], have no point in common. They form a set of [[Disconnected (topology)#Disconnected spaces|disconnected]] geometries.
| |
| |rowspan="2"|''not Intersects''
| |
| |-
| |
| |<code>FF*FF****</code>
| |
| |
| |
| |
| |
| |
| |
| |-
| |
| !rowspan="2"| Touches (meets)
| |
| | <math>\Bigl[\begin{smallmatrix}
| |
| \mathrm{F}&\mathrm{T}&\mathrm{*}\\
| |
| \mathrm{*}&\mathrm{*}&\mathrm{*}\\
| |
| \mathrm{*}&\mathrm{*}&\mathrm{*}
| |
| \end{smallmatrix}\Bigr]</math>
| |
| | <math>\Bigl[\begin{smallmatrix}
| |
| \mathrm{F}&\mathrm{*}&\mathrm{*}\\
| |
| \mathrm{T}&\mathrm{*}&\mathrm{*}\\
| |
| \mathrm{*}&\mathrm{*}&\mathrm{*}
| |
| \end{smallmatrix}\Bigr]</math>
| |
| |colspan="2"| <math>\Bigl[\begin{smallmatrix}
| |
| \mathrm{F}&\mathrm{*}&\mathrm{*}\\
| |
| \mathrm{*}&\mathrm{T}&\mathrm{*}\\
| |
| \mathrm{*}&\mathrm{*}&\mathrm{*}
| |
| \end{smallmatrix}\Bigr]</math>
| |
| |rowspan="2"|<center>(''~II'' ∧ ''IB'') ∨ (~''II'' ∧ ''BI'') ∨ (~''II'' ∧ ''BB'')</center>''a'' touches ''b'', they have at least one boundary point in common, but no interior points.
| |
| |rowspan="2"|
| |
| |-
| |
| | <code>FT*******</code>
| |
| | <code>F**T*****</code>
| |
| |colspan="2"| <code>F***T****</code>
| |
| |-
| |
| !rowspan="2"| Contains
| |
| |colspan="4"| <math>\Bigl[\begin{smallmatrix}
| |
| \mathrm{T}&\mathrm{*}&\mathrm{*}\\
| |
| \mathrm{*}&\mathrm{*}&\mathrm{*}\\
| |
| \mathrm{F}&\mathrm{F}&\mathrm{*}
| |
| \end{smallmatrix}\Bigr]</math>
| |
| |rowspan="2"|<center>''II'' ∧ ~''EI'' ∧ ~''EB''</center>''b'' is within ''a''. Geometry ''b'' lies in the interior of ''a''. Another definition: "''a'' 'contains' ''b'' iff no points of ''b'' lie in the exterior of ''a'', and at least one point of the interior of ''b'' lies in the interior of ''a''".<ref name="davis2007">M. Davis (2007), "[http://lin-ear-th-inking.blogspot.com.br/2007/06/subtleties-of-ogc-covers-spatial.html Quirks of the 'Contains' Spatial Predicate]".</ref>
| |
| |rowspan="2"|''Within''(''b'',''a'')
| |
| |-
| |
| |colspan="4"| <code>T*****FF*</code>
| |
| |-
| |
| !rowspan="2"| Covers
| |
| | <math>\Bigl[\begin{smallmatrix}
| |
| \mathrm{T}&\mathrm{*}&\mathrm{*}\\
| |
| \mathrm{*}&\mathrm{*}&\mathrm{*}\\
| |
| \mathrm{F}&\mathrm{F}&\mathrm{*}
| |
| \end{smallmatrix}\Bigr]</math>
| |
| | <math>\Bigl[\begin{smallmatrix}
| |
| \mathrm{*}&\mathrm{T}&\mathrm{*}\\
| |
| \mathrm{*}&\mathrm{*}&\mathrm{*}\\
| |
| \mathrm{F}&\mathrm{F}&\mathrm{*}
| |
| \end{smallmatrix}\Bigr]</math>
| |
| | <math>\Bigl[\begin{smallmatrix}
| |
| \mathrm{*}&\mathrm{*}&\mathrm{*}\\
| |
| \mathrm{T}&\mathrm{*}&\mathrm{*}\\
| |
| \mathrm{F}&\mathrm{F}&\mathrm{*}
| |
| \end{smallmatrix}\Bigr]</math>
| |
| | <math>\Bigl[\begin{smallmatrix}
| |
| \mathrm{*}&\mathrm{*}&\mathrm{*}\\
| |
| \mathrm{*}&\mathrm{T}&\mathrm{*}\\
| |
| \mathrm{F}&\mathrm{F}&\mathrm{*}
| |
| \end{smallmatrix}\Bigr]</math>
| |
| |rowspan="2"|<center>(''II'' ∧ ~''EI'' ∧ ~''EB'') ∨ (''IB'' ∧ ~''EI'' ∧ ~''EB'') ∨ (''BI'' ∧ ~''EI'' ∧ ~''EB'') ∨ (''BB'' ∧ ~''EI'' ∧ ~''EB'')</center>''a'' covers ''b''. Geometry ''b'' lies in the interior of ''a'' (extends ''Contains''). Other definitions: "no points of ''b'' lie in the exterior of ''a''", or "Every point of ''b'' is a point of (the interior of) ''a''".
| |
| |rowspan="2"|''CoveredBy''(''b'',''a'')
| |
| |-
| |
| | <code>T*****FF*</code>
| |
| | <code>*T****FF*</code>
| |
| | <code>***T**FF*</code>
| |
| | <code>****T*FF*</code>
| |
| |}
| |
| | |
| Predicates that can be obtained by the above, by [[Negation#Definition|logic negation]] or parameter inversion ([[transposed matrix|matrix transposition]]):
| |
| {| class="wikitable"
| |
| |-
| |
| !rowspan="2" style="width:8em" | Intersects
| |
| | <math>\Bigl[\begin{smallmatrix}
| |
| \mathrm{T}&\mathrm{*}&\mathrm{*}\\
| |
| \mathrm{*}&\mathrm{*}&\mathrm{*}\\
| |
| \mathrm{*}&\mathrm{*}&\mathrm{*}
| |
| \end{smallmatrix}\Bigr]</math>
| |
| | <math>\Bigl[\begin{smallmatrix}
| |
| \mathrm{*}&\mathrm{T}&\mathrm{*}\\
| |
| \mathrm{*}&\mathrm{*}&\mathrm{*}\\
| |
| \mathrm{*}&\mathrm{*}&\mathrm{*}
| |
| \end{smallmatrix}\Bigr]</math>
| |
| | <math>\Bigl[\begin{smallmatrix}
| |
| \mathrm{*}&\mathrm{*}&\mathrm{*}\\
| |
| \mathrm{T}&\mathrm{*}&\mathrm{*}\\
| |
| \mathrm{*}&\mathrm{*}&\mathrm{*}
| |
| \end{smallmatrix}\Bigr]</math>
| |
| | <math>\Bigl[\begin{smallmatrix}
| |
| \mathrm{*}&\mathrm{*}&\mathrm{*}\\
| |
| \mathrm{*}&\mathrm{T}&\mathrm{*}\\
| |
| \mathrm{*}&\mathrm{*}&\mathrm{*}
| |
| \end{smallmatrix}\Bigr]</math>
| |
| |rowspan="2"|''a'' [[Intersection (set theory)|intersects]] ''b'': geometries ''a'' and ''b'' have at least one point in common.
| |
| |rowspan="2"|''not Disjoint''
| |
| |-
| |
| | <code>T********</code>
| |
| | <code>*T*******</code>
| |
| | <code>***T*****</code>
| |
| | <code>****T****</code>
| |
| |-
| |
| !rowspan="2"| Within <br>(inside)
| |
| |colspan="4"| <math>\Bigl[\begin{smallmatrix}
| |
| \mathrm{T}&\mathrm{*}&\mathrm{F}\\
| |
| \mathrm{*}&\mathrm{*}&\mathrm{F}\\
| |
| \mathrm{*}&\mathrm{*}&\mathrm{*}
| |
| \end{smallmatrix}\Bigr]</math>
| |
| |rowspan="2"|''a'' is within ''b'', ''a'' lies in the interior of ''b''.
| |
| |rowspan="2"|''Contains''(''b'',''a'')
| |
| |-
| |
| |colspan="4"| <code>T*F**F***</code>
| |
| |-
| |
| !rowspan="2"| CoveredBy
| |
| | <math>\Bigl[\begin{smallmatrix}
| |
| \mathrm{T}&\mathrm{*}&\mathrm{F}\\
| |
| \mathrm{*}&\mathrm{*}&\mathrm{F}\\
| |
| \mathrm{*}&\mathrm{*}&\mathrm{*}
| |
| \end{smallmatrix}\Bigr]</math>
| |
| | <math>\Bigl[\begin{smallmatrix}
| |
| \mathrm{*}&\mathrm{T}&\mathrm{F}\\
| |
| \mathrm{*}&\mathrm{*}&\mathrm{F}\\
| |
| \mathrm{*}&\mathrm{*}&\mathrm{*}
| |
| \end{smallmatrix}\Bigr]</math>
| |
| | <math>\Bigl[\begin{smallmatrix}
| |
| \mathrm{*}&\mathrm{*}&\mathrm{F}\\
| |
| \mathrm{T}&\mathrm{*}&\mathrm{F}\\
| |
| \mathrm{*}&\mathrm{*}&\mathrm{*}
| |
| \end{smallmatrix}\Bigr]</math>
| |
| | <math>\Bigl[\begin{smallmatrix}
| |
| \mathrm{*}&\mathrm{*}&\mathrm{F}\\
| |
| \mathrm{*}&\mathrm{T}&\mathrm{F}\\
| |
| \mathrm{*}&\mathrm{*}&\mathrm{*}
| |
| \end{smallmatrix}\Bigr]</math>
| |
| |rowspan="2"|''a'' is covered by ''b'' (extends ''Within''): every point of ''a'' is a point of ''b'', and the interiors of the two geometries have at least one point in common.
| |
| |rowspan="2"|''Covers''(''b'',''a'')
| |
| |-
| |
| | <code>T*F**F***</code>
| |
| | <code>*TF**F***</code>
| |
| | <code>**FT*F***</code>
| |
| | <code>**F*TF***</code>
| |
| |}
| |
| | |
| Predicates that ''checks the input dimensions'', and are defined with masks of domain {0,1,T,F,*}
| |
| {| class="wikitable"
| |
| |-
| |
| !rowspan="2" style="width:8em" | '''Crosses'''<span style="font-weight:normal"><br>''dim(a)≠dim(b) or <br>dim(any)=0''</span>
| |
| | <math>\Bigl[\begin{smallmatrix}
| |
| \mathrm{T}&\mathrm{*}&\mathrm{T}\\
| |
| \mathrm{*}&\mathrm{*}&\mathrm{*}\\
| |
| \mathrm{*}&\mathrm{*}&\mathrm{*}
| |
| \end{smallmatrix}\Bigr]</math>
| |
| | <math>\Bigl[\begin{smallmatrix}
| |
| \mathrm{T}&\mathrm{*}&\mathrm{*}\\
| |
| \mathrm{*}&\mathrm{*}&\mathrm{*}\\
| |
| \mathrm{T}&\mathrm{*}&\mathrm{*}
| |
| \end{smallmatrix}\Bigr]</math>
| |
| |colspan="2"| <math>\Bigl[\begin{smallmatrix}
| |
| \mathrm{0}&\mathrm{*}&\mathrm{*}\\
| |
| \mathrm{*}&\mathrm{*}&\mathrm{*}\\
| |
| \mathrm{*}&\mathrm{*}&\mathrm{*}
| |
| \end{smallmatrix}\Bigr]</math>
| |
| |rowspan="2" colspan="2"|''a'' crosses ''b'', they have some but not all interior points in common (and the dimension of the intersection is less than that of at least one of them). Mask selection rules are checked only when ''dim(a)≠dim(b)'', except by point/point or line/line inputs, otherwise is false:<ref name="postgis.org">[http://postgis.org/docs/ST_Crosses.html ST_Crosses]</ref>
| |
| <center>(''II''=0) for points or lines, (''II'' ∧ ''IE'') when ''dim(a)''<''dim(b)'', (''II'' ∧ ''EI'') when ''dim(a)''>''dim(b)''</center>
| |
| | |
| |-
| |
| | <code>T*T******</code> <small><br>''dim(a)''<''dim(b)''</small>
| |
| | <code>T*****T**</code> <small><br>''dim(a)''>''dim(b)''</small>
| |
| |colspan="2"| <code>0********</code> <small><br>''dim(any)''=0</small>
| |
| |-
| |
| !rowspan="2"| Overlaps<span style="font-weight:normal"><br>''dim(a)=dim(b)''</span>
| |
| | <math>\Bigl[\begin{smallmatrix}
| |
| \mathrm{T}&\mathrm{*}&\mathrm{T}\\
| |
| \mathrm{*}&\mathrm{*}&\mathrm{*}\\
| |
| \mathrm{T}&\mathrm{*}&\mathrm{*}
| |
| \end{smallmatrix}\Bigr]</math>
| |
| |colspan="3"| <math>\Bigl[\begin{smallmatrix}
| |
| \mathrm{1}&\mathrm{*}&\mathrm{T}\\
| |
| \mathrm{*}&\mathrm{*}&\mathrm{*}\\
| |
| \mathrm{T}&\mathrm{*}&\mathrm{*}
| |
| \end{smallmatrix}\Bigr]</math>
| |
| |rowspan="2" colspan="2"|''a'' overlaps ''b'', they have some but not all points in common, they have the same dimension, and the intersection of the interiors of the two geometries has the same dimension as the geometries themselves. Mask selection rules are checked only when ''dim(a)=dim(b)'', otherwise is false:
| |
| <center>(''II'' ∧ ''IE'' ∧ ''EI'') for points or surfaces, (''II''=1 ∧ ''IE'' ∧ ''EI'') for lines</center>
| |
| |-
| |
| | <code>T*T***T**</code> <small><br>''dim=0 or 2''</small>
| |
| |colspan="2" |<code>1*T***T**</code> <small><br>''dim=1''</small>
| |
| |}
| |
| | |
| Notice that:
| |
| | |
| * The ''topologically equal'' definition does not imply that they have the same points or even that they are of the same class.
| |
| | |
| * The output of ''DE-9IM(a,b)'' have the information contained in a list of all interpretable predicates about geometries ''a'' and ''b''.
| |
| | |
| * All predicates are computed by masks, only ''Crosses'' and ''Overlaps'' has adicional conditions about ''dim(a)'' and ''dim(b)''.<!--
| |
| ** ''Overlaps'': ''da=db''. If the geometries have different dimensions (ex. surface and line), the predicate is false.
| |
| ** ''Crosses'': ''(da,db)'' is in {(0,1); (0,2); (1,2); (1,0); (1,2); (2,1); (1,1)}, for any other combination of dimensions the predicate is false.<ref name="postgis.org" /> There are also mask selection rules: <code>T*T******</code> for {(0,1); (0,2); (1,2)} situations, <code>T*****T**</code> for {(1,0); (1,2); (2,1)} situations, and <code>0********</code> for (1,1) situations.
| |
| -->
| |
| | |
| * All mask string codes ends with '<code>*</code>'. It is because ''EE'' have no extra information<!--, it is the opposite of ''II''? -->.
| |
| | |
| * The ''Equals'' mask, <code>T*F**FFF*</code>, is the "merge" of ''Contains'' (<code>T*****FF*</code>) and ''Within'' (<code>T*F**F***</code>): (''II'' ∧ ~''EI'' ∧ ~''EB'') ∧ (''II'' ∧ ~''IE'' ∧ ~''BE'').
| |
| | |
| * There are no mask for situations involving complex types, like a Point/Multipoint situation. Example: with the above definition the code <code>0FFFFF0F2</code> have the ''Crosses'' predicate (satisfies the mask <code>T*****T**</code>), but by a more rigorous definition, like the ''JTS'' definition, not.<ref name="test1case4">JTS test case of "point A within one of B points", http://www.vividsolutions.com/jts/tests/Run1Case4.html</ref>
| |
| | |
| * The mask <code>T*****FF*</code> is within the definition of both, ''Contains'' and ''Covers''. ''Covers'' is a more inclusive relation. In particular, unlike ''Contains'' it does not distinguish between points in the boundary and in the interior of geometries. For most situations, ''Covers'' should be used in preference to ''Contains''.<ref name="JTS2"/>
| |
| | |
| * Similarly, the mask <code>T*F**F***</code> falls within the definition of both, ''Within'' and ''CoveredBy''.
| |
| | |
| === Interpretation ===
| |
| [[File:TopologicSpatialRelarions2.png|thumb|400px|Examples of spatial relations.]]
| |
| The terminology used for translating the nine relations into more usual semantics, is based on reasonable conventions and the tradition of topological studies.<ref name="sdh1990"/>
| |
| Relationships (between two geometries ''a'' and ''b'') such as ''Intersects'', ''Disjoint'', ''Touches'', ''Within'', ''Equals'', have an obvious semantic:<ref name="davis2007"/><ref name="cafrca">G. Câmara, U. M. Freitas, and M. A. Casanova (199X), "Fields and objects algebras forgis operations", [http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.17.991&rep=rep1&type=pdf Citeseerx PDF]</ref>
| |
| * ''Equals'': ''a'' = ''b'' that is (''a'' ∩ ''b'' = ''a'') ∧ (''a'' ∩ ''b'' = ''b'')
| |
| * ''Within'': ''a'' ∩ ''b'' = ''a''
| |
| * ''Intersects'': ''a'' ∩ ''b'' ≠ ∅
| |
| * ''Touches'': (''a'' ∩ ''b'' ≠ ∅) ∧ (''a''<sup>ο</sup> ∩ ''b''<sup>ο</sup> = ∅)
| |
| | |
| The other ones, ''Covers'', ''Contains'', ''CoveredBy'' and ''Within'', have subtle aspects to their definition which are contrary to intuition.
| |
| | |
| Example of "non-obvious predicates", that has an aspect of its definition which may produce unexpected behaviour:<ref name="davis2007"/> a line ''L'' which is completely contained in the boundary of a polygon ''P'' is ''not'' considered to be contained in ''P''. This quirk can be expressed as "Polygons do not contain their boundary". See the ''Contains'' definition above: the last clause, "at least one point of the interior of B lies in the interior of A", causes the trap. In this case, the predicate ''Covers'' has the intuitively expected semantics (see definition), avoiding boundary considerations.
| |
| | |
| For a better intuitive understand we can use the dimensionality of inputs, as justification to a gradual introduction of semantic complexity:
| |
| :{|
| |
| |-
| |
| !Relations between
| |
| !Appropriate predicates
| |
| !Semantic added
| |
| |-
| |
| |point/point
| |
| |''Equals'', ''Disjoint''
| |
| |Other valid predicates collapses into ''Equals''.
| |
| |-
| |
| |point/line
| |
| |adds ''Intersects''
| |
| |''Intersects'' is a flexibilization of ''Equals'', "some equal point at the line".
| |
| |-
| |
| |line/line
| |
| |width="180"|adds ''Touches'', ''Crosses'', ...
| |
| |''Touches'' is a constraint of ''Intersects'', about "only boundaries"; ''Crosses'' about "only one point".
| |
| |}
| |
| | |
| === Coverage on possible matrix results ===
| |
| The number of possible results in a boolean ''9IM'' matrix is 2<sup>9</sup>=512, and in a ''DE-9IM'' matrix is 3<sup>9</sup>=6561. The probability of one of these results come to satisfy a specific predicate is determined as following,
| |
| * 93.7% ''Intersects'';
| |
| * 43.8% ''Touches'';
| |
| * 25% ''Crosses'' (for valid inputs, 0% otherwise);
| |
| * 23.4% ''Covers'' and ''CoveredBy'';
| |
| * 12.5% ''Contains'', ''Overlaps'' (for valid inputs, 0% otherwise) and ''Within'';
| |
| * 6.3% ''Disjoint'';
| |
| * 3.1% ''Equals''.
| |
| | |
| On usual applications the geometries intersects ''a priori'', and the another relations are checked.
| |
| | |
| The composite predicates "''Intersects'' OR ''Disjoint''" and "''Equals'' OR ''Different''" have the sum 100% (always true predicates),
| |
| but "''Covers'' OR ''CoveredBy''" have 41%, that is not the sum, because they are not logical complements neither independent relations; idem "''Contains'' OR ''Within''", that have 21%. The sum 25%+12.5%=37.5% is obtained when ignoring overlaping of lines in "''Crosses'' OR ''Overlaps''", because the valid input sets are disjoints.
| |
| | |
| == Queries and assertions ==
| |
| The ''DE-9IM'' offers a full descriptive assertion about the two input geometries. It is a mathematical function that represents a [[Functional completeness|complete set]] of all possible relations about two entities, like a [[Truth table]], the [[Three-way comparison]], a [[Karnaugh map#2-variable map examples|Karnaugh map]] or a [[Venn diagram]]. Each output value is like a truth table line, that represent relations of specific inputs.
| |
| | |
| As illustrated above, the output '212101212' resulted from ''DE-9IM''(''a'',''b'') is a complete description of all topologic relations between specific geometries ''a'' and ''b''. It say to us that "II=2, IB=1, IE=2, BI=1, BB=0, BE=1, EI=2, EB=1, EE=2".
| |
| | |
| By other hand, if we check predicates like ''Intersects''(''a'',''b'') or ''Touches''(''a'',''b'') — for the same example we have "''Intersects''=<tt>true</tt> and ''Touches''=<tt>true</tt>" —, it is an incomplete description of "all topologic relations".
| |
| Predicates also not say any thing about the dimensionality of the geometries (no matter if ''a'' and ''b'' are lines, areas or points).
| |
| | |
| This independence of geometry-type and the lack of [[completeness]], on ''predicates'', are useful for [[Query language|general queries]] about two geometries:
| |
| :{|border="0"
| |
| |
| |
| !<small>(interior/boundary/exterior semantic)</small>
| |
| |
| |
| !<small>(usual semantic)</small>
| |
| |-
| |
| !Assertions:
| |
| |style="background-color:#DDC" align="center"|'''more descriptive'''<br> " ''a'' and ''b'' have ''DE-9IM''(''a'',''b'')='212101212' "
| |
| |
| |
| |style="background-color:#DDC" align="center"|'''less descriptive'''<br> " ''a Touches b'' "
| |
| |-
| |
| !Queries:
| |
| |style="background-color:#DDC" align="center"|'''more restrictive'''<br>" Show all pair of geometries where ''DE-9IM''(''a'',''b'')='212101212' "
| |
| |
| |
| |style="background-color:#DDC" align="center"|'''more general'''<br>" Show all pair of geometries where ''Touches''(''a'',''b'') "
| |
| |}
| |
| | |
| For usual applications, the use of ''spatial predicates'' also is justified by being more [[Human-readable medium|human-readable]] than ''DE-9IM'' descriptions: a typical user have better intuition about predicates (than a set of interiors/border/exterior intersections).
| |
| | |
| Predicates have useful [[Semantics (computer science)|semantic]] into usual applications, so it is useful the translation of a ''DE-9IM'' description into a list of all associated predicates,<ref>A [http://code.google.com/p/postgis-st-relate-summary/ ''DE-9IM'' translator], of all associated predicates of a spatial relation.</ref><ref name="SDO_RELATE">Note. The [http://docs.oracle.com/cd/B19306_01/appdev.102/b14255/sdo_operat.htm#i78531 Oracle's spatial funcion <tt>SDO_RELATE()</tt>] do only a partial translation, internally, offering to user a mask for a or-list of predicates to be checked, instead the DE-9IM string.</ref> that is like a [[Type conversion|casting process]] between the two different semantic types. Examples:
| |
| | |
| * The string codes "<tt>0F1F00102</tt>" and "<tt>0F1FF0102</tt>" have the semantic of "''Intersects & Crosses & Overlaps''".
| |
| | |
| * The string code "<tt>1FFF0FFF2</tt>" have the semantic of "''Equals''".
| |
| | |
| * The string codes "<tt>F01FF0102</tt>", "<tt>FF10F0102</tt>", "<tt>FF1F00102</tt>", "<tt>F01FFF102</tt>", and "<tt>FF1F0F1F2</tt>" have the semantic of "''Intersects & Touches''".
| |
| | |
| === Standards ===
| |
| The [[Open Geospatial Consortium]] (OGC) has standardized the typical spatial predicates (Contains, Crosses, Intersects, Touches, etc.) as boolean functions, and the DE-9IM model,<ref name="ogs1">"OpenGIS Implementation Specification for Geographic information - Simple feature access - Part 2: SQL option", [[Open Geospatial Consortium|OGC]], http://www.opengeospatial.org/standards/sfs</ref> as a function that returns a string (the DE-9IM code), with domain of {0,1,2,F}, meaning 0=point, 1=line, 2=area, and F="empty set". This DE-9IM string code is a standardized format for data interchange.
| |
| | |
| The [[Simple feature access]] (ISO 19125) standard,<ref name="SFS2007">
| |
| [[Open Geospatial Consortium|Open Geospatial Consortium Inc.]] (2007), "OpenGIS® Implementation Standard for Geographic
| |
| information - Simple feature access - Part 2: SQL option", [http://www.opengeospatial.org/standards/sfs OGC document] ''06-104r4'' version 1.2.1 (review of 2010-08-04).</ref> in the chapter 7.2.8, "SQL routines on type Geometry", recommends as supported routines the ''SQL/MM Spatial''<ref>ISO 13249-3 Part 3: Spatial, summarized in [http://www.sigmod.org/record/issues/0112/standards.pdf SQL Multimedia and Application Packages (SQL/MM)].</ref> (ISO 13249-3 Part 3: Spatial) ''ST_Dimension'', ''ST_GeometryType'', ''ST_IsEmpty'', ''ST_IsSimple'', ''ST_Boundary'' for all Geometry Types.
| |
| The same standard, consistent with the definitions of relations in "Part 1, Clause 6.1.2.3"
| |
| of the SQL/MM, recommends (shall be supported) the function labels: ''ST_Equals'', ''ST_Disjoint'', ''ST_Intersects'', ''ST_Touches'', ''ST_Crosses'', ''ST_Within'', ''ST_Contains'', ''ST_Overlaps'' and ''ST_Relate''.
| |
| | |
| The DE-9IM in the OGC standards use the following definitions of Interior and Boundary, for the main OGC standard geometry types:<ref>"Encyclopedia of GIS", edited by Shashi Shekhar and Hui Xiong. SpringerScience 2008. pg. 242</ref>
| |
| {|class="wikitable" align="center"
| |
| !Subtypes
| |
| !Dim
| |
| !Interior (I)
| |
| !boundary (B)
| |
| | |
| |-
| |
| |Point, MultiPoint
| |
| |0
| |
| |Point, Points
| |
| |Empty
| |
| | |
| |-
| |
| |LineString, Line
| |
| |1
| |
| |Points that are left when the boundary points are removed.
| |
| |Two end points.
| |
| | |
| |-
| |
| |LinearRing
| |
| |1
| |
| |All points along the geometry.
| |
| |Empty.
| |
| | |
| |-
| |
| |MultilineString
| |
| |1
| |
| |Points that are left when the boundary points are removed.
| |
| |Those points that are in the boundaries of an odd number of its elements (curves).
| |
| | |
| |-
| |
| |Polygon
| |
| |2
| |
| |Points with the rings.
| |
| |Set of rings.
| |
| | |
| |-
| |
| |MultiPolygon
| |
| |2
| |
| |Points with the rings.
| |
| |Set of rings of its elements (polygons).
| |
| | |
| |-
| |
| |colspan="4"|NOTICE: '''exterior points (E)''' are points ''p'' not in the ''interior'' or ''boundary'', so not need extra interpretation, <tt>E(p)=not(I(p) or B(p))</tt>.
| |
| |}
| |
| | |
| === Implementation and practical use ===
| |
| Most spatial databases, such as [[PostGIS]], implements the ''DE-9IM()'' model by the standard functions:<ref>
| |
| ST_Relate() [[PostGIS]] function [http://www.postgis.org/documentation/manual-2.0/ST_Relate.html online documentation].</ref> <code>ST_Relate</code>, <code>ST_Equals</code>, <code>ST_Intersects</code>, etc. The function <code>ST_Relate(a,b)</code> outputs the standard OGC's ''DE-9IM string code''.
| |
| | |
| Examples: two geometries, ''a'' and ''b'', that intersects and touches with a point (for instance with ''dim(''<tt>B(a)∩I(b)</tt>'')''=<tt>0</tt> and ''dim(''<tt>I(a)∩I(b)</tt>'')''=<tt>F</tt>), can be <code>st_relate(a,b)='FF1F0F1F2'</code> or <code>st_relate(a,b)='FF10F0102'</code> or <code>st_relate(a,b)='FF1F0F1F2'</code>. It also satisfies <code>st_intersects(a,b)=true</code> and <code>st_touches(a,b)=true</code>.
| |
| When <code>ST_Relate(a,b)='0FFFFF212'</code>, the returned DE-9IM code have the semantic of "Intersects(a,b) & Crosses(a,b) & Within(a,b) & CoveredBy(a,b)", that is, returns <code>true</code> on the boolean expression <code>st_intersects(a,b) AND st_crosses(a,b) AND st_within(a,b) AND st_coveredby(a,b)</code>.
| |
| | |
| The use of <tt>st_relate()</tt> is faster than direct computing of a set of correspondent predicates.<ref>[http://postgis.org/documentation/manual-svn/using_postgis_dbmanagement.html#DE-9IM Chapter 4. Using PostGIS: Data Management and Queries]</ref> There are cases where the use of <tt>st_relate()</tt> is the unique access form of a complex predicate — see the example of the code <code>0FFFFF0F2</code>,<ref name="test1case4"/> of a point that not "crosses" a multipoint (a object that is a set of points), but predicate ''Crosses'' (when defined by a mask) returns ''true''.
| |
| | |
| It is usual also to [[Function overloading|overload]] the <tt>st_relate()</tt> by a mask parameter,
| |
| or use a returned <tt>st_relate(a,b)<tt> string into the <tt>st_relateMatch()</tt> function.<ref>
| |
| ST_RelateMatch() [[PostGIS]] function [http://www.postgis.org/documentation/manual-2.0/ST_RelateMatch.html online documentation].</ref>
| |
| When using <tt>st_relate(a,b,mask)</tt>, it returns a boolean. Examples:
| |
| * <code>ST_Relate(a,b,'*FF*FF212')</code> returns ''true'' when <code>ST_Relate(a,b)</code> is <code>0FFFFF212</code> or <code>01FFFF212</code>, and returns ''false'' when <code>01FFFF122</code> or <code>0FF1FFFFF</code>.
| |
| * <code>ST_relateMatch('0FFFFF212','*FF*FF212')</code> and <code>ST_relateMatch('01FFFF212','TTF*FF212')</code> are ''true'', <code>ST_relateMatch('01FFFF122','*FF*FF212')</code> is ''false''.
| |
| | |
| == Synonyms ==
| |
| * "Egenhofer-Matrix" is a synonym for the ''9IM'' 3x3 matrix of boolean domain.<ref name="encygis">"Encyclopedia of GIS", S. Shekhar, H. Xiong. ISBN 978-0387359755.</ref>
| |
| * "Clementini-Matrix" is a synonym for the [[#Matrix_model|DE-9IM]] 3x3 matrix of {0,1,2,F} domain.<ref name="encygis"/>
| |
| * "Egenhofer operators" and "Clementini operators" are sometimes a reference to matrix elements as ''II'' , ''IE'', etc. that can be used in boolean operations. Example: the predicate "''G<sub>1</sub>'' contains ''G<sub>2</sub>''" can be expressed by "<''G<sub>1</sub>''| II ∧ ~EI ∧ ~EB |''G<sub>1</sub>''>", that can be translated to mask syntax, "<code>T*****FF*</code>".
| |
| * [[#Spatial_predicates|Predicate]]s "meets" is a synonym for ''touches''; "inside" is a synonym for ''within''; Oracle's<ref name="SDO_RELATE"/> "ANYINTERACT" is a synonym for ''intersects'', "OVERLAPBDYINTERSECT" is a synonym for ''overlaps'', and "OVERLAPBDYDISJOINT" have not a synonym.
| |
| | |
| == See also ==
| |
| {|
| |
| |-
| |
| |valign="top"|Standards:
| |
| * [[Simple feature access]] (ISO 19125)
| |
| * [[Open Geospatial Consortium]]
| |
| |
| |
| |valign="top"|Software:
| |
| * [[JTS Topology Suite]]
| |
| * [[PostGIS]]
| |
| * [[Spatial database]]
| |
| |
| |
| |valign="top"|Related topics
| |
| * [[Geospatial topology]]
| |
| * '''[[Spatial relation]]'''
| |
| * [[Spatial analysis]]
| |
| * [[Karnaugh map#2-variable map examples|Karnaugh (2-variable) map]]
| |
| * [[Relational operator]]
| |
| |}
| |
| | |
| == References ==
| |
| {{Reflist}}
| |
| | |
| == External links ==
| |
| * [http://postgis.org/documentation/manual-svn/using_postgis_dbmanagement.html#DE-9IM PostGIS Manual: DE-9IM]
| |
| * [http://docs.geotools.org/latest/userguide/library/jts/dim9.html Point Set Theory and the DE-9IM Matrix]
| |
| * [http://edndoc.esri.com/arcsde/9.1/general_topics/understand_spatial_relations.htm Illustrated Tutorial for DE-9IM]
| |
| | |
| [[Category:Matrices]]
| |
| [[Category:Geometric topology]]
| |