Di ArcGIS Desktop, ada alat yang disebut Buat Lapisan dari Fitur yang Dipilih . Dengan menggunakan alat ini, saya dapat mengubah pilihan ke layer di ArcMap.
Ini dugaan saya bahwa ada "daftar fitur" yang tertanam di lapisan di suatu tempat yang mengisolasi fitur yang ditampilkan di peta.
Saya akan berpikir bahwa "daftar fitur" akan disimpan dalam where
klausa dalam permintaan definisi sebagai daftar objectids
. Sebagai contoh: where objectid in(123,456,789,...)
. Namun, ini bukan masalahnya.
Jika layer tidak memiliki WHERE
klausa atau definisi permintaan, lalu bagaimana daftar fitur disimpan?
Jawaban:
Buat Lapisan Dari Fitur yang Dipilih TIDAK membuat lapisan DINAMIS . Lapisan yang dihasilkan sama sekali tidak dinamis. Ini didasarkan pada FIDset.
Jika Anda mengubah data sumber, FID akan berubah dan lapisan pilihan Anda akan pecah.
Tidak ada tempat klausa di lapisan pilihan. Ini didasarkan pada FIDset (FID yang dipilih ketika Anda menggunakan 'Buat layer dari fitur yang dipilih').
Harap dicatat bahwa jika Anda menambah atau menghapus catatan dari data sumber, FID akan berubah, dan lapisan pilihan Anda akan menampilkan catatan yang salah.
Anda mengacaukan lapisan pemilihan dengan lapisan permintaan, yang menyimpan klausa tempat dan dinamis.
EDIT: Daftar fitur untuk lapisan pilihan disimpan dalam memori. Ini adalah praktik yang buruk untuk menggunakan lapisan seleksi selain untuk pekerjaan sementara karena tidak ada cara untuk memulihkan seleksi asli setelah lapisan seleksi pecah.
Untuk menemukan daftar fitur dalam lapisan pilihan, Anda dapat menggunakan banyak metode berbeda termasuk SearchCursor untuk membuat daftar ID.
Sesuatu seperti ini:
Dari komentar oleh crmackey :
Ada juga cara built-in dengan menjelaskan untuk mendapatkan FIDSet. Ini adalah string, tetapi mudah dikonversi ke daftar:
sumber
FIDSet
. Ini adalah string, tetapi mudah dikonversi ke daftar:OIDlist = map(int, arcpy.Describe(layer).FIDSet.split(';'))
Cara terbaik yang saya mengerti bagaimana
Create Layer from Selected Features
referensi ini yang saya temui Buat lapisan sementara untuk memilih fiturMekanisme yang dapat membaca ruang disk tersebut adalah cara mengakses "set hasil"
Juga, seperti yang disebutkan sebelumnya dan Esri menutupinya Bekerja dengan fitur yang dipilih ,
Juga, berikut adalah diskusi lebih lanjut sebagai bacaan umum, Menggunakan ruang kerja di memori , terkait dengan
in_memory
ruang kerja. Ini hanya dimaksudkan untuk informasi tambahan jika Anda tertarik.sumber
Dugaan saya adalah, lapisan dari
Create Layer From Selected Features
tidak didasarkan padaWHERE
klausa atau kondisi logis, karena set pilihan dapat dibuat tanpa melibatkan logika.Misalnya, Anda dapat secara manual menambah / menghapus fitur apa pun dari set pilihan menggunakan menu utama dengan misalnya menyeret kotak, yang mungkin dari salah satu dari Pilih sebelumnya dengan Atribut / Lokasi.
Dugaan saya adalah bahwa set seleksi (
IFeatureSelection
) hanyalah serangkaian hasil yang luas (berisi salinan ID dari layer asli), daripada aturan yang mendefinisikan set hasil. Oleh karena itu peringatan dalam dokumentasi yang ditautkan bahwa ID dapat menjadi tidak valid jika ID dari lapisan asli berubah.sumber