Vektor överlägg

Vector overlay är en operation (eller klass av operationer) i ett geografiskt informationssystem (GIS) för att integrera två eller flera vektorrumsdatauppsättningar . Termer som polygonöverlägg , kartöverlägg och topologiskt överlägg används ofta synonymt, även om de inte är identiska i det antal operationer som de inkluderar. Överlagring har varit ett av kärnelementen i rumslig analys i GIS sedan dess tidiga utveckling. Vissa överlagringsoperationer, särskilt Intersect och Union, är implementerade i all GIS-programvara och används i en mängd olika analytiska applikationer, medan andra är mindre vanliga.

Overlay är baserat på den grundläggande principen för geografi , känd som arealintegration, där olika ämnen (till exempel klimat, topografi och jordbruk) kan jämföras direkt utifrån en gemensam plats. Den är också baserad på matematiken för mängdlära och punktuppsättningstopologi .

Det grundläggande tillvägagångssättet för en vektoröverlagringsoperation är att ta in två eller flera lager sammansatta av vektorformer och mata ut ett lager som består av nya former skapade från de topologiska relationerna som upptäckts mellan de ingående formerna. En rad specifika operatörer tillåter olika typer av input och olika val i vad som ska inkluderas i output.

Historia

Innan tillkomsten av GIS hade överlagringsprincipen utvecklats som en metod för att bokstavligen överlagra olika tematiska kartor (vanligtvis en isaritmisk karta eller en korromatisk karta ) ritade på transparent film (t.ex. cellulosaacetat ) för att se interaktionerna och hitta platser med specifika kombinationer av egenskaper. Tekniken utvecklades till stor del av landskapsarkitekter . Warren Manning verkar ha använt detta tillvägagångssätt för att jämföra aspekter av Billerica, Massachusetts , även om hans publicerade redogörelser bara återger kartorna utan att förklara tekniken. Jacqueline Tyrwhitt publicerade instruktioner för tekniken i en engelsk lärobok 1950, inklusive:

Så långt det är möjligt ska kartor ritas på genomskinligt papper, så att kartorna i samma skala när de är färdiga kan "siktas" - dvs placeras ovanpå varandra i tur och ordning så att korrelationer eller deras frånvaro kan noteras. (s.157)

Ian McHarg var kanske mest ansvarig för att allmänt publicera detta förhållningssätt till planering i Design with Nature (1969), där han gav flera exempel på projekt som han hade konsulterat om, såsom transportplanering och markvård .

Det första riktiga GIS, Canada Geographic Information System (CGIS), utvecklat under 1960-talet och färdigställt 1971, baserades på en rudimentär vektordatamodell, och en av de tidigaste funktionerna var polygonöverlagring. En annan tidig vektor-GIS, Polygon Information Overlay System (PIOS), utvecklad av ESRI för San Diego County, Kalifornien 1971, stödde också polygonöverlagring. Den använde Point in polygon- algoritmen för att snabbt hitta korsningar. Tyvärr var resultaten av överlagring i dessa tidiga system ofta benägna att göra fel.

Carl Steinitz, en landskapsarkitekt, hjälpte till att grunda Harvard Laboratory for Computer Graphics and Spatial Analysis, delvis för att utveckla GIS som ett digitalt verktyg för att implementera McHargs metoder. 1975 introducerade Thomas Peucker och Nicholas Chrisman från Harvard Lab POLYVRT-datamodellen, en av de första som explicit representerade topologiska samband och attribut i vektordata. De föreställde sig ett system som kunde hantera flera "polygonnätverk" (lager) som överlappade genom att beräkna Least Common Geographic Units (LCGU), området där ett par polygoner överlappade, med attribut som ärvts från de ursprungliga polygonerna. Chrisman och James Dougenik implementerade denna strategi i WHIRLPOOL-programmet, som släpptes 1979 som en del av Odyssey-projektet för att utveckla ett allmänt GIS. Detta system implementerade flera förbättringar jämfört med de tidigare tillvägagångssätten i CGIS och PIOS, och dess algoritm blev en del av kärnan i GIS-mjukvaran i decennier framöver.

