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 Mon 03 August 2015 16:26

Lucie D.
Participant actif
Date d'inscription: 21 Oct 2013
Messages: 137

QGIS 2.6 : Problème rasterisation tronçons routes

Bonjour!

Après deux ans et demi passés sur Mapinfo, me voilà sur QGis!

Et les ennuis recommencent!!! ^^"

Je travaille sous QGis 2.6 sur une affaire concernant l'occupation du sol. Je souhaite rasteriser une couche vecteur correspondant à des tronçons routiers + ferrés + aires de triage + surfaces routes (correspondant aux parkings, péages, aires d'autoroute, etc.).

J'ai déjà effectué la manip sur une zone test, et je n'ai rencontré aucun problème. En revanche, comme je travaille maintenant sur le département de l'Ardèche, voici mon problème :

En effet, lorsque je rasterise ma couche vecteur (utilisation de v.to.rast.attribute) en fonction de mon champ "code", j'obtiens deux grosses taches sur l'Ardèche (voir image ci-joint). Le reste des tronçons routes a pourtant bien été rasterisé. (Je précise que je suis sûre qu'à cet endroit, il ne s'agit pas d'une surface route mais plutôt de zones arborées...)

Ces deux taches vertes correspondent exactement au remplissage de tronçons routiers qui forment un patatoïde fermé dans la couche vecteur que je souhaite justement rasteriser (voir ci-joint explication visuelle).

Pourquoi QGis veut-il absolument rasteriser et codifier l'intérieur de ces patatoïdes dans le même code que mes tronçons "périmètre" plutôt que de rasteriser uniquement les lignes? C'est comme si la rasterisation considérait d'office que l'intérieur d'une multiligne fermée devait être rasterisée et prendre la codification des lignes qui l'entourent...

Avez-vous déjà rencontré ce problème? J'espère avoir été assez claire...

En vous remerciant par avance pour votre aide précieuse!

Cordialement,

Lucie D.

Dernière modification par Lucie D. (Mon 03 August 2015 16:30)


Fichier(s) joint(s) :
Pour accéder aux fichiers vous devez vous inscrire.

Hors ligne

 

#2 Mon 03 August 2015 16:55

YoLecomte
Participant assidu
Lieu: Epinal
Date d'inscription: 7 Jul 2015
Messages: 239

Re: QGIS 2.6 : Problème rasterisation tronçons routes

Salut,

Est ce que l'outil "rasterize (vector to raster)" de GDAL te donne le même résultat ?

Hors ligne

 

#3 Tue 04 August 2015 08:19

Lucie D.
Participant actif
Date d'inscription: 21 Oct 2013
Messages: 137

Re: QGIS 2.6 : Problème rasterisation tronçons routes

Bonjour, je regarde ça aujourd'hui et je vous tiens au courant!
Merci,
Cordialement,
Lucie D.

Hors ligne

 

#4 Tue 04 August 2015 08:38

Lucie D.
Participant actif
Date d'inscription: 21 Oct 2013
Messages: 137

Re: QGIS 2.6 : Problème rasterisation tronçons routes

Ouhlà...comme je ne connaissais que v.to.rast de GRASS, me voilà perdue avec GDAL..;

J'ai bien compris qu'il fallait que je choisisse quelle couche rasteriser, quel attribut affecter, le nom de la couche à la sortie, mais pour définir l'emprise sur laquelle je souhaite rasteriser, je suis perdue...

Comment configurer l'emprise sur laquelle je souhaite rasteriser? A quoi correspondent "horizontal" et "verticale"? Je souhaiterais tout simplement, comme dans GRASS, configurer l'emprise en fonction de ma couche du canevas (au final dans ce que je souhaite faire, il n'y a qu'une seule couche qui intervient...).

Quelqu'un saurait-il m'aider?

En vous remerciant par avance!

Bien cordialement,

Lucie D.

EDIT : je précise juste que je n'ai rien trouvé à ce sujet sur le web, ne tombant que sur des sites en anglais (aïe, va falloir que je révise mes cours...) et en plus sur...PYTHON, que je ne maitrise absolument pas...

Merci!

Dernière modification par Lucie D. (Tue 04 August 2015 08:41)

Hors ligne

 

#5 Tue 04 August 2015 09:47

YoLecomte
Participant assidu
Lieu: Epinal
Date d'inscription: 7 Jul 2015
Messages: 239

Re: QGIS 2.6 : Problème rasterisation tronçons routes

Salut,

Tu n'as pas à gérer l'emprise.
Les paramètres dont tu parles concernent la résolution (taille d'un pixel en x (horizontal) et en y (vertical)).
Tu peux choisir de l'exprimer en pixel ou en unités de carte (le mètre en général). par exemple, les valeurs par défaut de l'outil sont de 100 en x et de 100 en y donc le raster en sortie a des pixels de 100m x 100m.

(D'ailleurs pour rasteriser des lignes, c'est pas mal de mettre une résolution assez fine et d'avoir appliquer un tampon avant pour avoir quelque chose de propre)

Ensuite:
Raster type correspond au type d'encodage de valeurs rasters (int --> entier, float --> réel, byte --> bits)
Nodata Value: valeurs que prendront les pixels qui n'ont pas d'attributs (les pixels null si tu veux)

Le reste tu n'as pas y toucher si tu veux faire un tiff.

Voila, rien de sorcier!

Hors ligne

 

#6 Tue 04 August 2015 10:48

Lucie D.
Participant actif
Date d'inscription: 21 Oct 2013
Messages: 137

Re: QGIS 2.6 : Problème rasterisation tronçons routes

Super! Merci, ça fonctionne, et effectivement j'obtiens sensiblement la même chose sans mes deux grosses taches. Je me demande d'ailleurs pourquoi deux outils censés faire le même travail donnent des résultats différents...

En revanche, je remarque un léger décalage entre les pixels de l'ancienne couche (avec les taches) et la nouvelle (voir zoom ci-joint). De plus, tous les pixels ne sont pas positionnés de la même manière, mais cette différence est légère.

Dans mon travail, je me demande si cette différence risque de poser un souci puisque nous travaillons à une échelle plutôt fine (nous avons fixé la taille des pixels à 5mX5m).

En fait, je dois utiliser r.mapcalculator de GRASS pour compiler cette couche à d'autres couches correspondant à d'autres modes d'occupation du sol et ensuite comparer la couche finale avec celle d'un autre service avec lequel je travaille. La comparaison ne risque-t-elle pas d'être faussée à cause de cette couche rasterisée avec un autre outil que les autres?

Désolée si je m'exprime mal, pas évident à expliquer...

En tout cas, merci beaucoup pour votre aide!

Bien cordialement,

Lucie D.

EDIT : je précise que j'ai bien vérifié et mes couches ont bien la même projection!

Dernière modification par Lucie D. (Tue 04 August 2015 10:51)


Fichier(s) joint(s) :
Pour accéder aux fichiers vous devez vous inscrire.

Hors ligne

 

#7 Tue 04 August 2015 11:08

YoLecomte
Participant assidu
Lieu: Epinal
Date d'inscription: 7 Jul 2015
Messages: 239

Re: QGIS 2.6 : Problème rasterisation tronçons routes

Effectivement, pour utiliser les calculatrice de raster, il faut s'assurer d'avoir exactement la même emprise et la même résolution pour toutes les couches que l'on souhaite croiser.

Pour éviter les problèmes de décalage, personnellement j'utilise l’outil "rasterize over an existing layer" de GDAL.

Dans un premier temps je crée un raster vide (remplis de 0) un peu pus grand que ma zone d'étude à la résolution souhaitée. Ce raster me sers de guide pour la rasterisation de l'ensemble de mes couches vecteurs ce qui m'assure une emprise et une résolution homogène.

Hors ligne

 

#8 Tue 04 August 2015 11:40

Lucie D.
Participant actif
Date d'inscription: 21 Oct 2013
Messages: 137

Re: QGIS 2.6 : Problème rasterisation tronçons routes

Merci pour l'info.
Mais je suis désolée je vais encore devoir vous embêter...
Dans ma version de QGis, je trouve l'outil Rasterize (write over existing raster). Je suppose donc que c'est la même chose...?
Toutefois, quand j'utilise cet outil, il ne me demande que trois choses:
- Ma couche à rasteriser
- Mon attribut
- Mon raster emprise.

En réalité, depuis le début de mon affaire, j'utilise une couche raster que nos collègues "collaborateurs" nous ont envoyé. Elle me sert de guide depuis le début. Cette couche a été rasterisée avec un champ bien précis, et donc pas de 0 comme vous, mais plusieurs valeurs en fonction de l'occupation du sol. Rien de choquant jusqu'ici.

Quand je remplis ces trois champs dans la boite de dialogue GDAL, ça mouline un moment, puis la boite de dialogue disparait sans aucun message et je n'obtiens aucune nouvelle couche correspondant à ma couche rasterisée...

En gros il ne se passe rien...

Est-ce normal?

Merci!

Lucie D.

Hors ligne

 

#9 Tue 04 August 2015 11:53

Lucie D.
Participant actif
Date d'inscription: 21 Oct 2013
Messages: 137

Re: QGIS 2.6 : Problème rasterisation tronçons routes

Après attente (je pensais que QGis avait terminé de travailler...), j'obtiens finalement le message ci-joint.

Pour info, il est normal que je cherche à rasteriser une couche avec une couche emprise n'ayant pas la même projection. Nous obtenons bien à la fin la bonne projection après plusieurs vérifications). Cette manip a été effectuée plusieurs fois sous GRASS sans aucun souci.

Pourquoi je n'obtiens aucun message d'erreur alors qu'aucune couche n'a été créée?

Merci!

Lucie D.


Fichier(s) joint(s) :
Pour accéder aux fichiers vous devez vous inscrire.

Hors ligne

 

#10 Tue 04 August 2015 12:04

YoLecomte
Participant assidu
Lieu: Epinal
Date d'inscription: 7 Jul 2015
Messages: 239

Re: QGIS 2.6 : Problème rasterisation tronçons routes

oui, c'est tout à fait normal. L'outil modifie les valeurs du raster emprise.
Si tu regardes les valeurs du raster qui t'as servi de guide, elles ont changé et doivent correspondre aux valeurs du champ que tu as rasterisé la où il y a de la donnée.

Attention donc a cet outil "rasterise over" car il altère le raster qui sert de guide... mieux vaut travailler sur une copie!
Le problème que tu vas avoir si ton raster emprise n'est pas vide c'est que seul les pixels compris dans la couche vecteur que tu rasterises vont être modifiés, les autres conserveront leur valeur d'origine. Tu vas donc te retrouver avec un mélange des deux couches.

L'idéal est donc de travailler sur un raster vide qu'on remplis avec les valeurs du champ de la couche vecteur.

Je réalise une étude qui me demande de croiser de nombreux rasters, un peu comme toi j'imagine. Ce que j'ai fais, c'est que j'ai crée un script qui permet de générer un raster vide sur l'emprise d'un polygone qui représente ma zone d'étude (création d'un raster rectangulaire 1000m plus grand que le polygone). C'est ce raster qui me sers ensuite de guide pour la création des différentes cartes que je souhaite croiser.

Hors ligne

 

#11 Tue 04 August 2015 13:48

Lucie D.
Participant actif
Date d'inscription: 21 Oct 2013
Messages: 137

Re: QGIS 2.6 : Problème rasterisation tronçons routes

BINGO!

Ça marche très bien et en effet, je n'ai plus ni tache, ni aucun décalage!

Le seul hic (quelle maligne je suis...) c'est que j'ai justement lancé la rasterisation sur ma couche guide de base sans en avoir fait de copie...Il va falloir que je retrouve une copie quelque part...S'il y en a! Mais je ne m'en suis rendue compte qu'après mon premier essai (tes explications sont venues confirmer ce que je redoutais, mais le write OVER aurait dû me faire tilter...) =p

Bon, maintenant c'est mon problème! =p

Encore un TRÈS grand merci pour ta patience et ta réactivité (je ne m'attendais pas à autant en plein mois d'août... ;-)

A bientôt!

Bien cordialement,

Lucie D.

Dernière modification par Lucie D. (Tue 04 August 2015 13:48)

Hors ligne

 

#12 Tue 04 August 2015 13:53

YoLecomte
Participant assidu
Lieu: Epinal
Date d'inscription: 7 Jul 2015
Messages: 239

Re: QGIS 2.6 : Problème rasterisation tronçons routes

Les stagiaires n'ont pas de vacances wink

bon courage pour la suite de ton travail!

Hors ligne

 

#13 Tue 04 August 2015 13:56

Lucie D.
Participant actif
Date d'inscription: 21 Oct 2013
Messages: 137

Re: QGIS 2.6 : Problème rasterisation tronçons routes

Ah oui...Je suis passée par là moi aussi...
Bon courage et bonne continuation!
Coridalement,
Lucie D.

Hors ligne

 

#14 Wed 05 August 2015 10:37

Lucie D.
Participant actif
Date d'inscription: 21 Oct 2013
Messages: 137

Re: QGIS 2.6 : Problème rasterisation tronçons routes

Bonjour!

Finalement, me voilà de retour car je rencontre un nouveau problème avec la rasterisation de mes couches via Gdal.

En effet, voilà comment j'ai procédé :

Je dois rasteriser 4 fois la même couche (toujours mes tronçons routiers+ferrés) suivant un champ différent (qui sont bien à chaque fois des entiers):

- code_nat
- comparaison
- ind
- syst

J'utilise donc Gdal rasterize (write over existing raster). Pour cela, j'ai besoin de l'emprise exacte que nos collaborateurs nous ont envoyée. Ainsi, j'utilise la calculatrice raster de GRASS r.mapcalculator sur cette couche emprise et j'indique la formule suivante : if(A<>0,0,0). J'obtiens donc bien mon emprise avec uniquement des 0. Je copie cette couche 4 fois (avec des noms différents) et ensuite je lance avec Gdal la rasterisation de ma couche vecteur. Mes 4 couches "raster emprise" sont donc modifiées.

Pour le code_nat, pas de souci, mes tronçons routiers ont bien pris les différentes valeurs de mon champ code_nat.

En revanche, pour comparaison, ind et syst, mes tronçons routiers ont pris une unique valeur qui ne correspond à rien (par exemple, pour comparaison, au lieu d'avoir 11000, j'avais un 92 alors que ce chiffre ne revient nulle part dans mon travail!!!

Alors comme je devais rendre mon travail assez rapidement, j'ai utilisé de nouveau la calculatrice raster r.mapcalculator, et, heureusement pour moi, mes codes comparaison, syst et ind n'étaient concernés que par des valeurs uniques! Donc dans r.mapcalculator, j'ai entré la formule suivante:


if(A<>0,"ma_valeur",0).

Et cela pour chacun de mes 3 champs restant.
Ça a bien fonctionné et j'ai utilisé r.stats pour vérifications plus contrôle visuel. Tout m'a semblé exact.

La première partie de mon travail est donc terminée et envoyée (les résultats étaient très satisfaisant à première vue), mais je vais devoir effectuer dans un deuxième temps la même manip, avec un code usage_bd qui lui comporte deux valeurs.
Je ne pourrai donc pas bidouiller avec r.mapcalculator!!!

Ou ai-je bien pu me tromper pour que ma couche raster ne prenne pas les bonnes valeurs?
Est-ce que mon bidouillage avec r.mapcalculator est risqué?

En vous remerciant par avance pour votre aide!!!

Bonne journée.

Bien cordialement,

Lucie D.

Hors ligne

 

#15 Thu 06 August 2015 08:27

Lucie D.
Participant actif
Date d'inscription: 21 Oct 2013
Messages: 137

Re: QGIS 2.6 : Problème rasterisation tronçons routes

Bonjour,

J'ai fait un nouvel essai cette fois-ci en créant un raster emprise à partir d'une couche vecteur de l'Ardèche (Menu/Vecteur/Outil de recherche/Créer un polygone à partir de l'emprise d'une couche).
Ensuite j'ai rasterisé cette couche vecteur avec l'outil v.to.rast.value de GRASS (en attribuant la valeur 0 du coup).
Et ensuite j'ai relancé la manip sous Gdal pour rasteriser ma couche tronçons routes+ferrés avec ce nouveau raster 0. Je l'ai refait sur mes 4 champs, et toujours le même résultat...

Avec le code_nat, ça fonctionne parfaitement, avec les autres (comparaison, syst et ind) ça ne fonctionne pas (mauvaises valeurs). J'en déduis donc que le problème ne vient peut-être pas de ma couche raster emprise, mais plutôt des champs contenus dans ma couche tronçons routes+ferrés que je souhaite rasteriser...Pourtant mes 4 champs ont bien la même structure (entiers), et je pourrais même bien intervertir les données de deux champs, ce serait la même chose (sauf au niveau de la valeur bien-sûr).

Mais où ai-je bien pu me tromper?????????

Est-ce important d'utiliser une emprise légèrement plus grande que ma couche à rasteriser comme le suggère YoLecomte?

En vous remerciant à nouveau pour votre aide précieuse!

Cordialement,

Lucie D.

Dernière modification par Lucie D. (Thu 06 August 2015 08:29)

Hors ligne

 

#16 Thu 06 August 2015 08:55

YoLecomte
Participant assidu
Lieu: Epinal
Date d'inscription: 7 Jul 2015
Messages: 239

Re: QGIS 2.6 : Problème rasterisation tronçons routes

Salut,

Est ce que tu as une amplitude de valeurs supérieure à 256 à rasteriser?
Le problème peut venir de la. Si tu rasterises en Byte, le codage ne peut s'effectuer que sur 256 valeurs différentes... (0 --> 255)

voir par exemple: http://georezo.net/forum/viewtopic.php?pid=264210

Hors ligne

 

#17 Thu 06 August 2015 08:58

YoLecomte
Participant assidu
Lieu: Epinal
Date d'inscription: 7 Jul 2015
Messages: 239

Re: QGIS 2.6 : Problème rasterisation tronçons routes

et il n'est pas nécessaire d'avoir une emprise plus grande. Je l'avais fais pour le cas où j'aurais besoin de modifier un peu l'étendue de ma zone.

Hors ligne

 

#18 Thu 06 August 2015 09:30

Lucie D.
Participant actif
Date d'inscription: 21 Oct 2013
Messages: 137

Re: QGIS 2.6 : Problème rasterisation tronçons routes

Bonjour YoLecomte,

Et merci pour ta réponse.

Dans mes recherches j'étais effectivement tombée sur ce post mais j'étais loin de penser qu'il pouvait me concerner...
Dans mon code nat, j'ai 5 valeurs différentes : 209, 210, 211, 212, 213, valeurs toutes < à 256 effectivement.

Dans mes trois autres codes :

- comparaison : une seule valeur égale à 11 000 donc largement > 256!!!
- syst et ind : une seule valeur égale à 11 100 donc là encore largement > 256!!!

Pour mon code usage_bd, sur lequel il va falloir désormais que je travaille, j'ai deux valeurs : 411 et 412, qui sont bien elles aussi > 256, donc il y a de très fortes chances pour que le problème vienne bien de là.

En revanche, dans le lien que tu cites, j'ai cru comprendre qu'il fallait utiliser Python pour changer cette amplitude (aaahh ce python décidément il va vraiment falloir que je m'y mette!).

N'y a-t-il pas d'autre solution?

Si dans ma couche vecteur tronçons+ferrés je change les valeurs de mon code usage_bd, par exemple :

-pour 411 = 111
-pour 412 = 112

que je rasterise ensuite suivant ces codes, et qu'ensuite j'utilise r.mapcalculator en entrant la formule suivante :

if(A==111,411,if(A==112,412,A))

Penses-tu que ça en revienne au même?

Oui, je sais, j'aime bien les bidouillages, l'ennui c'est que parfois ça entraine des petites erreurs qui peuvent devenir énorme... =p

Encore merci pour ton aide!!!

Lucie D.

Hors ligne

 

#19 Thu 06 August 2015 10:43

Lucie D.
Participant actif
Date d'inscription: 21 Oct 2013
Messages: 137

Re: QGIS 2.6 : Problème rasterisation tronçons routes

C'est encore moi.

Mon bidouillage a très bien fonctionné, et j'obtiens un résultat très satisfaisant, le problème venait donc bien de l'amplitude des mes valeurs dans mes champs >256.

Donc encore un très grand merci à YoLecomte car je n'y serais jamais parvenue toute seule!

Pour Python, je verrai donc plus tard, mais j'ai cru comprendre que la ligne de commande proposée par MathieuR dans le lien suivant :

http://georezo.net/forum/viewtopic.php?pid=264210

-ot {Byte/Int16/UInt16/UInt32/Int32/Float32/Float64/
             CInt16/CInt32/CFloat32/CFloat64}

induisait une manipulation intégralement sous Python (et donc utiliser Gdal directement sous Python via des lignes de commande).

J'attends que des formations Python se mettent en place... En attendant, mon bidouillage me va très bien!!! ^^"

A nouveau, un TRÈS grand merci et bonne continuation!

Bien cordialement,

Lucie D.

Hors ligne

 

#20 Thu 06 August 2015 11:21

YoLecomte
Participant assidu
Lieu: Epinal
Date d'inscription: 7 Jul 2015
Messages: 239

Re: QGIS 2.6 : Problème rasterisation tronçons routes

La ligne de commande concerne l'encodage des données raster.

Tu est limitée à 256 possibilités car un la valeur de tes pixels est codée sur 8 bits qui peuvent prendre la valeur soit 0 soit 1 (2^8 = 256).
mais d'autres systèmes d'encodage existe, par exemple int32 codes tes valeurs sur 32 bits, tu autorises donc une amplitude de plus de 2000 millions ((2^32)-1) de valeurs.

Pour l'outil rasterise (write over an existing layer), je ne sais pas trop comment ça fonctionne mais j'imagine que tu est limitée par l'encodage du raster que tu écrases donc si tu écris sur un raster en int32 ou même int16 tu devrais pouvoir obtenir les bonnes valeurs (c'est une supposition de ma part, il faudrait tester).

L'outil rasterise (vector to raster) te permet de choisir l'encodage des données que tu souhaites pour ton raster. Peut être il serait intéressant de passer par là pour ton traitement en choisissant Int16 comme paramètre Raster type.

Hors ligne

 

#21 Thu 06 August 2015 14:38

Lucie D.
Participant actif
Date d'inscription: 21 Oct 2013
Messages: 137

Re: QGIS 2.6 : Problème rasterisation tronçons routes

Nickel, je viens de faire le test avec ce que tu m'as dit, et ça marche nickel.
Voici comment j'ai procédé:

En fait j'utilisais GRASS pour rasteriser ma couche emprise avec uniquement des 0. Mais sous GRASS, à moins que je ne me trompe, on ne peut pas choisir l'encodage... Alors cette fois-ci je suis passée via Gdal rasterise (vector to raster) en choisissant l'encodage Int32 (après avoir créé une nouvelle colonne value=0 dans mon emprise vecteur pour déterminer à partir de quel attribut je souhaite rasteriser).
Et ensuite j'ai rasterisé ma couche vecteur tronçons via Gdal rasterise (write over existing layer) et ENFIN j'obtiens un couche nickel, sans besoin de faire des bidouillages!

Je considère que cette fois-ci le problème est entièrement résolu!

MERCI!!!

Cordialement,

Lucie D.

Hors ligne

 

Pied de page des forums

Powered by FluxBB