ArcGIS Desktopの定義クエリをコメント化しますか?


10

私は日常のGISライフで定義クエリを頻繁に使用していますが、ArcMapで不快に感じることが多いのは、定義クエリをコメントアウトできないことです。定義クエリをオン/オフしたい場合や、単一のシェープファイルで複数のクエリを使用したいが、一度にアクティブになるのは1つだけなので、このオプションを使用したいと思います。

これまでのところ、これを回避するために、私は通常、バックグラウンドにメモ帳ドキュメントを用意し、必要に応じてコピーして貼り付けます。ただし、理想的な解決策は、レイヤープロパティの定義クエリタブを使用してこのドキュメントを置き換えることです。レイヤーに複数の異なるクエリがある場合がありますが、すべてコメント化されています。

私が理解しているように、定義クエリはSQLで記述されています。SQLでのコメントに私はあなたがどちらかと行を開始信じる:-または括弧内の文を包含する:{} 。私はこれらの両方を試しました:

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

最後の2つのステートメントはSQL式エラーを返し、ArcMapに描画されません。プログラミングソリューションを探しているのではありません。


2
このシステムにチェックアウトするArcGISがありませんが、「OR 1 = 1」のようなものや、ObjectID> -1でも機能しますか?
Devdatta Tengshe 2013年

機能する@DevdattaTengsheは、クエリをコメントアウトしすぎます。"OBJECTID" <> -1 OR "DATA_AQUISITION" LIKE 'MISSING XSECTION'これは素晴らしい解決策ですが、実際のコメントアウトのように見えるものを探しています。さまざまな行に複数のクエリオプションがあり、1つを除くすべてがコメント化されているコードのすべての言語で実行できる何か。それが不可能な場合はそうですが、私はそれが素晴らしいオプションになると思います。
コーディブラウン

回答:


6

推測ではありますが、コメント化しても機能しないのは、たとえば、レイヤーを描画するなど、基盤となるデータベースにクエリを実行する必要がある場合は常に、定義クエリがArcGISによって内部的に構築されたより大きなSQLステートメントのWHERE句の一部にすぎないためです。 。コメント文字を追加しても、ArcGISは有効なSQLではないため、WHERE句と基になるDBフリークを追加します。

[クエリビルダー]ダイアログには、ロードボタンと保存ボタンがあります。保存すると、.expファイルが作成されます。このファイルは、[読み込み]ボタンで読み込むことができます。それはあなたがおそらく探しているよりも数クリック多くですが、それは何かです。


それはより大きな声明の一部にすぎないというのは事実です。コメントを追加するときにDBがフリークする可能性は非常に高いですが、SQLを使用する他のプログラムでは、ステートメントの途中にコメントを追加できる可能性があります。.expの保存と読み込みは以前使用していたものですが、あなたが言ったように、私が探しているよりも数回クリックするだけです。私はまた、私が持っている各MXDに添付されているコードとファイルの量を減らすことを試みていますが、それは代わりにそれを増やします。
Cody Brown

2
SELECT * FROM table WHEREは有効なSQLではありません。WHEREキーワードの後に​​何かがあるか、またはWHEREキーワードがまったくない必要があります。定義クエリに何かがある場合、ArcGISはおそらくWHEREを追加します。
blah238 2013年

私が試したところSELECT * FROM table WHERE "OBJECTID" <> -1 --"DATA_AQUISITION" LIKE 'MISSING XSECTION'SELECT * FROM table WHERE "OBJECTID" <> -1 {"DATA_AQUISITION" LIKE 'MISSING XSECTION'}どちらも同じエラーになります。に続くものがありますがWHERE、それでもコメントを処理できません。
Cody Brown

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はお金がかかるのですか、それとも素敵な無料のアドオンですか?
Cody Brown
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.