ModelBuilder'da özellik katmanlarını kullanmak neden önemlidir?


9

ModelBuilder ile bir coğrafi işlem oluşturma anlamaya çalışıyorum, ama neden ModelBuilder ile bir coğrafi işlem oluştururken özellik sınıfları yerine özellik katmanları kullanmanın önemli olduğunu bilmiyorum. Birisi nedenini açıklayabilir mi?


Yanıtlar:


4

Modeller, boyutlarına ve karmaşıklıklarına bağlı olarak birçok alt işlem çıktı katmanına sahip olabilir. Sabit diskinize yazılan dosyaları ortadan kaldırmak için bazı araçlar özellik katmanlarını kullanmanızı sağlar (örneğin Özellik Seçimini Yinele veya Özniteliğe Göre Seç ). Özellik katmanları geçicidir ve modeliniz bittikten sonra da devam etmez.

Bkz. Özellik Katmanı Yap


9

Özellik Sınıflarının aksine ModelBuilder'daki Özellik Katmanlarına başvurmak istemenizin birkaç nedeni vardır. İlk olarak farklılıkları anlamak faydalı olacaktır.

  • "Özellik Sınıfları" tümüyle ham verilere referans olarak verilmiştir. FC'nin diskteki bir şekil dosyası olduğu buna basit bir örnek.
  • "Özellik Katmanları", ham veri kümesindeki bir veya daha fazla özellikle (tüm veri kümesinin aksine) etkileşimde bulunabileceğiniz verilerin soyutlamasına referanstır. Katmanlar, verileri ArcMap'e yükledikten sonra etkili bir şekilde etkileşime girdiğiniz unsurlardır.

Bu arka plan göz önüne alındığında, "Özellik Katmanı Yap" aracını ham verilerden ve diğer coğrafi işleme araçlarından bir geçiş aracı olarak kullanmak istemenizin bazı nedenleri aşağıda verilmiştir.

  1. ModelBuilder'daki birçok GP aracı katman kullanılmasını gerektirir ve FC'yi giriş olarak kabul etmez. Bu, GP araçlarınızın veri seçmesi gerektiğinde özellikle doğrudur. Bu senaryoda, ham verilerle değil, LAYER ile etkileşime girmeniz gerekir. Örnek: ArcMap (veya başka bir CBS programı) açık değilse, ham şekil dosyasından özellikleri nasıl seçersiniz ... yapamazsınız. Bu seçimi yapmak için ArcMap'teki katmanla etkileşim kurmanız gerekir.
  2. ArcCatalog'dan bir Model çalıştırmak veya Modelinizi ArcGIS dışında çalıştırılabilecek bir Python betiğine aktarmak istiyorsanız, ham kaynak verilerinizin "Katmanlar" a dönüştürülmesi için "Özellik Katmanları" kullanmanız gerekir. Bu, ArcMap oturumunuza "veri ekleme" ile benzerdir.

  3. Katmanları kullanmak, ModelBuilder işleminde ilerlerken verilerinizin alt kümelenmesini kolaylaştırır. "A" özelliğine sahip tüm verileri bir yöntemle, "B" özelliğine sahip tüm verileri başka bir yöntemle işlemek istediğinizi varsayalım. Ham verilerinize bir kez referans verebilir, ardından Özellik Katmanlarını kullanarak verileri iki "şubeye" bölebilir ve her kümesi bağımsız olarak işleyebilir, ancak tek kaynak veri kümesini etkileyebilir / güncelleyebilirsiniz.

  4. Gerçekten geçici veri işleme "bölmeleri" olan ve her işlemden sonra verileri diske yazmaktan çok daha hızlı işleyebilen "in_memory" özellik katmanları oluşturabilirsiniz. Ayrıca, işleminiz tamamlandıktan sonra temizlemeniz gereken önemsiz miktarı da sınırlar.

Çok teşekkür ederim Ryan. Cevabınız çok eksiksiz ve açık.
Diego Pardo

7

