Esri TIN

Esri TIN
Filnamnstillägg .adf
Utvecklad av Esri
Typ av format GIS

Esri TIN- formatet är ett populärt men ändå proprietärt geospatialt vektordataformat för programvara för geografiska informationssystem (GIS) för att lagra höjddata som ett triangulerat oregelbundet nätverk . Den är utvecklad och reglerad av Esri , USA. Esri TIN-formatet kan rumsligt beskriva höjdinformation inklusive brytkantsfunktioner. Varje punkt och triangel kan bära en tagginformation. Ett TIN som lagras i detta filformat kan ha vilken form som helst, täcka flera regioner (t.ex. öar) och innehålla hål (t.ex. sjöar).

2007 kom en omvänd beskrivning av Esri TIN-formatet fram. Sedan dess har Virtual Terrain Project, en programvara med öppen källkod , implementerat stöd för att läsa formatet, utan att ArcGIS behöver installeras.

Översikt

Esri TIN-formatet är ett digitalt vektorlagringsformat för lagring av höjdinformation inklusive brytkantsfunktioner. Esri TIN-formatet introducerades med ArcView GIS .

Esri TIN-formatet består av en samling filer med specifika filnamn och ett vanligt filnamnstillägg, lagrade i samma katalog . De flesta av filerna är obligatoriska filer ( tdenv.adf , tedg.adf , thul.adf , tmsk.adf , tmsx.adf , tnod.adf , tnxy.adf och tnz.adf ), eventuellt en fil som innehåller koordinatsystemet och projektionen information ( prj.adf ) och filer som innehåller punkttagginformation ( tnval.adf och tndsc.adf ) och triangeltagginformation ( ttval.adf och ttdsc.adf ) kan ges.

Obligatoriska filer
  • tdenv.adf — rubrik och statistiska data
  • tedg.adf — kanter data och topologi
  • thul.adf — polygondata för yttre och inre skrov
  • tmsk.adf — maskera data, maskerar osynliga trianglar
  • tmsx.adf — indexfil för tmsk.adf
  • tnod.adf triangelnoddata _
  • tnxy.adf — positionsinformation (x- och y-koordinater)
  • tnz.adf — höjdinformation (z-värden)

Endianiteten för de flesta av filerna är big-endian . tmsk.adf , tmsx.adf och tdenv.adf har blandad endianness .

Andra filer
  • prj.adf — projektionsbeskrivning, med hjälp av en välkänd textrepresentation av koordinatreferenssystem ; är en rad {B286C06B-0879-11D2-AACA-00C04FA33C20} anger ett okänt koordinatsystem
  • tndsc.adf — statistik om användning av punkttaggar
  • tnval.adf — punkttaggdata
  • ttdsc.adf — beskrivning av triangeltaggdata
  • ttval.adf — triangel-taggdata

Endianiteten för filen tndsc.adf och tnval.adf är little-endian .

Filer genererade av ArcGIS 10
  • tnodinfo.adf — punkttyper och mer
  • teval.adf — kanter data
  • tdenv9.adf — filen tdenv.adf bytt namn
Filstorlek

Ett TIN med n punkter (inkl. superpunkter ) och k trianglar , filstorlekarna beräknas till:

  • tnxy.adf : 16* n byte
  • tnz.adf : 4* n byte
  • tnod.adf : 12* k byte
  • tedg.adf : 12* k byte
  • tmsx.adf : 116 byte
  • tdenv.adf / tdenv9.adf : 104 byte
  • tmsk.adf : 132 + 4*tak( k /32) byte
  • thul.adf : min. 12 byte, beror på antalet punkter i den konvexa skrovpolygonen
  • tndsc.adf : 24* antalet taggposter som anges i tndsc.adf byte (se nedan)
  • tnval.adf : 4* n' byte (n': antal taggade punkter, inkl. superpunkter ; se nedan)
  • tnodinfo.adf : 2* n byte
  • teval.adf : 16* antalet brytkantsposter som anges i tdenv9.adf bytes (se nedan)

Obligatoriska filer

tnxy.adf - X- och Y-koordinater för punkterna i TIN

