Saya ingin yang berikut ini untuk memilih (menyorot) lapisan "proyek" yang memotong kotak, dan kemudian menarik catatan dari "Kotak" yang dipilih. Saya tidak perlu menyimpan layer.
Catatan: Menjalankan skrip dari dalam ArcMap di jendela Python Console.
import arcpy
# Make a layer from the feature class
arcpy.MakeFeatureLayer_management("project","project_lyr")
# Then add a selection to the layer based on location to features in another feature class
arcpy.SelectLayerByLocation_management("project_lyr","INTERSECT","Grid")
Kode ini berjalan dan tidak ada kesalahan yang diberikan, namun tidak memilih (menyorot) fitur apa pun. Ada Ide mengapa? Juga berjalan sangat lambat.
Pada dasarnya saya mencoba melakukan ini:
Ini berjalan sangat cepat hampir instan, tetapi saya ingin melakukan hal yang sama menggunakan python. Saya hanya perlu nilai dari tabel fitur yang dipilih, saya tidak perlu salinan layer.
Bagian dari solusi mungkin menggunakan ruang kerja di memori yang
Menulis data ke ruang kerja di-memori seringkali jauh lebih cepat daripada menulis ke format lain ...
Hanya tidak yakin bagaimana menerapkan ruang kerja di memori
sumber
import arcpy
perintahnya perlu beberapa saat untuk dijalankan.arcpy.MakeFeatureLayer()
baris, karenaproject
sudah menjadi layer. Lakukan sajaarcpy.SelectLayerByLocation_management("project","INTERSECT","Grid")
.Jawaban:
Pertanyaan bagus!
Dmahr benar, lebih cepat hanya cukup memilih layer daripada membuat layer fitur. Saya juga akan menambahkan sisa variabel, meskipun mereka opsional.
Hal lain yang saya temukan, adalah menjalankan hal-hal di jendela python ArcMap selalu lebih lambat. Saya menemukan bahwa jika Anda menulis kode ke file .py, tambahkan sebagai skrip ke kotak alat dan kemudian jalankan, pemrosesan akan lebih cepat.
sumber