Geospatial Crash Course
Modellering

Et tidligt kort
Raster
Vektor
grid
punkter
linjer
flader

Øvelse
Gå ind på geojson.io og indtegn "missilrampe" punkter:
Thule basen, Pyongyang, Rio de Janeiro
Gem filen som geojson og indlæs den på mapshaper.org
Åben "Console" og skriv "buffer radius=1000 units=km"
Export som geojson, åben filen i en text editor og byt teksten på geojson.io ud med den nye tekst.


Øvelse - resultat


Projektion
Geoide
Elipsoide

Jorden som en rund kugle (form/størrelse)
Middelvandstand
Datum
Elipsoiden matematiske "anker"
Geografisk koordinat system
Koordinater som vinkler i cirklen


Projekteret koordinat system
Koordinater som rette linjer i fx meter
3D➠2D = Areal ≠ Form

(Distance ≠ Direction)
EPSG
European Petroleum Survey Group
EPSG
European Petroleum Survey Group
Øvelse



Fra hvor UTM32 "grid krydset" i Oksbøl kaserne til et mål 4 km nord og 3 km øst er der 5 km.

Ejendomme i Danmark bliver i området opmålt med EPSG:4093
Googles koordinatsystem er EPSG:3857
Hvilket navn går EPSG:4093 under og hvilken Datum og Ellipsoide benytter det?
Hvad bliver afstanden i de 2 andre koordinat systemer?
Øvelse - resultat

ETRS89 / DKTM1, GRS1980
Standarder
OGC
Open Geospatial Consortium
🠗
DGIWG
Defence Geospatial Information Working Group
🠗
JGSWG (NATO)
Joint Geospatial Standards Working Group
OSGeo
The Open Source Geospatial Foundation
ESRI, Mapbox, etc.
Åbne standarder fra firmaer
Standardisation of
geospatial data, products, and services
Øvelse
Gå ind på https://kort.xyz og klik på "lag ikonet".
Hermed ses en liste med lag efter
DFDD featurekoder (DGIWG - DGIM).
Hvad viser (A)GB055?
Hvilken kode har veje?
AT042 (pylon) har en attribut "TOS",
hvad er det?
Øvelse - Resultat
Hvad viser (A)GB055?
Runway
Hvilken kode har veje?
AP030
AT042 (pylon) har en attribut "TOS", hvad er det?
Towershape
Data Formater
Vektordata - GEOJSON
{
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"properties": {"text": "test"},
"geometry": {
"type": "Polygon",
"coordinates": [
[
[9.4921875,51.6180165487737],
[1.7578125,40.97989806962013],
[25.3125,40.97989806962013],
[22.8515625,52.696361078274485],
[9.4921875,51.6180165487737]
]
]
}
}
]
}
Vektordata - OGC GML
Geography Markup Language
<gml:featureMember xmlns:gml="http://www.opengis.net/gml">
<feature:features">
<feature:geometry>
<gml:Polygon>
<gml:outerBoundaryIs>
<gml:LinearRing>
<gml:coordinates decimal="." cs="," ts=" ">
9.4921875,51.6180165487737
1.7578125,40.97989806962013
25.3125,40.97989806962013
22.8515625,52.696361078274485
9.4921875,51.6180165487737
</gml:coordinates>
</gml:LinearRing>
</gml:outerBoundaryIs>
</gml:Polygon>
</feature:geometry>
<feature:text>test</feature:text>
</feature:features>
</gml:featureMember>
Vektordata - ESRI Shapefile
Består af flere filer:
- .shp, den geografisk data
- .shx, geospatielt index
- .dbf, tabeldata
- .prj, beskrivelse af projektionen
-
.cpg, tegnsættet
https://www.esri.com/content/dam/esrisites/sitecore-archive/Files/Pdfs/library/whitepapers/pdfs/shapefile.pdf
Øvelse
Gå ind på Natural Earth og download "timezones" som shapefil.
Hvilken projektion er datasættet i?
Hvilket tegnsæt?
Hvilke attributter indeholder datasættet?

Øvelse
Hvilken projektion er datasættet i?
EPSG:4326
Hvilket tegnsæt?
UTF-8
Hvilke attributter indeholder datasættet?objectid,scalerank,featurecla,name,map_color6,
map_color8,note,zone,utc_format,time_zone,
iso_8601,places,dst_places,tz_name1st,tz_namesum
Rasterdata - OGC GeoTIFF
Billedfil med geospatiale informationer

Rasterdata - DTED
DTED0 = 900km*900km grid
DTED1 = 90km*90km grid
DTED2 = 30km*30km grid
Digital Terrain Elevation Data

Rasterdata - jpeg,png,webp
Billedfil uden geospatiale informationer





Øvelse
Højre klik på billedet og download det. Åben det på exifviewer.

Hvor er billedet taget?
Web Services
OGC WMS - intro
Levere et billede, som serveren fremstiller når den får en forespørgsel igennem http

DGIWG 112, STANAG 6523
Stammer fra 2000 og nyeste version er fra 2004. (google maps kom i 2005)
Forskellige forespørgsels typer:
- getCapabilities,
- getMap,
- getFeatureinfo,
- getLegendGraphics,
- Describelayer,
- (osv.)
Stammer fra 2000 og nyeste version er fra 2004. (google maps kom i 2005)
Har (måske) følgende struktur:
OGC WMS - getCapabilities
Response i XML og beskriver WMS servicen
<WMT_MS_Capabilities version="1.1.1">
<Service>
...
</Service>
<Capability>
...
</Capability>
</WMT_MS_Capabilities>
<Capability>
<Request>
...
</Request>
<Exception>
...
</Exception>
<Layer>
...
</Layer>
</Capability>
Øvelse
3 spørgsmål til 3 forskellige getCapabilities filer:
Øvelse - resultat
Øvelse - getMap
<html>
<head>
<link rel="stylesheet" href="https://unpkg.com/leaflet@1.7.1/dist/leaflet.css" />
<script src="https://unpkg.com/leaflet@1.7.1/dist/leaflet.js"></script>
<script src="index.js" defer></script>
</head>
<body style="margin:0;">
<div id='map' style="background:steelblue;height: 100vh;width: 100vw;"></div>
</body>
</html>

