调用/定义打开数据集以在SPSS中运行Python Calc

时间:2014-05-17 00:56:34

标签: python arcgis spss arcpy

我有这个ArcGIS python代码(使用arcpy模块),我需要在SPSS中导入和运行。

python代码在ArcGIS中工作,我已经能够成功地将python库设置为ArcGIS x64 python目录。

我的问题是:如何调用/定义我想要运行计算的打开(或可以关闭)数据集? (我当前的代码在第2行表中定义了这个" CURRENT_DATABASE_MEMORY")

这是我在ArcGIS / Python中运行的代码。我无法成功找到解决此问题的方法。

import arcpy
table = "CURRENT_DATABASE_MEMORY"

valueList = [r[0] for r in arcpy.da.SearchCursor(table, ["FULL_ADDRESS"])]
valueDict = collections.Counter(valueList)
uniqueList = valueDict.keys()
uniqueList.sort() 
updateRows = arcpy.da.UpdateCursor(table, ["FULL_ADDRESS","ALL_LIVE"])
for updateRow in updateRows:
   updateRow[1] = valueDict[updateRow[0]]  
   updateRows.updateRow(updateRow)
del updateRow, updateRows


valueList = [r[0] for r in arcpy.da.SearchCursor(table, ["FULL_ADDRESS_NAME"])]
valueDict = collections.Counter(valueList)
uniqueList = valueDict.keys()
uniqueList.sort() 
updateRows = arcpy.da.UpdateCursor(table, ["FULL_ADDRESS_NAME","ALL_LIVE"])
for updateRow in updateRows:
   updateRow[1] = valueDict[updateRow[0]]  
   updateRows.updateRow(updateRow)
del updateRow, updateRows

uniqueValues = {}
values = []
newID = 0

with arcpy.da.UpdateCursor(table, ["FULL_ADDRESS_NAME","FEAT_SEQ"]) as updateRows:
    for row in updateRows:
        nameValue = row[0]
        if nameValue in uniqueValues:
            row[1] = uniqueValues[nameValue]
        else:
            newID += 1
            uniqueValues[nameValue] = newID
            row[1] = newID
        updateRows.updateRow(row)


del row, updateRows

1 个答案:

答案 0 :(得分:0)

除了Andy写的内容之外,您可能还想考虑使用Submit api向SPSS发出命令以通过ODBC读取数据集(假设您有该源的驱动程序),或者您可以直接读取数据源Python代码,操作它,然后使用Python插件中提供的各种api将其写入SPSS。最佳选择取决于您希望SPSS在处理此数据时所扮演的角色。