Geçici katmanları modellerinize dahil etmek de işlem süresini azaltır. İşleme açısından, diske yazmakla karşılaştırıldığında belleğe yazmak çok daha verimlidir. Benzer şekilde, in_memory çalışma alanına geçici veriler yazabilirsiniz , bu da daha hesaplama açısından etkilidir.

ArcGIS'teki birçok işlem girdi olarak geçici katmanlar gerektirir . Örneğin, Yere Göre Katman Seç (Veri Yönetimi) , uzamsal ilişkileri başka bir seçim özelliğiyle paylaşan bir katmanın özelliklerini seçmenizi sağlayan çok güçlü ve kullanışlı bir araçtır. "HAVE_THEIR_CENTER_IN" veya "BOUNDARY_TOUCHES" vb. Gibi karmaşık ilişkiler belirleyebilirsiniz.

Düzenle:

Meraktan ve özellik katmanlarını ve bellek içi çalışma alanını kullanarak farklılıkları işlemek için, 39.000 noktanın 100 metrelik tamponlanmış olduğu aşağıdaki hız testini göz önünde bulundurun:

import arcpy, time
from arcpy import env

# Set overwrite
arcpy.env.overwriteOutput = 1

# Parameters
input_features = r'C:\temp\39000points.shp'
output_features = r'C:\temp\temp.shp'

###########################
# Method 1 Buffer a feature class and write to disk
StartTime = time.clock()
arcpy.Buffer_analysis(input_features,output_features, "100 Feet")
EndTime = time.clock()
print "Method 1 finished in %s seconds" % (EndTime - StartTime)
time.sleep(5)

############################
# Method 2 Buffer a feature class and write in_memory
StartTime = time.clock()
arcpy.Buffer_analysis(input_features, "in_memory/temp", "100 Feet")
EndTime = time.clock()
print "Method 2 finished in %s seconds" % (EndTime - StartTime)
time.sleep(5)

############################
# Method 3 Make a feature layer, buffer then write to in_memory
StartTime = time.clock()
arcpy.MakeFeatureLayer_management(input_features, "out_layer")
arcpy.Buffer_analysis("out_layer", "in_memory/temp", "100 Feet")
EndTime = time.clock()
print "Method 3 finished in %s seconds" % (EndTime - StartTime)
time.sleep(5)

resim açıklamasını buraya girin


Yöntem 2 ve 3'ün yöntem 1'den eşdeğer ve kabaca 3 kat daha hızlı olduğunu görebiliriz. Bu, özellik katmanlarını daha büyük iş akışlarında ara adımlar olarak kullanma gücünü gösterir.


Bu iki şeyi karıştırıyor gibi görünüyor (bellek içi veriler ve özellik katmanları). Aynı değiller. Çalışma in_memoryalanına yazılan veriler, yine de verilerdir (örneğin özellik sınıfları ve tabloları) hala (potansiyel olarak çok) yer kaplar. Öte yandan Özellik Katmanları, verilerin bir alt görünümüdür ve verilerin bir alt kümesini seçmenize ve verileri yalnızca bir alt kümesini almak için çoğaltmak yerine sonraki işlemlerde kullanmanıza olanak tanır. Özellik Katmanları neredeyse hiç yer kaplamaz. Bunları "meta veri içeren işaretçiler" olarak düşünmeyi seviyorum, örneğin bazı verilere işaret ediyor ve nasıl sorgulanacağını / nasıl oluşturulacağını açıklıyorlar.
blah238

Sadece benim önceki yorum eklemek için, bu sitede bir yerde in-memoryçalışma alanı temelde bu şekilde düşünmek isterseniz, bellekte oturan bir dosya coğrafi veritabanı olduğunu okudum .
blah238

Bir dosya coğrafi veritabanı gibi, ancak in_memory olduğunda şekil alanları hesaplanmaz - buna daha sonra bağlantı sağlar.
PolyGeo

Güncellenmiş ikinci örneğinizde, bir özellik katmanı değil bellekte bir özellik sınıfı oluşturuyorsunuz.
blah238

2
Bir süredir geldi ama işte 6 aydan önce vaat ettiğim bağlantı .
PolyGeo
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.