输入参数作为查询语句Query 对Layer进行Select 报错!

# Import system modules
import arcpy
import os, shutil
import exceptions, sys, traceback
from arcpy import env
from arcpy.sa import *
import arcpy.mapping as mapping
reload(sys)
sys.setdefaultencoding('utf8')

# Set environment settings
workSpacePath = arcpy.GetParameterAsText(0)
env.workspace = workSpacePath

# Enable overwrite output
env.overwriteOutput = True

# Set local variables
mxd = mapping.MapDocument("CURRENT")
df = mapping.ListDataFrames(mxd, "Layers")[0]

inCAD = arcpy.GetParameterAsText(1)

outShpsName = "outShp"
if not os.path.exists(outShpsName):
outShpsFolder = os.path.join(workSpacePath, outShpsName)
os.mkdir(outShpsFolder)

outLyrsName = "outLyr"
if not os.path.exists(outLyrsName):
outLyrsFolder = os.path.join(workSpacePath, outLyrsName)
os.mkdir(outLyrsFolder)

outFCsPath = arcpy.GetParameterAsText(2)
outFCsName = "outFC"
if outFCsPath == '#' or not outFCsPath:
outFCsFolder = os.path.join(workSpacePath, outFCsName)
os.mkdir(outFCsFolder)
else:
outFCsFolder = outFCsPath

# Import elevation featureclasses
env.workspace = inCAD
fCs = arcpy.ListFeatureClasses("*")

for fc in fCs:
arcpy.FeatureClassToShapefile_conversion(fc, outFCsFolder)

env.workspace = workSpacePath

# Switch elvation feature classes and generate layers
inPoint = workSpacePath + r"\outFC\Point.shp"
inPolyline = workSpacePath + r"\outFC\Polyline.shp"

elevQry = arcpy.GetParameterAsText(3)

outPtFC = workSpacePath + r"\outShp\elevPoint"
outPtLayer = workSpacePath + r"\outLyr\elevPoint.lyr"
outPlFC = workSpacePath + r"\outShp\elevPolyline"
outPlLayer = workSpacePath + r"\outLyr\elevPolyline.lyr"
ptLayer = "elevPoint"
plLayer = "elevPolyline"

arcpy.MakeFeatureLayer_management(inPoint, ptLayer)
arcpy.SelectLayerByAttribute_management(ptLayer, "NEW_SELECTION", elevQry)
if int(arcpy.GetCount_management(ptLayer).getOutput(0)) > 0:
arcpy.DeleteFeatures_management(ptLayer)
arcpy.SaveToLayerFile_management(ptLayer, outPtLayer, "ABSOLUTE")
arcpy.CopyFeatures_management(ptLayer, outPtFC)

arcpy.MakeFeatureLayer_management(inPolyline, plLayer)
arcpy.SelectLayerByAttribute_management(plLayer, "NEW_SELECTION", elevQry)
if int(arcpy.GetCount_management(plLayer).getOutput(0)) > 0:
arcpy.DeleteFeatures_management(plLayer)
arcpy.SaveToLayerFile_management(plLayer, outPlLayer, "ABSOLUTE")
arcpy.CopyFeatures_management(plLayer, outPlFC)

layer1 = mapping.Layer(workSpacePath + r"\outLyr\elevPoint.lyr")
layer2 = mapping.Layer(workSpacePath + r"\outLyr\elevPolyline.lyr")

mapping.AddLayer(df, layer1)
mapping.AddLayer(df, layer2)
如上代码,想根据CAD提取出的高程数据通过SelectLayerByAttribute函数筛选出一些点并删除,但是执行完上面的代码后导出的图层会把其中的点线全删除(全部选定),查询语句没法正确应用于选择,Toolbox设置的输入参数为SQL expression,查询语句输入格式类似“Elevation” <= 600, 但若直接定义elevQry = ‘“Elevation” <= 600’ 则可正确执行,请问是为什么?应该如何解决?
已邀请:

要回复问题请先登录注册