5 votos

Problema con la cláusula where en ArcGIS cuando se trata de variables

Estoy escribiendo una secuencia de comandos de python para ArcGIS. Tengo una clase de entidad de entrada que contiene varias tuberías que se guarda como una variable InputPipeline. Me gustaría recorrer a través de las tuberías y de la ejecución de algunas de ejecutar algunos procesos en forma individual.

El guión está configurado para solicitar al usuario que elija el campo que contiene un identificador único para cada tubería. Yo soy de ahorro en este campo como una variable llamada PipelineIDField.

Puedo ejecutar una búsqueda de cursor para obtener la tubería nombre en el campo y estoy ahorrando como fullRouteName.

Yo estoy usando:

arcpy.MakeFeatureLayer_management(InputPipeline, 'SelectedPipe', where_clause)

y la cláusula where se define como:

where_clause=""""%s" =""" %PipelineIDField + """ '%s' """ %fullRouteName

Quiero suponer que yo podría entonces utilizar correctamente 'SelectedPipe' para ejecutar mis procesos en el individuo de la tubería.

Este está trabajando con éxito al ejecutar la cláusula where en la ventana de python dentro de ArcGIS, sin embargo, no seleccione a cabo el individuo tuberías en mi guión. Las cláusulas where son idénticos.

He intentado utilizar caracteres de escape "\"" y "\", y con el mismo resultado.

Alguna idea de lo que está pasando aquí?

Estoy usando ArcGIS 10.1 service pack 1 en Windows 7 de 64 bits.

Gracias.

5voto

auramo Puntos 161

Por favor, consulte esta respuesta para una función que se puede utilizar para este propósito: ¿Cómo puedo incluir una variable en la cláusula where de arcpy.Select_analysis?

También usted está haciendo algo bastante extraño con su segunda línea:

where_clause=""""%s" =""" %PipelineIDField + """ '%s' """ %fullRouteName

Si tuviera que volver a escribir esto (no utilizando la función correspondiente) me gustaría hacer algo como:

where_clause = "\"%s\" = '%s'" % (PipelineIDField, fullRouteName)

Como para el resto de tu pregunta creo que tendrá que compartir el resto de tu script.

2voto

Roy Puntos 2884

Yo prefiero construir mis cláusulas sin sustitución de variables - aunque la sugerencia de blah se ve muy bien. Supongo que es sorta la forma de JavaScript de hacer las cosas, pero no hay caracteres especiales o de escape necesarios.

 whereClause = '"' + PipelineIDField + '" = ' + "'" + fullRouteName + "'"
 

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X