Datastrukturer och modeller
Datastrukturer och modeller
Datastrukturer och modeller
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