Tôi đã kiểm tra các câu trả lời khác ở đây và không có câu trả lời nào phù hợp với tôi ...
Đây là một vấn đề "đơn giản" trong việc tìm một lớp theo tên trong bản đồ và thay đổi nguồn dữ liệu của nó.
Đây là kịch bản của tôi:
#-- 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
Tôi chạy nó từ một kịch bản python bên ngoài ArcGIS.
Bạn có thể thấy rằng nguồn tồn tại, lớp được tìm thấy, tôi có thể truy cập vào nguồn dữ liệu của nó bằng cách in nó, nhưng lyr.replaceDataSource gây ra lỗi (Lỗi không mong muốn ... không giúp ích nhiều ...)
Tôi đã làm việc ở đó được 4-5 giờ và tôi không có giải pháp nào để thử. Bất kỳ ý tưởng những gì có thể gây ra vụ tai nạn?
D:\test
và xem nếu nó hoạt động.