07.07.2014 Views

Datastrukturer och modeller

Datastrukturer och modeller

Datastrukturer och modeller

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

<strong>Datastrukturer</strong> <strong>och</strong> <strong>modeller</strong><br />

Thomas Gumbicht<br />

tomasgu@infra.kth.se<br />

1<br />

<strong>Datastrukturer</strong>, Thomas Gumbricht, 2007


Föreläsningens innehåll <strong>och</strong> syfte<br />

Föreläsningen ger en introduktion till data<strong>modeller</strong> för<br />

Geografiska Informationssystem<br />

Binära dataformat<br />

Verklighet <strong>och</strong> model<br />

Objektmodel <strong>och</strong> fältmodel<br />

Raster data strukturer<br />

Vektor data strukturer<br />

Databaser<br />

2<br />

<strong>Datastrukturer</strong>, Thomas Gumbricht, 2007


Komponenter i GIS<br />

GIS är ett system<br />

som används för:<br />

presentation<br />

<strong>modeller</strong>ing<br />

analys<br />

data manipulering<br />

uppdatering<br />

datalagring<br />

datafångst<br />

av geografiska data<br />

3<br />

<strong>Datastrukturer</strong>, Thomas Gumbricht, 2007


<strong>Datastrukturer</strong> <strong>och</strong> <strong>modeller</strong><br />

GIS kräver att både kartor <strong>och</strong> attributdata representeras som siffror<br />

Konvertering av kartor till siffror kräver en väldefinierad standard för att<br />

geografiskt kodifiera lokalisering av kartdata<br />

Ett koordinatsystem är en standardiserad metod för geokodning<br />

Standardiserade koordinatsystem använder absoluta positioner,<br />

definierade av spheroid / datum (relativa koordinatsystem - med lokalt<br />

datum vanliga)<br />

I ett geografiskt koordinatsystem är normalt x-riktningen öst-väst, <strong>och</strong> y-<br />

riktningen nord-syd (undantag finns)<br />

Vanligtvis ökar koordinatvärdena åt öster <strong>och</strong> åt norr (undantag finns)<br />

4<br />

<strong>Datastrukturer</strong>, Thomas Gumbricht, 2007


<strong>Datastrukturer</strong> <strong>och</strong> <strong>modeller</strong><br />

Digitala kartor kräver entydiga <strong>och</strong> väldefinierade begrepp, <strong>och</strong><br />

strikt regel-baserad semantik för att kunna:<br />

representera en geografisk verklighet i form av en model<br />

identifiera den rumsliga utbredning av ensklida objekt<br />

lokalisera objekt i ett 2D/3D koordinatsystem<br />

separera intilliggande objekt från varandra<br />

identifiera <strong>och</strong> sortera objekt beroende på orientering, storlek, läge<br />

etc<br />

5<br />

<strong>Datastrukturer</strong>, Thomas Gumbricht, 2007


<strong>Datastrukturer</strong> <strong>och</strong> <strong>modeller</strong><br />

En digital karta består av geografiska objekt, <strong>och</strong> attribut<br />

knutna till dessa objekt<br />

GIS organiserar denna geografiska data i filer <strong>och</strong> kataloger<br />

på en hårddisk<br />

Data kan lagras antingen som<br />

binärt kodad (effektivare)<br />

ASCII text (direkt läs- <strong>och</strong> editerbart)<br />

6<br />

<strong>Datastrukturer</strong>, Thomas Gumbricht, 2007


<strong>Datastrukturer</strong> <strong>och</strong> <strong>modeller</strong><br />

det binära talsystemet<br />

7<br />

<strong>Datastrukturer</strong>, Thomas Gumbricht, 2007


Binär talrepresentation<br />

Benämning Bitar tecken Värdeområde<br />

Byte 8 signed -127..127<br />

Byte 8 unsigned 0..255<br />

Small integer 16 signed -32768..32768<br />

Word 16 unsigned 0..65535<br />

Integer 32 signed -2147483648..2147483648<br />

Cardinal 32 unsigned 0..4294967295<br />

Single 32 7-8 decimaler 1.5*10^-45..3.4*10^38<br />

Real48 48 11-12 decimaler 2.9*10^-39..1.7*10^38<br />

Double 64 15-16 decimaler 5.0*10^-324..1.7*10^308<br />

8<br />

<strong>Datastrukturer</strong>, Thomas Gumbricht, 2007


Binär talrepresentation<br />

LSB = Least Significant Bit/Byte<br />

MSB = Most Significant Bit/Byte<br />

I exemplet sitter MSB i den första<br />

positionen. Om strängen inverteras<br />

hamnar istället MSB i den sista positionen.<br />

På samma sätt kan ett integer tal (16<br />

bitar = 2 byte) konstrueras med MSB i<br />

första positionen = big endian, eller med<br />

LSB i första positionen = small endian.<br />

9<br />

<strong>Datastrukturer</strong>, Thomas Gumbricht, 2007


Binär talrepresentation<br />

ASCII American National Standards Institute<br />

10<br />

<strong>Datastrukturer</strong>, Thomas Gumbricht, 2007


Verklighet <strong>och</strong> modell<br />

Världen är oändligt komplex<br />

Innehållet i en databas representerar en<br />

begränsad syn på verkligheten; en rumslig<br />

databas är en av oändligt många möjliga<br />

representationer av <strong>modeller</strong> av<br />

verkligheten<br />

