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
- ^ a b Samaga, Uta. "Kartografisk 3D-modellering med dem ArcView 3D-analytiker" (PDF) . Hämtad 2015-04-27 .
- ^ a b Ormsby, Tim; Alvi, Jonell (1999). Utöka ArcView GIS . ISBN 978-1-879-10205-7 .
- ^ "Föreläsning om ytor av Ronald Briggs, Ph.D., GISP" . Hämtad 2015-04-27 .
- ^ "Virtual Terrain Project ITF ("Intermediate TIN Format") formatbeskrivning" . Hämtad 2015-04-27 .
- ^ a b c d "Källkod för det virtuella terrängprojektet som läser Ersi TIN" . Hämtad 2015-04-27 .
- ^ "GeoEco Python Reference on ConvertSpatialReference Method" . Hämtad 2015-04-27 .
externa länkar
- ITF-format – Formatbeskrivning av "Intermediate TIN Format" som används i Virtual terrängprojektet.
- Välkänt textformat