注释掉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

确实起作用的@DevdattaTengshe对查询的注释过多:"OBJECTID" <> -1 OR "DATA_AQUISITION" LIKE 'MISSING XSECTION'这是一个很好的解决方案,但我正在寻找看起来更像是实际注释的东西。可以用每种代码语言来完成的事情,您可以在不同的行上有多个查询选项,而除一个以外的所有选项都被注释掉。如果不可能,那就这样吧,但我相信这将是一个不错的选择。
科迪·布朗

Answers:


6

只是一个猜测,但将其注释掉却不起作用的原因可能是因为定义查询只是ArcGIS在内部需要查询基础数据库(例如绘制图层)时在内部构建的较大SQL语句的WHERE子句部分。 。添加注释字符时,ArcGIS仍会添加WHERE子句和基础数据库怪胎,因为它不是有效的SQL。

在“查询生成器”对话框上,有“加载”和“保存”按钮。保存将创建一个.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 2013年

4
实际上,C样式的注释语法看起来很有效。请尝试以下示例:1 = 1 /*"DATA_AQUISITION" LIKE 'MISSING XSECTION'*/。在Oracle上为我工作。该1 = 1部分是必需的,仅使用注释不起作用(“缺少表达式”错误)。
blah238 2013年

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会花钱吗,还是一个不错的免费附加组件?
科迪·布朗
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.