Algoritm

Illustration av stegen för att beräkna en polygonöverlagring i ett geografiskt informationssystem

Målet med alla överlagringsoperationer är att ta in vektorlager och skapa ett lager som integrerar både geometrin och attributen för ingångarna. Vanligtvis är båda ingångarna polygonlager, men linjer och punkter är tillåtna i många operationer, med enklare bearbetning.

Sedan den ursprungliga implementeringen har den grundläggande strategin för polygonöverlagringsalgoritmen förblivit densamma, även om vektordatastrukturerna som används har utvecklats.

  1. Med tanke på de två ingående polygonskikten, extrahera gränslinjerna.
  2. Sprickande del A : Identifiera kanter som delas mellan polygoner i varje lager. Bryt varje linje vid korsningen av delade kanter och ta bort dubbletter för att skapa en uppsättning topologiskt plana anslutna linjer. I tidiga topologiska datastrukturer som POLYVRT och ARC/INFO-täckningen lagrades data naturligt på detta sätt, så detta steg var onödigt.
  3. Spricka del B : Hitta eventuella skärningspunkter mellan linjer från de två ingångarna. Vid varje korsning, dela båda linjerna. Slå sedan samman de två linjelagren till en enda uppsättning topologiskt plana anslutna linjer.
  4. Montering av del A : Hitta varje minimal sluten ring av linjer och använd den för att skapa en polygon. Var och en av dessa kommer att vara en minst gemensam geografisk enhet (LCGU), med högst en "förälder" polygon från var och en av de två ingångarna.
  5. Montering av del B : Skapa en attributtabell som innehåller kolumnerna från båda ingångarna. För varje LCGU, bestäm dess överordnade polygon från varje indatalager och kopiera dess attribut till LCGU:ns rad den nya tabellen; om det inte fanns i någon av polygonerna för ett av ingångslagren, lämna värdena som null.

Parametrar är vanligtvis tillgängliga för att tillåta användaren att kalibrera algoritmen för en viss situation. En av de tidigaste var den snäppande eller luddiga toleransen , ett tröskelavstånd. Varje par av linjer som håller sig inom detta avstånd från varandra hopfälls till en enda linje, vilket undviker oönskade smala strängpolygoner som kan uppstå när linjer som borde vara sammanfallande (till exempel en flod och en gräns som borde följa den de jure ) digitaliseras separat med lite olika hörn.

Operatörer

En visualisering av polygonöverlagringsoperationerna som finns i de flesta GIS-program

