Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

GEODATA DAYS 2024

#1 Mon 26 October 2020 10:32

Bamakus
Participant occasionnel
Date d'inscription: 14 Jun 2019
Messages: 15

QGIS: Astuce ouverture raster avec dalles

Bonjour,

Je recherche une astuce pour gagner du temps quant à l'ouverture d'un raster type BD Ortho, Scan 25, etc. sur Qgis (3.10.0)

Prenons l'exemple avec une orthophoto de l'IGN. Dans mes données livraison, j'ai un grand nombre de tuiles en format jp2 (échelle régionale). Je souhaite ouvrir les tuiles dont j'ai besoin, selon un périmètre d'étude précis. Or, c'est extrêmement chronophage d'ouvrir les tuiles une par une.

Voici ce dont à quoi j'ai pensé :
J'ai un périmètre d'étude à cheval sur deux régions. J'ai donc énormément de tuiles jp2 : tuiles sur la région 1 et tuiles sur la région 2. Je dispose également de dalles et de mosaïques en format .shape correspondant à l'emprise des tuiles de format jp2 des deux régions. Ces dalles et mosaïques sont fournies avec les tuiles jp2.

Après avoir supprimé les dalles/mosaïques ne correspondant pas à mon périmètre d'étude, j'aimerais ouvrir mes fichier raster jp2, selon les dalles/mosaïqes préalablement sélectionnées.
Cela est il possible ? Si oui, la marche à suivre est elle la bonne et comment faire ?

Dans un second temps, je peux soit fusionner les tuiles raster soit créer un fichier vrt. Sachant que je vais mettre cette couche de raster assemblée sur PgAdmin, qu'elle choix d'assemblage devrais-je choisir ?

Merci de vos conseils

Bonne journée !

Hors ligne

 

#2 Mon 26 October 2020 12:44

p.jeremie
Participant assidu
Lieu: Valence
Date d'inscription: 10 Sep 2017
Messages: 412

Re: QGIS: Astuce ouverture raster avec dalles

Bonjour,

Il y a plusieurs sujets dans votre message :
- gagner du temps à l'ouverture de rasters
- ouvrir les raster correspondant à des emprises vecteur sélectionnées à la main
- fusionner les raster ou vrt pour stocker les raster dans une base postgres

Pour ce qui est de gagner du temps, j'ai testé récemment la méthode de Klas Karlsson expliquée dans la vidéo suivante pour les tuiles d'un département (132 tuiles SCAN25 pour ~5,8Go de base) : https://www.youtube.com/watch?v=cRgkJzbx8gc
L'idée est de stocker et tuiler + construire des pyramides pour les rasters, dans un gpkg.
L'affichage est ensuite très fluide et comme on compresse au passage, on réduit la taille nécessaire, au dépit d'une perte en qualité qu'il faut essayer de limité par rapport à son besoin.

Résumé des actions :
1- Ouvrir tous les fichiers raster dans QGIS

2- Créer un raster virtuel .vrt avec le menu de QGIS Raster > Divers > Contruire un raster virtuel (qui se base sur la commande gdalbuildvrt)
Ne PAS cocher "Place each input file into a separate band"
Préciser le SCR correspondant aux tuiles dans "Override projection", dans mon cas 2154 Lambert 93

3- Exporter le vrt en gpkg avec compression
Clic droit sur la couche du vrt > Exporter > Enregistrer sous
Choisir Geopackage et préciser l'emplacement et le nom du fichier souhaité
Cocher Pyramides
Pour Format de pyramide, choisir Interne (si possible)
Cocher Niveaux personnalisés et indiquer dans le champ texte : 2 4 8 16 32 64 128 256
Dans Profil, choisir compression JPEG
Modifier dans le champ texte en-dessous la valeur de la compression en 50 au lieu de 75 par défaut "JPEG_QUALITY_OVERVIEW=50"

La création va prendre assez longtemps, surtout si comme pour le SCAN25 il y a beaucoup de rasters à la base.

Concernant l'ouverture de raster par rapport aux emprises sélectionnées, je ne sais pas comment faire, peut-être via une action ou un bout de code python ?

Concernant la fusion des raster, vrt en vue du stockage dans une base postgres, j'avoue ne pas trop comprendre votre question ?

Dernière modification par p.jeremie (Mon 26 October 2020 12:44)

Hors ligne

 

#3 Mon 26 October 2020 14:09

EmilieDB
Participant occasionnel
Date d'inscription: 23 Jan 2007
Messages: 23

Re: QGIS: Astuce ouverture raster avec dalles

Bonjour,

