Saya mencoba memahami pembuatan geoproses dengan ModelBuilder, tapi saya tidak tahu mengapa penting untuk menggunakan lapisan fitur daripada kelas fitur ketika membuat geoproses dengan ModelBuilder. Bisakah seseorang tolong jelaskan mengapa?
Saya mencoba memahami pembuatan geoproses dengan ModelBuilder, tapi saya tidak tahu mengapa penting untuk menggunakan lapisan fitur daripada kelas fitur ketika membuat geoproses dengan ModelBuilder. Bisakah seseorang tolong jelaskan mengapa?
Jawaban:
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
Ada beberapa alasan mengapa Anda ingin mereferensikan Layers Fitur di ModelBuilder, sebagai lawan dari Kelas Fitur. Pertama sangat membantu untuk memahami perbedaan.
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.
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.
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.
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)
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.
in_memory
ruang 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.
in-memory
ruang kerja pada dasarnya adalah file geodatabase yang berada di memori, jika Anda suka berpikir seperti itu.