Den grundläggande algoritmen kan modifieras på ett antal sätt för att returnera olika former av integration mellan de två ingångsskikten. Dessa olika överlagringsoperatorer används för att svara på en mängd frågor, även om vissa är mycket vanligare implementerade och används än andra. De vanligaste är nära analoga med operatorer i mängdteori och boolesk logik , och har antagit deras termer. Liksom i dessa algebraiska system kan överlagringsoperatorerna vara kommutativa (ger samma resultat oavsett ordning) och/eller associativa (mer än två inmatningar ger samma resultat oavsett i vilken ordning de är parade).

  • Skär (ArcGIS, QGIS, Manifold, TNTmips; OCH i GRASS): Resultatet inkluderar endast LCGU:erna där de två ingångsskikten skär varandra (överlappar varandra); det vill säga de med båda "föräldrarna". Detta är identiskt med den uppsättningsteoretiska skärningspunkten mellan ingångsskikten. Intersect är förmodligen den mest använda operatorn i den här listan. Kommutativ, associativ
  • Union (ArcGIS, QGIS, Manifold, TNTmips; eller i GRASS): Resultatet inkluderar alla LCGU:er, både de där ingångarna skär varandra och där de inte gör det. Detta är identiskt med den uppsättningsteoretiska föreningen av ingångsskikten. Kommutativ, associativ
  • Subtrahera (TNTmips; Radera i ArcGIS; Skillnad i QGIS; inte i GRASS; saknas från Manifold): Resultatet inkluderar endast de delar av polygoner i ett lager som inte överlappar det andra lagret; det vill säga de LCGU:er som inte har någon förälder från det andra lagret. Icke-kommutativ, icke-associativ
  • Exklusivt eller ( Symmetrisk skillnad i ArcGIS, QGIS; Exklusiv förening i TNTmips; XOR i GRASS; saknas från Manifold): Resultatet inkluderar de delar av polygoner i båda lagren som inte överlappar varandra; det vill säga alla LCGU:er som har en förälder. Detta kan också uppnås genom att beräkna skärningspunkten och föreningen, sedan subtrahera skärningspunkten från föreningen, eller genom att subtrahera varje lager från det andra och sedan beräkna föreningen av de två subtraktionerna. Kommutativ, associativ
  • Klipp (ArcGIS, QGIS, GRASS, Manifold; Extrahera inuti i TNTmips): Resultatet inkluderar delarna av polygoner i ett lager där de skär det andra lagret. Konturen är densamma som skärningspunkten, men interiören inkluderar bara polygonerna i ett lager istället för att beräkna LCGU:erna. Icke-kommutativ, icke-associativ
  • Omslag ( Uppdatera i ArcGIS och Manifold; Ersätt i TNTmips; inte i QGIS eller GRASS): Resultatet inkluderar ett lager intakt, med delarna av polygonerna i det andra lagret endast där de två lagren inte skär varandra. Det kallas "cover" eftersom resultatet ser ut som att ett lager täcker det andra; det kallas "uppdatering" i ArcGIS eftersom den vanligaste användningen är när de två lagren representerar samma tema, men det ena representerar de senaste ändringarna (t.ex. nya paket) som behöver ersätta de äldre på samma plats. Det kan replikeras genom att subtrahera ett lager från det andra och sedan beräkna föreningen av det resultatet med det ursprungliga första lagret. Icke-kommutativ, icke-associativ
  • Divide ( Identitet i ArcGIS och Manifold; inte i QGIS, TNTmips eller GRASS): Resultatet inkluderar alla LCGU:er som täcker ett av ingångslagren, exklusive de som bara finns i det andra lagret. Det kallas "dela" eftersom det ser ut som ett lager som används för att dela polygonerna i det andra lagret. Det kan replikeras genom att beräkna skärningspunkten, sedan subtrahera ett lager från det andra och sedan beräkna föreningen av dessa två resultat. Icke-kommutativ, icke-associativ

Boolesk överlagringsalgebra

En av de vanligaste användningsområdena för polygonöverlagring är att utföra en lämplighetsanalys , även känd som en lämplighetsmodell eller utvärdering av flera kriterier. Uppgiften är att hitta den region som uppfyller en uppsättning kriterier, som var och en kan representeras av en region. Till exempel kan livsmiljön för en art av vilda djur behöva vara A) inom vissa vegetationstäckningstyper, B) inom ett tröskelavstånd från en vattenkälla (beräknat med hjälp av en buffert) och C) inte inom ett tröskelavstånd från betydande vägar . Vart och ett av kriterierna kan betraktas som booleskt i betydelsen boolesk logik , eftersom varje kriterium för vilken punkt i rymden som helst är antingen närvarande eller inte närvarande, och punkten är antingen i det slutliga habitatområdet eller så är den inte (med erkännande av att kriterierna kan vara vagt, men detta kräver mer komplexa metoder för fuzzy lämplighetsanalys). Det vill säga vilken vegetationspolygon punkten ligger i spelar ingen roll, bara om den är lämplig eller inte. Detta innebär att kriterierna kan uttryckas som ett booleskt logiskt uttryck, i detta fall H = A och B och inte C.

I en uppgift som denna kan överlagringsproceduren förenklas eftersom de individuella polygonerna inom varje lager inte är viktiga och kan lösas upp i en enda boolesk region (som består av en eller flera disjunkta polygoner men inga intilliggande polygoner) som representerar den region som uppfyller kriteriet. Med dessa indata motsvarar var och en av operatorerna för boolesk logik exakt en av polygonöverlagringsoperatorerna: skära = AND, union = ELLER, subtrahera = OCH INTE, exklusiv eller = XOR. Således skulle ovanstående habitatregion genereras genom att beräkna skärningspunkten mellan A och B och subtrahera C från resultatet.

