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

Printemps des cartes 2024

#1 Wed 07 July 2010 19:11

Mathieu Denat
Participant actif
Lieu: Montpellier
Date d'inscription: 5 May 2010
Messages: 110

Manipulation de raster: conversion de .tab vers .pngw

Bonjour à tous,


Je travaille sous linux (uniquement) avec Qgis, et les "boites à outils classiques" (GDAL/OGR).
On m'a transmis des fichiers raster (format PNG) issus de MapInfo, les informations de géoréférencement sont donc contenues dans un fichier .tab du même nom que mon fichier PNG.

J'aimerais pouvoir utiliser ces fichiers (PNG + TAB), or Qgis ne cale pas les rasters car le fichier pgnw est inexistant. Par ailleurs j'ai essayé d'ouvrir le fichier tab lié à mon raster en png, mais Qgis m'indique que ce fichier tab n'est pas une source de données valide. J'ai cette même erreur en essayant d'ouvrir mon tab en tant que raster ou en tant que couche vectorielle.

J'ai bien compris que l'enjeu est d'utiliser les données qui sont contenues dans le .tab et les mettre en forme dans un .pngw, mais je ne sais pas comment m'y prendre.

J'ai trouvé de la doc sur le portailsig: http://www.portailsig.org/content/pytho … fw-jgwpngw
Mais aussi des infos sur un script pour ArcGis, ou encore un outils pour MapInfo (sur ce forum, développé par Maurice Nadal).

Cependant je n'ai pas trouvé de traces d'une solution gratuite (et opensource si possible! wink ), compatible linux.

Pour information voici le contenu d'un des .tab associé à mes rasters:

Code:

!table
!version 300
!charset WindowsLatin1

Definition Table
File "AUBENAS.png"
Type "RASTER"
(760000.0,1960000.0) (0,0) Label "Pt1",
(770000.0,1960000.0) (4000,0) Label "Pt2",
(760000.0,1950000.0) (0,4000) Label "Pt3",
(770000.0,1950000.0) (4000,4000) Label "Pt4"
CoordSys Earth Projection 3, 1002, "m", 0, 46.8, 45.898918964419, 47.696014502038, 600000, 2200000

Voilà si vous aviez des pistes ou que vous pouviez me donner un coup de pouce, je vous en serait reconnaissant.
Bonne soirée.


Mathieu
C'est en forgeant qu'on devient forgeron

Hors ligne

 

#2 Wed 07 July 2010 22:08

ThomasG
Membre
Lieu: Nantes
Date d'inscription: 9 Sep 2005
Messages: 943
Site web

Re: Manipulation de raster: conversion de .tab vers .pngw

Bonjour,

Si vous avez installé OGR/GDAL et que votre répertoire contient AUBENAS.png et AUBENAS.tab (en admettant que vous n'ayez pas d'autres fichiers portant le même nom et ayant une autre extension), vous aurez le moyen expliqué ci-dessous.

