Saya terus berpikir bahwa saya harus kehilangan sesuatu, tetapi sepertinya tidak ada alat di ArcGIS 10 untuk memilih fitur (khususnya poligon) dari layer pada titik (X, Y) lokasi melalui ArcPy. Parameter untuk alat seperti itu hanya akan menjadi nama layer dan lokasi XY.
Saat ini saya mengatasinya dengan membuat sebuah titik fitur yang berisi titik dan melakukan SelectLayerByLocation di atasnya. Namun, ketika kelas fitur poligon ada di Oracle (diakses melalui ArcSDE 9.x) dan berisi 3,5 juta poligon, waktu yang dibutuhkan untuk melakukan pemilihan bisa lebih dari 5 menit ketika saya pikir satu atau dua detik (dengan kode lebih sedikit) akan menjadi lebih tepat. Kelas fitur memiliki indeks spasial dan saya sudah mencoba menggunakan arcpy.env.extent (yang SelectLayerByLocation tampaknya diabaikan) untuk membatasi area geografis yang diakses tetapi kinerjanya tetap sangat buruk.
Apakah ada cara yang lebih cepat untuk melakukan ini menggunakan ArcGIS Desktop 10 dan ArcPy?
Jawaban:
Pendekatan lain untuk ini adalah dengan menggunakan alat Spatial Join. Gunakan titik sebagai lapisan fitur input Anda seperti di atas dan lapisan poligon sebagai fitur identitas Anda.
Tidak seperti SelectLayerByLocation, SpatialJoin tidak menghormati lingkungan sejauh.
JOIN_ONE_TO_MANY mungkin tampak kontra-intuitif, tetapi karena Anda hanya memiliki satu fitur bergabung, fungsi utama opsi ini adalah untuk menonaktifkan agregasi dan menggabungkan aturan. KEEP_COMMON akan memastikan bahwa output Anda hanya terbatas pada poligon yang memotong titik Anda. Pemetaan Field akan membatasi atribut output hanya pada bentuk dan atribut dari layer poligon; default akan menyertakan atribut layer point juga.
Sisa dari default akan bekerja dengan baik, sehingga Anda dapat mengabaikan argumen yang tersisa.
sumber
Saya baru menyadari sesuatu ...
Jika Anda menggunakan ini untuk mengimplementasikan Layanan Geoprocessing, Anda juga bisa menerapkan Layanan Fitur dengan lapisan poligon Anda dan menggunakan operasi Permintaan pada layanan fitur.
Anda dapat menggunakan lokasi XY sederhana dengan operasi Permintaan Layanan Fitur, serta mengontrol atribut output termasuk bentuk.
Anda mungkin memiliki batasan pada seberapa banyak Anda dapat mengekspos kelas fitur poligon, tetapi jika Anda sudah membuatnya dapat diakses oleh layanan geoprocessing, maka Anda harus dapat membangun Layanan Fitur juga.
sumber
Jawaban ini datang dari Forum Diskusi ArcGIS yang lama .
Terima kasih Jason Scheirer untuk beberapa kode yang lebih ringkas:
Dan terutama kepada Chris Snyder untuk kiat kinerja:
sumber