Ontologiska aspekter<br />

Epistomological aspekter<br />

Användarens tillgång till <strong>och</strong> tolkning av<br />

en rumslig databas är via ett gränssnitt<br />

11<br />

<strong>Datastrukturer</strong>, Thomas Gumbricht, 2007


Verklighet <strong>och</strong> modell<br />

En rumslig databas kan innehålla<br />

Digitala abstraktioner av verkliga objekt<br />

ex.v. land, vatten, hus, vägar, träd<br />

Digitala abstraktioner av fiktiva objekt<br />

ex.v. politiska gränser, ekosystem<br />

12<br />

<strong>Datastrukturer</strong>, Thomas Gumbricht, 2007


Verklighet <strong>och</strong> modell<br />

Datorer är bra på att<br />

lagra diskret data, men<br />

sämre på att lagra<br />

kontinuerlig data - till<br />

syvende <strong>och</strong> sidst är allt<br />

lagrat som 1 eller 0.<br />

13<br />

<strong>Datastrukturer</strong>, Thomas Gumbricht, 2007


Verklighet <strong>och</strong> modell<br />

Objekt som är av diskret natur,<br />

hus, vägar, distrikt etc, vållar inga<br />

problem att representera som<br />

diskreta objekt.<br />

Egenskaper som finns överallt<br />

<strong>och</strong> som varierar kontinuerligt,<br />

elevation, temperatur, lufttryck,<br />

måste approximeras till en<br />

diskret representation.<br />

14<br />

<strong>Datastrukturer</strong>, Thomas Gumbricht, 2007


Verklighet <strong>och</strong> modell<br />

punkter, linjer <strong>och</strong> areor<br />

Diskreta<br />

objekt<br />

bestämt antal<br />

Existerar över tid,<br />

kan vara mobila<br />

Geografisk<br />

model<br />

Koninuerliga<br />

fält<br />

specifik localisering<br />

Exempel: topografi, mänskliga objekt, indivier, etc.<br />

Egenskaper som varierar<br />

kontinuerligt i rummet<br />

Mätbara<br />

fenomoen<br />

värde = f(position)<br />

värden finns för alla plater<br />

Exemples: höjd, temperatur, fuktighet,<br />

befolkningstäthet, etc.<br />

15<br />

<strong>Datastrukturer</strong>, Thomas Gumbricht, 2007


Verklighet <strong>och</strong> modell<br />

Diskreteringen av kontinuerliga fenomen<br />

är ofta godtycklig<br />

16<br />

<strong>Datastrukturer</strong>, Thomas Gumbricht, 2007


Objektmodell <strong>och</strong> fältmodell<br />

GIS-samhället har utvecklat konceptuella<br />

<strong>modeller</strong> av verkligheten, sprungna ur<br />

kartografi snarare än datalogi:<br />

Objektmodel - punkter, linjer, ytor<br />

fyller upp alla delar av rummet<br />

Fältmodel - Värden för varje position<br />

17<br />

<strong>Datastrukturer</strong>, Thomas Gumbricht, 2007


Tesselerings<strong>modeller</strong><br />

Raster data modellen tillhör en större grupp av<br />

fältdata<strong>modeller</strong> eller tesselerings<strong>modeller</strong>:<br />

Grid eller raster<br />

Hexagonaler<br />

Triangular Irregular Network (TIN)<br />

Kvadratträd<br />

18<br />

<strong>Datastrukturer</strong>, Thomas Gumbricht, 2007


Fältmodel<br />

Raster = regelbunden tesselering<br />

Delar upp världen i rektangulära celler<br />

Registrerar grid-hörnen till en geografisk punkt<br />

Representerar diskreta objekt som grupper av celler<br />

med eller utan attributkoppling (koppling via<br />

indexnummer)<br />

Representerar fält som cellvärden (utan<br />

attributkoppling)<br />

Värden för varje cell<br />

Även celler utan relevant data lagras, som “ingen data”<br />

Vanligare att använda för fältobjekt<br />

Lätt att förstå<br />

19<br />

<strong>Datastrukturer</strong>, Thomas Gumbricht, 2007


Raster data struktur<br />

Delar upp världen i rektangulära celler = pixlar<br />

Registrerar grid-hörnen till en geografisk punkt<br />

diskreta objekt<br />

grupper av celler<br />

Kontinuerliga fält<br />

cellvärdet = fältvärdet<br />

20<br />

<strong>Datastrukturer</strong>, Thomas Gumbricht, 2007


Raster data struktur<br />

Jordbruksmark<br />

Våtmark<br />

Skog<br />

Bebyggelse<br />

Raster data struktur<br />

för diskreta objekt -<br />

markanvänding.<br />

21<br />

<strong>Datastrukturer</strong>, Thomas Gumbricht, 2007


Raster<br />

Pixel storlek<br />

Storleken på cellen eller<br />

bildelementen som definierar den<br />

rumsliga detaljeringsgraden/<br />

upplösningen<br />

kan vara olika i x <strong>och</strong> y<br />

Tilldelning av cellvärden - värdet på<br />

en cell kan representera<br />

medelvärdet för cellens yta<br />

typvärdet för cellens yta<br />

mittvårdet för cellets yta<br />

22<br />

<strong>Datastrukturer</strong>, Thomas Gumbricht, 2007


Kolumner<br />

Raster data struktur<br />

Rader<br />

Y-storlek<br />