Démarche :
Les commandes ci-dessous se passent dans le répertoire contenant les fichiers.
Le Tiff gère les TAB avec géoréférencement, on va donc passer par son intermédiaire (cf http://georezo.net/wiki/main:logiciels: … rencement)
Le contenu du WLD (World file) est indépendant du format d'image : c'est l'extension qui change généralement.

Cas pratique

Passer votre png en tif

Code:

gdal_translate AUBENAS.png AUBENAS.tif

Remplacer le contenu de votre AUBENAS.tab et manipuler les fichiers

Code:

sed -e "s/AUBENAS.png/AUBENAS.tif/g" AUBENAS.tab > tmp.txt
rm AUBENAS.tab
mv tmp.txt AUBENAS.tab

Rebasculer en png pour récupérer les coordonnées depuis le tab

Code:

gdal_translate -co "WORLDFILE=YES" AUBENAS.tif AUBENAS_bis.png
rm AUBENAS_bis.png

Code:

mv AUBENAS_bis.wld AUBENAS.pngw

Il ne vous reste plus qu'à récupérer le AUBENAS.pngw et le AUBENAS.png d'origine et c'est calé wink

Merci de confirmer que cela marche (j'ai testé avec un jeu perso mais dans le doute...)

Cordialement

ThomasG

Dernière modification par ThomasG (Wed 07 July 2010 22:09)

Hors ligne

 

#3 Thu 08 July 2010 14:35

jcr83
Participant actif
Date d'inscription: 17 Mar 2008
Messages: 147

Re: Manipulation de raster: conversion de .tab vers .pngw

Dans un cas aussi simple, c'est beaucoup plus rapide à faire à la main. Il suffit de calculer la taille des pixels : 2.5 m x 2.5 m
Le fichier .pgw sera donc :

Code:

2.5
0
0
-2.5
760001.25
1959998.75

Dernière modification par jcr83 (Thu 08 July 2010 14:40)

Hors ligne

 

#4 Thu 08 July 2010 19:06

Mathieu Denat
Participant actif
Lieu: Montpellier
Date d'inscription: 5 May 2010
Messages: 110

Re: Manipulation de raster: conversion de .tab vers .pngw

Bonjour,

Tout d'abord merci beaucoup pour vos réponses!
J'ai adapté un poil la procédure pour automatiser un peu plus (j'ai plus d'un raster dans mon répertoire) j'ai donc fait.
Par ailleurs j'ai eu quelques difficultés car ma version de GDAL ne semble pas supporter la génération de worldfile pour les tiffs (bizarre non? il est possible que j'ai fait une boulette à la compilation).

Code:

Warning 6: Driver GTiff does not support WORLDFILE creation option

Bref, je m'en suis sorti en faisant des pirouettes assez simples (après pas mal de tâtonnements):



La conversion de png vers tif

Code:

find ./ -iwholename "*.png" -execdir gdal_translate {} {}.tif \;

Ça marche parfaitement!


Ensuite j'ai choisi de renommer les fichiers tif obtenus plutôt que de remplacer la chaîne de caractères du .tab:

Code:

rename -f -v 's/\.png//' *.tif

Je lance la création des fichiers wld:

Code:

find ./ -iwholename "*.tif" -execdir gdal_translate -co "WORLDFILE=YES" {} {}_bis.png \;

Je renomme les fichier world:

Code:

rename -f -v 's/tif_bis\.wld/pngw/' *.wld

Et enfin je fini le ménage pour ne garder que les png et les pngw:

Code:

rm -vrf *.TAB *.tif*

Sinon dans mon tâtonement j'ai aussi essayé ça (c'est moins pratique je trouve):

Code:

find ./ -iwholename "*.png" -execdir gdal_translate {} {}.tiff \; #conversion png vers tiff
for i in `find ./ -iwholename "*.tab"|xargs`; do sed -e "s/png/png.tiff/" $i > $i.txt; done #remplacement de la chaine de caractères de .tab
rename -v -f 's/TAB\.txt/TAB/' * #rempalcement des anciens .tab
find ./ -iwholename "*.tiff" -execdir gdal_translate -co "WORLDFILE=YES" {} {}_bis.png \; #création des wld

Le renommage des fichiers et le ménage reste identique sur la fin.

C'est encore un peu embrouillé dans ma tête.
Par contre j'aurais une autre question:

jcr83 a écrit:

Dans un cas aussi simple, c'est beaucoup plus rapide à faire à la main. Il suffit de calculer la taille des pixels :


Comment fais tu le calcul de la taille des pixels?


Mathieu
C'est en forgeant qu'on devient forgeron

Hors ligne

 

#5 Fri 09 July 2010 10:47

jcr83
Participant actif
Date d'inscription: 17 Mar 2008
Messages: 147

Re: Manipulation de raster: conversion de .tab vers .pngw

Matmat a écrit:
jcr83 a écrit:

Dans un cas aussi simple, c'est beaucoup plus rapide à faire à la main. Il suffit de calculer la taille des pixels :


Comment fais tu le calcul de la taille des pixels?


Question délirante de complexité ! Niveau Cours Moyen 1. Sachant que le terrain est un carré  de 10000 m de côté, et qu'il y a 4000 x 4000 pixels, quelle est la taille d'un pixel ? Les bras m'en tombent que tu poses cette question ...

J'aurais plus facilement compris que tu me demandes pourquoi j'ai mis comme coordonnées du point d'origine les valeurs 760001.25 et 1959998.75, en non 760000 et 1960000. Sais-tu pourquoi ?

Hors ligne

 

#6 Fri 09 July 2010 11:45

Mathieu Denat
Participant actif
Lieu: Montpellier
Date d'inscription: 5 May 2010
Messages: 110

