Användarverktyg

Webbverktyg


teknik:analys

Detta är en gammal version av dokumentet!


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 ras-terformat som i sin tur inter-poleras 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-me-tersgridskulle 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 land-skapet blir utjämnat -höga toppar blir lägre, och djupa dalar grundare.”

T.ex. Vaggeryds högsta punkt Högenacke som har ett punktvärde på 359m har följande 50m-värden:

  • NH2016: 353.2903
  • NH2020: 350.69684

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.

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.1616334936.txt.gz · Senast uppdaterad: 21-03-21 14:55 av jonastull