0 0 0 0 1 7 7 7 7 7<br />

0 0 0 1 7 7 8 7 7 7<br />

0 0 0 0 1 7 7 7 7 7<br />

0 0 0 1 6 6 6 6 6 6<br />

0 0 1 3 6 6 6 6 6 6<br />

0 1 3 3 3 6 6 6 6 6<br />

1 2 2 3 3 3 4 4 6 6<br />

2 2 2 2 3 4 4 4 6 6<br />

2 2 2 4 4 4 4 5 6 6<br />

2 2 2 2 4 4 4 4 6 6<br />

Cell<br />

X-storlek<br />

Cell/pixel storlek =<br />

rumslig upplösning<br />

definierar detaljnivå för rumsliga objekt<br />

variationer inuti pixeln går förlorad<br />

23<br />

Datasrukturer, Thomas Gumbricht, 2007


Raster<br />

Mixade pixlar - ett problem med raster<br />

V<br />

L<br />

Vatten dominant<br />

V V L<br />

V V L<br />

V V L<br />

Segraren tar allt<br />

V L L<br />

V L L<br />

V L L<br />

ekotoner som egen klass<br />

V E L<br />

V E L<br />

V E L<br />

24<br />

<strong>Datastrukturer</strong>, Thomas Gumbricht, 2007


Raster<br />

Lagring av rasterdata<br />

Sekventiell lagring<br />

Byte Interleaved by Pixel - BIP<br />

Byte Interleaved by Line - BIL<br />

Band Sequential - BSQ<br />

Blockkodning<br />

Kedjekodning<br />

Radlängdskodning<br />

Kvadratträd<br />

25<br />

<strong>Datastrukturer</strong>, Thomas Gumbricht, 2007


Raster<br />

Filstorlek<br />

rader*kolumner*”Byte per pixel” = filstorlek<br />

Storlek på fil med byte-värden (1 byte per pixel)<br />

rader*kolumner<br />

26<br />

<strong>Datastrukturer</strong>, Thomas Gumbricht, 2007


Raster<br />

metadata <strong>och</strong> huvudfil<br />

Exempel 1: Byte data<br />

ERmapper (mest<br />

komplett header,<br />

projektionen länkar till<br />

biblioteksfil)<br />

DatasetHeader Begin<br />

Version = "5.5"<br />

Description = "NOAA-AVHHR NDVI annual average "<br />

DataSetType = ERStorage<br />

DataType = Raster<br />

ByteOrder = LSBFirst<br />

CoordinateSpace Begin<br />

Datum = "CLARKE 1866"<br />

Projection = "ALBERSEA"<br />

CoordinateType = EN<br />

Rotation = 0:0:0.0<br />

CoordinateSpace End<br />

RasterInfo Begin<br />

CellType = Unsigned8BitInteger<br />

NullCellValue = 0<br />

CellInfo Begin<br />

Xdimension = 8000<br />

Ydimension = 8000<br />

CellInfo End<br />

NrOfLines = 360<br />

NrOfCellsPerLine = 450<br />

RegistrationCoord Begin<br />

Eastings = -3920000<br />

Northings = 3250000<br />

RegistrationCoord End<br />

NrOfBands = 1<br />

BandId Begin<br />

Value = "Pseudo"<br />

BandId End<br />

RasterInfo End<br />

DatasetHeader End<br />

27<br />

<strong>Datastrukturer</strong>, Thomas Gumbricht, 2007


Raster<br />

metadata <strong>och</strong> huvudfil ;<br />

; ArcView Image Information<br />

; NOAA-AVHRR NDVI annual average<br />

Exempel 1: Byte data<br />

ArcGIS (projektion som<br />

kommentar, måste ligga<br />

i separat .PRJ fil)<br />

; Projection: ALBERS (Albers Equal Area Conic)<br />

; Units: METERS<br />

; Spheroid: CLARKE1866<br />

; 1st standard parallel (dms): -19 00 0.000<br />

; 2nd standard parallel (dms): 21 00 0.000<br />

; central meridian (dms): 20 00 0.000<br />

; latitude of projection origin: 1 00 0.000<br />

; false easting (meters): 0.00000<br />

; false northing (meters): 0.00000<br />

;<br />

NCOLS 450<br />

NROWS 360<br />

NBANDS 1<br />

NBITS 8<br />

LAYOUT BIL<br />

BYTEORDER I<br />

SKIPBYTES 0<br />

MAPUNITS METERS<br />

ULXMAP -3916000<br />

ULYMAP 3246000<br />

XDIM 8000.00000<br />

YDIM 8000.00000<br />

28<br />

<strong>Datastrukturer</strong>, Thomas Gumbricht, 2007


Raster<br />

metadata <strong>och</strong> huvudfil file format : IDRISI Raster A.1<br />

file title : NOAA-AVHHR NDVI annual average<br />

data type : byte<br />

Exempel 1: Byte data<br />

IDRISI (projektionen<br />

länkar till biblioteksfil)<br />

file type : binary<br />

columns : 450<br />

rows : 360<br />

ref. system : albersaf<br />

ref. units : m<br />

unit dist. : 1.0000000<br />

min. X : -3920000.0000000<br />

max. X : -320000.0000000<br />

min. Y : 370000.0000000<br />

max. Y : 3250000.0000000<br />

pos'n error : unknown<br />

resolution : 8000.0000000<br />

min. value : 0<br />

