Mengapa penting menggunakan lapisan fitur di ModelBuilder?

Jawaban:

4

Model mungkin memiliki banyak lapisan keluaran proses sub tergantung pada ukuran dan kompleksitasnya. Untuk menghilangkan file yang sedang ditulis ke hard disk Anda, beberapa alat membuat Anda menggunakan lapisan fitur (misalnya Iterate Feature Selection , atau Select by Attribute ). Lapisan fitur bersifat sementara dan tidak akan bertahan setelah model Anda berakhir.

Lihat Membuat Lapisan Fitur

artwork21
sumber
9

Ada beberapa alasan mengapa Anda ingin mereferensikan Layers Fitur di ModelBuilder, sebagai lawan dari Kelas Fitur. Pertama sangat membantu untuk memahami perbedaan.

  • "Kelas Fitur" hanya sebagai referensi ke data mentah, secara keseluruhan. Salah satu contoh sederhana ini di mana FC adalah shapefile pada disk.
  • "Fitur Layers" adalah referensi ke abstraksi data, di mana Anda dapat berinteraksi dengan satu atau lebih fitur dalam dataset mentah (sebagai lawan dari seluruh dataset). Lapisan adalah apa yang Anda berinteraksi secara efektif setelah Anda memuat data ke ArcMap.

Jadi mengingat latar belakang itu, berikut adalah beberapa alasan mengapa Anda ingin menggunakan alat "Jadikan Lapisan Fitur" sebagai perantara dari data mentah dan alat geoproses lainnya.

  1. Banyak alat GP di ModelBuilder membutuhkan penggunaan layer, dan tidak akan menerima FC sebagai input. Ini terutama benar jika alat GP Anda perlu memilih data. Dalam skenario ini, Anda perlu berinteraksi dengan LAPISAN, bukan data mentah. Contoh: Jika Anda tidak memiliki ArcMap (atau program GIS lainnya) terbuka, bagaimana Anda memilih fitur dari shapefile mentah ... Anda tidak bisa. Anda perlu berinteraksi dengan layer di ArcMap untuk membuat pilihan itu.
  2. Jika Anda ingin menjalankan Model dari ArcCatalog, atau mengekspor Model Anda ke skrip Python yang dapat dijalankan di luar ArcGIS, Anda perlu menggunakan "Feature Layers" agar data sumber mentah Anda dikonversi menjadi "Layers". Ini akan analog dengan "menambahkan data" ke sesi ArcMap Anda.

  3. Menggunakan lapisan memudahkan untuk mengelompokkan data Anda saat Anda mengikuti proses ModelBuilder. Katakanlah Anda ingin memproses semua data dengan atribut "A" dengan satu metode, tetapi semua data dengan atribut "B" dengan metode lain. Anda dapat mereferensikan data mentah Anda satu kali, lalu membagi data menjadi dua "cabang" menggunakan Layers Fitur dan memproses setiap set secara independen, tetapi memengaruhi / memperbarui dataset sumber tunggal.

  4. Anda dapat membuat "in_memory" fitur lapisan yang benar-benar sementara memproses "sampah", dan yang dapat memproses data lebih cepat daripada menulis ke disk setelah setiap operasi. Ini juga membatasi jumlah sampah yang harus Anda bersihkan setelah pemrosesan selesai.
RyanKDalton
sumber
Terima kasih banyak, Ryan. Jawaban Anda sangat lengkap dan jelas.
Diego Pardo
7

Memasukkan lapisan sementara ke dalam model Anda juga mengurangi waktu pemrosesan. Dari sudut pandang pemrosesan, jauh lebih efisien menulis ke memori dibandingkan menulis ke disk. Demikian pula, Anda dapat menulis data sementara ke ruang kerja in_memory , yang juga lebih efisien secara komputasi.

Banyak operasi di ArcGIS membutuhkan lapisan sementara sebagai input. Misalnya, Pilih Lapisan Menurut Lokasi (Manajemen Data) adalah alat yang sangat kuat dan praktis yang memungkinkan Anda memilih fitur lapisan yang berbagi hubungan spasial dengan fitur pemilihan lainnya. Anda dapat menentukan hubungan kompleks seperti "HAVE_THEIR_CENTER_IN" atau "BOUNDARY_TOUCHES", dll.

Edit:

Karena penasaran, dan untuk menguraikan perbedaan pemrosesan menggunakan lapisan fitur dan ruang kerja in_memory, pertimbangkan tes kecepatan berikut di mana 39.000 titik disangga 100 m:

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)

masukkan deskripsi gambar di sini


Kita dapat melihat bahwa metode 2 & 3 setara dan kira-kira 3x lebih cepat dari metode 1. Ini menunjukkan kekuatan menggunakan lapisan fitur sebagai langkah perantara dalam alur kerja yang lebih besar.

Harun
sumber
Ini sepertinya menggabungkan dua hal (data dalam memori dan lapisan fitur). Mereka tidak sama. Data yang ditulis ke in_memoryruang kerja masih berupa data (mis. Kelas fitur dan tabel) masih membutuhkan ruang (berpotensi banyak). Lapisan Fitur, di sisi lain, adalah pandangan atas data, memungkinkan Anda untuk memilih subset data dan menggunakannya dalam proses selanjutnya, daripada duplikat data hanya untuk mendapatkan subset dari itu. Lapisan Fitur hampir tidak membutuhkan ruang sama sekali. Saya suka menganggap mereka sebagai "pointer dengan metadata", misalnya mereka menunjuk ke beberapa data dan menjelaskan cara meng-query / me-rendernya.
blah238
Hanya untuk menambah komentar saya sebelumnya, saya telah membaca di suatu tempat di situs ini bahwa in-memoryruang kerja pada dasarnya adalah file geodatabase yang berada di memori, jika Anda suka berpikir seperti itu.
blah238
Seperti file geodatabase tetapi area bentuk tidak dihitung saat in_memory - akan memberikan tautan ke ini nanti.
PolyGeo
Dalam contoh kedua Anda yang diperbarui, Anda membuat kelas fitur dalam memori, bukan lapisan fitur.
blah238
2
Sudah lama datang tapi ini adalah tautan yang saya janjikan 6+ bulan yang lalu.
PolyGeo