Was ist neu in ArcGIS 10 <\/A>deckt viele Bereiche ab, es ist für fast jeden etwas dabei. Egal wie eng oder begrenzt Ihre Nutzung von ArcGIS Desktop auch sein mag, eine Änderung konnten Sie nicht übersehen: die Benutzeroberfläche, die während der ArcGIS 8.x und 9.x Tage ziemlich konstant geblieben war.<\/P><\/P>
Ich war an vielen Änderungen in ArcGIS 10.0 interessiert, so viele, dass ich hier gar nicht erst anfangen sollte, sie alle aufzulisten. Obwohl viele Änderungen meine Aufmerksamkeit erregten, stachen die Änderungen im Geoverarbeitungsbereich besonders hervor: Hintergrundverarbeitung wurde eingeführt, das Python-Fenster ersetzte das Befehlszeilenfenster, ArcPy brachte die Python-Unterstützung auf die nächste Stufe und mehr. Kombiniert man all diese neuen Funktionen mit einer meiner Lieblingsfunktionen, dem in-memory workspace, war ich tatsächlich ein wenig gespannt darauf, es auszuprobieren und zu sehen, wie großartig diese nächste Fahrt sein könnte.<\/P>
<\/P>
Im Gegensatz zu ArcGIS 9.2, wo ich das Wayback Data Center verwenden musste, ist ArcGIS 10.0 in Teilen meiner Behörde noch im Einsatz, was es einfach macht, einen Schritt zurück in der Zeit zu machen und trotzdem neue Screenshots zu erstellen.<\/P>
<\/P>
Der Einfachheit und Konsistenz halber werde ich einfach die Beispiele aus dem ersten Beitrag dieser Serie (
Was steckt in einem Namen: Wenn in_memory = In-memory<\/A>) wiederverwenden, um mich mit dem Python-Fenster in ArcGIS 10.0 vertraut zu machen. Werfen wir einen Blick auf die Ergebnisse beim Erstellen einer Tabelle im in-memory workspace:<\/P>
<\/P>
Erfolg oder nicht? Der Befehl scheint erfolgreich abgeschlossen worden zu sein, aber tmpTable scheint nicht im GPInMemoryWorkspace zu sein. Ich werde den Befehl noch einmal ausführen.<\/P>
<\/P>
Huch. Der Befehl wurde erfolgreich ausgeführt; aber wieder scheint tmpTable nicht im GPInMemoryWorkspace zu sein. Tatsächlich habe ich jetzt zwei tmpTables, und jede scheint ihre eigene kryptische Geodatabase in meinem Temp-Ordner zu haben. Im Gegensatz zu ArcGIS 9.2, wo der Befehl fehlschlug, weil tmpTable bereits existierte, tut Ihnen ArcGIS 10.0 einen Gefallen – wenn man es so nennen will – indem es einfach eine weitere in einer anderen kryptischen Geodatabase erstellt.<\/P>
<\/P>
Ich weiß nicht genau, was hier vor sich geht. Ich lösche besser diese Tabellen und räume dieses Durcheinander auf.<\/P>
<\/P>
Moment mal, ich kann tmpTable nicht mit derselben Syntax löschen wie in ArcGIS 9.2? Ich denke, wenn die Tabellen nicht wirklich im Speicher erstellt werden, macht es Sinn, dass die Delete_management-Funktion sie dort nicht findet. Die Autovervollständigung im Python-Fenster möchte "tmpTable" löschen, ohne den Verweis auf "in_memory." Ich werde das ausprobieren:<\/P>
<\/P>
Naja, zumindest hat das funktioniert, aber ich weiß nicht genau, von welchem tmpTable die Autovervollständigung sprach. Glücklicherweise hat das erneute Ausführen des Befehls den anderen tmpTable gelöscht.<\/P>
<\/P>
Das Erstellen von Feature Classes im Speicher verhält sich genauso. Auch die entsprechenden Werkzeuge im Toolbox zum Erstellen von Tabellen und Feature Classes zeigen dasselbe Verhalten. Hier gibt es definitiv genug Konsistenz, um nicht nur von einem Fehler in einem bestimmten Werkzeug oder einer Funktion auszugehen. Wer weiß, vielleicht bedeutet in_memory in ArcGIS 10.0 tatsächlich on-disk.<\/P>
<\/P>
Der erste Teil dieser Serie hatte ein Beispiel gezeigt, bei dem tatsächlich einige Daten in einen in-memory workspace verschoben wurden. Es schadet nicht, das hier vor Schlussfolgerungen noch einmal zu wiederholen. Laden wir zuerst erneut die Grenzen der US-Bundesstaaten.<\/P>
<\/P>
Da sind wir also wieder: eine Kopie von Features wurde in einen in-memory workspace geladen. Was? GPInMemoryWorkspace? Ich kann nicht sagen, ob ich dieses Ergebnis erwartet habe oder nicht. Bedeutet also in_memory wirklich im Speicher oder auf der Festplatte? Offensichtlich hat sich zwischen ArcGIS 9.2 und ArcGIS 10.0 etwas geändert – aber was?<\/P>
<\/>\n
Die kurze Antwort lautet Hintergrundverarbeitung.<\/>\n

