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

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#1 Tue 14 May 2019 07:35

vulcain
Juste Inscrit !
Lieu: sées
Date d'inscription: 13 May 2019
Messages: 6

QGIS: Dalles pour ouvrir des rasters

Bonjour,

Depuis plusieurs heures, je tente de créer un lien entre un shape (dalles) et des données raster (Bd Ortho de l'IGN et jpg2). En effet, j'ai environ 300 dalles pour un département, et aller chercher les fichiers manuellement est barbant. Je me permet de développer un peux mes recherche et mon avancement afin que vous puissiez m'indiquer si j'ai fait des erreurs (je m'excuse si c'est un peu long.).
Après de nombreuses recherches, j'ai trouvé une méthode décrite notamment ici : http://www.geoinformations.developpemen … 7796e3.pdf. Néanmoins, cette technique utilise le plugin Image Boundary qui n'existe plus. J'ai semble t-il trouvé l'équivalent dans les versions les plus récentes de qgis qui est l'index des tuiles rasters. Le problème étant que ce dernier me donne un message d'erreur quand je le lance : "Le processus n'a pu être lancé. Soit le programme requis est manquant, soit vous n'avez pas les droits nécessaires pour l'utiliser."
Sur différents forum, j'ai vu que cela pouvait venir du chemin d'accès trop long ou avec des espaces/caracteres spéciaux. J'ai donc déplacé les raster sur D avec ce chemin "D:BDORTHO1_DONNEES_LIVRAISON_2016-12-00191BDO_RVB_0M50_JP2-E080_LAMB93_D61-2016".
J'ai également vu sur des forums que le chemin d'accès vers GDAL était naturellement erroné sur Windows, j'ai donc tenté de le refaire sous le menu "paramètre de Gdal tools" sous Qgis 2.18.
Mais rien y fait, je reçois toujours ce message d'erreur.

J'aurais également une autre question.À travers mes recherches j'ai également rencontré le fait de créer un catalogue VRT, ce dernier stock également les raster dans son fichier ? Contrairement à la méthode si dessus qui ne va que les chercher ?

Étant un débutant dans qgis, je dispose de deux versions : 2.18 et 3.4 (quand je ne trouve pas d'un coté, je vais voir de l'autre tongue)

Merci beaucoup de votre attention.

Hors ligne

 

#2 Tue 14 May 2019 09:31

MathieuR
Membre
Lieu: aix-en-provence
Date d'inscription: 16 Feb 2009
Messages: 1690
Site web

Re: QGIS: Dalles pour ouvrir des rasters

bonjour,

Imaginons qu'une colonne location localise dans votre tableau d'assemblage l'emplacement de la dalle, alors cette action ouvrira la dalle ou l'enlèvera si elle est déjà présente. Pour créer une action sur une couche : couche > propriétés > action (code python)

Ce code fonctionne sous QGIS 2, mais il est à adapter pour QGIS 3

Code:

iface = qgis.utils.iface

layers = iface.legendInterface().layers()

location = '[%location%]'
displayName = os.path.basename(os.path.splitext(location)[0])
        
if displayName in map(lambda x : x.name(), layers) :
    theLayers = filter(lambda x: x.name() == displayName, layers)
    for layer in theLayers :
        QgsMapLayerRegistry.instance().removeMapLayer(layer.id())
else :
    iface.addRasterLayer(location,displayName)

geodata au cerema et petits billets en géomatique

Hors ligne

 

#3 Tue 14 May 2019 10:29

vulcain
Juste Inscrit !
Lieu: sées
Date d'inscription: 13 May 2019
Messages: 6

Re: QGIS: Dalles pour ouvrir des rasters

Merci pour votre réponse, mais je n'arrive justement pas a crée le shape avec la colonne location. Je possède néanmoins un shape livrée par IGN qui comporte le nom des rasters.
Donc je pense qu'il existe 2 solutions, soit réussir à faire ce fameux shape avec les chemins d'accès ( ce que je préférerais).
Soi utilisé des chemins relatifs et mettre le shape dans le même dossier que les rasters. Dans quel cas, seul nom des fichiers suffirait ?

Hors ligne

 

#4 Tue 14 May 2019 14:40

MathieuR
Membre
Lieu: aix-en-provence
Date d'inscription: 16 Feb 2009
Messages: 1690
Site web

Re: QGIS: Dalles pour ouvrir des rasters

Bonjour,

Ce code est fait pour fonctionner avec des chemins absolus. Pour des chemins relatifs, il vous faudra récupérer le chemin, soit du projet, soit de votre ta selon ce qui fait référence

Pour créer ce tableau d'assemblage : raster > divers > index des tuiles


geodata au cerema et petits billets en géomatique

Hors ligne

 

#5 Wed 15 May 2019 09:31

vulcain
Juste Inscrit !
Lieu: sées
Date d'inscription: 13 May 2019
Messages: 6

Re: QGIS: Dalles pour ouvrir des rasters

Bonjour,

C'est justement cet outil : raster > divers > index des tuiles, que je n'arrive pas a faire fonctionner. En effet ce dernier me renvoie toujours l'erreur suivante ( dans les deux versions de Qgis) :
"Le processus n'a pu être lancé. Soit le programme requis est manquant, soit vous n'avez pas les droits nécessaires pour l'utiliser."

Hors ligne

 

#6 Wed 15 May 2019 10:18

MathieuR
Membre
Lieu: aix-en-provence
Date d'inscription: 16 Feb 2009
Messages: 1690
Site web

Re: QGIS: Dalles pour ouvrir des rasters

Cela ne fonctionne sur aucune de vos deux versions de QGIS ?


geodata au cerema et petits billets en géomatique

Hors ligne

 

#7 Wed 15 May 2019 16:21

vulcain
Juste Inscrit !
Lieu: sées
Date d'inscription: 13 May 2019
Messages: 6

Re: QGIS: Dalles pour ouvrir des rasters

Non, malheureusement hmm ce serrait trop simple

Hors ligne

 

#8 Thu 16 May 2019 11:58

michel56
Participant assidu
Lieu: Lorient
Date d'inscription: 14 Jul 2012
Messages: 474

Re: QGIS: Dalles pour ouvrir des rasters

Bonjour,

Avec un fichier VRT pour l'ensemble du département, je pense que c'est le plus simple à utiliser par la suite. Tu auras tous sur le même calque.

Il y a eu pas mal de discussions à ce sujet.

Cordialement.

https://georezo.net/forum/viewtopic.php … amp;hl=vrt

Dernière modification par michel56 (Thu 16 May 2019 12:07)


Opérateur cartographique & DAO & PHP.

Hors ligne

 

#9 Thu 16 May 2019 18:19

vulcain
Juste Inscrit !
Lieu: sées
Date d'inscription: 13 May 2019
Messages: 6

Re: QGIS: Dalles pour ouvrir des rasters

Bonjour,

Merci beaucoup, en effet cela fonctionne. J'avais déjà tenté la chose et le même message d'erreur (cité au dessus. Signe qu'il ne peux pas gérer plus de X fichiers ?) m’était apparût. En le fessant en 2 fois pas de message d'erreur... Ce serait plus pratique avec 1 seul fichier mais bon ... C'est mieux que rien.

Autre choses, a une grande échelle, les temps de chargement sont très long. J'ai vu sur votre lien qu'il parlaient d'un fichier unique qui serrait plus optimisé au codage même du Jpg2. Le fait d'avoir un fichier unique serait-il donc utile dans on cas ? De plus cela me permettrait de créer le VRT en 1 fois et donc d'avoir un seul fichier.

Et dernier point, le fichier VRT crée des "dalles noires" autours des Rasters, est il possible de ne pas les créer ou les supprimer ?

Hors ligne

 

#10 Thu 16 May 2019 18:20

vulcain
Juste Inscrit !
Lieu: sées
Date d'inscription: 13 May 2019
Messages: 6

Re: QGIS: Dalles pour ouvrir des rasters

Bonjour,

Merci beaucoup, en effet cela fonctionne. J'avais déjà tenté la chose et le même message d'erreur (cité au dessus. Signe qu'il ne peux pas gérer plus de X fichiers ?) m’était apparût. En le fessant en 2 fois pas de message d'erreur... Ce serait plus pratique avec 1 seul fichier mais bon ... C'est mieux que rien.

Autre choses, a une grande échelle, les temps de chargement sont très long. J'ai vu sur votre lien qu'il parlaient d'un fichier unique qui serrait plus optimisé au codage même du Jpg2. Le fait d'avoir un fichier unique serait-il donc utile dans on cas ? De plus cela me permettrait de créer le VRT en 1 fois et donc d'avoir un seul fichier.

Et dernier point, le fichier VRT crée des "dalles noires" autours des Rasters, est il possible de ne pas les créer ou les supprimer ?

Hors ligne

 

#11 Fri 17 May 2019 00:04

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

Re: QGIS: Dalles pour ouvrir des rasters

Bonjour,

En fin de message, vous trouverez un code action fonctionnel pour QGIS3. Il permet d'ouvrir ET de fermer au clic, une dalle raster à partir d'un quadrillage vecteur. Le code est à insérer dans "Propriétés de la couche" > "Actions" (type Python).

Typiquement, les couches "dalles.shp" des dossiers par départements (ex : "OHR_RVB_0M20_JP2-E080_LAMB93_D75-2014") de "3_SUPPLEMENTS_LIVRAISON" de la BDORTHO de l'IGN peuvent faire l'objet de ce code (ajouté manuellement ou via l'application d'un style) pour ouvrir/fermer les jp2 livrés dans les dossiers par départements homonymes de "1_DONNEES_LIVRAISON".

A noter que "DOSSIER" et "NOM2" sont des variables à adapter.
Dans mon cas, ce sont des champs virtuels générés par la calculatrice de champs, pour une utilisation en relatif :
- DOSSIER : chemin du dossier où sont situées les dalles raster. Exemple indiquant le chemin du dossier à partir de celui dans lequel est contenu "dalles.shp" :

Code:

replace((layer_property(@layer_id,'source')), array('3_SUPPLEMENTS_LIVRAISON','dalles.shp'), array('1_DONNEES_LIVRAISON',''))

- NOM2 : nom de la dalle raster à afficher. Exemple basé sur le champ "NOM" déjà inclus dans la table attributaire de "dalles.shp" : 

Code:

replace ( "NOM" , './', '' )

L'avantage vis à vis d'un VRT ou d'un projet incluant déjà les jp2 est l'ouverture bien plus rapide (seule les couches "dalle.shp" sont chargées). Les jp2 sont appelés au cas par cas selon les besoin, mais cela nécessite évidement une activation par l'utilisateur (le clic pour activer l'action).

En espérant que cela réponde à votre besoin !

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="[% "DOSSIER" %]".replace("\\","/")+ "[% "NOM2" %]"
instRegistry = QgsProject.instance()
macouche = instRegistry.mapLayersByName( "[% "NOM2" %]")
courant=qgis.utils.iface.mapCanvas().currentLayer()
raster_ouvert=getVectorLayerByName("[% "NOM2" %]")
if raster_ouvert is not None:
    QgsProject.instance().removeMapLayer(raster_ouvert.id())
    qgis.utils.iface.mapCanvas().refresh()
else:
    qgis.utils.iface.addRasterLayer(mypath,"[% "NOM2" %]")
    qgis.utils.iface.setActiveLayer(courant)

Dernière modification par lylambda (Fri 17 May 2019 00:22)

Hors ligne

 

#12 Fri 17 May 2019 09:40

michel56
Participant assidu
Lieu: Lorient
Date d'inscription: 14 Jul 2012
Messages: 474

Re: QGIS: Dalles pour ouvrir des rasters

Bonjour,

Code:

Autre choses, a une grande échelle, les temps de chargement sont très long.

Personnellement je n'affiche pas l'orthophoto à grande échelle, j'utilise le Scan25. Tu peux définir l'échelle de visibilité dans les propriétés de la couche pour qu'elle n’apparaisse pas à grande échelle.

Code:

Le fait d'avoir un fichier unique serait-il donc utile dans on cas ?

Pour le fichier unique, je ne peux pas vous répondre.

Code:

Et dernier point, le fichier VRT crée des "dalles noires" autours des Rasters,

Pour les dalles noires tu les supprimes en ajoutant une couleur de transparence dans les propriétés de la couche.

Cordialement.

Dernière modification par michel56 (Fri 17 May 2019 09:46)


Opérateur cartographique & DAO & PHP.

Hors ligne

 

#13 Fri 17 May 2019 10:28

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

Re: QGIS: Dalles pour ouvrir des rasters

Pour les dalles noires tu les supprimes en ajoutant une couleur de transparence dans les propriétés de la couche.


Un bémol pour cette méthode, les pixels noirs de l'orthophoto deviendront aussi transparents.

Hors ligne

 

#14 Fri 17 May 2019 12:16

michel56
Participant assidu
Lieu: Lorient
Date d'inscription: 14 Jul 2012
Messages: 474

Re: QGIS: Dalles pour ouvrir des rasters

C'est vrai.

Sur ce poste il y a une méthode. A tester.


https://georezo.net/forum/viewtopic.php?id=85362


Opérateur cartographique & DAO & PHP.

Hors ligne

 

#15 Fri 10 January 2020 14:19

guillaume
Participant actif
Date d'inscription: 5 Sep 2005
Messages: 66

Re: QGIS: Dalles pour ouvrir des rasters

Bonjour,
j'essaye d'exploiter le code fourni par lylambda, mais sans résultats.
Ma dalle shp contient les champs : Img_2010, ex 18-2010-0630-6670-LA93.ecw et
Path_2010, ex \\cen-linda\gb_ref\BDORTHO\N_ORTHO_COUL\N_ORTHO_COUL_DALLES\N_ORTHO_COUL_018_2010_DALLES

J'ai personnalisé le code :
# le chemin du fichier à afficher:
fichier=r"[% c %]\[% Img_2010 %]"
# Nom à afficher dans la legende de Qgis:
titre="[% Img_2010 %]"
# nom du groupe où seront placées les dalles:
nomDuGroupe=u"Dalles"

lay=qgis.utils.iface.activeLayer()
titre=titre.decode('utf8')
fichier=fichier.decode('utf8')
if not os.path.exists(fichier):
  from PyQt4.QtGui import QMessageBox
  QMessageBox.information(qgis.utils.iface.mainWindow(), u"Attention la dalle ci-dessous est introuvable", fichier)
else:
  raster=qgis.utils.iface.addRasterLayer( fichier, titre )
  # Si le groupe voulu n'existe pas, il faut le créer puis déplacer la nouvelle dalle dans ce groupe :
  li = qgis.utils.iface.legendInterface()
  i = 0
  index = -1
  import qgis.core
  if QGis.QGIS_VERSION_INT>10800:
    for grp in li.groups():
      if grp ==nomDuGroupe: index = i
      i = i + 1
  else:
    for item in li.groupLayerRelationship():
      if item[0] == nomDuGroupe: index = i
      i = i + 1
  if index == -1: index = li.addGroup( nomDuGroupe )
  li.moveLayer(raster, index)
  # Redonner le statut 'Active' à la couche (pour continuer à utiliser cette Action) :
  qgis.utils.iface.setActiveLayer(lay)


MAIS QGIS 3.4.5 affiche une fenêtre Erreur Python (voir PJ)

D'avance merci

Cordialement

gerard

Hors ligne

 

Pied de page des forums

Powered by FluxBB