Arcmap Pilih berdasarkan Atribut dengan Python

9

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.

Hasil

Pada dasarnya saya mencoba melakukan ini:

masukkan deskripsi gambar di sini

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

Tristan Maju
sumber
Apakah Anda menjalankan skrip ini dari dalam ArcMap (yaitu di konsol Python)? Atau dari luar ArcMap (yaitu di dalam IDLE atau editor Python lain)? Satu-satunya cara ArcMap akan "memilih (menyoroti) semua fitur" adalah dari dalam ArcMap. Saya curiga Anda menjalankan skrip dari luar ArcMap, karena import arcpyperintahnya perlu beberapa saat untuk dijalankan.
dmahr
Saya menjalankan skrip dari dalam ArcMap di jendela Python Console.
Penerusan Tristan
Jika Anda menjalankannya dari dalam ArcMap, Anda tidak perlu arcpy.MakeFeatureLayer()baris, karena projectsudah menjadi layer. Lakukan saja arcpy.SelectLayerByLocation_management("project","INTERSECT","Grid").
dmahr
format pertanyaan yang bagus!
Brad Nesom
Terima kasih @dmahr, masih berjalan lebih lambat daripada Select by Attribute bawaan tetapi berfungsi.
Penyerang Tristan

Jawaban:

2

Pertanyaan bagus!

Dmahr benar, lebih cepat hanya cukup memilih layer daripada membuat layer fitur. Saya juga akan menambahkan sisa variabel, meskipun mereka opsional.

arcpy.SelectLayerByLocation_management ("project_lyr", "INTERSECT", "Grid", "#", "NEW_SELECTION")

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.

Cody Brown
sumber