ArcGIS Desktop에서 정의 쿼리를 주석 처리 하시겠습니까?


10

나는 일상적인 GIS 생활에서 정의 쿼리를 많이 사용하지만 ArcMap에 대해 짜증나는 많은 것들 중 하나는 정의 쿼리를 주석 처리 할 수 ​​없다는 것입니다. 정의 쿼리를 켜거나 끄고 싶거나 단일 Shapefile에 여러 개의 쿼리를 갖고 싶지만 한 번에 하나만 활성화하려는 경우이 옵션을 사용하고 싶습니다.

지금 까지이 문제를 해결하기 위해 일반적으로 배경에 메모장 문서가 있으며 필요에 따라 복사하여 붙여 넣습니다. 그러나 이상적인 해결책은 레이어 속성에서 정의 쿼리 탭을 사용하여이 문서를 바꾸는 것입니다. 레이어에 여러 개의 다른 쿼리가있을 수 있지만 모두 주석 처리되었습니다.

내가 이해하는 것처럼 정의 쿼리는 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과 같은 것이 작동합니까?
Devdatta Tengshe 2016 년

@DevdattaTengshe는 너무 많이 작동하여 쿼리를 "OBJECTID" <> -1 OR "DATA_AQUISITION" LIKE 'MISSING XSECTION'주석 처리합니다. 모든 코드 언어에서 수행 할 수있는 작업으로, 서로 다른 줄에 여러 쿼리 옵션이 있고 하나만 제외하고 모두 주석 처리됩니다. 그것이 가능하지 않다면 그렇게해도 좋을 것입니다.
코디 브라운

답변:


6

추측하지만, 주석 처리가 작동하지 않는 이유는 아마도 정의 쿼리가 기본 데이터베이스를 쿼리해야 할 때마다 (예 : 레이어 그리기) ArcGIS가 내부적으로 구축 한 더 큰 SQL 문의 WHERE 절 부분 일뿐일 수 있습니다. . 주석 문자를 추가 할 때 ArcGIS는 여전히 유효한 SQL이 아니므로 WHERE 절과 기본 DB 괴물을 추가합니다.

Query Builder 대화 상자에는로드 및 저장 단추가 있습니다. 저장은 .exp 파일을 생성 한 다음로드 버튼으로 다시로드 할 수 있습니다. 아마 당신이 찾고있는 것보다 몇 번 더 클릭하지만 뭔가입니다.


그것은 그것이 더 큰 진술의 일부라는 것이 사실입니다. 주석을 추가 할 때 DB가 혼란 스러울 가능성이 있지만 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부분 (표현의 오류를 누락)가 작동하지 않습니다 단지 주석을 사용하여 필요합니다.
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

ESRI 이외의 애드온 인 XTools pro에는 레이어에서 정의 퀴리를 켜거나 끌 수있는 기능이 있습니다. 매우 유용한.

레이어 속성 "일반"탭에서 정의 쿼리를 복사 / 붙여 넣기 할 수도 있습니다. 자주 사용되지 않는 "설명"에 대한 창이 있습니다. 정의 쿼리를 해제해야 할 때 종종 정의 쿼리를 복사 / 붙여 넣기합니다. 문서에 저장되었습니다


흠 소리는 잘 들리지만 XTools는 비용이 들지 않습니까? 아니면 무료로 추가 할 수 있습니까?
코디 브라운
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.