max. value : 255<br />

display min : 0<br />

display max : 255<br />

value units : unspecified<br />

value error : unknown<br />

flag value : none<br />

flag def'n : none<br />

legend cats : 0<br />

29<br />

<strong>Datastrukturer</strong>, Thomas Gumbricht, 2007


Raster<br />

metadata <strong>och</strong> huvudfil<br />

Exempel 1: Byte data<br />

ENVI (projektionen<br />

länkar till biblioteksfil)<br />

ENVI<br />

description = {<br />

NOAA-AVHHR NDVI annual average }<br />

samples = 450<br />

lines = 360<br />

bands = 1<br />

header offset = 0<br />

file type = ENVI Standard<br />

data type = 1<br />

interleave = bsq<br />

sensor type = AVHRR<br />

byte order = 0<br />

map info = {Albers_NDVI_ADDS, 1.0000, 1.0000, -3916000, 3246000, 8.0000000000e+003, 8.0000000000e+003, , units=Meters}<br />

projection info = {9, 6378206.4, 6356583.8, 1.000000, 20.000000, 0.0, 0.0, -19.000000, 21.000000, Albers_NDVI_ADDS, units=Meters}<br />

wavelength units = Unknown<br />

band names = {<br />

NDVI}<br />

30<br />

<strong>Datastrukturer</strong>, Thomas Gumbricht, 2007


Raster<br />

metadata <strong>och</strong> huvudfil<br />

Exempel 1: Byte data<br />

DIVA (projektionen<br />

länkar till biblioteksfil)<br />

Version=4.1<br />

Title=NDVIg Annual mean 2004<br />

Created=20050306<br />

[GeoReference]<br />

Projection=ALBERS<br />

Datum=CLARKE1866<br />

Mapunits=m<br />

Columns=450<br />

Rows=360<br />

MinX=-3920000<br />

MaxX=-32000<br />

MinY=37000<br />

MaxY=3250000<br />

ResolutionX=8000<br />

ResolutionY=8000<br />

[Data]<br />

DataType=BYTE<br />

MinValue=0<br />

MaxValue=255<br />

NoDataValue=-9999<br />

Transparent=1<br />

Units=NDVI<br />

[Application]<br />

31<br />

<strong>Datastrukturer</strong>, Thomas Gumbricht, 2007


Raster<br />

metadata <strong>och</strong> huvudfil<br />

Exempel 1: Byte data<br />

JPG (*.jpw, *.jpgw)<br />

TIF (*.tfw)<br />

BMP (*.bmpw)<br />

Denna typ av huvudfil kallas<br />

“world”-fil <strong>och</strong> kan följa med<br />

alla typer av bildformat.<br />

Huvudfilen innehåller 6 rader<br />

8000 (upplösning i X)<br />

0 (rotation)<br />

0 (rotation)<br />

-8000 (upplösning i Y)<br />

-3916000 (X-koordinat för centrum av övre vänstra pixeln)<br />

3246000 (Y-koordinat för centrum av övre vänstra pixeln)<br />

32<br />

<strong>Datastrukturer</strong>, Thomas Gumbricht, 2007


Raster<br />

metadata <strong>och</strong> huvudfil<br />

Exempel 2: Integer data<br />

ERmapper<br />

DatasetHeader Begin<br />

Version = "5.5"<br />

Description = "NOAA-AVHHR NDVI annual npp "<br />

DataSetType = ERStorage<br />

DataType = Raster<br />

ByteOrder = LSBFirst<br />

CoordinateSpace Begin<br />

Datum = "CLARKE 1866"<br />

Projection = "ALBERSEA"<br />

CoordinateType = EN<br />

Rotation = 0:0:0.0<br />

CoordinateSpace End<br />

RasterInfo Begin<br />

CellType = Unsigned16BitInteger<br />

NullCellValue = 0<br />

CellInfo Begin<br />

Xdimension = 8000<br />

Ydimension = 8000<br />

CellInfo End<br />

NrOfLines = 360<br />

NrOfCellsPerLine = 450<br />

RegistrationCoord Begin<br />

Eastings = -3920000<br />

Northings = 3250000<br />

RegistrationCoord End<br />

NrOfBands = 1<br />

BandId Begin<br />

Value = "Pseudo"<br />

BandId End<br />

RasterInfo End<br />

DatasetHeader End<br />

33<br />

<strong>Datastrukturer</strong>, Thomas Gumbricht, 2007


Raster<br />

metadata <strong>och</strong> huvudfil<br />

Exempel 3: real data<br />

ERmapper<br />

DatasetHeader Begin<br />

Version = "5.5"<br />

Description = "NDVI annual max trend 1982-2004"<br />

DataSetType = ERStorage<br />

DataType = Raster<br />

ByteOrder = LSBFirst<br />

CoordinateSpace Begin<br />

Datum = "CLARKE 1866"<br />

Projection = "ALBERSEA"<br />

CoordinateType = EN<br />

Rotation = 0:0:0.0<br />

CoordinateSpace End<br />

RasterInfo Begin<br />

CellType = IEEE32REAL<br />

NullCellValue = 0<br />

CellInfo Begin<br />

Xdimension = 8000<br />

Ydimension = 8000<br />

CellInfo End<br />

NrOfLines = 360<br />

NrOfCellsPerLine = 450<br />

RegistrationCoord Begin<br />

Eastings = -3920000<br />

Northings = 3250000<br />

