【问题标题】:using logical expression in arcpy在 arcpy 中使用逻辑表达式
【发布时间】:2021-06-21 09:21:56
【问题描述】:

我正在尝试编写一个包含逻辑查询的 python 命令。我有一系列表和层,当两个共享变量具有相同的值时,我想对它们运行命令。我创建了这些表和层的列表:

pattern = '*Assess*.dbf'
files = []
tables = []
layernames = []
## create the loop element
for dirpath, dirnames, filenames in arcpy.da.Walk(inputFolder):
    # append shapefile path to list
    for filename in fnmatch.filter(filenames, pattern):
        files.append(os.path.join(dirpath, filename))

tables = arcpy.ListTables()

for file in files:
    names.append("\"TOWN_ID\" = " + str(int(os.path.basename(file).rstrip(os.path.splitext(file)[1])[1:4])))
    layernames.append(str(int(os.path.basename(file).rstrip(os.path.splitext(file)[1])[1:4])))

代码如下:

for layername, table in zip(layernames, tables):
    #print layername
    #print table
    #CF_QueryTool = "C:\\ArcGIS_Temp\\parcel_mosaic\\land_parcels_mosaic.gdb\\cf_QueryTool"
    tablelist = [table, "TaxParcels_Layer.{}".format(layername)]
    wherecluase = "TaxParcels_Layer.{}.LOC_ID = table.LOC_ID".format(layername)
    print tablelist
    print wherecluase
    arcpy.MakeQueryTable_management(tablelist, "QueryTable.{}".format(layername), "ADD_VIRTUAL_KEY_FIELD", "", "" ,wherecluase)
    print "QueryTable.{} created".format(layername)

问题是,显然我的 wherecluase 有问题,这让我想知道我是否真的可以使用 table.locid 之类的东西来使用表列表。如果我在这里犯了错误,请告诉我。非常感谢!

【问题讨论】:

    标签: python where-clause arcgis arcpy


    【解决方案1】:

    由于“table”在文件地理数据库 (*.gdb) 中既是 SQL 保留关键字又是无效名称,我假设您希望 SQL WHERE 子句中的变量 table 的值而不是单词“table”。 "您需要在 whereclause 格式中添加另一个参数说明符:

    >>> table = "myTable"
    >>> layername = "myLayer"
    >>> 
    >>> # original code
    >>> whereclause = "TaxParcels_Layer.{}.LOC_ID = table.LOC_ID".format(layername)
    >>> print(whereclause)
    TaxParcels_Layer.myLayer.LOC_ID = table.LOC_ID
    >>> 
    >>> # modified code
    >>> whereclause = "TaxParcels_Layer.{}.LOC_ID = {}.LOC_ID".format(layername, table)
    >>> print(whereclause)
    TaxParcels_Layer.myLayer.LOC_ID = myTable.LOC_ID
    >>> 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-27
      • 2020-11-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多