Innehåller och array av X- och Y-koordinatvärden, ett par för varje punkt i TIN. Datauppsättningen för varje punkt kan beskrivas med följande struktur:

Bytes Typ Endianness Användande
0–7 dubbel stor X-koordinatvärde
8–15 dubbel stor Y-koordinatvärde

tnz.adf - Z-koordinater för punkterna i TIN

Innehåller en matris med Z-koordinatvärden, en för varje punkt i TIN. Värdena är i samma ordning som värdena i tnxy.adf och lagrar tillsammans den tredimensionella koordinaten för varje punkt i TIN. Datauppsättningen för varje punkt kan beskrivas med följande struktur:

Bytes Typ Endianness Användande
0–3 flyta stor Z-koordinatvärde

tnod.adf - Index för punkterna som bildar trianglarna i TIN

Innehåller en rad index för punkterna som bildar trianglarna i TIN, 3 index för varje triangel. Indexen ligger inom intervallet 1 till antalet poäng ([1, antal poäng]). Framsidan av en triangel (vanligtvis ovansidan) är den yta som har de 3 punkterna/hörnen ordnade medurs när den ses. Datauppsättningen för varje triangel kan beskrivas med följande struktur:

Bytes Typ Endianness Användande
0–3 int32 stor Index för den första punkten i en triangel
4–7 int32 stor Index för den andra punkten i en triangel
8–11 int32 stor Index för den tredje punkten i en triangel

tedg.adf - Topologi för trianglarna och typen av dess kanter

Innehåller information om trianglarnas topologi och typen av deras kanter.

Det finns en post för varje triangel med varje 3 index, som pekar på positionen (indexnummer) i filen tnod.adf för att identifiera triangeln, som delar en kant med triangeln som beskrivs av den aktuella datamängden, och punkten av den triangeln, som bildar den kanten.

För varje triangel i tnod.adf finns en datamängd på samma filplats i tedg.adf . Vart och ett av värdena pekar på platsen i tnod.adf , där punkten är specificerad (index för den punkten) som bildar en kant. Samtidigt, eftersom platsen i tnod.adf och tedg.adf överensstämmer, pekar vart och ett av värdena på platsen i tedg.adf , där platsen för värdet anges. Regel: Om kanten a på triangeln A pekar mot kanten b på triangeln B , måste kanten b på triangeln B peka mot kanten a på triangeln A . Eftersom kantdefinition i tedg.adf och punktdefinition i tnod.adf för varje triangel är på samma plats som filerna, pekar indexen i tedg.adf på punktdefinitionen i tnod.adf för de intilliggande trianglarna.