RegistrationCoord End<br />

NrOfBands = 1<br />

BandId Begin<br />

Value = "Pseudo"<br />

BandId End<br />

RasterInfo End<br />

DatasetHeader End<br />

34<br />

<strong>Datastrukturer</strong>, Thomas Gumbricht, 2007


Vektor data model<br />

Verkliga eller fiktiva objekt representerade som<br />

punkter, linjer <strong>och</strong> ytor<br />

punkter representar objekt utan<br />

utbredning, eller med för skalan irrelevant<br />

utbredning<br />

linjer knyter samman punkter till start-,<br />

bryt-, <strong>och</strong> stoppunkter<br />

ytor (polygoner) byggs upp av slutna linjer<br />

35<br />

<strong>Datastrukturer</strong>, Thomas Gumbricht, 2007


Vektor data model<br />

Y<br />

Puntker Linjer Ytor<br />

X<br />

36<br />

<strong>Datastrukturer</strong>, Thomas Gumbricht, 2007


Vektor data model<br />

Precision <strong>och</strong> noggrannhet<br />

Objekt definieras av x,y koordinater relaterade<br />

till ett koordinatsystem (long/lat eller x,y).<br />

Presicion (upplösning) i koordinater beror på<br />

binär lagringsform (6-15 decimaler), men är ofta<br />

hög<br />

Noggrannheten i data oftast mer begränsande än<br />

upplösning<br />

37<br />

<strong>Datastrukturer</strong>, Thomas Gumbricht, 2007


Vektor data model<br />

Precision <strong>och</strong> noggrannhet<br />

Precision är det minsta avstånd mellan två<br />

intilliggande objekt som uppmätts <strong>och</strong> lagrats.<br />

Noggrannhet är frånvaro av fel<br />

Osäkerhet är ett mer generellt begrepp, <strong>och</strong><br />

inkluderar både precision <strong>och</strong> noggrannhet.<br />

38<br />

<strong>Datastrukturer</strong>, Thomas Gumbricht, 2007


Vektor data model<br />

Punktdata<br />

(x,y)<br />

Flaggstång<br />

Byggnad<br />

Stad<br />

39<br />

<strong>Datastrukturer</strong>, Thomas Gumbricht, 2007


Vektor data model<br />

Linjedata<br />

(x 1 ,y 1 )<br />

(x 2 ,y 2 ) (x 3 ,y 3 )<br />

(x 4 ,y 4 )<br />

Vattendrag<br />

Väg<br />

Järnväg<br />

Staket<br />

40<br />

<strong>Datastrukturer</strong>, Thomas Gumbricht, 2007


Vektor data model<br />

Areadata<br />

(x 1 ,y 1 )<br />

(x 5 ,y 5 )<br />

(x 2 ,y 2 ) (x 3 ,y 3 )<br />

(x 4 ,y 4 )<br />

Sjö<br />

Skog<br />

Stad<br />

Fastighet<br />

41<br />

<strong>Datastrukturer</strong>, Thomas Gumbricht, 2007


Vektor data model<br />

Tre huvudsakliga <strong>modeller</strong> för att lagra vektorer<br />

Enkel (eller spaghetti) data struktur<br />

Ingen logik, dubblering av data<br />

(inom ett lager)<br />

Punkt listor<br />

Ingen logik, ingen dubblering<br />

topologisk struktur<br />

Logik, ingen dubblering<br />

42<br />

<strong>Datastrukturer</strong>, Thomas Gumbricht, 2007


Vektor data model<br />

Spaghetti vektor data model<br />

Varje punkt, linje eller polygon lagras i en post (“record”)<br />

som innehåller Id <strong>och</strong> koordinater som definierar geometri<br />

(de första GIS-programmen hade spaghetti data struktur)<br />

Punkter Linjer Ytor<br />

43<br />

<strong>Datastrukturer</strong>, Thomas Gumbricht, 2007


Vektor data model<br />

Spaghetti vektor data model<br />

Fördelar<br />

enkelt<br />

effektiv för display <strong>och</strong> utskrift<br />

Nackdelar<br />

Ineffektivt för rumsliga analyser<br />

<strong>och</strong> generaliseringar<br />

44<br />

<strong>Datastrukturer</strong>, Thomas Gumbricht, 2007


Vektor data model<br />

Punkt data struktur<br />

Ingen data redundans<br />

Ingen topologi<br />

45<br />

<strong>Datastrukturer</strong>, Thomas Gumbricht, 2007


Vektor data model<br />

Topologisk data struktur<br />

Nätverkstopologi<br />

kallas även “ark-nod” modellen<br />

ark = linje<br />

nod = slutpunkt på en linje, eller en punkt där<br />

en lijne splittras eller linjer går samman<br />

46<br />

<strong>Datastrukturer</strong>, Thomas Gumbricht, 2007


Vektor data model<br />

Topologisk data struktur<br />

registrerar x/y koordinater<br />

av rumsliga objekt<br />

Kodar rumsliga relationer:<br />

vilka arkar kopplar till<br />

vilken nod<br />

vilka ytor ligger på sidorna<br />

av en ark<br />

vilka arkar bygger en<br />

polygon<br />

47<br />

<strong>Datastrukturer</strong>, Thomas Gumbricht, 2007


Vektor data model<br />

Spaghetti modell <strong>och</strong> topologisk model<br />

Spaghetti: registrering<br />

som 2 eller 3 ytor<br />