Re: Manipulation de raster: conversion de .tab vers .pngw

Salut tous,

Du nouveau coté forumsig.org avec un petit éclaircissement sur la manière dont est structurée un fichier tab (il devient alors possible de faire un script python plutot que de passer par GDAL/bash):
http://www.forumsig.org/showthread.php? … post242890

jcr83 a écrit:

Question délirante de complexité ! Niveau Cours Moyen 1. Sachant que le terrain est un carré  de 10000 m de côté, et qu'il y a 4000 x 4000 pixels, quelle est la taille d'un pixel ? Les bras m'en tombent que tu poses cette question ...


Ma question aurait était suivante sans avoir compris comment était fait un tab: "comment devines tu que ton image fait 4000px pour 10000m de coté?" Maintenant que j'ai compris comment est structuré un tab je comprend comment tu peux calculer ces infos.

Donc là si j'ai bien tout suivi, on a 10000m de coté car change angle est séparé par 10000m (jusque là tout va bien!) car 77000 - 76000 = 10000 idem pour les y: 19600000 - 1950000 = 10000 soit un carré de 10 000m de coté.
L'unité est précisée dans la dernière ligne de mon tab si je ne me trompe pas.

Idem pour les 4000 px (Le nombre pixel est inscrit dans le tab mais je ne savais extraire cette info).
(0,0) --> coin inférieur gauche
(4000,0) --> coin inférieur droit
(0,4000) --> coin supérieur gauche
(4000,4000) --> coin supérieur droit

Peux tu me confirmer que c'était le raisonnement attendu stp (histoire d'avoir l'air moins c*n la prochaine fois!)?

EDIT:
La commande gdalinfo donne pas mal de ces infos notamment: "Size is 4000, 4000".
Pour la synthaxe: gdalinfo monraster.truc

jcr83 a écrit:

J'aurais plus facilement compris que tu me demandes pourquoi j'ai mis comme coordonnées du point d'origine les valeurs 760001.25 et 1959998.75, en non 760000 et 1960000. Sais-tu pourquoi ?


Avec les explications de gene (voir  le lien précédent vers le forumsig) oui j'ai compris que

Code:

(760000.0,1960000.0) (0,0) Label "Pt1"

se rapporte à l'origine, et que 

Code:

(770000.0,1950000.0) (4000,4000) Label "Pt4"

se rapporte au coin en haut à droite. Comme les worldfile ne calculent pas de la même manière, il faut compenser le fait que l'origine est au centre du pixel supérieur gauche, c'est bien ça?
Tout ça crééé un décalage c'est ce qui est expliqué ici : http://www.portailsig.org/content/pytho … fw-jgwpngw (paragraphe taille d'un pixel).

Si tu peux m'indiquer si mon raisonnement tiens la route, ça m'aidera à progresser.

Merci d'avance.

PS: Je suis débutant et je n'ai suivi aucune formation en géomatique. Étant autodidacte il est possible que j'ai des lacunes majeures (exemple: ne pas savoir "lire" un fichier .tab) qui m'empêchent de voir des "évidences", donc soyez indulgents svp! wink

Dernière modification par Matmat (Fri 09 July 2010 11:54)


Mathieu
C'est en forgeant qu'on devient forgeron

Hors ligne

 

#7 Tue 07 January 2014 00:59

jack tippit
Participant actif
Lieu: Limoges
Date d'inscription: 3 Dec 2008
Messages: 116
Site web

Re: Manipulation de raster: conversion de .tab vers .pngw

Bonsoir à tous,
Je relance un sujet, je ne sais pas si ça se fait! J'ai exactement le problème décrit par matmat, mais les solutions évoquées par thomasG ou matmat ne fonctionne pas chez moi :-S avec la même erreur que matmat (Warning 6: Driver GTiff does not support WORLDFILE creation option) la solution que ce dernier propose n'aboutie pas non plus...
La solution d'un script python pourrait être intéressante, mais personnellement je suis plutôt R :-( (encore loupé) et dans tous les cas la personne qui travaillait avec mapInfo et que j'essaye de convertir à Qgis ne va pas se lancer dans le scripting! Un trauma a la fois!
Est-ce que depuis 2010 les choses ont évolué?
Très bonne soirée

E

Hors ligne

 

Pied de page des forums

Powered by FluxBB