Mehr

Eingaben zum Erstellen eines zusammengesetzten Adress-Locators aus Adress-Locators, die in der for-Schleife des Python-Skripttools erstellt wurden?

Eingaben zum Erstellen eines zusammengesetzten Adress-Locators aus Adress-Locators, die in der for-Schleife des Python-Skripttools erstellt wurden?


Ich baue ein Skript-Tool, das bis zu 3 Adress-Locators erstellt und dann die Ausgabe-Adress-Locators als Eingaben für den endgültigen zusammengesetzten Ausgabe-Adress-Locator verwendet. Das Tool wurde perfekt ausgeführt, bevor der Code zum Erstellen des Comp-Adress-Locators hinzugefügt wurde. Da das Tool die Eingabeadressen-Locators in einer for-Schleife erstellt, kann ich ihre Namen nicht als erstes Argument für den zusammengesetzten Locator erstellen. Stattdessen habe ich eine Liste erstellt, die als Werkzeugschleifen gefüllt wird, um die Eingabeadressen-Locators zu erstellen:

alNames =[] for ref in refData: baseName = os.path.basename(ref) outName = os.path.join(outPath,baseName) #Dies ist das letzte Argument für das Tool zum Erstellen von Adressen… Adress-Locator… alNames.append(outName) arcpy.CreateCompositeAddressLocator_geocoding("alNames[0],alNames[1],alNames[2]","Street 'Street or Intersection' true true true 100 Text 0 0 ,First,#,alNames [0],Street,0,0,alNames[1],Street,0,0,alNames[2],Street,0,0;ZIP 'PLZ' true true false 10 Text 0 0 ,First,#,alNames [0],ZIP,0,0,alNames[1],ZIP,0,0,alNames[2],ZIP,0,0",outCompAdd)

Beim Ausführen des Tools erhalte ich folgende Fehlermeldung:

Traceback (letzter Aufruf zuletzt): Datei "N:PythonCompleted scriptsCreate_Address_Locators.py", Zeile 34, in  arcpy.CreateCompositeAddressLocator_geocoding("alNames[0],alNames[1],alNames[2]","Street 'Street or Intersection' true true true 100 Text 0 0 ,First,#,alNames[0],Street,0,0 ,alNames[1],Street,0,0,alNames[2],Street,0,0;ZIP 'PLZ' true true false 10 Text 0 0 ,First,#,alNames[0],ZIP,0,0 ,alNames[1],ZIP,0,0,alNames[2],ZIP,0,0",outCompAdd) Datei "c:Programme (x86)arcgisdesktop10.2arcpyarcpygeocoding.py ", Zeile 138, in CreateCompositeAddressLocator erhöhen e ExecuteError: ERROR 000582: Fehler während der Ausführung aufgetreten.

Wenn ich das Tool ohne die Anführungszeichen um die Elemente von alNames[] ausführe, erhalte ich eine Fehlermeldung, dass das Tool nur bis zu 4 Argumente akzeptiert und ich 5 angegeben habe.


  1. Überprüfen Sie die Elemente desalNames. Was enthalten sie? Sie sollten Pfade zu den Adress-Locators in einem Ordner oder einer Geodatabase sein.

  2. Bei der Lieferung"alNames[0],alNames[1],alNames[2]", trennen Sie sie mit dem Semikolon;statt Komma,.

Überprüfen Sie die Hilfeseite für das Tool hier, suchen Sie nach einem Codebeispiel. Da siehst du"Atlanta_locator Atlanta;US_Streets_locator US_Streets". Eine weitere gute Möglichkeit, die Syntax zu überprüfen, besteht darin, ein Werkzeug in ArcMap auszuführen und dann im Ergebnisfenster mit der rechten Maustaste auf das Ergebnis zu klicken und Als Python-Snippet kopieren auszuwählen.


Ihr erster Parameter ist das String-Literal"alNames[0],alNames[1],alNames[2]"was dazu führt, dass das Werkzeug versagt. Vorausgesetzt, dieses Werkzeug verhält sich wie andere Arcpy-Werkzeuge, können Sie Ihre Werte wie folgt zu einer durch Semikolons getrennten Liste zusammenfügen:

locatorPaths = ";".join(alNames) arcpy.CreateCompositeAddressLocator_geocoding(locatorPaths,… )

Schau das Video: For- Schleife in Python - Tutorial