Topologiskt: registrering<br />

som 3 ytor<br />

48<br />

<strong>Datastrukturer</strong>, Thomas Gumbricht, 2007


Vektor data model<br />

topologisk vektor data model<br />

Fördelar<br />

Rumsliga relationer är explicita<br />

Rumslig analys utan koordinater möjlig<br />

Nackdelar<br />

komplex data struktur<br />

topologi måste omregistreras efter varje<br />

uppdatering<br />

Fördelaktigaste systemet för flertalet användare<br />

49<br />

<strong>Datastrukturer</strong>, Thomas Gumbricht, 2007


Jämförelse mellan raster <strong>och</strong> vektor<br />

Fördelar<br />

Raster<br />

Nackdelar<br />

- Enkel <strong>och</strong> läsbar lagring.<br />

- Enkelt att analysera<br />

(algoritmer från fjärranalys <strong>och</strong><br />

bildbehandling)<br />

Enkla att kombinera<br />

(överläggning).<br />

- Kvalitet beror på pixel-storlek.<br />

- Kräver mycket fysisk<br />

lagringskapacitet: grid formatet<br />

växer kvadratiskt när cellstroleken<br />

minskar.<br />

Fördelar<br />

- Enkelt att skala om, kvalitet<br />

behålls vid transformaioner.<br />

- Enkelt med topologiska <strong>och</strong><br />

nätverksberäknignar.<br />

- Effektivt utnyttjande av fysisk<br />

lagringskapacitet.<br />

Vektor<br />

Nackdelar<br />

- Beräkningsmässigt mer krävande<br />

för flera standardberäkningar<br />

(Filtrering, överläggning).<br />

50<br />

<strong>Datastrukturer</strong>, Thomas Gumbricht, 2007


Jämförelse mellan raster <strong>och</strong> vektor<br />

Fördelar<br />

Raster<br />

Nackdelar<br />

- Enkel <strong>och</strong> läsbar lagring.<br />

- Enkelt att analysera<br />

(algoritmer från fjärranalys <strong>och</strong><br />

bildbehandling)<br />

Enkla att kombinera<br />

(överläggning).<br />

- Kvalitet beror på pixel-storlek.<br />

- Kräver mycket fysisk<br />

lagringskapacitet: grid formatet<br />

växer kvadratiskt när cellstroleken<br />

minskar.<br />

Fördelar<br />

- Enkelt att skala om, kvalitet<br />

behålls vid transformaioner.<br />

- Enkelt med topologiska <strong>och</strong><br />

nätverksberäknignar.<br />

- Effektivt utnyttjande av fysisk<br />

lagringskapacitet.<br />

Vektor<br />

Nackdelar<br />

- Beräkningsmässigt mer krävande<br />

för flera standardberäkningar<br />

(Filtrering, överläggning).<br />

51<br />

<strong>Datastrukturer</strong>, Thomas Gumbricht, 2007


Databaser<br />

GIS är ett system<br />

som används för:<br />

presentation<br />

<strong>modeller</strong>ing<br />

analys<br />

data manipulering<br />

uppdatering<br />

datalagring<br />

datafångst<br />

av geografiska data<br />

52<br />

<strong>Datastrukturer</strong>, Thomas Gumbricht, 2007


Databaser<br />

Databasutveckling<br />

Entitity-relationship-modellen (ER)<br />

Konkret exempel<br />

53<br />

<strong>Datastrukturer</strong>, Thomas Gumbricht, 2007


Databaser<br />

Databastekniken utvecklades på 1970 talet för flygbokningar etc<br />

Konceptuella metoder uppstod ungefär samtidigt, av vilka ER-modellen<br />

(Entity-Relationship-modellen) fortfarande används<br />

Objekt<strong>modeller</strong>ing (UML) är en modernare konceptuell metod, som liknar<br />

objekt-orienterad programmering med hierarkiska klasser <strong>och</strong> ärvda<br />

egenskaper.<br />

Den vanligaste formen av databas är RelationsDataBaser (RDB); när en<br />

konceptuell modell är klar översätts den till en RDB<br />

Vanliga RelationsDataBaser inkluder Access, DBase, Oracle, My SQL<br />

De flesta RDB har anammat samma standard för hur man ställer frågor -<br />

Standar Query Language (SQL)<br />

54<br />

<strong>Datastrukturer</strong>, Thomas Gumbricht, 2007


Databaser<br />

Databasutvecklingsprocessen<br />

Samla information<br />

Vilka data ska med,<br />

vad ska man använda data till,<br />

vem ska kunna bearbeta data etc<br />

Ta fram en begreppsmodell<br />

Formalisera ett databasschema<br />

ERmodell<br />

Objektmodell (UML)<br />

Anpassa databasshemat till<br />

relationsdatabassystem<br />

Skapa databasen i<br />

relationsdatabassystem<br />

55<br />

<strong>Datastrukturer</strong>, Thomas Gumbricht, 2007


Databaser<br />

Entitity-relationship-modellen<br />

Entiteter = logiska klasser hörande till databasen<br />

Samband = relationer mellan entiteter<br />

Attribut = datatyper som hör till entiteten<br />

56<br />

<strong>Datastrukturer</strong>, Thomas Gumbricht, 2007


Databaser<br />

Erfarenhetsregler<br />

1. Lagra data i tabeller, där varje fält (kolumn) ska ha ett unikt namn <strong>och</strong> en<br />

