Komentowanie zapytań dotyczących definicji w ArcGIS Desktop?

10

Często używam zapytań definicji w moim codziennym życiu GIS, ale jedną z wielu rzeczy, które mnie denerwują w ArcMap, jest brak możliwości komentowania zapytań definicji. Chciałbym mieć tę opcję, ponieważ czasami chcę włączyć / wyłączyć zapytanie definicji lub chcę mieć wiele zapytań na jednym pliku Shapefile, ale tylko jedno aktywne na raz.

Jak dotąd, aby to obejść, zwykle mam w tle dokument notatnika i kopiuję i wklejam w razie potrzeby. Ale idealnym rozwiązaniem byłoby użycie karty zapytania definicji we właściwościach warstwy w celu zastąpienia tego dokumentu. Mogę mieć wiele różnych zapytań na warstwie, ale wszystkie zostały zakomentowane.

Jak rozumiem, zapytania definicji są pisane w języku SQL. Aby komentarz w SQL wierzę, albo uruchomić linię z: - albo obejmować oświadczenie w nawiasach: {} . Próbowałem obu tych:

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

Dwie ostatnie instrukcje zwracają błąd wyrażenia SQL i nie rysują w ArcMap. Nie szukam rozwiązania programistycznego, ponieważ byłoby to po prostu zbyt wiele pracy.

Cody Brown
źródło
2
Nie mam ArcGIS w tym systemie do sprawdzenia, ale czy działa coś takiego jak „OR 1 = 1”, a może nawet ObjectID> -1?
Devdatta Tengshe,
@DevdattaTengshe, który działa zbyt dobrze, skomentuj zapytanie: "OBJECTID" <> -1 OR "DATA_AQUISITION" LIKE 'MISSING XSECTION'To świetne rozwiązanie, ale szukam czegoś, co wydaje się bardziej jak prawdziwy komentarz. Coś, co można zrobić w każdym języku kodu, w którym masz wiele opcji zapytań w różnych wierszach i wszystkie oprócz jednego są komentowane. Jeśli nie jest to możliwe, niech tak będzie, ale uważam, że byłoby to świetną opcją.
Cody Brown

Odpowiedzi:

6

Tylko zgadnij, ale powodem, dla którego to komentowanie nie działa, jest prawdopodobnie to, że zapytanie definicji jest po prostu częścią klauzuli WHERE większej instrukcji SQL zbudowanej wewnętrznie przez ArcGIS za każdym razem, gdy trzeba zapytać bazową bazę danych, na przykład aby narysować warstwę . Kiedy dodajesz znaki komentarza, ArcGIS nadal dodaje klauzulę WHERE i bazowych maniaków DB, ponieważ nie jest to poprawny SQL.

W oknie dialogowym Query Builder znajdują się przyciski ładowania i zapisywania. Zapisz tworzy plik .exp, który można następnie ponownie załadować za pomocą przycisku Załaduj. To kilka kliknięć więcej niż prawdopodobnie szukasz, ale to coś.

blah238
źródło
To prawda, że ​​to tylko część większego stwierdzenia. Bardzo możliwe, że DB wariuje, gdy dodamy komentarz, ale wiem, że jest to możliwe w innych programach, które używają SQL, aby dodać komentarz w środku instrukcji. Zapisywanie i ładowanie pliku .exp to coś, z czego korzystałem wcześniej, ale tak jak powiedziałeś, to kilka kliknięć więcej, niż szukam. Próbuję również zmniejszyć ilość kodu i plików dołączonych do każdego MXD, który mam, a to zamiast tego zwiększyłoby go.
Cody Brown
2
SELECT * FROM table WHEREnie jest poprawny SQL, o co mi chodziło. Musi być coś po słowie kluczowym WHERE, inaczej słowo kluczowe WHERE wcale nie musi być. ArcGIS prawdopodobnie dodaje GDZIE, jeśli w zapytaniu dotyczącym definicji jest coś w ogóle.
blah238
Próbowałem SELECT * FROM table WHERE "OBJECTID" <> -1 --"DATA_AQUISITION" LIKE 'MISSING XSECTION'i SELECT * FROM table WHERE "OBJECTID" <> -1 {"DATA_AQUISITION" LIKE 'MISSING XSECTION'}oba powodują te same błędy. Ma coś po WHERE, ale wciąż nie może obsłużyć komentarzy.
Cody Brown
1
Huh Cóż, bez względu na przyczynę, podejście komentowania nie zadziała.
blah238
4
W rzeczywistości wygląda na to, że składnia komentowania w stylu C. Spróbuj na przykład: 1 = 1 /*"DATA_AQUISITION" LIKE 'MISSING XSECTION'*/. Pracował dla mnie na Oracle. 1 = 1Część jest potrzebna, używając tylko komentarz nie działa (brak błąd wyrażenie).
blah238
4

Komentarz do bloku / .. / wydaje się działać, dopóki masz coś w zapytaniu dotyczącym definicji. Jeśli wszystko komentujesz, musisz wstawić 1 = 1 przed komentarzem

Przykłady:

Wszyscy skomentowali:

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

1 bez komentarza, 2 skomentował:

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

2 bez komentarza, 1 skomentował:

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

Po prostu przesuń „/ ” i „ /”.

JasonT
źródło
1

XTools pro, dodatek inny niż ESRI, ma funkcję, która umożliwia włączanie / wyłączanie kwerendy definicji na warstwie. Bardzo przydatne.

Możesz również skopiować / wkleić zapytanie dotyczące definicji w zakładce „Ogólne” właściwości warstwy. Jest tam okno dla „Opisu”, które jest często nieużywane. Często kopiuję / wklejam moje zapytania definicji, kiedy muszę je wyłączyć. Są zapisane w dokumencie

Marie
źródło
Hmm brzmi dobrze, ale czy XTools kosztuje, czy jest to miły darmowy dodatek?
Cody Brown