Användarverktyg

Webbverktyg


teknik:analys

Analys av Nationella höjddatabasen

Bra att veta om NH50

Från https://www.lantmateriet.se/globalassets/kartor-och-geografisk-information/hojddata/hojd50_plus_nh_v1.4.pdf:
”Produkten baseras på nationella höjdmodellen i form av ett 1-meters grid. Från detta 1-meters grid interpoleras, med bilinjär metod, ett 5m grid i rasterformat som i sin tur interpoleras till 10 m, 10 m gridet interpoleras till 20 m som till sist interpoleras till 50 m grid. Den här interpolationskedjan inne-bär att varje höjdvärde är representativt för en större yta än om ett 50-metersgrid skulle tas fram direkt ur 1-metersgridet.”

”Medelfelet i höjd i ett måttligt kuperat landskap ligger på ca 1 m. Maximalt fel kan dock vara många gånger större. Felen ökar i starkt kuperad terräng. Metoden att stegvis skapa glesare och glesare färdiga grid innebär att landskapet blir utjämnat - höga toppar blir lägre, och djupa dalar grundare.”

Detta innebär att analys baserad på NH50 inte kan anses fullständig. Exempel nedan från Vaggeryds högsta punkt Högenacke som har ett punktvärde på 359m har följande 50m-värden i två olika årgångar av NH50:

  • NH2016: 353.2903
  • NH2020: 350.69684

Att värdena skiljer sig åt kan bero på att ny inmätning skett eller att interpoleringen skett i olika ordning.

Bra att veta om GSD Sverigekartan

  • Enklaver mindre än 9kvm^2 finns inte med.
  • Gränserna är förenklade vilket kan gör att höjdpunkter hamnar på fel sida kommungräns.

Metod för analys av NH50

Verktyg som behövs:

  • QGIS

Data som behövs:

1. Ladda hem en fräsch kopia av NH (Nationella höjdmodellen):
h_10_Blekinge_lan_Sweref_99_TM_geotiff.zip         nh_23_Jamtland_lan_Sweref_99_TM_geotiff.zip
nh_12_Skane_lan_Sweref_99_TM_geotiff.zip            nh_24_Vasterbotten_lan_Sweref_99_TM_geotiff.zip
nh_13_Halland_lan_Sweref_99_TM_geotiff.zip          nh_25_Norrbotten_lan_Sweref_99_TM_geotiff.zip
nh_14_Vastra_Gotaland_lan_Sweref_99_TM_geotiff.zip  nh_3_Uppsala_lan_Sweref_99_TM_geotiff.zip
nh_17_Varmland_lan_Sweref_99_TM_geotiff.zip         nh_4_Sodermanland_lan_Sweref_99_TM_geotiff.zip
nh_18_Orebro_lan_Sweref_99_TM_geotiff.zip           nh_5_Ostergotland_lan_Sweref_99_TM_geotiff.zip
nh_19_Vastmanland_lan_Sweref_99_TM_geotiff.zip      nh_6_Jonkoping_lan_Sweref_99_TM_geotiff.zip
nh_1_Stockholm_lan_Sweref_99_TM_geotiff.zip         nh_7_Kronoberg_lan_Sweref_99_TM_geotiff.zip
nh_20_Dalarna_lan_Sweref_99_TM_geotiff.zip          nh_8_Kalmar_lan_Sweref_99_TM_geotiff.zip
nh_21_Gavleborg_lan_Sweref_99_TM_geotiff.zip        nh_9_Gotland_lan_Sweref_99_TM_geotiff.zip
nh_22_Vasternorrland_lan_Sweref_99_TM_geotiff.zip

2. zippa upp
unzip \*.zip

3. Slå ihop till en tif-fil
gdal_merge.py -o NH2020.tif nh*.tif

4. Ladda hem gränsfilerna, sve_1milj_Sweref_99_TM_shape.zip

5. Öppna ak_riks.shp i QGIS

6. Hitta högsta punkten i varje kommun

<del><<TEMP>>
A. ZonalStatistics fungerar dåligt med decimaltal, så vi måste preppa NH2020.tif så att vi tar bort decimaltalen:
gdal_calc.py -A NH2020.tif --type='Float32' --calc="(A*1000000)" --outfile NH2020_Million.tif
<</TEMP>></del>

Processing toolbox->Zonal statistics
Raster layer: NH2020, Band 1
Vector layer: ak_riks
Statistics to calculate: Max

-> Utdatat sparar i ak_riks

7. Välj lagret ak_riks -> Attribute table
En ny kolumn har lagts till: "_max" där högsta värdet i varje kommun finns. T.ex. Älvdalen som har _max=1200,6136474609375
OBS: Bli inte orolig för att antalet rader än fler än antalet kommuner. Enklaver större än 9km^2 (se info.pdf för ak_riks) får egna rader eftersom de har egna polygoner.
I 2020 års data av ak_riks så finns det också en bugg för Norrtälje. En del av kustremsan är med i en mycket mycket smalt egen polygon.


8. Med ak_riks markerat. Välj Layer->Save as
Format: CSV
Select fields to export: Välj alla

9. Öppna CSV-filen i lämplig editor, typ Excel eller Open Office.
- Ta bort alla dubletter, spara den med högst värde på _max


Nästa steg blir lite kladdigt. Vi måste få veta var punkten ligger. Då får vi för varje _max-värde springa igenom hela Sverige och söka rätt på punkter som matchar.

Spara alla högsta värden i en fil:
highAll.txt



Första, för att skapa en tom highAll.tiff:
gdal_calc.py -A ../Sverige/NH2020.tif --type='Float32' --calc="(A==666.666)*A" --outfile highAll.tiff


while read line; do gdal_calc.py -A ../Sverige/NH2020.tif --type='Float32' --calc="(A==$line)*A" --outfile highTemp.tiff && gdal_calc.py -A highTemp.tiff -B highAll.tiff --type='Float32' --calc="(A+B)" --outfile highTempAll.tiff && mv highTempAll.tiff highAll.tiff; done < highAll.txt

Det blir 2x gdal_calc per kommun. Varje gdal_calc har c:a XXX minuter på min laptop.
Totalt XX minuter för hela Sverige.

-> highAll.tiff innehåller nu ett raster med 0 höjd på alla punkter utom 290 punkter som är kommunpunkterna


För att klä på varje punkt lite information, typ om län och kommun:

-> Skapa en kopia av highAll där höjdvärdena är multiplicerade med 1000000 så att vi inte tappar bort decimaltalen:
gdal_calc.py -A highAll.tiff --type='Float32' --calc="(A*1000000)" --outfile highAllMillion.tiff

--> Härifrån och ner kör vi med highAllMillion

-> Polygonize. highAllMillionVector

-> Union med riks: highAllMillionVectorRiksUnion

-> rensa bort så bara det högst DN-värdet är kvar i varje kommun:
1. Öppna Attribute Table för highAllMillionVectorRiksUnion
2. Välj Advanced filter Expression
4. filter, advanced filter: DN = maximum("DN",group_by:="KOM_KOD")
-> Nu visas alla punkter som är högsta punkten i någon kommun
5. Högerklick->Select all
6. Layer->Save as-> ESRI ShapeFile -> Save only selected -> highAllMillionVectorRiksUnionMaximum.shp

Geometry Tools->Centroids
Centroids20210320
-> Rensa punkter utan KOM_KOD
teknik/analys.txt · Senast uppdaterad: 21-03-21 14:57 av jonastull