entydig datatyp<br />

2. Varje post (rad) i en tabell måste vara unik<br />

3. Lägg fält vars värden förekommer i flera poster (rader) i tabellen i egna tabeller<br />

4. Inga fält (kolumner) i tabellen får vara sammansatta av flera logiskt oberoende<br />

storheter<br />

5. Inga fält (kolumner) i tabellen får innehålla upprepade värden av samma<br />

storhet<br />

Bunta ihop reglerna 2,4 <strong>och</strong> 5 = första normalformen (1NF)<br />

First Normal Form -> Second Normal Form -> Third Normal Form -><br />

-> Boyce-Codd Normal Form -> Fourth Normal Form -><br />

-> Fifth Normal Form -> Domain/Key Normal Form<br />

57<br />

<strong>Datastrukturer</strong>, Thomas Gumbricht, 2007


Normalformer eller erfarenhetsregler<br />

Första normalformen (1NF) = Separata tabeller för relaterad data,<br />

primärnyckel i varje tabell, ett värde per fält (inga listor)<br />

Andra normalformen (2NF) = alla fält i en tabell som inte är<br />

primärnyckel ska vara helt beroende av primärnyckeln, inga<br />

redundanta (överlappande) data<br />

Tredje normalformen (3NF) = Alla fält utom primärnyckeln ska vara<br />

oberoende av varandra, men beroende av primärnyckeln<br />

Boyce-Codd Normal Form (BCNF) = 3NF med tillägget att icke-triviala<br />

samband (ex.v. personnummer <strong>och</strong> stud id) mellan fält inte är tillåtet<br />

(ovanligt att man uppnår 3NF men bryter mot BCNF)<br />

Fjärde normalformen (4NF) = Isolera oberoende multipla relationer i<br />

en enskild tabell ska inte finnas<br />

Optimal naormalform (ONF) = En model baserad på endast<br />

grundläggande objekt orienterade element<br />

Domain-Key Normal Form (DKNF) = En modell helt utan redundans<br />

<strong>och</strong> anomalier<br />

58<br />

Datainsamling, Thomas Gumbricht, 2007


ptevent<br />

event_id<br />

exp_id<br />

log_id<br />

ptdate<br />

pttime<br />

ptid<br />

ptlong<br />

ptlat<br />

ptelev<br />

ptaccur<br />

ptlabel<br />

pturl<br />

lblcolor<br />

lbltf_id<br />

lblsize<br />

lblopac<br />

icon_id<br />

iconcol<br />

iconopac<br />

iconsize<br />

pub_id<br />

sale_id<br />

thm_id<br />

subt_id<br />

(e.g. vägpunkt från GPS)<br />

bigint<br />

bigint<br />

integer<br />

date<br />

time<br />

varchar(32)<br />

decimal(13,8)<br />

decimal(13,8)<br />

decimal(10,5)<br />

decimal(10,5)<br />

decimal(10,5)<br />

varchar(255)<br />

varchar(16)<br />

smallint<br />

tinyint<br />

tinyint<br />

smallint<br />

varchar(16)<br />

tinyint<br />

tinyint<br />

tinyint<br />

tinyint<br />

smallint<br />

smallint<br />

primärnyckel<br />

Länkfält<br />

Länkarna skapas i SQL i realtid<br />

inte vid design<br />

59<br />

Datainsamling, Thomas Gumbricht, 2007


explorer (den som fångat vägpunkten)<br />

primärnyckel<br />

exp_id bigint<br />

efname varcar(32)<br />

emname varchar(32)<br />

elname varchar(32)<br />

eusrname varchar(32)<br />

epswd varchar(32)<br />

egender char(1)<br />

ebirth date<br />

cat_id tinyint<br />

pay_id tinyint<br />

regdate date<br />

lastdate date<br />

nrlogin smallint<br />

email varchar(32)<br />

phone1 varchar(20)<br />

phone2 varchar(20)<br />

adress1 varchar(32)<br />

adress2 varchar(32)<br />

cmpny varchar(32)<br />

deptm varchar(32)<br />

cntry_id char(2)<br />

state_id char(2)<br />

city varchar(32)<br />

postcode varchar(8)<br />

work_id tinyint<br />

pub_id tinyint<br />

60<br />

Datainsamling, Thomas Gumbricht, 2007


logexp<br />

log_id<br />

mylog_id<br />

exp_id<br />

logname<br />

logdate<br />

lastdate<br />

log_mode<br />

log_nav<br />

devc_id<br />

site_id<br />

logtheme<br />

logtitle<br />

icon_id<br />

(loggen för en samling ptevents)<br />

primärnyckel<br />

bigint<br />

integer<br />

bigint<br />

varchar(32)<br />

date<br />

date<br />

tinyint<br />

tinyint<br />

smallint<br />

bigint<br />

smallint<br />

varchar(32)<br />

smallint<br />

61<br />

Datainsamling, Thomas Gumbricht, 2007


SQL-sats för att<br />

skapa tabellen<br />

ptevent<br />