Indexen kodar det faktiska indexet och typen av kanten. De faktiska indexen är inte filförskjutningar i byte , utan snarare i int32 -värden, i intervallet 1 till antalet poäng ([1, # poäng]). Om värdet är negativt (bit 31 är satt) är kanten en brytkant. används bit 30 av int32 -värdena för att bestämma om kanten är en hård eller mjuk brytkant. Om det faktiska indexet skulle vara 1234 (0x000004D2) så skulle en hård brytkant kodas som -1234 (0xFFFFFB2E) och en mjuk brytkant som -1073743058 (0xBFFFB2E). Kantdefinitionen för den angränsande triangeln måste spegla kanttypen. OBSERVERA: Detta beteende har förändrats sedan ArcGIS 10. Vänligen jämför med informationen i avsnittet ' Formatändringar och nya filer med ArcGIS 10 ' .

Datauppsättningen för varje triangel kan beskrivas med följande struktur:

Bytes Typ Endianness Användande
0–3 int32 stor Kodat index för punktdefinition (index för en punkt) för den intilliggande triangeln i tnod.adf som bildar en kant med den första punkten i triangeln
4–7 int32 stor Kodat index för punktdefinition (index för en punkt) för den intilliggande triangeln i tnod.adf som bildar en kant med den andra punkten i triangeln
8–11 int32 stor Kodat index för punktdefinition (index för en punkt) för den angränsande triangeln i tnod.adf som bildar en kant med den tredje punkten en triangel

tdenv.adf - Rubrik eller statistik

Den här filen innehåller information som kan ses som en blandning av filhuvud och statistikdata.

Bytes Typ Endianness Användande
0–3 int32 stor Antal poäng (vanliga poäng och superpunkter )
4–7 int32 stor Antal trianglar
8–11 int32 stor Antal index och separatorer i thul.adf
12–15 int32 stor 0 (i version 9) / antal banbrytande poster i teval.adf (version 10)
16–19 int32 stor Antal trianglar, ej maskerade i tmsk.adf
20–23 int32 stor Antal ordinarie poäng
24–27 int32 stor Antal superpunkter
28–31 flyta stor Minsta höjd (Z-värdet för den lägsta punkten; zmin)
32–35 flyta stor Maximal höjd (Z-värdet för den högsta punkten; zmax)
36–39 int32? stor Okänd, olika värden påträffade
40–47 dubbel stor Minsta utsträckning i X-riktning (xmin)
48–55 dubbel stor Minsta utsträckning i Y-riktning (ymin)
56–63 dubbel stor Maximal utsträckning i X-riktning (xmax)
64–71 dubbel stor Maximal utsträckning i Y-riktning (ymax)
72–79 dubbla ? stor Okänd, alltid 0
80–87 dubbla ? stor Okänd, olika värden påträffade
88–91 int32 stor Okänd, alltid 70001 (version 9) / 90001 (version 10); kanske ett versionsnummer
92–95 int32 liten 0 Antal använda taggar (inkl. tagg för superpoints )
96–99 int32? stor Okänd, alltid 0; kanske oanvända
100–103 int32? stor Okänd, alltid 0; kanske oanvända

thul.adf - Skrov, avgränsande polygon och hål

Innehåller en rad index och separatorer som definierar den yttre gränsen för TIN:et och dess hål. Indexen ligger inom intervallet 1 till antalet poäng ([1, antal poäng]). Separatorerna är -1 (0xFFFFFFFF) och noll (0).

Om TIN är konstruerat med hjälp av superpunkter (vanligtvis de första 4 punkterna), listar thul.adf indexen för dessa punkter och sedan -1 (0xFFFFFFFF). Efter separatorn följer en eller flera listor med index som bildar avgränsande polygoner (yttre gränser) och kanske hål (inre gränser). Dessa listor är separerade med noll (0) värden.

Om TIN-numret inte innehåller superpunkter börjar thul.adf med -1 (0xFFFFFFFF)-separatorn , som följs av en eller flera listor med index som bildar avgränsande polygoner (yttre gränser) och kanske hål (inre gränser). Dessa listor är separerade med noll (0) värden.

Indexen och separatorerna är 4 byte heltalsvärden (int32), lagrade i big-endian byteordning.

tmsk.adf - Mask

Innehåller en array av bitar (lagrade i 4 byte heltal) som anger synligheten för trianglarna i TIN. Detta kan användas för att dölja trianglarna inuti terränghål eller utanför terrängen (utanför de yttre gränserna).

Filen lagras med samma strukturer (rubrik och poster) som en shapefil , men eftersom den bara lagrar trianglarnas synlighetsvärden används många fält i rubriken.

Filhuvudet är fixerat till 100 byte i längd och innehåller 17 fält; nio 4-byte (32-bitars heltal med tecken eller int32) heltalsfält följt av åtta 8-byte ( dubbelt ) tecken med flyttal:

Bytes Typ Endianness Användande
0–3 int32 stor Filkod (alltid hex-värde 0x0000270a)
4–23 int32 stor Oanvänd; fem uint32
24–27 int32 stor Fillängd (i 16-bitars ord, inklusive rubriken)
28–31 int32 liten Version 0 ; förmodligen oanvänd
32–35 int32 liten Formtyp 0 ; förmodligen oanvänd
36–43 dubbel liten Minsta X-omfattning (alltid 0,0) ; oanvänd
44–51 dubbel liten Minsta Y-omfattning (alltid 0,0); oanvänd
52–59 dubbel liten Maximal X-omfattning (alltid 0,0) ; oanvänd
60–67 dubbel liten Maximal Y-omfattning (alltid 0,0); oanvänd
68–75 dubbel liten Minsta Z-omfattning (alltid 0,0) ; oanvänd
76–83 dubbel liten Maximal Z-omfattning (alltid 0,0) ; oanvänd
84–91 dubbel liten Minsta M-omfattning (alltid 0,0); oanvänd
92–99 dubbel liten Maximal M-omfattning (alltid 0,0); oanvänd

Filen innehåller då minst 2 poster. Varje post har prefixet en posthuvud på 8 byte:

Bytes Typ Endianness Användande
0–3 int32 stor Postnummer (1-baserat)
4–7 int32 stor Rekordlängd (i 16-bitars ord)

Efter posthuvudet finns de faktiska uppgifterna.

Post 1: Data för post nummer 1 är 2 ord lång och innehåller endast storleken på data för post nummer 2 i 4 byte heltal, lagrad som 4 byte heltal (big-endian) själv.

Post 2: Data för post nummer 2 innehåller följande struktur med variabel längd:

Bytes Typ Endianness Användande
0–3 int32 stor Antal heltal i maskmatrisen
4–7 int32 stor Oanvänd; alltid 0; kanske en offset (bitar, byte eller heltal?) i maskuppsättningen, där de faktiska maskbitarna börjar
8–11 int32 stor Antal använda bitar i maskmatrisen
12– uint32[] stor Maskarray

Bit 0 (minst signifikant bit) i det första heltal innehåller synlighetsflaggan (osynlig om satt till 1) för den första triangeln definierad i tnod.adf . Bit 1 i det första heltalet innehåller synlighetsflaggan (osynlig om den är inställd på 1) för den andra triangeln och så vidare. Alla 32 bitar av heltalen används (ingen teckenbit).

Post 0: Poster med postnummer 0 måste ignoreras.

tmsx.adf - Indexfil för masken

Indexfilen innehåller samma 100-byte-huvud som tmsk.adf -filen, följt av valfritt antal 8-byte poster med fast längd som består av följande två fält:

Bytes Typ Endianness Användande
0–3 int32 stor Record offset (i 16-bitars ord)
4–7 int32 stor Rekordlängd (i 16-bitars ord)

Med det här indexet är det möjligt att söka bakåt i tmsk.adf -filen genom att först söka bakåt i indexet (vilket är möjligt eftersom det använder poster med fast längd), sedan läsa postoffseten och använda den offseten för att söka till rätt position i filen tmsk.adf . Det är också möjligt att söka fram ett godtyckligt antal poster med samma metod.

Valfria filer

Beroende på vilken information som lagras i TIN, behövs några extra filer.

prj.abf - Projektion och CRS

Innehåller koordinatsystemet och projektionsinformation. Filen kan vara antingen i Esri- smaken av den välkända textrepresentationen av koordinatreferenssystemformat (WKT), en enkel nyckelord-värde-notation (Keyword: Projection , Datum , Spheroid , Units , Zunits , Xshift , Yshift , Zone , ...) eller har en enda rad {B286C06B-0879-11D2-AACA-00C04FA33C20} , vilket betyder ett okänt koordinatsystem.

tndcs.abf - Statistik över tagganvändning

Innehåller en array med 24 byte stor datamängd, en för varje använd tagg. Datauppsättningen innehåller taggen och antalet poäng med den taggen. Varje datamängd är strukturerad enligt följande:

Bytes Typ Endianness Användande
0–3 int32 liten Nummer på posten; börjar med 1
4–7 int32 liten Taggvärde
8–11 int32 liten Oanvänd; alltid 0; kanske reserverad för att utöka taggvärden till 64 bitar
12–15 int32 liten Antal poäng med taggen
16–19 int32? liten Oanvänd; alltid 0
20–23 int32? liten Okänd; alltid 0 i ArcGIS 9, olika värden i ArcGIS 10

tnval.abf - Punkttaggfil

0 Innehåller en matris med 4 byte heltalsvärden, en för varje (taggad) punkt i TIN. Värdena lagras i little-endian byteordning. Superpunkter har värdet (noll). Punkter utan tagg (t.ex. punkter som läggs till genom att bryta kanter) måste lagras sist i TIN-numret och har ingen post i denna fil.

Formatera ändringar och nya filer med ArcGIS 10

Sedan ArcGIS 10 har det skett några ändringar i TIN-filformatet. 2 nya filer ( teval.dbf och tnodinfo.dbf ) och 1 fil finns kvar.

tdenv9.dbf - tdenv.dbf bytt namn

Filstrukturen förblir densamma, bara fältet som innehåller antalet brytkanter används dessutom.

tnodinfo.dbf - Mer information om poängen

Innehåller en matris med 2 byte heltalsvärden. En kort för varje poäng. Syftet är fortfarande inte allmänt känt. Hittills verkar det vara någon slags bitmask eller kod, som beskriver användningen av punkten. Värdena verkar vara lagrade i big-endian byteordning.

Värde Hexadecimalt värde Användande
2 0x0002 Superpoint
4 0x0004 Vanlig punkt
24 0x0018 ?
88 0x0058 ?
132 0x0084 ?
280 0x0118 ?
284 0x011C ?
376 0x0178 ?
516 0x0204 ?
772 0x0304 ?
796 0x031C ?

teval.dbf - Den nya breaking edge-filen (del 1)

Innehåller en uppsättning datamängder som definierar brytkanterna för TIN, två för varje brytkant (en för varje riktning). Varje datamängd är 16 byte lång och strukturerad enligt följande:

Bytes Typ Endianness Användande
0–3 int32 stor Index för punktdefinition (index för en punkt) och kantdefinition (index för kanten) för den intilliggande triangeln i tnod.adf eller tedg.adf som bildar en brytkant
4–7 int32 stor Index för punktdefinition (index för en punkt) och kantdefinition (index för kanten) för den aktuella triangeln i tnod.adf eller tedg.adf som bildar en brytkant
8–11 int32 stor Typ av brytkant (4 för hårda kanter, 2 för mjuka kanter)
12–15 int32 stor Oanvänd; alltid 0

tedg.dbf - Den nya breaking edge-filen (del 2)

Sedan ArcGIS 10 har denna fil ändrats lite. Den innehåller fortfarande ett dataset för varje triangel, och referenserna/indexen för vanliga kanter är oförändrade, men kodningen av brytkanter är annorlunda. Brytkanter är fortfarande markerade med negativa värden, men indexet pekar inte längre på filpositionen i tnod.dbf och tedg.dbf , istället är värdets absoluta nummer numret för inmatningen av brytkanten i teval.dbf . Kodningen av mjuka kanter har också flyttats till teval.dbf .

Superpoint

I den här artikeln används termen "superpunkt" på flera platser. I avsaknad av en officiell filformatbeskrivning valdes denna term för att återspegla egenskaperna hos dessa punkter. (De kunde också ha kallats 'metapunkt', 'extrapunkt', 'oändlighetspunkt' och många fler.) En superpunkt i sammanhanget med Esri TIN-filformatet är en ytterligare punkt som lagts till av ArcGIS-mjukvaran under triangulering/generering av TENN. ArcGIS lägger vanligtvis till 4 av dessa punkter, en vardera väster, norr, öster och söder om de vanliga TIN-punkterna, på extremt höga avstånd. Superpunkterna är vanligtvis de första punkterna i punktfilerna tnxy.adf och tnz.adf . Trianglarna som är byggda med dessa punkter är vanligtvis maskerade (osynliga) i filen tmsk.adf .

Se även

  1. ^ a b Samaga, Uta. "Kartografisk 3D-modellering med dem ArcView 3D-analytiker" (PDF) . Hämtad 2015-04-27 .
  2. ^ a b   Ormsby, Tim; Alvi, Jonell (1999). Utöka ArcView GIS . ISBN 978-1-879-10205-7 .
  3. ^ "Föreläsning om ytor av Ronald Briggs, Ph.D., GISP" . Hämtad 2015-04-27 .
  4. ^ "Virtual Terrain Project ITF ("Intermediate TIN Format") formatbeskrivning" . Hämtad 2015-04-27 .
  5. ^ a b c d "Källkod för det virtuella terrängprojektet som läser Ersi TIN" . Hämtad 2015-04-27 .
  6. ^ "GeoEco Python Reference on ConvertSpatialReference Method" . Hämtad 2015-04-27 .

externa länkar