2016-06-28 1 views
1

Je veux recadrer mes gros fichiers GeoTIFF (4 bandes RGBA) en petits carreaux. Fonction brick dans le paquet de trame est utilisé pour lire le fichier raster et writeRaster est utilisé pour écrire sur le disque. Cependant, je ne peux pas ouvrir le nouveau fichier avec la visionneuse d'image. Il est causé par des balises ColorInterp manquantes. JeEnregistrer brique raster dans un geotiff qui peut être consulté par visionneuse d'images

a <- brick(old.tif) 
writeRaster(a, filename = new.tif) 

Comparer la balise tiff dans old.tif et new.tif. Le tag BitsPerSample est 8 pour old.tif et 64 pour new.tif. Alors je mis à jour le dataType dans raster en INT1U qui devait 0-255.

dataType(a) <- 'INT1U' 
writeRaster(a, filename = new.tif, dataType = 'INT1U') 

Cependant, l'étiquette BitsPerSample toujours égal à 64. Ma question actuelle est de savoir comment dois-je préciser le BitsPerSample dans 8.

PS: Ce code ne fonctionne pas trop

writeRaster(a, filename = new.tif, dataType = 'INT1U', BitsPerSample = 8) 

PPS: writeTIFF peut générer un fichier tiff visible sans informations crs.

+0

Comparer la balise tiff de l'ancien et le nouveau fichier. Le nouveau fichier a BitsPerSample (4 Short): 64, 64, 64, 64, qui devrait être 8. – Bangyou

+0

Certains téléspectateurs d'image n'interprètent pas correctement multibandes TIFFs, en particulier lorsque le type de données est supérieure à 8 bits non signé. Qu'est-ce que vous utilisez? Essayez de l'ouvrir dans QGis ou similaire. – Benjamin

+0

Je comprends que l'image peut être visualisée dans QGis et d'autres logiciels. Mais mon fichier tif original est RGBA et peut être consulté par n'importe quel utilisateur. Je veux juste créer de nouvelles images avec le même 8 bits. – Bangyou

Répondre

0

Avec GeoTiff, vous n'avez pas besoin de spécifier le nombre de bits par échantillon sauf si vous voulez dévier du format de base. Par exemple, vous pouvez spécifier 2 bits par échantillon avec GDT_Byte (0-255) pour réduire la taille du fichier pour une image booléenne. Quand il est relu, il sera interprété comme GDT_Byte correctement (par la plupart des logiciels).

Cependant, si vos données sont déjà GDT_Byte (INT1U), il n'est pas nécessaire de spécifier le nombre de bits par échantillon, il sera par défaut à la taille requise; le paramètre attend des valeurs inférieures à la valeur par défaut, par exemple: 1 à 7 bits pour un format 8 bits spécifié, 9 à 15 bits pour un format 16 bits, etc.

Voir la documentation sur le paramètre NBITS pour GeoTiff images ici: http://www.gdal.org/frmt_gtiff.html.

Il ressemble également à BitsPerSample n'est pas un argument valable pour writeRaster, mais qu'il doit être passé comme une option de création, comme options=c("NBITS=n"), la même syntaxe que GDAL utilise en dehors de R.

En ce qui concerne la couleur étiquette d'interprétation à laquelle vous faites référence, vous pouvez spécifier cela dans les options: options=c("PHOTOMETRIC=RGB"). S'il y a un canal alpha, vous pouvez ajouter "ALPHA=YES". Ce sont toutes les options de création standard documentées dans le lien ci-dessus.