up vote 4 down vote favorite
share [fb]

I've seen some questions on this, but there seem to be many different answers... and none have seemed to work. I'm trying to include an integer variable in the SQL where-clause of a tool like this (arcgis 10 python script):

newR = ExtractByAttributes(inR, '"IntField">=2508')

where inR is an integer raster, IntField is an integer field in its attribute table. The above works, but how can I substitute an integer variable instead of 2508? I've tried all kinds of different quotes and concatenation, but have not been able to, any ideas appreciated.

Thanks

link|improve this question

feedback

2 Answers

up vote 6 down vote accepted

How about:

val = 2508
newR = ExtractByAttributes(inR, '"IntField">=%d' % val)

Read up on string formatting with python.

link|improve this answer
1  
That didn't quite work, but it put me on the right track, the problem was to also get the field in double quotes. newR = ExtractByAttributes(inR, "\"IntField\">=%d" % val) Thanks! – CCID Mar 3 at 23:26
1  
My bad, had an extra double-quote in there. Just edited it and it should be correct now. – Derek Swingley Mar 3 at 23:28
1  
OK, that works now too, and simpler. – CCID Mar 4 at 0:14
feedback

I have found ArcGIS to be very finnicky when it comes to multiple parameters. For example, use of double quotes tends to signify the end of a parameter. One method I use is string concatenation after changing the variable to a string.

intstr = str(intvar) #Converts integer variable to a string
newR = ExtractByAttributes(inR, "IntField>= "+intstr)

link|improve this answer
OK, this also does the job, thanks for the reply. – CCID Mar 4 at 0:15
feedback

Your Answer

 
or
required, but never shown

Not the answer you're looking for? Browse other questions tagged or ask your own question.