#1 Wed 12 November 2014 14:33
- vxTedxv
- Participant occasionnel
- Date d'inscription: 26 Jan 2011
- Messages: 26
construire un VRT avec chemins relatifs
Bonjour,
Je souhaite créer un fichier VRT avec la commande gdalbuildvrt dans lequel les fichiers raster source sont référencés par des chemins relatifs au fichier .vrt
J'ai testé via QGIS (menu Raster>Divers>Construire un raster virtuel) mais par défaut, ce sont les liens absolus qui sont retenus.
Mon problème c'est que je dois assembler des centaines de dalles dans ce VRT avec une arborescence de dossiers à rallonge (que je ne peux réduire). La commande plante en cours de création du fichier, probablement du fait du trop grand nombre de caractères : mon fichier VRT contient seulement les 3/4 de mes dalles. Et je ne dispose donc même pas d'un fichier complet contenant toutes mes dalles en chemins absolus que je pourrais corriger ensuite. Il me faut donc directement créer le fichier VRT en chemins relatifs.
Je ne peux raisonnablement pas taper manuellement mes centaines de dalles dans la commande gdalbuildvrt en chemins relatifs, ni compléter mon fichier VRT avec les dalles manquantes, ne connaissant pas les calculs effectués pour assembler les dalles entre elles.
Je sais que le fichier VRT peut contenir des liens relatifs (grâce à <SourceFilename relativeToVRT="1">)
Idéalement, il faudrait que je sélectionne la destination du fichier VRT puis le dossier contenant mes centaines de dalles et que la commande gdal convertisse tout ça en chemins relatifs. Est-ce possible ? J'ai tenté de modifier manuellement le chemin absolu du dossier contenant les dalles dans la fenêtre de création du VRT proposée par QGIS, en vain.
Des suggestions ?
Hors ligne
#2 Thu 13 November 2014 16:20
- Paul
- Participant assidu
- Lieu: Paris
- Date d'inscription: 31 Jul 2008
- Messages: 158
Re: construire un VRT avec chemins relatifs
Bonjour,
J'avais été confronté à un plantage un peu similaire, et c'était lié (si j'avais bien compris) à un trop grand nombre de raster à assembler virtuellement et non aux chemins. J'avais été obligé de faire un "part1.vrt", part2.vert", ... Ce qui n'était pas très pratique...
Bonne journée
Paul
Hors ligne
#3 Thu 13 November 2014 23:31
- JD
- Moderateur
- Date d'inscription: 8 Aug 2013
- Messages: 726
Re: construire un VRT avec chemins relatifs
Regardez la commande gdalbuildvrt car il faudra passer par la ligne de commande pour palier ce problème.
Hors ligne
#4 Fri 14 November 2014 18:37
- vxTedxv
- Participant occasionnel
- Date d'inscription: 26 Jan 2011
- Messages: 26
Re: construire un VRT avec chemins relatifs
Dans mon cas, il ne s'agissait pas du nombre de rasters. Le message d'erreur de QGIS, m'indiquait qu'un des rasters n'existait pas, en précisant le chemin, qui était tronqué (du coup, si le chemin est tronqué, forcément il ne trouve pas le fichier !), et tous les rasters suivants n'ont pas été traités. Typique d'un trop grand nombre de caractères à mouliner...
Du coup, j'ai quand même réussi à bidouiller mon fichier VRT :
J'ai créé deux VRT que nous appellerons VRT1 et VRT2. VRT1 contenait la première moitié de mes dalles raster, VRT2 la seconde moitié. QGis a pu les créer sans problèmes. Les deux VRT contenaient aussi les dalles raster extrêmes de ma carte finale (pour que la projection dans le fichier VRT final noté VRT3 soit identique entre VRT1 et VRT2). J'ai séparé chaque VRT en 3 parties respectivement pour les 3 bandes, j'ai collé le code de la 1ère bande du VRT2 à la suite de la première partie du code du VRT1 épuré du code concernant les dalles extrêmes en doublon entre VRT1 et 2, le code de la 2e bande du VRT2 à la suite de la seconde partie du code du VRT1 épuré des doublons et le code de la 3e bande à la suite de la troisième partie du code du VRT1 également épurés des doublons. J'ai refusionné mes 3 nouvelles parties de code du VRT1 et j'obtiens mon VRT final, qui fonctionne. Il ne me restait plus qu'à utiliser l'outil Rechercher/Remplacer de l'éditeur de texte pour transformer mes liens absolus en liens relatifs.
Comme je conçois que mon paragraphe n'est pas des plus simples à suivre, voici schématiquement ma démarche :
N = nombre total de dalles à traiter (exemple : 300)
N= n1+n2
n1 = par exemple les 160 premières dalles
n2 = par exemple les 140 dernières dalles
nExt= dalles des coins de la carte à N dalles (si la carte à N dalles n'est pas un carré, c'est pas grave, on peut utiliser 5 ou 6 dalles extrêmes pour être sûr)
VRT1= début de code du VRT + bande 1 à (n1 + nExt) dalles + bande 2 à (n1 + nExt) dalles + bande 3 à (n1 + nExt) dalles + fin de code du VRT
VRT2= début de code du VRT + bande 1 à (n2 + nExt) dalles + bande 2 à (n2 + nExt) dalles + bande 3 à (n2 + nExt) dalles + fin de code du VRT
Epuration des doublons et suppression de la fin du code du VRT1 :
VRT1a = début de code du VRT + bande 1 à n1 dalles
VRT1b = bande 2 à n1 dalles
VRT1c = bande 3 à n1 dalles
Epuration des doublons et suppression du début du code du VRT2 :
VRT2a = bande 1 à n2 dalles
VRT2b = bande 2 à n2 dalles
VRT2c = bande 3 à n2 dalles + fin de code du VRT
Fusion VRT1 et VRT2 :
VRTfinal= VRT1a+VRT2a+VRT1b+VRT2b+VRT1c+VRT2c
Enfin, étape de recherche/remplacement des liens absolus en relatifs sans oublier tous les <SourceFilename relativeToVRT="1">
Hors ligne
#5 Mon 17 November 2014 07:15
- JD
- Moderateur
- Date d'inscription: 8 Aug 2013
- Messages: 726
Re: construire un VRT avec chemins relatifs
Merci pour ce retour.
Hors ligne