var map = L.map('map', {
center: [56.5, 9.5],
zoom: 10,
crs: L.CRS.EPSG4326
});
var wmsLayer = L.tileLayer.wms('http://geodata.fvm.dk/geoserver/ows?', {
layers: 'Jordbrugsanalyser:CHR14',
}).addTo(map);

I en tom mappe lav 2 filer: index.html og index.js
Åben html filen i en texteditor og tilføj nedenstående:
Åben js filen i en texteditor og tilføj nedenstående:
Øvelse - getMap
Åben html filen i en browser og tryk F12.
Gå ind under "network" fanen og zoom ind og ud i kortet.
getMap forespørgslerne kan så ses.
Hvilken størrelse har billedfilerne?
Hvilket format er billederne i?
Øvelse - resultat
Hvilken størrelse har billedfilerne?
256 x 256 pixel
Hvilket format er billederne i?
JPEG
Øvelse - getFeatureInfo

Dette billede fåes ved dette link
Ændre "request" KVP til "GetFeatureinfo" og
Tilføj "&query_layers=Jordbrugsanalyser:CHR14&X=50&Y=50"
Hvad "forestiller" punktet?
Hvilken kommune ligger punktet i?
Hvor mange dyreenheder (DE) har punktet?
Øvelse - resultat
Hvad "forestiller" punktet?
Svinekødsbesætning
Hvilken kommune ligger punktet i?
Favrskov
Hvor mange dyreenheder (DE) har punktet?
311.96

OGC WMTS / Tiles
Delt ind i et tilematrix sets.
For (det meste) prerenderet billeder.
<TileMatrix>
<ows:Identifier>0</ows:Identifier>
<ScaleDenominator>559082264.02871787548065185547</ScaleDenominator>
<TopLeftCorner>-20037508.342789 20037508.342789</TopLeftCorner>
<TileWidth>256</TileWidth>
<TileHeight>256</TileHeight>
<MatrixWidth>1</MatrixWidth>
<MatrixHeight>1</MatrixHeight>
</TileMatrix>
<TileMatrix>
<ows:Identifier>1</ows:Identifier>
<ScaleDenominator>279541132.01435887813568115234</ScaleDenominator>
<TopLeftCorner>-20037508.342789 20037508.342789</TopLeftCorner>
<TileWidth>256</TileWidth>
<TileHeight>256</TileHeight>
<MatrixWidth>2</MatrixWidth>
<MatrixHeight>2</MatrixHeight>
</TileMatrix>
OGC WMTS / Tiles
<Layer>
<ows:Title>Sentinel-2 cloudless layer for 2018 by EOX - 4326</ows:Title>
<ows:Abstract>Sentinel-2 cloudless -Contains modified Copernicus Sentinel data 2017 - 2018</ows:Abstract>
<ows:WGS84BoundingBox>
<ows:LowerCorner>-180.000000 -90.000000</ows:LowerCorner>
<ows:UpperCorner>180.000000 90.000000</ows:UpperCorner>
</ows:WGS84BoundingBox>
<ows:Identifier>s2cloudless-2018</ows:Identifier>
<Format>image/jpeg</Format>
<TileMatrixSetLink>
<TileMatrixSet>WGS84</TileMatrixSet>
</TileMatrixSetLink>
<ResourceURL format="image/jpeg" resourceType="tile"
template="https://tiles.maps.eox.at/wmts/1.0.0/s2cloudless-2018/default/{TileMatrixSet}/{TileMatrix}/{TileRow}/{TileCol}.jpg"/>
</Layer>
Lag beskrives i OGC WMTS sådan:
Tileservice specifikationer
TMS har "0,0" koordinat i venstre bund. XYZ/WMTS har i venstre top.

I praksis kommer det til udtryk når man skal skrive urlen til en service:
XYZ = {Z}/{X}/{Y} TMS = {Z}/{X}/{-Y} WMTS = {Z}/{Y}/{X} {tileMatrixId}/{tileRow}/{tileCol}
Øvelse - WMTS
Følgende link indeholder en WMTS service.
Åben JS filen fra før og tilføj et baggrundskort ved hjælp af følgende kode:
var magnetic_graticules =
L.tileLayer('INDSÆT URL HER!').addTo(map);
TIPS!
- koden skal tilføjes imellem de 2 "variable" i eksisterende kode.
- der bruges {x} i stedet for {tilerow} osv.
- der skal tilføjes parametre til wms tjenesten for at man kan se baggrunden.
Øvelse - WMTS
var map = L.map('map', {
center: [56.5, 9.5],
zoom: 10,
crs: L.CRS.EPSG4326
});
var magnetic_graticules =
L.tileLayer('https://tiles.maps.eox.at/wmts/1.0.0/s2cloudless-2020/default/WGS84/{z}/{y}/{x}.png').addTo(map);
var wmsLayer = L.tileLayer.wms('http://geodata.fvm.dk/geoserver/ows?', {
layers: 'Jordbrugsanalyser:CHR14',
format:'image/png',
transparent:true,
}).addTo(map);

Geospatial Crash Course
By tinoks
Geospatial Crash Course
- 138