Således kan denna speciella användning av polygonöverlagring behandlas som en algebra som är homomorf till boolesk logik . Detta möjliggör användningen av GIS för att lösa många rumsliga uppgifter som kan reduceras till enkel logik.

Linjer och punkter

Vektoröverlagring utförs oftast med två polygonlager som indata och skapar ett tredje polygonlager. Det är dock möjligt att utföra samma algoritm (åtminstone delar av den) på punkter och linjer. Följande operationer stöds vanligtvis i GIS-programvara:

  • Skär: Utdata kommer att ha samma dimension som den lägre av indata: Points * {Points, Lines, Polygons} = Points, Lines * {Lines, Polygons} = Lines. Detta används ofta som en form av rumslig koppling , eftersom den sammanfogar attributtabellerna för de två lagren analogt med en tabellkoppling. Ett exempel på detta skulle vara att fördela elever till skoldistrikt. Eftersom det är sällsynt att en punkt faller exakt på en linje eller en annan punkt, används ofta den luddiga toleransen här. QGIS har separata operationer för att beräkna en linjeskärning som linjer (för att hitta sammanfallande linjer) och som punkter .
  • Subtrahera: Utdata kommer att ha samma dimension som den primära indata, med subtraktionsskiktet av samma eller mindre dimension: Points - {Points, Lines, Polygons} = Points, Lines - {Lines, Polygons} = Lines
  • Klipp: Även om den primära ingången kan vara punkter eller linjer, krävs vanligtvis att klippskiktet är polygoner, vilket ger samma geometri som den primära ingången, men inkluderar bara de funktioner (eller delar av linjer) som finns inom klipppolygonerna. Denna operation kan också betraktas som en form av rumslig fråga , eftersom den behåller egenskaperna hos ett lager baserat på dess topologiska relation till ett annat.
  • Union: Normalt förväntas båda ingångsskikten ha samma dimensionalitet, vilket ger ett utgångsskikt som inkluderar båda uppsättningarna funktioner. ArcGIS och GRASS tillåter inte detta alternativ med punkter eller linjer.

Genomföranden

Vector Overlay ingår i någon form i praktiskt taget alla GIS-programpaket som stöder vektoranalys, även om gränssnittet och de underliggande algoritmerna varierar avsevärt.

  • Esri GIS-programvara har inkluderat polygonöverlagring sedan den första utgåvan av ARC/INFO 1982. Varje generation av Esri-programvara (ARC/INFO, ArcGIS, ArcGIS Pro) har inkluderat en uppsättning separata verktyg för var och en av överlagringsoperatörerna (Intersect, Union , klipp etc.). Den nuvarande implementeringen i ArcGIS Pro har nyligen lagt till en alternativ uppsättning " Pairwise Overlay "-verktyg (från v2.7) som använder parallell bearbetning för att mer effektivt bearbeta mycket stora datamängder.
  • GRASS GIS (öppen källkod), även om det ursprungligen var rasterbaserat, har inkluderat överlagring som en del av sitt vektorsystem sedan GRASS 3.0 (1988). De flesta av polygonöverlagringsoperatorerna är samlade i ett enda v.overlay- kommando, med v.clip som ett separat kommando.
  • QGIS (öppen källkod) inkorporerade ursprungligen GRASS som sin analysmotor, men har gradvis utvecklat sitt eget bearbetningsramverk, inklusive vektoröverlagring .
  • Manifold System implementerar överlagring i sitt transformationssystem .
  • Turf Javascript API inkluderar de vanligaste överlagringsmetoderna, även om dessa fungerar på enskilda inmatade polygonobjekt, inte på hela lager .
  • TNTmips inkluderar flera verktyg för överlagring bland dess vektoranalysprocess.

externa länkar