Ich habe die anderen Antworten hier überprüft und keine der Antworten hat für mich funktioniert ...
Es ist eine "einfache" Angelegenheit, einen Layer anhand seines Namens in einer Karte zu finden und seine Datenquelle zu ändern.
Hier ist mein Skript:
#-- New Source
newSource = os.path.join(currDir, lyrZones + "_Dep" + dirNum + ".shp")
#-- Validation
if arcpy.Exists(newSource):
print "The new source exists!"
else:
print "Not found!"
#-- Find the layer and change its source
for lyr in arcpy.mapping.ListLayers(mxd):
if lyr.name == lyrZones:
print "Layer found!"
print layers.dataSource
print " Replacing source..."
lyr.replaceDataSource(currDir, "SHAPEFILE_WORKSPACE", newSource)
print lyr.dataSource
Ich führe es über ein Python-Skript außerhalb von ArcGIS aus.
Sie können sehen, dass die Quelle vorhanden ist, die Ebene gefunden wurde, ich kann durch Drucken auf die Datenquelle zugreifen, aber die lyr.replaceDataSource verursacht einen Fehler (Unerwarteter Fehler ... hilft nicht viel ...)
Ich arbeite jetzt seit 4-5 Stunden daran und es fehlen mir die Lösungen, um es zu versuchen. Irgendeine Idee, was den Absturz verursachen kann?
D:\test
und prüfen Sie, ob dies funktioniert.Antworten:
Ich weiß, dass dies ziemlich alt ist, aber ich bin gerade auf dasselbe Problem gestoßen und war überrascht über den Mangel an Lösungen da draußen. Die Lösung ist so einfach, aber Sie hätten keine Möglichkeit, sie anhand der praktisch nicht vorhandenen Hilfe von ESRI zu ermitteln:
Schließen Sie die Shapefile-Erweiterung nicht ein. ...Das ist es.
Sollte lesen:
quelle
Spaß beim Debuggen! Versuche dies:
quelle
Ich weiß nicht, ob dies Ihnen hilft oder nicht, aber ich habe diesen Fehler beim Wechsel der SDE-Datenquellen für eine Schicht festgestellt. Was ich fand, war, dass wenn ich von PyScripter aus laufen würde, es einen 64-Bit-Prozess python.exe aufspulen würde. Ich würde den ValueError bekommen. Wenn ich das Skript zwingen würde, über die Eingabeaufforderung die 32-Bit-Datei python.exe auszuführen, würde ich den Fehler nicht erhalten. Ich weiß nicht, ob das Ihrem Problem helfen würde oder nicht, aber es ist einen Versuch wert!
quelle
Die meisten Infos dazu gibt es hier . Um dies zu lösen, ging ich in das Python-Fenster in ArcCatalog, um die ESRI-Definitionen der einzelnen Parameter in der Funktion .replaceDataSource zu überprüfen.
.replaceDataSource (Arbeitsbereich, Arbeitsbereichstyp, Datensatzname)
Arbeitsbereich = Arbeitsbereich der neuen Datenquelle
workspace_type = Der tatsächliche Arbeitsbereichstyp, der im Abschnitt zum Ersetzen der Datenquelle der verknüpften Hilfe aufgeführt ist.
Dataset-Name = Dateiname ohne Dateityp (IE: .shp), nicht der Dataset-Name im Inhaltsverzeichnis. Das Verzeichnis davor ist ebenfalls nicht erforderlich.
quelle