Комментирование запросов определений в ArcGIS Desktop?


10

Я часто использую запросы определений в своей повседневной жизни в ГИС, но одна из многих вещей, которые меня раздражают в ArcMap, - это невозможность комментировать запросы определений. Я хотел бы иметь эту опцию, так как иногда я хочу включить / выключить запрос определения, или я хочу иметь несколько запросов на один шейп-файл, но только один активный одновременно.

Пока что, чтобы обойти это, у меня обычно есть документ блокнота на заднем плане и копируй и вставляй по мере необходимости. Но идеальным решением было бы использовать вкладку запроса определения в свойствах слоя для замены этого документа. У меня может быть несколько разных запросов на слое, но все закомментированы.

Как я понимаю, запросы определения написаны на SQL. Чтобы комментировать в SQL, я полагаю, что вы либо начинаете строку с: -, либо заключаете оператор в скобки: {} . Я пробовал оба из них:

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

Последние два оператора возвращают ошибку выражения SQL и не рисуют в ArcMap. Я не ищу программного решения, так как это будет слишком много работы.


2
В этой системе у меня нет ArcGIS для проверки, но работает ли что-то вроде 'OR 1 = 1' или, может быть, даже ObjectID> -1?
Девдатта Тенгше

@DevdattaTengshe, который работает слишком много, закомментирует запрос: "OBJECTID" <> -1 OR "DATA_AQUISITION" LIKE 'MISSING XSECTION'это отличное решение, но я ищу что-то, что больше похоже на реальный комментарий. Что-то, что можно сделать на любом языке кода, где у вас есть несколько вариантов запросов в разных строках, и все, кроме одного, закомментированы. Если это невозможно, пусть будет так, но я считаю, что это был бы отличный вариант.
Коди Браун

Ответы:


6

Просто предположение, но причина, по которой это комментируется, не работает, вероятно, потому, что запрос определения - это просто часть предложения WHERE в более крупном операторе SQL, построенном внутри ArcGIS всякий раз, когда ему нужно выполнить запрос к базовой базе данных, например, чтобы нарисовать слой , Когда вы добавляете символы комментария, ArcGIS по-прежнему добавляет предложение WHERE и основные проблемы с БД, потому что это недопустимый SQL.

В диалоговом окне Query Builder есть кнопки загрузки и сохранения. При сохранении создается файл .exp, который можно затем загрузить обратно с помощью кнопки «Загрузить». Это на несколько кликов больше, чем вы, вероятно, ищете, но это что-то.


Это правда, что это просто часть более крупного заявления. Вполне возможно, что БД сходит с ума, когда мы добавляем комментарий, но я знаю, что это возможно в других программах, которые используют SQL, чтобы добавить комментарий в середине оператора. Сохранение и загрузка .exp - это то, что я использовал раньше, но, как вы сказали, это на несколько кликов больше, чем я ищу. Я также пытаюсь уменьшить количество кода и файлов, прикрепленных к каждому имеющемуся у меня MXD, и это вместо этого увеличит его.
Коди Браун

2
SELECT * FROM table WHEREнедопустимый SQL - это то, что я получаю. После ключевого слова WHERE должно быть что-то, или ключевое слово WHERE вообще не должно быть. ArcGIS, вероятно, добавляет WHERE, если что-то вообще есть в запросе определения.
blah238

Я пытался, SELECT * FROM table WHERE "OBJECTID" <> -1 --"DATA_AQUISITION" LIKE 'MISSING XSECTION'и SELECT * FROM table WHERE "OBJECTID" <> -1 {"DATA_AQUISITION" LIKE 'MISSING XSECTION'}оба приводят к тем же ошибкам У этого есть кое-что после WHERE, но все еще не может обработать комментарии.
Коди Браун

1
Да. Ну, независимо от причины, ясно, что комментирующий подход не будет работать.
blah238

4
На самом деле, синтаксис комментариев в стиле C выглядит так, как будто он работает. Попробуйте это, например: 1 = 1 /*"DATA_AQUISITION" LIKE 'MISSING XSECTION'*/. Работал у меня на Oracle. 1 = 1Часть необходима, используя только комментарий не работает (Missing ошибки Expression).
blah238

4

Комментарий блока / .. /, кажется, работает, пока у вас есть что-то в вашем запросе определения. Если вы все закомментировали, вам нужно поставить 1 = 1 перед вашими закомментированными строками

Примеры:

Все закомментировано:

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

1 без комментариев, 2 с комментариями:

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

2 без комментариев, 1 с комментариями:

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

Просто переместите «/ » и « /» вокруг.


1

XTools Pro, не-ESRI дополнение имеет функцию, которая позволяет включать / отключать определение запроса на слое. Очень полезный.

Вы также можете скопировать / вставить свой запрос определения во вкладку «Основные» свойств слоя. Там есть окно для «Описание», которое часто не используется. Я часто копирую / вставляю свои запросы определений туда, когда мне нужно их отключить. Там сохранены в документе


Хм звучит хорошо, но стоит ли XTools денег или это хорошее бесплатное дополнение?
Коди Браун
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.