• Hem
  • Kategorier
  • Senaste
  • Taggar
  • Populära
  • Användare
  • Grupper
Collapse
Dataportal logo

Community på Sveriges dataportal

Ortofoton som Cloud Optimized GeoTIFF (COG) från Lantmäteriet

Scheduled Fäst Låst Flyttad Geografiska data
41 Inlägg 5 Posters 8974 Visningar
    • Äldst till nyaste
    • Nyaste till äldst
    • Flest röster
Svara
  • Svara som ämne
Logga in för att posta
Det här ämnet har raderats. Endast användare med ämneshanterings-privilegier kan se det.
  • lmdanielL Offline
    lmdanielL Offline
    lmdaniel
    wrote on Senaste redigerad av
    #1

    Numera finns ortofoton som avgiftsfria data från Lantmäteriet. Dessa är i sin tur tillgängliga som Cloud Optimized GeoTIFF (COG). Det ger möjligheten att strömma dessa i exempelvis QGIS.

    Nedan finns ett pythonskript (QGIS) som inom kartfönstrets utbredningsområde (bbox) gör en sökning mot Lantmäteriets api och lägger till de senaste ortofotona inom området som strömmade bilder (vsicurl). Skriptet kan ju säkert optimeras mer.

    import requests
    import json
    from qgis.core import QgsVectorLayer, QgsProject, QgsFeature, QgsGeometry, QgsPointXY, QgsField, QgsCoordinateTransform, QgsCoordinateReferenceSystem, QgsRasterLayer
    from PyQt5.QtCore import QVariant
    from qgis.utils import iface
    import os
    from requests.auth import HTTPBasicAuth
    from pyproj import Transformer
    from datetime import datetime
    
    # Autentisering
    session = requests.Session()
    session.auth = HTTPBasicAuth("användarnamn", "lösenord")
    
    # Tidsstämpel
    timestamp = datetime.now().strftime("%Y%m%d%H%M%S")
    
    # Hämta bbox i SWEREF 99 TM och konvertera till WGS 84
    extent = iface.mapCanvas().extent()
    bbox_sweref99 = [extent.xMinimum(), extent.yMinimum(), extent.xMaximum(), extent.yMaximum()]
    transformer_to_wgs84 = Transformer.from_crs("EPSG:3006", "EPSG:4326")
    bbox_wgs84 = [transformer_to_wgs84.transform(bbox_sweref99[1], bbox_sweref99[0]), transformer_to_wgs84.transform(bbox_sweref99[3], bbox_sweref99[2])]
    bbox_wgs84 = [bbox_wgs84[0][1], bbox_wgs84[0][0], bbox_wgs84[1][1], bbox_wgs84[1][0]]
    
    # Hämta data från API
    api_url = "https://api.lantmateriet.se/stac-bild/v1/search"
    response = session.post(api_url, headers={"Content-Type": "application/json"}, data=json.dumps({"bbox": bbox_wgs84, "limit": 100}))
    features = response.json().get("features", [])
    
    # Skapa lager i QGIS
    def create_layer(name, features, crs="EPSG:3006"):
        layer = QgsVectorLayer(f"Polygon?crs={crs}", name, "memory")
        provider = layer.dataProvider()
        if features:
            first_feature = features[0]
            for key in first_feature['properties'].keys():
                provider.addAttributes([QgsField(key, QVariant.String)])
            for asset_key in first_feature['assets'].keys():
                provider.addAttributes([QgsField(f"asset_{asset_key}", QVariant.String)])
            layer.updateFields()
            transformer = QgsCoordinateTransform(QgsCoordinateReferenceSystem("EPSG:4326"), QgsCoordinateReferenceSystem(crs), QgsProject.instance())
            for feature in features:
                qgs_feature = QgsFeature()
                attributes = [str(feature['properties'].get(key, "")) for key in first_feature['properties'].keys()]
                for asset_key in first_feature['assets'].keys():
                    attributes.append(feature['assets'][asset_key].get('href', ''))
                qgs_feature.setAttributes(attributes)
                geom = feature.get("geometry")
                if geom and geom.get("type") == "Polygon":
                    points = [transformer.transform(QgsPointXY(coord[0], coord[1])) for coord in geom.get("coordinates")[0]]
                    qgs_feature.setGeometry(QgsGeometry.fromPolygonXY([points]))
                    provider.addFeatures([qgs_feature])
        QgsProject.instance().addMapLayer(layer)
    
    create_layer("Utbredning ortofoton, alla år", features)
    
    # Skapa lager med senaste året
    latest_year = max(int(f['properties'].get('flygar', 0)) for f in features)
    latest_features = [f for f in features if int(f['properties'].get('flygar', 0)) == latest_year]
    create_layer(f"Utbredning ortofoton, {latest_year}", latest_features)
    
    # Funktion för att skapa ett rasterlager från en URL
    def create_raster_layer(url):
        vsicurl_url = f"/vsicurl/{url}"
        layer_name = os.path.basename(url).replace('.tif', '')
        raster_layer = QgsRasterLayer(vsicurl_url, layer_name, "gdal")
        if raster_layer.isValid():
            QgsProject.instance().addMapLayer(raster_layer)
            print(f"Lagret {layer_name} har lagts till i projektet.")
        else:
            print(f"Lagret {layer_name} kunde inte läsas in!")
    
    # Skapa rasterlager för varje asset-länk (exkludera thumbnails)
    for feature in latest_features:
        for asset_key, asset_info in feature['assets'].items():
            href = asset_info.get('href', '')
            if href and not href.endswith('thumbnail.jpg'):
                create_raster_layer(href)
    

    Har du några egna erfarenheter att jobba med Cloud Optimized GeoTIFF?

    Daniel Regemar
    Regional geodatasamordnare
    Lantmäteriet

    Ett svar Senaste svaret
    2
  • M Offline
    M Offline
    magnusp
    wrote on Senaste redigerad av magnusp
    #2

    Spännande, vill testa detta. Vad behöver man för konto och rättigheter på LMV?

    lmdanielL Ett svar Senaste svaret
    1
  • lmdanielL Offline
    lmdanielL Offline
    lmdaniel
    replied to magnusp on Senaste redigerad av
    #3

    @magnusp, du behöver beställa behörighet för Lantmäteriets produkt Ortofoto Nedladdning. Det görs genom Geotorget https://geotorget.lantmateriet.se/geodataprodukter/ortofoto-nedladdning-api.

    Återkoppla gärna när du testat!

    Daniel Regemar
    Regional geodatasamordnare
    Lantmäteriet

    Ett svar Senaste svaret
    0
  • Magnus SälgöM Offline
    Magnus SälgöM Offline
    Magnus Sälgö
    wrote on Senaste redigerad av
    #4

    Är det inte lite väl bökigt att bara testa vad ni levererar.....

    Skulle titta på vad ni hade för administrativa gränser förut men gav upp...

    Nu tror jag det gick iväg en beställning med följande kryptiska motivering 😉

    image.png

    lmdanielL Ett svar Senaste svaret
    0
  • lmdanielL Offline
    lmdanielL Offline
    lmdaniel
    replied to Magnus Sälgö on Senaste redigerad av
    #5

    @Magnus-Sälgö, kul att du är intresserad! Jag vill på samma gång puffa för att det finns bra produktdokumentation och att det kan vara bra att ta formuläret seriöst 😉

    Daniel Regemar
    Regional geodatasamordnare
    Lantmäteriet

    Magnus SälgöM Ett svar Senaste svaret
    0
  • Magnus SälgöM Offline
    Magnus SälgöM Offline
    Magnus Sälgö
    replied to lmdaniel on Senaste redigerad av Magnus Sälgö
    #6

    @lmdaniel jo men man vill ju testa grejerna det känns lite som man kommer in i en annan värld när man kommer till LM..... det "normala" är att hämta hem saker på GITHUB och vara igång efter 5 minuter.....

    Jag dokumenterar just nu Swedish Archipelago Trail genom att vandra 27 mil och ta > 3000 bilder och vill förstå om detta kan ge mervärde

    M Ett svar Senaste svaret
    0
  • M Offline
    M Offline
    Matself
    replied to Magnus Sälgö on Senaste redigerad av
    #7

    @Magnus-Sälgö sa i Ortofoton som Cloud Optimized GeoTIFF (COG) från Lantmäteriet:

    För inte så länge sedan hade Lantmäteriet en bra beställningstjänst där man enkelt kunde välja vilka bilder man ville ha, för att en stund senare ladda ned dem i ett paket, helt körklara.
    Ingenting av det finns kvar, tyvärr. Och det går inte att förstå varför.

    Magnus SälgöM Ett svar Senaste svaret
    0
  • Magnus SälgöM Offline
    Magnus SälgöM Offline
    Magnus Sälgö
    replied to Matself on Senaste redigerad av
    #8

    @Matself tackar....

    mitt "problem" är nog mer att jag inte alls är i LM världen och skulle bara vilja få en känsla vad deras produkter kan bidraga med... tyckte inte manualen gav så mycket...

    M Ett svar Senaste svaret
    0
  • M Offline
    M Offline
    Matself
    replied to Magnus Sälgö on Senaste redigerad av
    #9

    @Magnus-Sälgö Min uppfattning är att man inte ska behöva vara i LM-världen för att kunna ta del av öppna geografiska grunddata, eller för den delen HVD-data (högt värderade dataset) enligt EU-direktivet. Men Lantmäteriet har valt att göra på det här sättet, och det finns inget sätt att få dem att ändra sig. Tro mig, jag har försökt. De har i alla fall samvete nog att erkänna att HVD inte kan kallas öppna data enligt gängse definitioner, eftersom konsumenter måste ha registrerade användarkonton och för att det finns en ändamålsprövning på vägen. Och, vill jag tillägga, för att åtkomsten kräver programmering och applikationsutveckling. Det går alltså inte att anonymt ladda ned data i öppna format för direkt användning i förekommande geodataverktyg.

    lmdanielL 3 svar Senaste svaret
    0
  • lmdanielL Offline
    lmdanielL Offline
    lmdaniel
    replied to Matself on Senaste redigerad av
    #10

    @Matself, jag vill tillägga, åtkomst kräver inte programmering eller applikationsutveckling.

    Daniel Regemar
    Regional geodatasamordnare
    Lantmäteriet

    Ett svar Senaste svaret
    0
  • lmdanielL Offline
    lmdanielL Offline
    lmdaniel
    replied to Matself on Senaste redigerad av
    #11

    @Matself, i dess råaste form gör du en sökning på ortofotots id. Som nedan:
    https://api.lantmateriet.se/stac-bild/v1/search?ids=o65225_6125_25_mr23
    Ett id kan du enkelt hitta genom Geolex

    Sedan väljer du bara länken som leder till tif-filen:
    https://dl1.lantmateriet.se/bild/data/orto/se0_16m_sweref/2023_M2/o65225_6125_25_mr23.tif

    Och laddar ner med din vanliga Geotorget-inloggning.

    Daniel Regemar
    Regional geodatasamordnare
    Lantmäteriet

    Ett svar Senaste svaret
    0
  • lmdanielL Offline
    lmdanielL Offline
    lmdaniel
    replied to Matself on Senaste redigerad av
    #12

    @Matself, du kan ju också söka ut en bbox genom en url. Då ser det ut såhär:
    https://api.lantmateriet.se/stac-bild/v1/search?bbox=16.94859306616046%2C58.827006963167854%2C16.993153844102512%2C58.850106599581544
    Notera att det är wgs84 och att kommatecken visas som %2C i enlighet med hur en url kodas. Resultatet blir lite mer omfattande eftersom alla år inom bbox visas.

    Daniel Regemar
    Regional geodatasamordnare
    Lantmäteriet

    Ett svar Senaste svaret
    0
  • M Offline
    M Offline
    Matself
    wrote on Senaste redigerad av
    #13

    Min poäng, som du noga bortser ifrån, är att allt det där kan skötas via ett lättbegripligt visuellt gränssnitt, som inte förutsätter att man vet bildens id eller koordinaterna för begränsningsytan i förväg. Som det fungerar för historiska ortofoton.

    lmdanielL 2 svar Senaste svaret
    0
  • lmdanielL Offline
    lmdanielL Offline
    lmdaniel
    replied to Matself on Senaste redigerad av
    #14

    @Matself, jag väljer att sticka hål på kritiken om tvingande programmering och applikationsutveckling. På samma sätt som du väljer vissa saker att kritisera.

    Daniel Regemar
    Regional geodatasamordnare
    Lantmäteriet

    Ett svar Senaste svaret
    0
  • lmdanielL Offline
    lmdanielL Offline
    lmdaniel
    replied to Matself on Senaste redigerad av
    #15

    @Matself, sedan är din kritik av att det saknas ett grafiskt gränssnitt kopplat till det nya tillhandahållandet riktig. Det saknas. Och det är en åsikt jag respekterar. Jag håller med om att en förändring har skett.

    Daniel Regemar
    Regional geodatasamordnare
    Lantmäteriet

    Ett svar Senaste svaret
    0
  • Magnus SälgöM Offline
    Magnus SälgöM Offline
    Magnus Sälgö
    wrote on Senaste redigerad av
    #16

    Känns som jag och LM krockat igen... min ansökan 2025-05-06 när jag bara ville fatta om produkten har någon nytta för SAT är i status behandlas

    b824aada-6a32-4e92-bfa1-dc407bf1ace3-image.png

    Vore intressant att se om och vilka som använder produkterna det skulle kunna vara en indikation hur de kan användas....

    lmdanielL Ett svar Senaste svaret
    1
  • lmdanielL Offline
    lmdanielL Offline
    lmdaniel
    replied to Magnus Sälgö on Senaste redigerad av
    #17

    @Magnus-Sälgö, ett bra sätt att få en n uppfattning om Lantmäteriets produkter och data är genom applikationen Min karta.
    Där kan du tända lagret Flygbild (ortofoto). Då kan du få en uppfattning om hur informationen kan användas. Den produkten du ansöker behörighet för är om du vill ladda ner ortofotona till din enhet och kunna använda informationen offline.

    Daniel Regemar
    Regional geodatasamordnare
    Lantmäteriet

    Ett svar Senaste svaret
    1
  • Magnus SälgöM Offline
    Magnus SälgöM Offline
    Magnus Sälgö
    wrote on Senaste redigerad av Magnus Sälgö
    #18
    Detta inlägg är raderat!
    lmdanielL Ett svar Senaste svaret
    0
  • Magnus SälgöM Offline
    Magnus SälgöM Offline
    Magnus Sälgö
    wrote on Senaste redigerad av
    #19
    Detta inlägg är raderat!
    Ett svar Senaste svaret
    0
  • lmdanielL Offline
    lmdanielL Offline
    lmdaniel
    replied to Magnus Sälgö on Senaste redigerad av
    #20

    @Magnus-Sälgö, i fallet SAT borde de kunna använda Lantmäteriets information som bakgrundsdata för att sedan överlagra sin egen information. Jag tänker dock tvärt om – att Lantmäteriet borde nyttja informationen från SAT bättre. I många kommuner och län finns leder inlagt. Men där brukar den som underhåller lederna skicka in sträckningar eller liknande. För SAT kanske det borde vara någon intressepunkt som skickas in eller liknande.
    Jag har fört dialog med flera kommuner i södra delen av vårt land och uppmanat dessa att publicera sina data som öppna genom Sveriges dataportal, exempelvis leder eller grillplatser eller badplatser. Om många följer samma specifikation blir det lättare för Lantmäteriet att i så fall läsa in dessa data till vår nationella karta. Men då krävs ju att många gör likadant. Annars blir det ett för stort arbete för Lantmäteriet. I väntan på det kan man ju använda Förbättra kartan som är en tjänst från Lantmäteriet för att förbättra och justera felaktigheter.

    Daniel Regemar
    Regional geodatasamordnare
    Lantmäteriet

    Ett svar Senaste svaret
    1

Finansieras av Europeiska unionen logo
  • Logga in

  • Har du inget konto? Registrera

  • Login or register to search.
  • Första inlägget
    Sista inlägget
0
  • Hem
  • Kategorier
  • Senaste
  • Taggar
  • Populära
  • Användare
  • Grupper
  • Logga in

  • Har du inget konto? Registrera

  • Login or register to search.