SPSS中的Python创建新变量运行arcpy脚本

时间:2014-05-15 16:24:37

标签: python arcgis spss arcpy

我刚刚找到了这个模块,需要一些帮助将我的ArcGIS python脚本移到python / SPSS模块上。该脚本使用Arcpy模块中的Updatecursor功能。这是我到目前为止的文字。

# BEGIN PROGRAM.
import arcpy

fc = C:\Users\Desktop\file.TXT
fields =('RESIDENTIAL_ADDRESS1', 'RESIDENTIAL_SECONDARY_ADDR', 'RESIDENTIAL_CITY', 'FULL_ADDRESS')
with arcpy.da.UpdateCursor(fc, fields) as cursor:
    for row in cursor:
        row[3] = '{0}{1}{2}'.format(row[0], row[1], row[2])
        cursor.updateRow(row)
    del cursor

# END PROGRAM.

我需要代码在当前打开的文件上运行,创建新变量,进行连接。我知道我可以通过SPSS更容易地做到这一点,但是我需要导入更多的额外python脚本,使用arcpy更新/搜索游标进行更多涉及的计算。

我的文件大小包含800万条记录,来自sqlexpress dbf。我的python脚本在ArcGIS中运行,我正在做一些额外的地理编码。我还运行了另外5到6个python脚本执行各种其他计算,我无法在spss中编程(就像我可以编程连接)。因此,我的目标是将这些python脚本引入SPSS,以便在SPSS中而不是在ArcGIS中执行这些计算。这是我的第一个Arcpy任务,所以我在这里通过它作为如何使用Python插件使其正常工作的示例 -

1 个答案:

答案 0 :(得分:0)

这更像是一个扩展评论。我很困惑C:\Users\Desktop\file.TXT发挥作用 - 那不是你当前打开的文件吗?考虑使用spss.Submit来实现在活动SPSS文件中连接字段的简单任务(例如,不需要为此任务迭代数据中的每一行)。所以这是一个简单的例子:

DATA LIST FREE / Add1 Add2 (2A20) City (A6) State (A2).
BEGIN DATA
"125 Main St" "" Albany NY
"Main St." "Lake St" Albany NY
END DATA.

BEGIN PROGRAM.
import spss
fields = ['Add1','Add2','City','State']
conc = ",' ',".join(fields)
spss.Submit("""
STRING ConcField (A255).
COMPUTE ConcField= CONCAT(%s).
""" % (conc))
END PROGRAM.

在unicode模式下,这将折叠空格 - 但是否则您需要将列表调整为类似RTRIM(Add1)的所有不同变量。这只是一个简单的例子。

SPSS与arcPy的游标名为spss.Cursor有类似的方法,但从你的例子来看,不清楚是什么是必要的。