Buat Layer dari alat Fitur yang Dipilih: Bagaimana daftar fitur disimpan?

12

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 whereklausa dalam permintaan definisi sebagai daftar objectids. Sebagai contoh: where objectid in(123,456,789,...). Namun, ini bukan masalahnya.

Jika layer tidak memiliki WHEREklausa atau definisi permintaan, lalu bagaimana daftar fitur disimpan?

Wilson
sumber
2
Ada perbedaan besar antara item menu dan alat geoprocessing. Yang Anda bicarakan adalah mantan. Anda dapat menggunakan data yang disimpan dalam fidset untuk membuat layer Anda.
FelixIP
2
Saya cukup yakin bahwa tidak ada klausa WHERE yang disimpan ketika Anda membuat Layer Seleksi dan setelah itu dibuat, Anda TIDAK bisa menemukan seleksi asli yang digunakan untuk membuatnya. Saya harap saya terbukti salah dalam bentuk jawaban karena saya berurusan dengan lapisan seleksi yang sangat lama baru-baru ini dan mencari tahu pilihan fitur asli yang digunakan untuk membuatnya akan berguna.
Dan C
1
Fidset adalah properti dari layer. Ini ; string yang dipisahkan untuk menyimpan FID pilihan.
FelixIP
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. Ini tidak seperti layer Query, yang menyimpan klausa where
jbalk

Jawaban:

14

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:

OIDlist = []
with arcpy.da.SearchCursor(layer, 'OBJECTID') as scur:
    for row in scur:
        OIDlist.append(row[0])

Dari komentar oleh crmackey :

Ada juga cara built-in dengan menjelaskan untuk mendapatkan FIDSet. Ini adalah string, tetapi mudah dikonversi ke daftar:

OIDlist = map(int, arcpy.Describe(layer).FIDSet.split(';'))
jbalk
sumber
1
Ada juga cara built-in dengan menjelaskan untuk mendapatkan FIDSet. Ini adalah string, tetapi mudah dikonversi ke daftar: OIDlist = map(int, arcpy.Describe(layer).FIDSet.split(';'))
crmackey
Informasi terkait di sini: Hasilkan klausa sql WHERE dari fitur yang dipilih
Wilson
11

Cara terbaik yang saya mengerti bagaimana Create Layer from Selected Featuresreferensi ini yang saya temui Buat lapisan sementara untuk memilih fitur

Membuat layer sementara memungkinkan Anda untuk melakukan hal-hal, seperti membuat pilihan, tanpa mempengaruhi sumber data asli. Lapisan ini tidak akan muncul di konten ArcCatalog, karena itu dibuat dalam memori dan hanya referensi data yang disimpan pada disk. Lapisan ini dapat digunakan sebagai input ke alat geoproses lainnya dalam sesi kerja Anda. Setelah Anda keluar dari aplikasi lapisan dalam memori akan dihapus.

Alat Make Feature Layer ada di dalam toolset Layers and Table Views, di dalam toolbox Tools Manajemen Data. Klik kanan alat Make Feature Layer dan klik Open, atau klik dua kali untuk membuka alat.

Mekanisme yang dapat membaca ruang disk tersebut adalah cara mengakses "set hasil"

Juga, seperti yang disebutkan sebelumnya dan Esri menutupinya Bekerja dengan fitur yang dipilih ,

Dalam contoh ini, lapisan yang dibuat dari fitur yang dipilih hanya berguna sebagai dataset kerja sementara (misalnya, untuk digunakan sebagai input ke dalam model geoprocessing). Lapisan baru membuat daftar FeatureIDs (FIDs) atau ObjectIDs (OIDs) dari fitur yang dipilih dan akan menjadi tidak valid ketika sumber data asli diperbarui atau diubah .

Juga, berikut adalah diskusi lebih lanjut sebagai bacaan umum, Menggunakan ruang kerja di memori , terkait dengan in_memoryruang kerja. Ini hanya dimaksudkan untuk informasi tambahan jika Anda tertarik.

Whyzar
sumber
2

Dugaan saya adalah, lapisan dari Create Layer From Selected Featurestidak didasarkan pada WHEREklausa 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.

tinlyx
sumber