pour charger plusieurs dalles raster dans un projet qgis, j'utilise une action Python sur le shape contenant l'emprise des dalles. La table attributaire du shape contient un champ (dans l'exemple ci-après, "NOM_FICHIE") contenant lui même le nom du fichier raster (par exemple RGEALTI_FXX_0665_6640_MNT_LAMB93_IGN69.asc).
Au click sur la dalle avec l'icône "exécuter l'action", les dalles cliquées se chargent automatiquement. Si je clique à l'intersection de plusieurs dalles, plusieurs dalles se chargent.
Voici le code python, il doit être possible de l'adapter pour que les dalles à charger correspondent à la selection et non au click :

Code:

chemin = os.path.dirname( unicode( qgis.utils.iface.activeLayer().dataProvider().dataSourceUri() ) )
fic = chemin   + "/" + "[% "NOM_FICHIE" %]"
layer = qgis.utils.iface.activeLayer()
qgis.utils.iface.addRasterLayer(fic,"[% "NOM_FICHIE" %]")
qgis.utils.iface.setActiveLayer(layer)

Dans ce bout de code, le shape est stocké dans le même répertoire que les dalles raster.

En espérant que mes explications soient claires,

Emilie

Hors ligne

 

#4 Mon 26 October 2020 15:38

lylambda
Participant actif
Date d'inscription: 31 Aug 2016
Messages: 127

Re: QGIS: Astuce ouverture raster avec dalles

Bonjour,
Ci-dessous, un autre code pour une action python répondant au besoin exprimé de :
- gagner du temps à l'ouverture de rasters
- ouvrir les raster correspondant à des emprises vecteur sélectionnées à la main

https://georezo.net/forum/viewtopic.php … 43#p321243

L'avantage de ce code versus celui d'EmilieDB, est de permettre :
- l'ouverture et la fermeture au clic sur la dalle d'emprise
- l'utilisation de variable pour déterminer, en absolu ou en relatif, le chemin d’accès vers les dalles.

Hors ligne

 

#5 Mon 26 October 2020 16:42

Bamakus
Participant occasionnel
Date d'inscription: 14 Jun 2019
Messages: 15

Re: QGIS: Astuce ouverture raster avec dalles

Merci pour ces réponses.

En effet, il y a plusieurs sujets dans mon message.

Le premier étant d'ouvrir les fichier raster selon mes dalles déjà préparées (suppression des dalles inutiles). A la suite de quoi, je dois exporter mon raster pour le partager.
J'ai testé les deux codes python en vain. Surement une erreur de ma part (première fois que j'utilise cette fonctionnalité). Je pense que l'erreur est la même pour le code d'Emilie.

Lylambda voici mon code :

import os
def getVectorLayerByName(NomCouche):
    layermap=QgsProject.instance().mapLayers()
    for name, layer in layermap.items():
        if layer.name()==NomCouche:
            if layer.isValid():
               return layer
            else:
               return None
mypath=V:/DALLES_REG1/DALLE_SELEC_R1.shp.replace([%NOM%])
instRegistry = QgsProject.instance()
macouche = instRegistry.mapLayersByName([%NOM%])
courant=qgis.utils.iface.mapCanvas().currentLayer()
raster_ouvert=getVectorLayerByName([%NOM%])
if raster_ouvert is not None:
    QgsProject.instance().removeMapLayer(raster_ouvert.id())
    qgis.utils.iface.mapCanvas().refresh()
else:
    qgis.utils.iface.addRasterLayer(mypath,[%NOM%])
    qgis.utils.iface.setActiveLayer(courant)

Pour éviter les erreurs de frappes, j'ai cliqué sur l’icône "Dossier" pour créer mon chemin d'accès et cliqué sur "Insérer" pour déterminer l'attribut "NOM" de ma couche dalle. Mes fichiers raster jp2 se trouvent dans le même dossier "DALLES_REG1"

Merci !

Dernière modification par Bamakus (Mon 26 October 2020 16:50)

Hors ligne

 

#6 Tue 27 October 2020 08:53

Bruno
Membre du bureau
Lieu: Toulouse
Date d'inscription: 22 Jun 2005
Messages: 11844
Site web

Re: QGIS: Astuce ouverture raster avec dalles

Sujet déplacé sur cette liste, donc.

Hors ligne

 

#7 Tue 27 October 2020 19:03

lylambda
Participant actif
Date d'inscription: 31 Aug 2016
Messages: 127

Re: QGIS: Astuce ouverture raster avec dalles

Sans trop creuser vos modifs du code, la variable "mypath" me parait incorrect :

originel :

Code:

mypath="[% "DOSSIER" %]".replace("\\","/")+ "[% "NOM2" %]"

> appel de la variable DOSSIER, qui est un chemin vers le dossier contenant la tuile, avec les \ (doublé pour échappement) remplacer par des / auquel est ajouté (+) la variable NOM2, qui est le nom du ficher jp2 de la tuile correspondant à l'emprise de la dalle

modifié :

Code:

mypath=V:/DALLES_REG1/DALLE_SELEC_R1.shp.replace([%NOM%])

> V:/DALLES_REG1/DALLE_SELEC_R1.shp est un chemin de fichier shp, et non un chemin vers un dossier. Il est écrit en dur et pas encadré de " (pas certain que ce soit nécessaire mais à tester). La fonction de remplacement veut y échanger la variable NOM sans préciser quoi.
Ce qui génère un chemin qui n'a pas de sens pour appeler une tuile.

Pour vous proposer une correction, je vais supposer :
- que V:/DALLES_REG1 est le dossier ...
- ...contenant votre couche de dallage DALLE_SELEC_R1.shp...
- ... et les dalles raster
- que la variable NOM est un attribut de la couche de dallage renseignant le nom des dalles sous la forme /XXXX.jp2 et rien d'autre

L'action à activer au clic doit donc avoir la ligne suivante :

Code:

mypath="V:/DALLES_REG1"+ "[% "NOM" %]"

> Cela permettra de générer pour chaque emprise, le lien d'appel suivant : V:/DALLES_REG1/XXXX.jp2

A adapter selon votre champ NOM et la véritable localisation du shp vis à vis des tuiles jp2.

Dernière modification par lylambda (Tue 27 October 2020 19:11)

Hors ligne

 

#8 Mon 09 November 2020 11:44

Bamakus
Participant occasionnel
Date d'inscription: 14 Jun 2019
Messages: 15

Re: QGIS: Astuce ouverture raster avec dalles

Désolé pour la réponse tardive.

Merci pour toutes ces infos mais je n'arrive toujours pas à ouvrir mes fichiers raster selon des dalles prédéfinies...

Je continue de chercher !

Dernière modification par Bamakus (Mon 09 November 2020 11:44)

Hors ligne

 

Pied de page des forums

Powered by FluxBB