¿Comentando consultas de definición en ArcGIS Desktop?

10

Utilizo mucho las consultas de definición en mi vida diaria en el SIG, pero una de las muchas cosas que he encontrado molestas sobre ArcMap es la incapacidad de comentar las consultas de definición. Me gustaría tener esta opción, ya que a veces quiero activar / desactivar la consulta de definición o quiero tener múltiples consultas en un solo archivo de forma, pero solo una activa a la vez.

Hasta ahora, para evitar esto, generalmente solo tengo un documento de bloc de notas en segundo plano y copio y pego según sea necesario. Pero la solución ideal sería utilizar la pestaña de consulta de definición en las propiedades de la capa para reemplazar este documento. Es posible que tenga varias consultas diferentes en una capa, pero todas comentaron.

Según tengo entendido, las consultas de definición están escritas en SQL. Para comentar en SQL, creo que comienza una línea con: - o abarca una declaración entre paréntesis: {} . He intentado ambos:

Original: "DATA_AQUISITION" LIKE 'MISSING XSECTION'
Dashes:   --"DATA_AQUISITION" LIKE 'MISSING XSECTION'
Brackets: {"DATA_AQUISITION" LIKE 'MISSING XSECTION'}

Las dos últimas declaraciones devuelven un error de expresión SQL y no se dibujarán en ArcMap. No estoy buscando una solución de programación, ya que eso sería demasiado trabajo.

Cody Brown
fuente
2
No tengo ArcGIS en este sistema para verificar, pero ¿funciona algo como 'OR 1 = 1' o tal vez incluso ObjectID> -1?
Devdatta Tengshe
@DevdattaTengshe que funciona demasiado comentar una consulta: "OBJECTID" <> -1 OR "DATA_AQUISITION" LIKE 'MISSING XSECTION'Esa es una gran solución, pero estoy buscando algo que parezca más un comentario real. Algo que se puede hacer en todos los lenguajes de código, donde tiene múltiples opciones de consulta en diferentes líneas y todas menos una están comentadas. Si no es posible, que así sea, pero creo que sería una gran opción.
Cody Brown

Respuestas:

6

Solo una suposición, pero la razón por la cual comentarlo no funciona probablemente se deba a que una consulta de definición es solo la cláusula WHERE que forma parte de una declaración SQL más grande construida internamente por ArcGIS cada vez que necesita consultar la base de datos subyacente, por ejemplo, para dibujar la capa . Cuando agrega los caracteres de comentario, ArcGIS todavía agrega la cláusula WHERE y los monstruos de base de datos subyacentes porque no es SQL válido.

En el cuadro de diálogo Generador de consultas hay botones de carga y guardar. Guardar crea un archivo .exp que luego puede volver a cargar con el botón Cargar. Son unos pocos clics más de lo que probablemente esté buscando, pero es algo.

blah238
fuente
Es cierto que es solo parte de una declaración más amplia. Es muy posible que la base de datos se asuste cuando agregamos un comentario, pero sé que es posible en otros programas que usan SQL para agregar un comentario en medio de una declaración. Guardar y cargar un .exp es algo que estaba usando antes, pero como dijiste, son unos pocos clics más de lo que estoy buscando. También estoy tratando de reducir la cantidad de código y archivos adjuntos a cada MXD que tengo y eso lo aumentaría.
Cody Brown el
2
SELECT * FROM table WHEREno es válido SQL es lo que estaba buscando. Tiene que haber algo después de la palabra clave WHERE, o la palabra clave WHERE no debe estar allí en absoluto. ArcGIS probablemente agrega DONDE si hay algo en absoluto en la Consulta de definición.
blah238
Lo intenté SELECT * FROM table WHERE "OBJECTID" <> -1 --"DATA_AQUISITION" LIKE 'MISSING XSECTION'y SELECT * FROM table WHERE "OBJECTID" <> -1 {"DATA_AQUISITION" LIKE 'MISSING XSECTION'}Ambos resultan en los mismos errores. Tiene algo que sigue al WHERE, pero aún no puede manejar los comentarios.
Cody Brown
1
Huh Bueno, sea cual sea la razón, claramente el enfoque de comentarios no funcionará.
blah238
44
En realidad, la sintaxis de comentarios de estilo C parece funcionar. Prueba esto, por ejemplo: 1 = 1 /*"DATA_AQUISITION" LIKE 'MISSING XSECTION'*/. Trabajó para mí en Oracle. La 1 = 1parte es necesaria, usar solo el comentario no funciona (error de expresión faltante).
blah238
4

El comentario de bloque / .. / parece funcionar siempre que tenga algo en su consulta de definición. Si comenta todo, debe poner un 1 = 1 antes de las líneas comentadas

Ejemplos:

Todos comentaron:

1=1  
/*  
  and ASSIGNMENT_STATUS <> 'Closed' 
  and DEVICE_TYPE = 'device'     
  and ASSIGNED_TO = 'somebody'    
*/

1 no comentado, 2 comentado:

ASSIGNMENT_STATUS <> 'Closed' 
/* 
  and DEVICE_TYPE = 'device'     
  and ASSIGNED_TO = 'somebody'    
*/

2 no comentados, 1 comentado:

ASSIGNMENT_STATUS <> 'Closed' 
DEVICE_TYPE = 'device'
/*      
  and ASSIGNED_TO = 'somebody'    
*/

Simplemente mueva "/ " y " /" alrededor.

JasonT
fuente
1

XTools pro, un complemento que no es ESRI tiene una característica que permite activar / desactivar una consulta de definición en una capa. Muy útil.

También puede copiar / pegar su consulta de definición en la pestaña "General" de propiedades de capa. Hay una ventana para "Descripción" que a menudo no se usa. A menudo copio / pego mis consultas de definición allí cuando necesito desactivarlas. Se guardan en el documento

Marie
fuente
Hmm suena bien, pero ¿XTools cuesta dinero o es un buen complemento gratuito?
Cody Brown