CREATE TABLE ptevent (<br />

event_id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,<br />

logpt_id TINYINT UNSIGNED,<br />

exp_id BIGINT UNSIGNED NOT NULL,<br />

log_id INTEGER UNSIGNED NOT NULL,<br />

ptdate DATE,<br />

pttime TIME,<br />

ptid VARCHAR(32),<br />

ptlong DECIMAL(13,8),<br />

ptlat DECIMAL(13,8),<br />

ptelev DECIMAL(10,5),<br />

ptaccur DECIMAL(10,5),<br />

ptlabel VARCHAR(255),<br />

pturl VARCHAR(255),<br />

lblcolor VARCHAR (10),<br />

lbltf_id SMALLINT UNSIGNED,<br />

lblsize TINYINT UNSIGNED,<br />

lblopac TINYINT UNSIGNED,<br />

icon_id SMALLINT UNSIGNED,<br />

iconcol VARCHAR (10),<br />

iconopac TINYINT UNSIGNED,<br />

iconsize TINYINT UNSIGNED,<br />

pub_id TINYINT UNSIGNED,<br />

sale_id TINYINT UNSIGNED,<br />

thm_id SMALLINT UNSIGNED,<br />

subt_id SMALLINT UNSIGNED,<br />

thm_link TINYINT UNSIGNED,<br />

PRIMARY KEY (event_id)<br />

);<br />

62<br />

Datainsamling, Thomas Gumbricht, 2007


Några hjälptabeller i databasen<br />

movemode<br />

mode_id tinyint<br />

movetype varchar(32)<br />

moveshrt varchar(16)<br />

logpal<br />

log_id<br />

exp_id<br />

tinyint<br />

bigint<br />

navmode<br />

nav_id tinyint<br />

navtype varchar(32)<br />

navshrt varchar(16)<br />

exppal<br />

pal_id<br />

exp_id<br />

bigint<br />

bigint<br />

public<br />

paltyp<br />

pub_id<br />

tinyint<br />

pal_id<br />

tinyint<br />

pubtype<br />

varchar(16)<br />

palname<br />

varchar(16)<br />

device<br />

devc_id<br />

integer<br />

devname<br />

varchar(64)<br />

63<br />

Datainsamling, Thomas Gumbricht, 2007


Några kopplingar i databasen<br />

icontype<br />

navmode<br />

colors<br />

ptevent<br />

logexp<br />

device<br />

movemode<br />

public<br />

explorer<br />

64<br />

Datainsamling, Thomas Gumbricht, 2007


Datainsamling, Thomas Gumbricht, 2007<br />

65<br />

Länkfält i databasen<br />

logexp<br />

log_id<br />

bigint<br />

mylog_id<br />

integer<br />

exp_id<br />

bigint<br />

logname<br />

varchar(32)<br />

logdate<br />

date<br />

lastdate<br />

date<br />

log_mode tinyint<br />

log_nav<br />

tinyint<br />

devc_id<br />

smallint<br />

site_id<br />

bigint<br />

logtheme<br />

smallint<br />

logtitle<br />

varchar(32)<br />

icon_id<br />

smallint<br />

event_id<br />

bigint<br />

exp_id<br />

bigint<br />

log_id<br />

integer<br />

ptdate<br />

date<br />

pttime<br />

time<br />

ptid<br />

varchar(32)<br />

ptlong<br />

decimal(13,8)<br />

ptlat<br />

decimal(13,8)<br />

ptelev<br />

decimal(10,5)<br />

ptaccur<br />

decimal(10,5)<br />

ptlabel<br />

decimal(10,5)<br />

pturl<br />

varchar(255)<br />

lblcolor<br />

varchar(16)<br />

lbltf_id<br />

smallint<br />

lblsize<br />

tinyint<br />

lblopac<br />

tinyint<br />

icon_id<br />

smallint<br />

iconcol<br />

varchar(16)<br />

iconopac<br />

tinyint<br />

iconsize<br />

tinyint<br />

pub_id<br />

tinyint<br />

sale_id<br />

tinyint<br />

thm_id<br />

smallint<br />

subt_id<br />

smallint<br />

ptevent<br />

exp_id<br />

bigint<br />

efname<br />

varcar(32)<br />

emname<br />

varchar(32)<br />

elname<br />

varchar(32)<br />

eusrname<br />

varchar(32)<br />

epswd<br />

varchar(32)<br />

egender<br />

char(1)<br />

ebirth<br />

date<br />

cat_id<br />

tinyint<br />

pay_id<br />

tinyint<br />

regdate<br />

date<br />

lastdate<br />

date<br />

nrlogin<br />

smallint<br />

email<br />

varchar(32)<br />

phone1<br />

varchar(20)<br />

phone2<br />

varchar(20)<br />

adress1<br />

varchar(32)<br />

adress2<br />

varchar(32)<br />

cmpny<br />

varchar(32)<br />

deptm<br />

varchar(32)<br />

cntry_id<br />

char(2)<br />

state_id<br />

char(2)<br />

city<br />

varchar(32)<br />

postcode<br />

varchar(8)<br />

work_id<br />

tinyint<br />

pub_id<br />

tinyint<br />

explorer


SQL sats för att länka tabeller<br />

SELECT L.*,P.*<br />

FROM logexp AS L<br />

LEFT JOIN ptevent as P<br />

ON L.log_id = P.log_id<br />

WHERE<br />

L.exp_id = 'X’<br />

66<br />

Datainsamling, Thomas Gumbricht, 2007


SQL sats för att lägga till data i tabeller<br />

INSERT INTO logexp<br />

(mylog_id, logname,logdate...)<br />

VALUES (‘X’,’Y’,’Z’...)<br />

67<br />

Datainsamling, Thomas Gumbricht, 2007

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!