Considérez l'ensemble de données sur la couverture terrestre NLCD2001 pour l'Alaska ( lien de téléchargement ). J'ai besoin de reclasser cet ensemble de données afin que seuls les pixels de valeur 41, 42 et 43 soient conservés; toutes les autres valeurs de pixels doivent devenir NoData (ou 0, si nécessaire).
Cela semble être une tâche simple, ne nécessitant qu'un seul appel à l'outil Reclassifier. Malheureusement, chaque appel entraîne un message d'erreur vague et inutile:
Executing: Reclassify "D:\ak_nlcd_2001_land_cover_3-13-08_se5.img" Value "0 40 0;41 41;42 42;43 43;44 255 0;NODATA 0" "D:\alaska_reclassified.tif" DATA
Start Time: Thu Jan 03 09:23:13 2013
ERROR 999998: Unexpected Error.
Failed to execute (Reclassify).
Failed at Thu Jan 03 09:23:13 2013 (Elapsed Time: 0.00 seconds)
Comment reclasser ce jeu de données raster? J'utilise ArcCatalog 10.0, Build 4000, avec l'extension Spatial Analyst activée.
reclassify
devrait être un dernier recours, car il est d'une portée si générale qu'il utilise probablement des méthodes moins efficaces que celles qui peuvent être obtenues lorsque le reclassement est facile à exprimer de manière arithmétique ou logique. Dans le cas présent, le critère de reclassement est si simple que vous devez d'abord l'essayer avec Con
ou même des opérations arithmétiques droites (car elles sont rapides). Par exemple, "grid" * ("grid" >= 41) * ("grid" <= 43)
devrait le faire. La RAM ne devrait pas être un problème - Spatial Analyst Windows automatiquement ses E / S raster et ce sont des opérations locales.
Inlist
est une bonne solution (+1). J'ai pu utiliser con
et surveiller l'utilisation de la RAM pendant l'opération. Il n'a jamais dépassé 180 Mo, ce qui est à peine supérieur à la RAM utilisée juste pour lancer ArcMap. La mosaïque dans ArcGIS est automatique - vous ne pouvez même pas le contrôler (sauf si vous programmez vers l'interface C / Fortran). Il semble que les limitations de la RAM soient peu préoccupantes.
con
fonctionné pour moi, avec la condition "Value" >= 41 AND "Value" <= 43
. J'aurais opté pour cette solution, mais je ne sais pas si des valeurs raster supplémentaires seront intéressantes à l'avenir. Évidemment, je pourrais ajouter un OR
dans la clause where, mais cela commence à devenir plus compliqué. InList
semble la solution la plus simple en termes de lisibilité et de maintenabilité.