【发布时间】:2016-05-15 15:26:00
【问题描述】:
一两年前,我非常熟练地使用 ArcGIS 中的数据模型来处理属性表。 ArcGIS 使用 Access 类型的数据库,使用户能够添加、删除和修改字段。在 ArcGIS 界面中,我可以创建一个新列,并使用 Python 使用称为“字段计算器”的东西在该列上运行脚本。例如,以下算法将“230 04th street”等输入字符串转换为“230 4th street”。它还做了一些适合该项目的其他替换。
def calc(f1,f2,f3):
#where f1 is address number, f2 is address name and f3 is address suffix
#Strip trailing and ending spaces from all fields
#Define list
remove_list = ['01ST', '02ND', '03RD', '04TH', '05TH', '06TH', '07TH', '08TH', '09TH']
#Homogenize single digit address names
if f2 in remove_list:
f2 = f2.replace('0','')
else:
f2 = f2
f1 = str(f1).replace('.0','')
#strip leading and trailing spaces
f1 = f1.strip()
f2 = f2.strip()
f3 = f3.strip()
#adapt address number to string format
#Concatenate full address name
x = f1+' '+f2+' '+f3
#Return Full address name
return x
我希望在 Access 中具有类似的灵活性。 Access 中最接近 ArcGIS“字段计算器”的是“表达式生成器”。这个表达式构建器可以用于简单的修改,但对于更复杂的字符串解析算法来说比较麻烦。 Access 中的任何内容是否为各个字段提供这种脚本?我们可以在 Expression Builder 中使用 VBA 或其他语言吗?也许只有 SQL 是解决方案?
【问题讨论】:
-
您的脚本片段在 Visual Basic 中是完全可行的。 VB 是 Access 的脚本语言。您不要在表达式生成器“内部”使用 VB,而是可以使用 VB 中的表达式生成器。我们可以为您的解析算法提供“更复杂的字符串”的示例吗?
-
@PaulOgilvie - 不是坚持不懈,但您的意思是 Visual Basic for Applications。 VBA 是 MS Office 的编码接口,而不是通用语言 VB。 VB 大师会适应这种误称。