ArcGIS Desktop'ta Tanım Sorgularını Yorumlamak mı?


10

Tanımlama Sorgularını günlük CBS hayatımda çok kullanıyorum, ancak ArcMap hakkında can sıkıcı bulduğum birçok şeyden biri Tanımlama Sorgularını yorumlayamama. Bu seçeneği tanımlamak istiyorum, bazen Tanım Sorgusu'nu açmak / kapatmak veya tek bir Shapefile üzerinde birden fazla Sorgu yapmak istiyorum, ancak her seferinde sadece bir tane aktif olmak istiyorum.

Şimdiye kadar bunun üstesinden gelmek için, genellikle arka planda bir not defteri dokümanım var ve gerekirse kopyalayıp yapıştırıyorum. Ancak ideal çözüm, bu belgeyi değiştirmek için katman özelliklerindeki tanım sorgusu sekmesini kullanmak olacaktır. Bir katmanda birden fazla farklı sorgum olabilir, ancak hepsi yorum yaptı.

Anladığım kadarıyla, Tanımlama Sorguları SQL'de yazılmıştır. SQL'de yorum yapmak için ya: - ile bir satır başlattığınıza ya da parantez içinde bir ifadeyi kapsadığınıza inanıyorum : {} . Bunların her ikisini de denedim:

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

Son iki ifade bir SQL ifade hatası döndürür ve ArcMap içinde çizilmez. Çok fazla iş olacağı için bir programlama çözümü aramıyorum.


2
Bu sistemde kontrol etmek için ArcGIS yok, ama 'OR 1 = 1' veya hatta ObjectID> -1 gibi bir şey çalışıyor mu?
Devdatta Tengshe

@DevdattaTengshe çok fazla çalışır bir sorguya yorum: "OBJECTID" <> -1 OR "DATA_AQUISITION" LIKE 'MISSING XSECTION'Bu harika bir çözüm, ama ben daha gerçek bir yorum gibi görünüyor bir şey arıyorum. Farklı satırlarda birden fazla sorgu seçeneğiniz olan ve biri hariç tümü yorumlanan her kod dilinde yapılabilecek bir şey. Eğer bu mümkün değilse, öyle olsun, ama bunun harika bir seçenek olacağını düşünüyorum.
Cody Brown

Yanıtlar:


6

Sadece bir tahmin, ancak yorum yapmanın nedeni işe yaramıyor olabilir, çünkü bir tanım sorgusu, örneğin katmanı çizmek için temel veritabanını sorgulaması gerektiğinde dahili olarak ArcGIS tarafından oluşturulan daha büyük bir SQL ifadesinin WHERE yan tümcesi parçası olmasıdır. . Yorum karakterlerini eklediğinizde ArcGIS, geçerli SQL olmadığı için hala WHERE yan tümcesini ve temel DB uçlarını ekler.

Sorgu Oluşturucu iletişim kutusunda yükleme ve kaydetme düğmeleri bulunur. Kaydet, Yükle düğmesiyle geri yükleyebileceğiniz bir .exp dosyası oluşturur. Muhtemelen aradığınızdan birkaç tıklama daha ama bir şey.


Bu sadece daha büyük bir ifadenin parçası olduğu doğrudur. Bir yorum eklediğimizde DB düşüyor çok olası, ancak bir deyimin ortasına yorum eklemek için SQL kullanan diğer programlarda mümkün olduğunu biliyorum. Bir .exp'nin kaydedilmesi ve yüklenmesi daha önce kullandığım bir şeydir, ancak dediğin gibi aradığımdan birkaç tıklama daha fazla. Ayrıca sahip olduğum her MXD bağlı kod ve dosya miktarını azaltmaya çalışıyorum ve bunun yerine artıracaktır.
Cody Brown

2
SELECT * FROM table WHEREgeçerli değil SQL ben de alıyordum budur. WHERE anahtar sözcüğünü izleyen bir şey olmalı veya WHERE anahtar sözcüğünün hiç orada olmaması gerekir. Tanım Sorgusunda bir şey varsa ArcGIS muhtemelen NEREDE ekler.
blah238

Denedim SELECT * FROM table WHERE "OBJECTID" <> -1 --"DATA_AQUISITION" LIKE 'MISSING XSECTION've SELECT * FROM table WHERE "OBJECTID" <> -1 {"DATA_AQUISITION" LIKE 'MISSING XSECTION'}her ikisi de aynı hatalara neden oluyor. Aşağıdaki bir şey var WHERE, ama yine de yorum işleyemez.
Cody Brown

1
Huh. Nedeni ne olursa olsun, açıkça yorumlama yaklaşımı işe yaramaz.
blah238

4
Aslında, C tarzı yorumlama sözdizimi işe yaramış gibi görünüyor. Örneğin bu deneyin: 1 = 1 /*"DATA_AQUISITION" LIKE 'MISSING XSECTION'*/. Benim için Oracle üzerinde çalıştı. 1 = 1Bölüm (Expression hatası Eksik) çalışmıyor sadece yorumunu kullanırken, gereklidir.
blah238

4

Yorum / .. / bloğu , tanım sorgunuzda bir şeye sahip olduğunuz sürece çalışıyor gibi görünüyor. Her şeyi yorumlarsanız, yorum satırlarınızdan önce 1 = 1 eklemeniz gerekir

Örnekler:

Tüm yorumlar:

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

1 yorum yapılmamış, 2 yorum yaptı:

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

2 yorum yapılmamış, 1 yorum yaptı:

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

Sadece "/ " ve " /" yi hareket ettirin .


1

ESRI olmayan bir eklenti olan XTools pro, bir katmanda tanım querry'sini açıp kapatmayı sağlayan bir özelliğe sahiptir. Çok kullanışlı.

Tanım sorgunuzu Katman özellikleri "Genel" sekmesine de kopyalayabilir / yapıştırabilirsiniz. Orada "Açıklama" için genellikle kullanılmayan bir pencere vardır. Tanım sorgularımı kapatmam gerektiğinde sık sık kopyalayıp yapıştırıyorum. Belgeye kaydedildi


Hmm kulağa hoş geliyor, ancak XTools'un maliyeti var mı yoksa güzel bir ücretsiz eklenti mi?
Cody Brown
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.