Kliping Batch di ArcGIS Desktop menggunakan ArcPy?

12

Saya telah menemukan beberapa pertanyaan serupa untuk versi ArcGIS yang lebih lama, tetapi belum menemukan jawaban yang cocok untuk ArcGIS 10.

Saya memiliki dua bentuk poligon yang menutupi area yang luas (mis. Seluruh Negara Bagian / Provinsi). Shapefile pertama mewakili tutupan lahan untuk seluruh Negara dan yang kedua mewakili 50 DAS individu. Saya ingin memotong bentuk tutupan lahan berdasarkan pada masing-masing daerah aliran sungai (masing-masing memiliki nama unik yang disimpan di suatu bidang). Saya kemudian ingin menyimpan file kliping keluaran (satu untuk masing-masing dari 50 daerah aliran sungai) menggunakan nama daerah aliran sungai.

Mengingat bahwa ada 50 klip yang harus dilakukan proses ini adalah kandidat yang bagus untuk pemrosesan batch.

Radar
sumber
1
Apa yang Anda temukan untuk versi ArcGIS yang lebih lama, dan apa yang membuatnya tidak cocok untuk digunakan dengan ArcGIS 10?
nmpeterson
2
@ Radar Lihatlah pertanyaan ini: gis.stackexchange.com/q/8104/1297 Ini mencakup apa yang Anda cari. Jika Anda membutuhkan bantuan untuk memodifikasi kebutuhan Anda, beri tahu saya. Saya telah menandai ini sebagai duplikat yang mungkin.
SaultDon
@AultDon: Apakah Anda mengatakan bahwa solusi di gis.stackexchange.com/q/8104/1297 pasti juga akan bekerja di ArcGIS 10?
whuber
@SaultDon - Beberapa perubahan telah dibuat untuk kursor di ArcGIS 10 yang menyebabkan jawaban tertentu menjadi usang. Saya berharap menemukan solusi terbaik untuk Arc10 dan bukan hanya versi skrip 9.3 yang diretas.
Radar
@whuber Tidak seperti itu, membutuhkan perubahan yang mungkin tidak jelas. Radar - Anda benar, mereka lebih sederhana =)
SaultDon

Jawaban:

17

Script berikut klip DAS poligon ke batas county poligon, penamaan masing-masing output menampilkan sesuatu seperti HspWBD_HU12_county name. Diuji dan berhasil. Pastikan nilai Anda di bidang NAME tidak memiliki karakter atau spasi khusus (metode string Python sederhana dapat membersihkannya untuk Anda).

import arcpy

arcpy.env.workspace = r'D:\Projects\GDBs\slowbutter.gdb\IPAS'
rows = arcpy.SearchCursor('HspAOI')
for row in rows:
    feat = row.Shape
    arcpy.Clip_analysis('HspWBD_HU12', feat, 'HspWBD_HU12_' + str(row.getValue('NAME')), '')
Chad Cooper
sumber
Benar-benar sempurna meskipun kursor tipe klasik !!
SIslam
8

Saat Anda menggunakan ArcGIS 10, saya akan menggunakan modelbuilder dengan alat builtin: Iteration Feature Selection untuk melakukan tugas ini. Lihat pseudo-model dalam gambar. tidak perlu tahu python scritping sama sekali. model semu

VietThanh Le
sumber
Untuk penjelasan lebih lanjut tentang pendekatan ini, lihat dengan mudah klip seluruh ruang kerja untuk area studi tertentu , dan paket alat geoprosesing Clip Workspace terkait . Juga dieksplorasi di sini di stack: gis.stackexchange.com/questions/84989/...
matt wilkie
2

Ini terdengar persis seperti apa yang dilakukan alat Split dari kotak alat Analisis .

Namun, itu memerlukan lisensi ArcInfo untuk dijalankan sehingga tidak tersedia untuk sebagian besar pengguna ArcGIS Desktop jadi saya suka jawaban Chad yang akan bekerja untuk pengguna ArcGIS 10 Desktop dengan lisensi tingkat ArcView dan ArcEditor juga.

PolyGeo
sumber
-1

Anda dapat melakukan ini seperti yang Anda inginkan jika Anda menjalankan alat lain dalam mode batch terlebih dahulu: Alat Konversi> Ke Geodatabase> Kelas Fitur ke Kelas Fitur. Itu akan memungkinkan Anda menggunakan ekspresi untuk mengambil layer DAS Anda dan menarik setiap DAS secara individual dan menyimpannya sebagai kelas fitur sendiri, maka Anda akan memiliki 50 lapisan individual yang dapat Anda gunakan dengan alat Klip dalam mode batch.

Dan C
sumber
2
Saya menghargai jawabannya, tetapi ini sepertinya bukan solusi yang sangat efisien. Saya lebih suka tidak membuat 50 file DAS terpisah dan kemudian 50 file terpotong.
Radar
-1

Alat Split di ArcGIS melakukan hal ini.

Mariana Oliveira
sumber