DE-9IM
Den Dimensionally Extended 9-Intersection Model ( DE-9IM ) är en topologisk modell och en standard som används för att beskriva de rumsliga relationerna mellan två regioner (två geometrier i två dimensioner , R 2 ), i geometri , punktuppsättningstopologi , geospatial topologi och fält relaterade till rumslig datoranalys . De rumsliga relationerna som uttrycks av modellen är oföränderliga för rotations- , translations- och skalningstransformationer .
Matrisen tillhandahåller ett tillvägagångssätt för att klassificera geometrirelationer. Grovt sett, med en sann/falsk matrisdomän, finns det 512 möjliga 2D topologiska relationer, som kan grupperas i binära klassificeringsscheman . Det engelska språket innehåller cirka 10 scheman (relationer), såsom "korsar", "touch" och "lika". När två geometrier testas mot ett schema, blir resultatet ett rumsligt predikat som namnges av schemat.
Modellen utvecklades av Clementini och andra baserat på Egenhofers och andras framträdande verk. Den har använts som grund för standarder för frågor och påståenden i geografiska informationssystem (GIS) och rumsliga databaser .
Matrix modell
DE-9IM-modellen är baserad på en 3×3 korsningsmatris med formen :
-
()
där är dimensionen för skärningspunkten (∩) mellan det inre (I), gränsen (B) och det yttre (E) av geometrierna a och b .
Termerna inre och gräns i den här artikeln används i den mening som används i algebraisk topologi och mångfaldsteori, inte i den mening som används i allmän topologi: till exempel är det inre av ett linjesegment linjesegmentet utan dess ändpunkter och dess gräns. är bara de två ändpunkterna (i allmän topologi är det inre av ett linjesegment i planet tomt och linjesegmentet är dess egen gräns).
I notationen av topologiska rymdoperatorer kan matriselementen också uttryckas som
-
I ( a )= a o B ( a )=∂ a E ( a )= a e
()
00 Dimensionen för tomma mängder (∅) betecknas som −1 eller F (falskt). Dimensionen för icke-tomma uppsättningar (¬∅) anges med det maximala antalet dimensioner för skärningen, specifikt för punkter , 1 för linjer , 2 för områden . Sedan domänen för modellen { , 1 , 2 , F }.
En förenklad version av displaystyle värden erhålls genom att mappa värdena { 0,1,2 } till T (sant), så att man använder den booleska domänen { T , F }. Matrisen, betecknad med operatorer, kan uttryckas som
-
()
Elementen i matrisen kan namnges enligt nedan:
-
()
Båda matrisformerna, med dimensionella och booleska domäner, kan serialiseras som " DE-9IM strängkoder ", som representerar dem i ett enradssträngmönster. Sedan 1999 har strängkoderna ett standardformat .
0 För kontroll av utdata eller mönsteranalys kan ett matrisvärde (eller en strängkod) kontrolleras med en " mask ": ett önskat utdatavärde med valfria asterisksymboler som jokertecken — det vill säga " * " som indikerar utdatapositioner som designern inte gör bryr sig om (fria värden eller "bryr sig inte positioner"). Domänen för maskelementen är { , 1 , 2 , F , * } eller { T , F , * } för den booleska formen.
De enklare modellerna 4-Intersection och 9-Intersection föreslogs före DE-9IM för att uttrycka rumsliga relationer (och kom från termerna 4IM och 9IM ). De kan användas istället för DE-9IM för att optimera beräkningen när ingångsförhållandena uppfyller specifika begränsningar.
Illustration
ser resultatet av funktionen DE_9IM( a , b ) ut så här:
|
||||||||||||||||||
|
|
Denna matris kan serialiseras . man från vänster till höger och uppifrån och ner blir resultatet . Så i en kompakt representation är strängkoden ' 212101212 '.
Rumsliga predikat
Varje topologisk egenskap baserad på en DE-9IM binär rumslig relation är ett rumsligt predikat . För enkelhetens skull har "namngivna rumsliga predikat" definierats för några vanliga relationer, som senare blev standardpredikat. De rumsliga predikatfunktionerna som kan härledas från DE-9IM inkluderar:
- Predikat definierade med domänmasker { T , F , * }:
Namn (synonym) |
Skärningsmatris och maskkodsträng ( boolesk ELLER mellan matriser) |
Betydelse och definition | Likvärdig | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Lika |
|
Inom & Innehåller | |||||||||||
T*F**FFF*
|
|||||||||||||
Osammanhängande |
|
inte skär | |||||||||||
F F F F****
|
|||||||||||||
Berör (träffar) |
|
||||||||||||
MED*******
|
MED*****
|
MED****
|
|||||||||||
Innehåller |
|
Inom ( b , a ) | |||||||||||
T*****FF*
|
|||||||||||||
Omslag |
|
CoveredBy ( b , a ) | |||||||||||
T*****FF*
|
*T****FF*
|
***T**FF*
|
****T*FF*
|
- Predikat som kan erhållas från ovanstående genom logisk negation eller parameterinversion ( matristransposition ), som indikeras av den sista kolumnen:
Korsar varandra | a skär b : geometrierna a och b har minst en punkt gemensam. | inte osammanhängande | ||||
---|---|---|---|---|---|---|
T********
|
*T*******
|
***T*****
|
****T****
|
|||
Inom (inuti) |
a är inom b : a ligger i det inre av b . | Innehåller ( b , a ) | ||||
T*F**F***
|
||||||
Täckt av | a omfattas av b (sträcker sig Inom ): geometri a ligger i b . Andra definitioner: "Minst en punkt i a ligger i b , och ingen punkt i a ligger i exteriören av b ", eller "Varje punkt i a är en punkt i (insidan eller gränsen för) b ". | Omslag ( b , a ) | ||||
T*F**F***
|
*TF**F***
|
**FT*F***
|
**F*TF***
|
- 0 Predikat som använder indatadimensionerna och definieras med masker av domänen { , 1 , T , * } :
Korsar eller dim(något) = 1 |
a korsar b : de har några men inte alla inre punkter gemensamma, och dimensionen på skärningen är mindre än den för åtminstone en av dem. Maskvalsregler kontrolleras endast när förutom genom linje-/linjeingångar, annars är falskt:
|
||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
T*T****** |
T*****T** |
0******** dim(valfri) = 1 |
|||||||||||
Överlappar |
a överlappar b : de har några men inte alla punkter gemensamma, de har samma dimension och skärningspunkten mellan de två geometriernas inre har samma dimension som geometrierna själva. Maskvalsregler kontrolleras endast när annars är det falskt:
|
||||||||||||
T*T***T** dim = 0 eller 2 |
1*T***T** dim = 1 |
Lägg märke till att:
- Den topologiskt lika definitionen innebär inte att de har samma poäng eller ens att de är av samma klass.
- Utdata från har informationen som finns i en lista över alla tolkningsbara predikat om geometrierna a och b .
- Alla predikat beräknas av masker. Endast korsningar och överlappningar har ytterligare villkor om och .
- Alla masksträngskoder slutar med
*
. Detta beror på att EE är trivialt sant och därför inte ger någon användbar information.
- Equals- masken ,
T*F**FFF*
, är "sammanslagningen" av Innehåller (T*****FF*
) och Inom (T*F**F***
): ( II ∧ ~ EI ∧ ~ EB ) ∧ ( II ∧ ~ IE ∧ ~ BE ) .
- Masken
T*****FF*
förekommer i definitionen av både Innehåller och Omslag . Covers är en mer inkluderande relation. I synnerhet, till skillnad från Innehåller , skiljer den inte mellan punkter i gränsen och i det inre av geometrier. För de flesta situationer omslag användas framför Innehåller .
- På liknande sätt förekommer masken
T*F**F***
i definitionen av både Within och CoveredBy . I de flesta situationer CoveredBy användas framför Inom .
- Historiskt sett har andra termer och andra formella tillvägagångssätt använts för att uttrycka rumsliga predikat ; till exempel introducerades regionkopplingskalkyl 1992 av Randell, Cohn och Cohn.
Egenskaper
De rumsliga predikaten har följande egenskaper för binära relationer :
- Reflexiv : Lika med, innehåller, täcker, täcks av, skär, inom
- Antireflexiv : Osammanhängande
- Symmetrisk : Lika med, skär, korsar, berör, överlappar
- Transitiv : Lika med, innehåller, täcker, täcks av, inom
Tolkning
Valet av terminologi och semantik för de rumsliga predikaten bygger på rimliga konventioner och traditionen av topologiska studier. Relationer som Intersects , Disjoint , Touches , Within , Equals (mellan två geometrier a och b ) har en uppenbar semantik:
- Lika med
- a = b som är ( a ∩ b = a ) ∧ ( a ∩ b = b )
- Inom
- a ∩ b = a
- Skär
- a ∩ b ≠ ∅
- Berör
- ( a ∩ b ≠ ∅) ∧ ( a ο ∩ b ο = ∩ b ο )
Predikaten Contains och Within har subtila aspekter av deras definition som strider mot intuitionen. Till exempel, en linje L som är helt innesluten i gränsen för en polygon P anses inte vara innesluten i P . Denna egenhet kan uttryckas som "Polygoner innehåller inte sin gräns". Detta problem orsakas av den sista satsen i Innehålls -definitionen ovan: "minst en punkt av det inre av B ligger i det inre av A". För det här fallet har predikatet Covers en mer intuitiv semantik (se definition), vilket undviker gränsöverväganden.
För bättre förståelse kan dimensionaliteten hos indata användas som motivering för en gradvis introduktion av semantisk komplexitet:
Relationer mellan Lämpliga predikat Semantisk tillagd punkt/punkt Lika , osammanhängande Andra giltiga predikat kollapsar till lika . punkt/linje tillägger Intersects Skärningar är en förfining av lika : "någon lika punkt vid linjen". linje/linje lägger till Touches , Crosses , ... Touches är en förfining av Intersects , endast om "gränser". Crosses handlar om "bara en poäng".
Täckning av möjliga matrisresultat
Antalet möjliga resultat i en boolesk 9IM -matris är 2 9 =512, och i en DE-9IM-matris är 3 9 =6561. Procentandelen av dessa resultat som uppfyller ett specifikt predikat bestäms enligt följande,
Sannolikhet | namn |
---|---|
93,7 % | Korsar varandra |
43,8 % | Beröring |
25 % | Kryss (för giltiga inmatningar, 0 % annars) |
23,4 % | Covers och CoveredBy |
12,5 % | Innehåller , Överlappningar (för giltiga ingångar, annars 0%) och Inom |
6,3 % | Osammanhängande |
3,1 % | Lika |
Vid vanliga tillämpningar skär geometrierna a priori , och de andra relationerna kontrolleras.
De sammansatta predikaten " Intersects OR Disjoint " och " Equals OR Different " har summan 100 % (alltid sanna predikat), men " Covers OR CoveredBy " har 41 %, det är inte summan, eftersom de inte är logiska komplement och varken oberoende relationer ; idem " Innehåller ELLER inom ", som har 21%. Summan 25%+12,5%=37,5% erhålls när man ignorerar överlappning av linjer i " Crosses OR Overlaps ", eftersom de giltiga indatamängderna är disjunkter.
Frågor och påståenden
DE -9IM erbjuder ett fullständigt beskrivande påstående om de två ingångsgeometrierna. Det är en matematisk funktion som representerar en komplett uppsättning av alla möjliga relationer om två entiteter, som en sanningstabell , trevägsjämförelsen , en Karnaugh-karta eller ett Venn-diagram . Varje utdatavärde är som en sanningstabelllinje, som representerar relationer mellan specifika indata.
Såsom illustreras ovan är utsignalen '212101212' som härrör från DE-9IM ( a , b ) en fullständig beskrivning av alla topologiska relationer mellan specifika geometrier a och b . Det säger till oss att .
Å andra sidan, om vi kontrollerar predikat som Skärningar ( a , b ) eller Touches ( a , b ) – för samma exempel har vi " Skärningar = sant och Touches = sant " - är det en ofullständig beskrivning av "alla topologiska relationer" . Predikat säger inte heller någonting om geometriernas dimensionalitet (det spelar ingen roll om a och b är linjer, ytor eller punkter).
Detta oberoende av geometrityp och bristen på fullständighet , på predikat , är användbara för allmänna frågor om två geometrier:
inre/gräns/exteriör semantik vanlig semantisk Påståenden
mer beskrivande " a och b har DE-9IM( a , b )='212101212' "
mindre beskrivande " a Touches b "Frågor
mer restriktiv " Visa alla par av geometrier där DE-9IM( a , b )='212101212' "
mer allmänt " Visa alla par av geometrier där Touches ( a , b ) "
För vanliga applikationer är användningen av rumsliga predikat också motiverad av att vara mer läsbar för människor än DE-9IM- beskrivningar: en typisk användare har bättre intuition om predikat (än en uppsättning inre/gräns/exteriör skärningspunkter).
Predikat har användbar semantik till vanliga applikationer, så det är användbart att översätta en DE-9IM -beskrivning till en lista över alla associerade predikat, det vill säga som en gjutningsprocess mellan de två olika semantiska typerna. Exempel:
- Strängkoderna " 0F1F00102 " och " 0F1FF0102 " har semantiken för " Skärningar & korsar & överlappar " .
- Strängkoden " 1FFF0FFF2 " har semantiken " Equals ".
- Strängkoderna " F01FF0102 ", " FF10F0102 ", " FF1F00102 ", " F01FFF102 " och " FF1F0F1F2 " har semantiken för " Skärningar och beröringar ".
Standarder
00 Open Geospatial Consortium (OGC) har standardiserat de typiska rumsliga predikaten (innehåller, korsar, skär, berör, etc.) som booleska funktioner och DE-9IM-modellen som en funktion som returnerar en sträng (DE-9IM-koden) , med domänen { , 1 , 2 , F }, vilket betyder =punkt, 1 =linje, 2 =area och F = "tom uppsättning". Denna DE-9IM-strängkod är ett standardiserat format för datautbyte.
Standarden Simple Feature Access (ISO 19125) i kapitel 7.2.8, "SQL-rutiner för typgeometri", rekommenderar SQL/MM Spatial (ISO 13249-3 Del 3: Spatial) ST_Dimension , ST_GeometryType , ST_IsEmpty som stödda rutiner ST_IsSimple , ST_Boundary för alla geometrityper. Samma standard, i överensstämmelse med definitionerna av relationer i "Del 1 , klausul 6.1.2.3" av SQL/MM, rekommenderar (ska stödjas) funktionsetiketterna: ST_Equals , ST_Disjoint , ST_Intersects , ST_Touches , ST_Crosses , ST_Within , ST_Contains ST_Overlapps och ST_Relate .
DE-9IM i OGC-standarderna använder följande definitioner av interiör och gräns, för de vanligaste OGC-standardgeometrityperna:
Undertyper | Dämpa | Interiör ( I ) | gräns ( B ) |
---|---|---|---|
Peka, MultiPoint | 0 | Punkt, poäng | Tömma |
LineString, Line | 1 | Punkter som finns kvar när gränspunkterna tas bort. | Två slutpunkter. |
LinjärRing | 1 | Alla punkter längs geometrin. | Tömma. |
MultilineString | 1 | Punkter som finns kvar när gränspunkterna tas bort. | De punkter som ligger i gränserna för ett udda antal av dess element (kurvor). |
Polygon | 2 | Punkter inom ringarna. | Set med ringar. |
Multipolygon | 2 | Punkter inom ringarna. | Uppsättning av ringar av dess element (polygoner). |
OBSERVERA: yttre punkter (E) är punkter p som inte ligger i det inre eller gränsen , så det behövs ingen extra tolkning, E(p)=not(I(p) eller B(p)) . |
Implementering och praktisk användning
De flesta rumsliga databaser, såsom PostGIS , implementerar DE-9IM() -modellen med standardfunktionerna: ST_Relate
, ST_Equals
, ST_Intersects
, etc. Funktionen ST_Relate(a,b)
matar ut standard OGC:s DE-9IM-strängkod .
Exempel: två geometrier, a och b , som skär och berör en punkt (till exempel med och ), kan vara ST_Relate(a,b) ='FF1F0F1F2'
eller ST_Relate(a,b)='FF10F0102'
eller ST_Relate(a,b)='FF1F0F1F2'
. Den uppfyller även ST_Skärningspunkter(a,b)=true
och ST_Touchs(a,b)=true
. När ST_Relate(a,b)='0FFFFF212'
har den returnerade DE-9IM-koden semantiken "Skärs(a,b) & Crosses(a,b) & Within(a,b) & CoveredBy(a,b) ", det vill säga, returnerar sant
på det booleska uttrycket ST_Skärar(a,b) OCH ST_Crosses(a,b) OCH ST_Inom(a,b) OCH ST_Coveredby(a,b)
.
Användningen av ST_Relate() är snabbare än direkt beräkning av en uppsättning motsvarande predikat. Det finns fall där användning av ST_Relate() är det enda sättet att beräkna ett komplext predikat — se exemplet med koden 0FFFFF0F2
, av en punkt som inte "korsar" en multipunkt (ett objekt som är en uppsättning punkter), utan predikatkorsar (när den definieras av en mask) returnerar true .
Det är vanligt att överbelasta ST_Relate () genom att lägga till en maskparameter, eller använda en returnerad ST_Relate(a,b) -sträng i ST_RelateMatch()- funktionen. När du använder ST_Relate(a,b,mask) returnerar det en boolean. Exempel:
-
ST_Relate(a,b,'*FF*FF212')
returnerar sant närST_Relate(a,b)
är0FFFFF212
eller01FFFF212
och returnerar falskt när01FFFF122
eller0FF1FFFFF
. -
ST_RelateMatch('0FFFFF212','*FF*FF212')
ochST_RelateMatch('01FFFF212','TTF*FF212')
är sanna ,ST_RelateMatch('01FFFF122','*FF*FF212')
är falskt .
Synonymer
- "Egenhofer-Matrix" är en synonym för 9IM 3x3-matrisen för boolesk domän.
- 0 "Clementini-Matrix" är en synonym för DE-9IM 3x3-matrisen för { , 1 , 2 , F }-domänen.
- "Egenhofer-operatorer" och "Clementini-operatorer" är ibland en referens till matriselement som II , IE , etc. som kan användas i booleska operationer. Exempel: predikatet " G 1 innehåller G 2 " kan uttryckas med " ⟨ G 1 | II ∧ ~EI ∧ ~EB | G 1 ⟩ ", som kan översättas till masksyntax,
T*****FF*
. - Predikat "träffar" är en synonym för beröring ; "inuti" är en synonym för inom
- Oracles "ANYINTERACT" är en synonym för skärningar och "OVERLAPBDYINTERSECT" är en synonym för överlappningar . Dess "OVERLAPBDYDISJOINT" har inte ett motsvarande namngivet predikat.
- I regionanslutning erbjuder kalkyloperatorer några synonymer för predikat : disjoint är DC (bortkopplad), touches är EC (externt ansluten), lika är EQ. Andra, som Överlappningar som PO (delvis överlappande), behöver kontextanalys eller sammansättning.
Se även
Standarder: | Programvara: | Relaterade ämnen: |