Commentare le query di definizione in ArcGIS Desktop?


10

Uso molto le query di definizione nella mia vita quotidiana al GIS, ma una delle tante cose che ho trovato fastidioso in ArcMap è l'incapacità di commentare le query di definizione. Mi piacerebbe avere questa opzione perché a volte voglio attivare / disattivare la query di definizione o voglio avere più query su un singolo Shapefile, ma solo una attiva alla volta.

Finora per ovviare a questo, di solito ho solo un documento di blocco note in background e copia e incolla se necessario. Ma la soluzione ideale sarebbe quella di utilizzare la scheda della query di definizione nelle proprietà del layer per sostituire questo documento. Potrei avere più query diverse su un livello, ma tutte commentate.

A quanto ho capito, le query di definizione sono scritte in SQL. Per commentare in SQL, credo che tu inizi una riga con: - o racchiudi una frase tra parentesi: {} . Ho provato entrambi:

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

Le ultime due istruzioni restituiscono un errore di espressione SQL e non disegnano in ArcMap. Non sto cercando una soluzione di programmazione, in quanto sarebbe troppo lavoro.


2
Non ho ArcGIS su questo sistema da provare, ma funziona qualcosa come "OR 1 = 1" o forse anche ObjectID> -1?
Devdatta Tengshe

@DevdattaTengshe che funziona troppo commentando una query: "OBJECTID" <> -1 OR "DATA_AQUISITION" LIKE 'MISSING XSECTION'è un'ottima soluzione, ma sto cercando qualcosa che sembra più un commento reale. Qualcosa che può essere fatto in ogni lingua del codice, in cui hai più opzioni di query su righe diverse e tutte tranne una sono commentate. Se non è possibile, così sia, ma credo che sarebbe un'ottima opzione da avere.
Cody Brown,

Risposte:


6

Solo un'ipotesi, ma il motivo per cui commentarlo non funziona è probabilmente perché una query di definizione è solo la parte della clausola WHERE di un'istruzione SQL più grande creata internamente da ArcGIS ogni volta che deve interrogare il database sottostante, ad esempio per disegnare il livello . Quando si aggiungono i caratteri di commento, ArcGIS aggiunge ancora la clausola WHERE e i maniaci del database sottostante perché non è SQL valido.

Nella finestra di dialogo Generatore di query sono presenti pulsanti di caricamento e salvataggio. Salva crea un file .exp che è possibile caricare nuovamente con il pulsante Carica. È qualche clic in più di quello che probabilmente stai cercando, ma è qualcosa.


È vero che fa parte di una dichiarazione più ampia. È molto probabile che il DB si rompa quando aggiungiamo un commento, ma so che è possibile in altri programmi che usano SQL aggiungere un commento nel mezzo di un'istruzione. Il salvataggio e il caricamento di un .exp è qualcosa che stavo usando prima, ma come hai detto è qualche clic in più di quello che sto cercando. Sto anche cercando di ridurre la quantità di codice e file allegati a ciascun MXD che ho e questo invece lo aumenterebbe.
Cody Brown,

2
SELECT * FROM table WHERESQL non è valido. Deve esserci qualcosa che segue la parola chiave WHERE o la parola chiave WHERE non deve essere presente affatto. ArcGIS probabilmente aggiunge DOVE se c'è qualcosa nella query di definizione.
blah238,

Ho provato SELECT * FROM table WHERE "OBJECTID" <> -1 --"DATA_AQUISITION" LIKE 'MISSING XSECTION'ed SELECT * FROM table WHERE "OBJECTID" <> -1 {"DATA_AQUISITION" LIKE 'MISSING XSECTION'}entrambi danno gli stessi errori. Ha qualcosa che segue il WHERE, ma non è ancora in grado di gestire i commenti.
Cody Brown,

1
Huh. Beh, qualunque sia la ragione, chiaramente l'approccio al commento non funzionerà.
blah238,

4
In realtà, la sintassi dei commenti in stile C sembra funzionare. Prova questo per esempio: 1 = 1 /*"DATA_AQUISITION" LIKE 'MISSING XSECTION'*/. Ha lavorato per me su Oracle. La 1 = 1parte è necessaria, l'utilizzo del solo commento non funziona (errore di espressione mancante).
blah238,

4

Il commento di blocco / .. / sembra funzionare fintanto che hai qualcosa nella tua query di definizione. Se si commenta tutto, è necessario inserire 1 = 1 prima delle righe commentate

Esempi:

Tutti commentati:

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

1 non commentato, 2 commentato:

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

2 senza commento, 1 commentato:

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

Basta spostare "/ " e " /" in giro.


1

XTools pro, un componente aggiuntivo non ESRI ha una funzione che consente di attivare / disattivare una definizione di definizione su un livello. Molto utile.

È inoltre possibile copiare / incollare la query di definizione nella scheda "Generale" delle proprietà del livello. C'è una finestra lì per "Descrizione" che è spesso inutilizzata. Copio / incollo spesso le mie query di definizione quando devo disattivarle. Ci sono salvati nel documento


Hmm suona bene, ma XTools costa denaro o è un bel componente aggiuntivo gratuito?
Cody Brown,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.