Mendapatkan daftar fitur yang dipilih di ArcGIS untuk Desktop menggunakan kode Python?

20

Saya punya pertanyaan tentang pilihan di ArcGIS untuk Desktop. Diasumsikan saya memiliki satu layer di ArcMap dan saya telah memilih dua dari lima fitur.

Apakah mungkin untuk mendapatkan daftar semua fitur yang dipilih dengan menggunakan Python?

Akan baik-baik saja jika ada cara untuk mendapatkan satu atribut khusus (atau semua) dari fitur yang dipilih yang disimpan dalam daftar yang dapat ditulis ke dalam file txt.

Apakah mungkin untuk melakukan ini di ArcGIS untuk Desktop?

Sven
sumber

Jawaban:

33

Setiap kali Anda memiliki pilihan pada layer, objek kursor hanya akan mengembalikan baris yang dipilih.

for row in arcpy.SearchCursor("name_of_layer_with_selection"):
    print row.field1, row.field2
Jason Scheirer
sumber
6
Tetapi masalahnya adalah bahwa jika Anda mendapatkan semua fitur kembali, Anda tidak tahu apakah ALL atau NONE dipilih.
Matej
2
Apakah ini juga berlaku untuk fitur yang dipilih di kelas fitur?
Jio
13

fungsi Jelaskan juga akan mengembalikan daftar. Saya tidak yakin apakah ini lebih cepat daripada metode kursor tapi saya suka ini menjadi alat yang berguna. Daftar yang dihasilkan adalah id objek untuk set pilihan.

import arcpy

aa = arcpy.Describe("someFC")
ss = aa.FIDset
tt = ss.split("; ")
Print tt

[u'1363', u'1364', u'1365', u'1367', u'1369', u'1370']
Sam Flarity
sumber
Solusi bagus juga! Sayangnya saya tidak dapat mengatur dua kali tumit hijau. Solusi ini membuat skrip juga independen dari Versi ArcGIS yang berbeda, karena dalam ArcGIS 10.1 kursor dipanggil dengan cara yang berbeda daripada di ArcGIs 10.0 (ArcGIS 10.1 arcpy.da.SearchCursor, ArcGIS 10.0 arcpy.SearchCursor ...).
Sven
4
Kedua jenis kursor tersedia di 10.1. Anda tidak harus menggunakan kursor arcpy.da baru.
blah238
1
Jawaban ini memberikan cara untuk memeriksa pilihan kosong, yang akan mencegah secara tidak sengaja memanggil alat pada seluruh kelas fitur padahal sebenarnya nol fitur yang terjadi untuk memenuhi kriteria seleksi Anda.
nickbrick
Tip hebat @Sam Flarity, ini adalah alternatif (lebih cepat?) Yang bagus untuk menggunakan arcpy.SearchCursor atau arcpy.da.SearchCursor
grego