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.
arcpy
raster
arcgis-10.0
reclassify
error-999998
DoggoDougal
la source
la source
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 avecCon
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 utilisercon
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 unOR
dans la clause where, mais cela commence à devenir plus compliqué.InList
semble la solution la plus simple en termes de lisibilité et de maintenabilité.Réponses:
Le premier script joint a reclassé avec succès vos données AK NLCD en environ 15 minutes (i7, machine de 12 Go de RAM). Étant donné que l'ensemble de données d'origine mesure près de 7 Go, vous pouvez rencontrer des problèmes de mémoire. Si vous ne pouvez pas traiter l'intégralité de l'ensemble de données en un seul bloc, essayez de le fractionner avec le deuxième script avant la reclassification. Ma recommandation est de prendre un petit sous-ensemble des données (Couche raster clic droit dans Table des matières> Données> Exporter les données> Étendue (trame de données) et tester le premier script. Une fois que vous avez composé les paramètres de la commande reclassifier, puis passer à la reclassification l'ensemble des données ou le fractionner. Sinon, essayez de télécharger le produit de géotraitement en arrière-plan 64 bits pour ArcGIS 10.1 SP1, disponible ici . Bonne chance.
Script 1
Modifier : si vous devez diviser vos données avant le traitement, ce script devrait vous aider:
Script 2
la source
whuber a fait un commentaire concernant l'utilisation d'outils logiques pour exprimer ce reclassement . Après avoir creusé un peu, j'ai trouvé InList , dans le cadre du jeu d'outils Logical Math de Spatial Analyst, qui répondait à mes besoins.
C'est de loin la solution la plus simple que j'ai pu trouver, s'exécute le plus rapidement et ne nécessite aucune considération de la mosaïque de l'ensemble de données d'origine. Il n'est pas nécessaire de considérer la RAM disponible de la machine, car cet outil lira directement à partir du disque et stockera les résultats directement sur le disque.
la source
SplitRaster_management
, prend 7,04 secondes.J'ai utilisé l'ensemble de données mentionné dans la publication d'origine avec une version 10,4 dev de arcmap. La reclassification échoue lorsque le raster en sortie est une grille, car le nombre de cellules reclassées déborde de ce qui peut être stocké dans le champ COUNT d'une grille TVA. Lorsque le raster en sortie est un fgdb, il s'exécute avec succès en environ 11 minutes sur une ancienne machine à 4 cœurs exécutant Windows 8. Les formats raster non-grille devraient fonctionner car ils utilisent des valeurs flottantes double précision pour le champ de comptage. Je pense que vous devriez obtenir le même comportement avec les versions 10.2 ou 10.3. Nous étudierons l'utilisation d'un format raster différent pour la sortie par défaut de Reclassification.
la source