Ich verwende in meinem täglichen GIS-Leben häufig Definitionsabfragen, aber eines der vielen Dinge, die ich an ArcMap als störend empfunden habe, ist die Unfähigkeit, Definitionsabfragen zu kommentieren. Ich möchte diese Option haben, da ich manchmal die Definitionsabfrage aktivieren / deaktivieren oder mehrere Abfragen in einer einzelnen Shapefile haben möchte, aber jeweils nur eine aktiv ist.
Um dies zu umgehen, habe ich normalerweise nur ein Notizblockdokument im Hintergrund und kopiere und füge es nach Bedarf ein. Die ideale Lösung wäre jedoch, die Registerkarte Definitionsabfrage in den Ebeneneigenschaften zu verwenden, um dieses Dokument zu ersetzen. Ich habe möglicherweise mehrere verschiedene Abfragen auf einer Ebene, aber alle sind auskommentiert.
Soweit ich weiß, werden Definitionsabfragen in SQL geschrieben. Um in SQL zu kommentieren, beginnen Sie entweder eine Zeile mit: - oder schließen eine Anweisung in Klammern ein: {} . Ich habe beide ausprobiert:
Original: "DATA_AQUISITION" LIKE 'MISSING XSECTION'
Dashes: --"DATA_AQUISITION" LIKE 'MISSING XSECTION'
Brackets: {"DATA_AQUISITION" LIKE 'MISSING XSECTION'}
Die letzten beiden Anweisungen geben einen SQL-Ausdrucksfehler zurück und werden in ArcMap nicht gezeichnet. Ich suche keine Programmierlösung, da das einfach zu viel Arbeit wäre.
quelle
"OBJECTID" <> -1 OR "DATA_AQUISITION" LIKE 'MISSING XSECTION'
Das ist eine großartige Lösung, aber ich suche nach etwas, das eher wie ein tatsächlicher Kommentar aussieht. Dies kann in jeder Codesprache durchgeführt werden, in der Sie mehrere Abfrageoptionen in verschiedenen Zeilen haben und alle bis auf eine auskommentiert sind. Wenn es nicht möglich ist, soll es so sein, aber ich glaube, es wäre eine großartige Option.Antworten:
Nur eine Vermutung, aber der Grund, warum das Auskommentieren nicht funktioniert, liegt wahrscheinlich darin, dass eine Definitionsabfrage nur der WHERE-Klauselteil einer größeren SQL-Anweisung ist, die von ArcGIS intern erstellt wird, wenn die zugrunde liegende Datenbank abgefragt werden muss, beispielsweise um die Ebene zu zeichnen . Wenn Sie die Kommentarzeichen hinzufügen, fügt ArcGIS weiterhin die WHERE-Klausel und die zugrunde liegenden DB-Freaks hinzu, da es sich nicht um gültiges SQL handelt.
Im Dialogfeld "Abfrage-Generator" befinden sich Schaltflächen zum Laden und Speichern. Speichern erstellt eine EXP-Datei, die Sie dann mit der Schaltfläche Laden wieder laden können. Es sind ein paar Klicks mehr, als Sie wahrscheinlich suchen, aber es ist etwas.
quelle
SELECT * FROM table WHERE
ist nicht gültig SQL ist das, worauf ich hinaus wollte. Nach dem WHERE-Schlüsselwort muss etwas stehen, oder das WHERE-Schlüsselwort muss überhaupt nicht vorhanden sein. ArcGIS fügt wahrscheinlich WHERE hinzu, wenn die Definitionsabfrage überhaupt etwas enthält.SELECT * FROM table WHERE "OBJECTID" <> -1 --"DATA_AQUISITION" LIKE 'MISSING XSECTION'
undSELECT * FROM table WHERE "OBJECTID" <> -1 {"DATA_AQUISITION" LIKE 'MISSING XSECTION'}
beide führen zu den gleichen Fehlern. Es folgt etwasWHERE
, kann aber die Kommentare immer noch nicht verarbeiten.1 = 1 /*"DATA_AQUISITION" LIKE 'MISSING XSECTION'*/
. Arbeitete für mich bei Oracle. Der1 = 1
Teil wird benötigt, nur die Verwendung des Kommentars funktioniert nicht (Fehler "Fehlender Ausdruck").Der Blockkommentar / .. / scheint zu funktionieren, solange Ihre Definitionsabfrage etwas enthält. Wenn Sie alles auskommentieren, müssen Sie vor Ihren auskommentierten Zeilen eine 1 = 1 setzen
Beispiele:
Alle auskommentiert:
1 unkommentiert, 2 auskommentiert:
2 unkommentiert, 1 auskommentiert:
Bewegen Sie einfach das "/ " und " /".
quelle
XTools Pro, ein Nicht-ESRI-Add-On, verfügt über eine Funktion, mit der eine Definitionsabfrage auf einer Ebene ein- und ausgeschaltet werden kann. Sehr hilfreich.
Sie können Ihre Definitionsabfrage auch auf der Registerkarte "Allgemein" der Ebeneneigenschaften kopieren / einfügen. Dort gibt es ein Fenster für "Beschreibung", das oft nicht verwendet wird. Ich kopiere / füge meine Definitionsabfragen oft dort ein, wenn ich sie deaktivieren muss. Es sind im Dokument gespeichert
quelle