#1 Fri 15 January 2021 08:24
- Laurent75019
- Participant actif
- Lieu: La Réunion_974
- Date d'inscription: 15 Jul 2011
- Messages: 96
QGIS 3.10: Raster_decimal vers entier
Bonjour,
Les pixels du raster que j'utilise contiennent des valeurs en mètres de type décimal avec 5 digit après la virgule. Ces valeurs vont de -39.31716 à 51.94674.
J'ai multiplié ces valeurs par 100. J'obtiens des valeurs en centimètres de type décimal et acceptable pour le projet. Pour les besoins de l'outil Grass r.reclass, j'ai converti les valeurs des pixels en type entier avec l'outil calculatrice raster disponible dans la boite à outils GDAL/ Divers/ Calculatrice raster comme suit :
- Calcul dans la syntaxe gdalnuméric : A
- type de raster en sortie : Int32
Puis le raster en sortie a été polygonisé en ne sélectionnant qu'une classe (2 millions de cellules)
Plusieurs remarques/ remise en question :
- l'outil GDAL/ Divers/ Calculatrice raster est -il approprié pour cette conversion en entier ?
- Int32 est-il le type approprié ? pourquoi ne pas utilisé int16 ?
- Le temps de conversion de raster en vecteur est long 40min pour 2 millions de cellules. Par la suite, les opérations d'enregistrement de nouveaux champs dans ce vecteur sont excessivement longues. Je n'ai jamais remarqué de telle longueur de traitement.
Quels sont vos retours s'il vous plait ?
Merci
Dernière modification par Laurent75019 (Fri 15 January 2021 08:26)
Hors ligne
#2 Fri 15 January 2021 09:13
- dominique.lys
- Participant assidu
- Date d'inscription: 5 Oct 2006
- Messages: 473
- Site web
Re: QGIS 3.10: Raster_decimal vers entier
- l'outil GDAL/ Divers/ Calculatrice raster est -il approprié pour cette conversion en entier ?
à priori oui, la seule remarque que je ferai est que votre conversion est implicite par le changement de type de sortie et que donc à minima je vérifierai la règle appliquée pour la conversion : est-ce qu'on récupère juste la partie entière ou bien est-ce un arrondi ? Puisque GDAL calc s'appuie sur Numpy vous pouvez utiliser la fonction astype dans la formule
https://numpy.org/doc/stable/reference/ … stype.html
- Int32 est-il le type approprié ? pourquoi ne pas utilisé int16 ?
tout dépend de la plage de vos valeurs :
byte (8 bits) 0 to 255
Unsigned 16 bit 0 to 65536
Signed 16 bit -32768 to 32767
Unsigned 32 bit 0 to 4294967295
- Le temps de conversion de raster en vecteur est long 40min pour 2 millions de cellules. Par la suite, les opérations d'enregistrement de nouveaux champs dans ce vecteur sont excessivement longues. Je n'ai jamais remarqué de telle longueur de traitement.
tout dépend de la complexité des géométries obtenues, sont-elles multipart? Peut être un nettoyage préalable du raster pourrait aider (par ex lissage avec un filtre majoritaire)
Hors ligne
#3 Fri 15 January 2021 11:27
- Laurent75019
- Participant actif
- Lieu: La Réunion_974
- Date d'inscription: 15 Jul 2011
- Messages: 96
Re: QGIS 3.10: Raster_decimal vers entier
Merci pour votre réponse.
Je retiens que Gdal calculatrice raster est approprié pour convertir les valeurs d'un raster en entier.
La plage de valeurs pour Int32 est -2147483648 à +2147483647 donc englobe la place de valeurs du raster traité -39.31716 à + 51.94674.
Concernant la polygonisation, je remarque de r.to.vect polygonise chaque pixel. qu'entendez-vous pas complexité de la géométrie ?
Hors ligne
#4 Fri 15 January 2021 12:40
- dominique.lys
- Participant assidu
- Date d'inscription: 5 Oct 2006
- Messages: 473
- Site web
Re: QGIS 3.10: Raster_decimal vers entier
Je retiens que Gdal calculatrice raster est approprié pour convertir les valeurs d'un raster en entier.
J'ai tout de même vérifié pour vous : le changement de type opère comme un arrondi, donc une valeur 52.8 deviendra 53 et non 52. A voir si c'est ce que vous attendiez.
Int32 englobe la plage de valeurs du raster traité -39.31716 à + 51.94674.
int16 serait également suffisant et vous prendra moins de place sur le disque
Concernant la polygonisation, je remarque de r.to.vect polygonise chaque pixel
J'imagine que ce n'est pas le résultat escompté et cela explique la lenteur de la conversion. En général pour passer d'une données continue (
(raster) vers une une données discrète (vecteur) on passe par une étape intermédiaire de classification. Avoir un polygone par pixel n'apporte aucun avantage par rapport au format raster. L'idée de la classification est donc d'obtenir au préalable des ensembles de pixels contiguës avec la même valeur, qui pourront alors être convertis en polygone.
qu'entendez-vous pas complexité de la géométrie
J'entends par là des polygones avec beaucoup de nœuds, des formes concaves, des ilots disjoints, des trous... qui peuvent effectivement ralentir l'édition.
Dernière modification par dominique.lys (Fri 15 January 2021 13:55)
Hors ligne
#5 Fri 15 January 2021 15:33
- Laurent75019
- Participant actif
- Lieu: La Réunion_974
- Date d'inscription: 15 Jul 2011
- Messages: 96
Re: QGIS 3.10: Raster_decimal vers entier
J'avais vérifié l'arrondi avant même d'ouvrir ce nouveau sujet mais je ne l'ai pas indiqué, mon tord. Votre vérification confirme.
Par contre vous avez bien fait d'insister sur le type int16, j'ai mal lu.
concernant le r.to.vect, j'avais initialement utilisé la fonction raster/conversion/ polygoniser du menu déroulant, sans résultat, il y avait une erreur. j'étais donc passé par r.to.vect. En refaisant la méthode entière, finalement j'ai pu alléger les temps de calculs et utiliser la fonction raster/conversion/ polygoniser.
Merci pour vos conseils.
Dernière modification par Laurent75019 (Fri 15 January 2021 15:34)
Hors ligne