\nNicht nur wurde die Hintergrundverarbeitung in ArcGIS 10.0 eingeführt, sie wurde standardmäßig aktiviert. Ich erinnere mich heute nicht mehr an den Grund genau, aber vor einigen Jahren hatte ich den Bedarf Hintergrundverarbeitung zu deaktivieren. Zu diesem Zeitpunkt wurde mir klar, dass das Deaktivieren oder Nicht-Aktivieren der Hintergrundverarbeitung fast<\SPAN> dazu führt, dass sich in_memory wieder so verhält wie in ArcGIS 9.2 und 9.3 / 9.3.1.<\/>\n
Interessanterweise sind alle oben genannten Beispiele auch sehr ähnlich in ArcGIS 10.2.2. Ich würde behaupten, dass die Situation in ArcGIS 10.2.2 sogar etwas schlimmer ist als damals bei ArcGIS 10.0. Zum Beispiel führt das zweimalige Ausführen der CreateTable_management-Funktion und anschließendem Versuch tmpTable mit einem vollständig angegebenen in_memory-Pfad zu löschen dazu:

In ArcGIS 10.0 schlug die Delete_management-Funktion fehl weil tmpTable tatsächlich nicht im Speicher existierte was logisch erscheint. In ArcGIS 10.2.2 gelingt zwar die Delete_management-Funktion aber es wird nichts gelöscht! Zugegeben gab es eine Warnung dass tmpTable nicht im Speicher existiert aber dann wird trotzdem nichts gelöscht und ein erfolgreicher Rückgabewert geliefert. Ich kann nur für mich sprechen aber wenn ich eine Funktion zum Löschen eines Objekts aufrufe und dieses Objekt existiert nicht erwarte ich normalerweise einen Fehler.
Besser noch sehen Sie was passiert wenn Sie bei ArcGIS 10.2.2 Hintergrundverarbeitung deaktivieren eine Tabelle im Speicher erstellen und versuchen diese mit einem vollständig angegebenen Pfad über "in_memory:" zu löschen:

Sie können scheinbar dreimal erfolgreich löschen doch sie existiert weiterhin! &amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;&amp;amp;amp;amp;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&. Und dies nachdem Sie gewarnt wurden dass sie nicht existiert obwohl sie eindeutig existiert und im Speicher liegt.
Es ist offensichtlich dass sich mit ArcGIS 10.0 einiges am "in_memory workspace", insbesondere bei Verwendung von 'in_memory', geändert hat.<br/>
Ich weiß nicht genau was alles geändert wurde aber es gibt eine Verbindung zur Hintergrundverarbeitung.
Außerdem haben sich diese Änderungen durchgehend durch die gesamte Produktserie von ArcGIS 10.x gezogen.
Ich denke es ist an der Zeit für mich RT(?)M zu machen und nachzusehen was die Dokumentation über all diese Änderungen sagt.