作为我的问题的序言:我对堆栈溢出很陌生,对 Python 也比较陌生。
我正在建立敏感性分析。我正在处理 0.1 - 1 范围内的 40 个参数。我的分析需要同时将这些参数更改 +-0.1 大约 ~500 次。然后将这些值输入到 ArcGIS 工具中。所以,对于 40 个参数,我需要 500 组随机值。然后将这些参数值与工具的输出进行比较,以查看模型对哪些参数最敏感。我设置了一个 Excel 表,每次打开时都会随机计算这些值,但问题是它们需要采用 .dbf 格式才能被 ArcGIS 工具读取。
我已经设置了一个 while 循环(开始 10 次迭代,但需要大约 500 次)并尝试了两种不同的方法,希望我可以自动化调用 .xls 以生成随机数,然后将其导出的过程到.dbf。
第一个,arcpy.CopyRows_management 正确导出到 .dbf。问题是每次迭代的输出都完全相同,而不是具有 0.1、0.2、0.3 等值,而是包含 0.22、0.37、0.68 等值。即使那是在 .xls 中的公式中指定。
我也尝试了 arcpy.TabletoTable_conversion 但那是抛出 ERROR 999999: Error execution function。
我愿意接受各种建议。也许有一种更简单的方法可以在 Python 中随机抽样并将结果导出到 .dbf。这不需要使用 arcpy 来完成,但这就是我真正使用过的全部。我非常感谢提供的任何帮助!谢谢你的时间。
i = 0
while i < 10:
# Set run specific variables
lulc = "D:\\SARuns\\lulc_nosoils_rand.xls\\lulc_nosoils$"
folder = "D:\\SARuns"
print "Reading lulc"
newlulc = "D:\\SARuns\\lulc_nosoils_rand"+str(i)+".dbf"
print "Reading newlulc"
# Copy rows is copying it to a dbf, but the values inside
# are the same for each run. And, none are correct.
arcpy.CopyRows_management(lulc, newlulc)
# Table to table should work. But isn't.
# arcpy.TableToTable_conversion(lulc, folder, newlulc)
print "Converting table"
i+= 1