Commenter les requêtes de définition dans ArcGIS Desktop?

10

J'utilise beaucoup de requêtes de définition dans ma vie SIG quotidienne, mais l'une des nombreuses choses que j'ai trouvées ennuyeuses à propos d'ArcMap est l'incapacité de commenter les requêtes de définition. J'aimerais avoir cette option car parfois je veux activer / désactiver la requête de définition ou je veux avoir plusieurs requêtes sur un seul fichier de formes, mais une seule active à la fois.

Jusqu'à présent, pour contourner ce problème, j'ai généralement un document bloc-notes en arrière-plan et copiez-collez si nécessaire. Mais la solution idéale serait d'utiliser l'onglet de requête de définition dans les propriétés de la couche pour remplacer ce document. Je pourrais avoir plusieurs requêtes différentes sur une couche, mais toutes ont été commentées.

Si je comprends bien, les requêtes de définition sont écrites en SQL. Pour commenter en SQL, je pense que vous pouvez soit commencer une ligne par: - soit englober une déclaration entre crochets: {} . J'ai essayé les deux:

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

Les deux dernières instructions renvoient une erreur d'expression SQL et ne dessinent pas dans ArcMap. Je ne cherche pas de solution de programmation, car ce serait trop de travail.

Cody Brown
la source
2
Je n'ai pas ArcGIS sur ce système à vérifier, mais est-ce que quelque chose comme «OU 1 = 1» ou peut-être même ObjectID> -1 fonctionne?
Devdatta Tengshe
@DevdattaTengshe qui fonctionne trop bien commenter une requête: "OBJECTID" <> -1 OR "DATA_AQUISITION" LIKE 'MISSING XSECTION'c'est une excellente solution, mais je cherche quelque chose qui ressemble plus à un commentaire réel. Quelque chose qui peut être fait dans toutes les langues de code, où vous avez plusieurs options de requête sur différentes lignes et toutes sauf une sont mises en commentaire. Si ce n'est pas possible, tant pis, mais je pense que ce serait une excellente option.
Cody Brown

Réponses:

6

Juste une supposition, mais la raison pour laquelle cela ne fonctionne pas est probablement parce qu'une requête de définition n'est que la partie WHERE d'une instruction SQL plus grande construite en interne par ArcGIS chaque fois qu'il a besoin d'interroger la base de données sous-jacente, par exemple pour dessiner la couche . Lorsque vous ajoutez les caractères de commentaire, ArcGIS ajoute toujours la clause WHERE et les phénomènes de base de données sous-jacents car ce n'est pas du SQL valide.

Dans la boîte de dialogue Query Builder, il y a des boutons de chargement et d'enregistrement. Enregistrer crée un fichier .exp que vous pouvez ensuite recharger avec le bouton Charger. C'est quelques clics de plus que ce que vous recherchez probablement, mais c'est quelque chose.

blah238
la source
C'est vrai que cela fait partie d'une déclaration plus large. Il est très possible que la DB panique lorsque nous ajoutons un commentaire, mais je sais qu'il est possible dans d'autres programmes qui utilisent SQL d'ajouter un commentaire au milieu d'une instruction. La sauvegarde et le chargement d'un fichier .exp étaient quelque chose que j'utilisais auparavant, mais comme vous l'avez dit, c'est quelques clics de plus que ce que je recherche. J'essaie également de réduire la quantité de code et de fichiers attachés à chaque MXD que j'ai et cela l'augmenterait.
Cody Brown
2
SELECT * FROM table WHEREn'est pas valide SQL est ce que je voulais en venir. Il doit y avoir quelque chose après le mot-clé WHERE, ou le mot-clé WHERE ne doit pas être là du tout. ArcGIS ajoute probablement WHERE s'il y a quelque chose dans la requête de définition.
blah238
J'ai essayé SELECT * FROM table WHERE "OBJECTID" <> -1 --"DATA_AQUISITION" LIKE 'MISSING XSECTION'et les SELECT * FROM table WHERE "OBJECTID" <> -1 {"DATA_AQUISITION" LIKE 'MISSING XSECTION'}deux entraînent les mêmes erreurs. Il a quelque chose après le WHERE, mais ne peut toujours pas gérer les commentaires.
Cody Brown
1
Huh. Eh bien, quelle que soit la raison, il est clair que l'approche des commentaires ne fonctionnera pas.
blah238
4
En fait, la syntaxe de commentaire de style C semble fonctionner. Essayez ceci par exemple: 1 = 1 /*"DATA_AQUISITION" LIKE 'MISSING XSECTION'*/. A travaillé pour moi sur Oracle. La 1 = 1partie est nécessaire, l'utilisation du commentaire ne fonctionne pas (erreur d'expression manquante).
blah238
4

Le commentaire de bloc / .. / semble fonctionner tant que vous avez quelque chose dans votre requête de définition. Si vous commentez tout, vous devez mettre 1 = 1 avant vos lignes commentées

Exemples:

Tous ont commenté:

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

1 sans commentaire, 2 commentés:

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

2 sans commentaires, 1 commenté:

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

Déplacez simplement le "/ " et le " /".

JasonT
la source
1

XTools pro, un module complémentaire non-ESRI a une fonctionnalité qui permet d'activer / désactiver une requête de définition sur une couche. Très utile.

Vous pouvez également copier / coller votre requête de définition dans l'onglet "Général" des propriétés du calque. Il y a une fenêtre pour "Description" qui est souvent inutilisée. Je copie / colle souvent mes requêtes de définition là-bas lorsque je dois les désactiver. Ils sont enregistrés dans le document

Marie
la source
Hmm sonne bien, mais XTools coûte-t-il de l'argent ou est-ce un bon complément gratuit?
Cody Brown