Kategorien

ArcGIS Geoprocessing: kleine Änderung – grosse Wirkung

Letzthin musste ich ein ArcGIS Geoprocessing-Script analysieren, das eine sehr lange Ausführungszeit aufwies. Das Script verbindet verschiedene Layer per Join und schreibt das Ergebnis in eine neue Feature Class raus. Zwar war die betroffene Datenmenge relativ gross (> 400’000 Features), aber das Script lief etliche Stunden (>10). Ein Blick auf den Task Manager zeigte jedoch, dass während der meisten Zeit kaum etwas gerechnet wurde! Nach langer Fehlersuche hatte ich dann das Problem gefunden. Im Script wurde an verschiedenen Orten die folgende Befehlsabfolge ausgeführt:

gp.MakeFeatureLayer_management(Input2, TEMP_Layer1, "", "", "")
gp.MakeFeatureLayer_management(Input3, TEMP_Layer2, "", "", "")
gp.SelectLayerByAttribute_management (TEMP_Layer2, "NEW_SELECTION", "STATUS=1 AND IM_GEBAEUDE=0")
gp.AddJoin_management(TEMP_Layer1, "GEBAEUDENAMEPOS_VON", Input1, "OBJECTID", "KEEP_ALL")
gp.AddJoin_management(TEMP_Layer1, "" + I1Q + "GEBAEUDENAME_VON", TEMP_Layer2, "OBJECTID", "KEEP_COMMON")
gp.MakeFeatureLayer_management(TEMP_Layer1, TEMP_Layer3, "", "", FieldInfo)
gp.Append_management(TEMP_Layer3, Output, "NO_TEST")
gp.MakeFeatureLayer_management(Input2, TEMP_Layer1, "", "", "")gp.MakeFeatureLayer_management(Input3, TEMP_Layer2, "", "", "")gp.SelectLayerByAttribute_management (TEMP_Layer2, "NEW_SELECTION", "STATUS=1 AND IM_GEBAEUDE=0")gp.AddJoin_management(TEMP_Layer1, "GEBAEUDENAMEPOS_VON", Input1, "OBJECTID", "KEEP_ALL")gp.AddJoin_management(TEMP_Layer1, "" + I1Q + "GEBAEUDENAME_VON", TEMP_Layer2, "OBJECTID", "KEEP_COMMON")gp.MakeFeatureLayer_management(TEMP_Layer1, TEMP_Layer3, "", "", FieldInfo)gp.Append_management(TEMP_Layer3, Output, "NO_TEST")

In dieser Konstellation lief das Script viele Stunden lang. Nachdem ich dann – nach langem Trial and Error – den Befehl in Zeile 3 (SelectLAyerByAttribute) auskommentierte und die dort enthaltene Selektion in Zeile 2 in den Befehl MakeFeatureLayer integrierte (als dritter Parameter), lief das Script dann in wenigen Minuten durch. Die meiste Zeit verging nur noch mit dem Hin- und Herschaufeln der Daten von einer DB zur anderen. Das Ergebnis hat mich an und für sich zufriedengestellt. Allerdings bin ich schon etwas erstaunt, dass die eine Konstellation so viel langsamer ist als die andere…

PS: Das ganze ist sowohl in ArcGIS 9.2 als auch in ArcGIS 10.0 festzustellen.

Leave a Reply

  

  

  

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>