Suite

Définition des pixels au bord du raster sur NoData dans FME


J'essaie de générer des rasters GeoTiff à l'aide de FME Desktop 2015.1. Mon entrée est un raster 8 bits qui a des zones avec des valeurs de pixel de 0 autour de ses bords. Je veux les définir sur NoData.

J'ai essayé d'utiliser RasterBandNodataSetter pour définir les valeurs sur NoData. Cela a été techniquement réussi, mais les pixels avec une valeur de 0 au milieu de mon raster ont également été définis sur NoData, ce qui n'est pas ce que je veux.

J'ai également expérimenté l'utilisation de la tondeuse pour extraire les zones que je souhaite en espérant que les zones que je n'extrait pas soient définies sur NoData. Cependant, le transformateur clipper utilise le rectangulaire l'étendue de ma fonction de tondeuse à découper alors que j'ai besoin qu'elle soit effilée à l'étendue de ma zone d'étude.

J'ai également essayé d'écrire une bande alpha8 sur le GeoTiff en plus de ma bande principale Gray8. J'espérais régler l'alpha8 sur 0 là où il n'y a pas de données afin que rien ne soit affiché. Cependant, l'auteur de GeoTiff semble insister pour transformer par bande alpha8 en UINT8.

Quelle est la meilleure approche pour y parvenir ?


Je pense que la solution consiste à utiliser l'outil RasterCellColorReplacer uniquement après avoir appliqué un polygone de périmètre. Plus précisément, vous appliquez un périmètre en seuillant les pixels de valeur 0 à l'extérieur uniquement. Le polygone de périmètre doit être "à l'intérieur" de cette zone d'exclusion (de sorte que les pixels de valeur 0 soient "à l'extérieur" du périmètre.) Ensuite, appliquez l'outil RCCR uniquement au jeu de résultats ClippedOutside du clipper de périmètre… utilisez le RCCR pour modifier le 0 pixels aux valeurs NoData uniquement à l'extérieur. Cela devrait vous donner une image de taille normale avec des pixels de masque NoData à l'extérieur et des pixels de valeur 0 non affectés à l'intérieur.

Pour plus de détails, consultez ce billet de blog FME qui utilise une approche similaire (mais pas exactement la même.)