====== 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: * Nationella höjdmodellen: [[https://www.lantmateriet.se/sv/Kartor-och-geografisk-information/geodataprodukter/produktlista/hojddata-grid-50/]] * Kommungränser, finns i GSD-Sverigekartor [[https://www.lantmateriet.se/sv/Kartor-och-geografisk-information/geodataprodukter/produktlista/sverigekartor/]] - filen ak_riks.shp innehåller polygoner för Sveriges kommuner. Hyfsat högupplösta * 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 <> 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 <> 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