Betrachten Sie den NLCD2001 Land Cover-Datensatz für Alaska ( Download-Link ). Ich muss diesen Datensatz neu klassifizieren, damit nur Pixel mit den Werten 41, 42 und 43 erhalten bleiben. Alle anderen Pixelwerte sollten NoData werden (oder 0, falls erforderlich).
Dies scheint eine einfache Aufgabe zu sein, für die nur ein Aufruf des Reclassify-Tools erforderlich ist. Leider führt jeder Anruf zu einer vagen und nicht hilfreichen Fehlermeldung:
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)
Wie kann ich dieses Raster-Dataset neu klassifizieren? Ich verwende ArcCatalog 10.0, Build 4000, mit aktivierter Spatial Analyst-Erweiterung.
arcpy
raster
arcgis-10.0
reclassify
error-999998
DoggoDougal
quelle
quelle
reclassify
sollte dies ein letzter Ausweg sein, da der Umfang so allgemein ist, dass wahrscheinlich Methoden verwendet werden, die weniger effizient sind als sie erhalten werden können, wenn die Neuklassifizierung leicht arithmetisch oder logisch auszudrücken ist. Im vorliegenden Fall ist das Kriterium für die Neuklassifizierung so einfach, dass Sie es zuerst mitCon
oder sogar mit geraden arithmetischen Operationen versuchen sollten (weil sie schnell sind). Zum Beispiel"grid" * ("grid" >= 41) * ("grid" <= 43)
sollte es tun. RAM sollte kein Problem sein - Spatial Analyst Windows automatisch seine Raster-E / A und dies sind lokale Operationen.Inlist
ist eine schöne Lösung (+1). Ich konntecon
die RAM-Nutzung während des Vorgangs nutzen und überwachen. Es hat 180 MB nie überschritten, was kaum mehr ist als der RAM, der nur zum Starten von ArcMap verwendet wurde. Das Kacheln in ArcGIS erfolgt automatisch - Sie können es nicht einmal steuern (es sei denn, Sie programmieren auf die C / Fortran-Oberfläche). Es scheint, dass RAM-Einschränkungen von geringer Bedeutung sind.con
arbeitete auch für mich, mit der Bedingung"Value" >= 41 AND "Value" <= 43
. Ich hätte mich für diese Lösung entschieden, bin mir aber nicht sicher, ob zusätzliche Rasterwerte in Zukunft von Interesse sein werden. Natürlich könnte ichOR
der where-Klausel eine hinzufügen , aber dann wird es komplizierter.InList
scheint die einfachste Lösung in Bezug auf Lesbarkeit und Wartbarkeit zu sein.Antworten:
Das erste angehängte Skript hat Ihre AK NLCD-Daten in ca. 15 Minuten erfolgreich neu klassifiziert (i7, 12 GB RAM-Maschine). Da der ursprüngliche Datensatz fast 7 GB groß ist, können Speicherprobleme auftreten. Wenn Sie nicht das gesamte Dataset in einem Block verarbeiten können, teilen Sie es vor der Neuklassifizierung mit dem zweiten Skript auf. Ich empfehle, eine kleine Teilmenge der Daten zu übernehmen (Klicken Sie mit der rechten Maustaste auf Rasterebene in Inhaltsverzeichnis> Daten> Daten exportieren> Umfang (Datenrahmen) und testen Sie das erste Skript. Wenn Sie die Parameter für den Befehl "Neu klassifizieren" gewählt haben, fahren Sie mit der Neuklassifizierung fort Laden Sie alternativ das 64-Bit- Produkt für die Hintergrundverarbeitung für ArcGIS 10.1 SP1 herunter , das hier verfügbar ist . Viel Glück.
Skript 1
Bearbeiten : Wenn Sie Ihre Daten vor der Verarbeitung aufteilen müssen, sollte dieses Skript helfen:
Skript 2
quelle
whuber machte einen Kommentar zur Verwendung logischer Werkzeuge, um diese Neuklassifizierung auszudrücken . Nach einigem Graben stellte ich fest, dass InList als Teil des Logical Math-Toolset von Spatial Analyst meinen Bedarf erfüllte.
Es ist bei weitem die einfachste Lösung, die ich finden konnte, führt die schnellste aus und erfordert keine Berücksichtigung der Kachelung des Originaldatensatzes. Der verfügbare Arbeitsspeicher des Computers muss nicht berücksichtigt werden, da dieses Tool direkt von der Festplatte liest und die Ergebnisse direkt auf der Festplatte speichert.
quelle
SplitRaster_management
, dauert 7,04 Sekunden.Ich habe den im ursprünglichen Beitrag erwähnten Datensatz mit einer 10.4 dev-Version von arcmap verwendet. Die Neuklassifizierung schlägt fehl, wenn das Ausgabe-Raster ein Raster ist, da die neu klassifizierten Zellenzahlen überlaufen, was im Feld COUNT einer Raster-Mehrwertsteuer gespeichert werden kann. Wenn das Ausgabe-Raster eine FGDB ist, wird es für mich in ungefähr 11 Minuten auf einem älteren 4-Core-Computer unter Windows 8 erfolgreich ausgeführt. Nicht-Grid-Rasterformate sollten funktionieren, da sie Gleitkommawerte mit doppelter Genauigkeit für das Zählfeld verwenden. Ich gehe davon aus, dass Sie mit den veröffentlichten Versionen 10.2 oder 10.3 dasselbe Verhalten erzielen sollten. Wir werden die Verwendung eines anderen Rasterformats für die Standardausgabe für Reclassify untersuchen.
quelle