ArcPy kullanarak ArcGIS Desktop'ta Toplu Kırpma?


12

ArcGIS'in eski sürümleri için birkaç benzer soruya rastladım, ancak ArcGIS 10 için uygun bir cevap bulamadım.

Geniş bir alanı kapsayan iki poligon şekil dosyası var (örneğin tüm Eyalet / İl). İlk şekil dosyası tüm Devletin arazi örtüsünü, ikincisi 50 bireysel havzayı temsil etmektedir. Arazi örtüsü şekil dosyasını her havzaya göre kırpmak istiyorum (her birinin bir alanda saklanan benzersiz bir adı vardır). Daha sonra havza adını kullanarak çıktı kırpılmış dosyaları (50 havza her biri için bir) kaydetmek istiyorum.

Gerçekleştirilecek 50 klip olduğu göz önüne alındığında, bu işlem toplu işleme için mükemmel bir adaydır.


1
ArcGIS'in eski sürümleri için ne buldunuz ve onları ArcGIS 10 ile kullanım için uygun olmayan nedir?
nmpeterson

2
@Radar Şu soruya bir göz atın: gis.stackexchange.com/q/8104/1297 Aradığınızı kapsar. İhtiyaçlarınızı değiştirmek için yardıma ihtiyacınız olursa bize bildirin. Bunu olası bir kopya olarak işaretledim.
SaultDon

@SaultDon: Söylediğin şey Şuna çözüm (ler) gis.stackexchange.com/q/8104/1297 olacak kesinlikle ayrıca ArcGIS 10'da çalışacak mı?
whuber

@SaultDon - ArcGIS 10'daki imleçlerde bu belirli cevabın eski olmasına neden olan bazı değişiklikler yapıldı. Sadece 9.3 komut dosyasının saldırıya uğramış bir sürümünü değil, Arc10 için en iyi çözümü bulmayı umuyorum.
Radar

@whuber Olduğu gibi değil, belli olmayacak değişikliklere ihtiyacı var. Radar - Haklısın, daha
basitler

Yanıtlar:


17

Aşağıdaki komut dosyası, çokgen havzalarını çokgen ilçe sınırlarına bağlar ve her çıktı özellik sınıfına HspWBD_HU12_county adı gibi bir ad verir. Test edildi ve çalışıyor. NAME alanındaki değerlerin özel karakter veya boşluk içermediğinden emin olun (basit Python dizesi yöntemleri bunu sizin için temizleyebilir).

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')), '')

Klasik tip imleç olsa kesinlikle mükemmel !!
SIslam

8

ArcGIS 10'u kullandığınızda, bu görevi gerçekleştirmek için yerleşik araçla model oluşturma aracını kullanırım: Yineleme Özellik Seçimi. Resimdeki sahte modele bakın. hiç python scritping bilmek gerekmez. sözde model


Bu yaklaşımın daha ayrıntılı bir açıklaması için bkz. Belirli bir çalışma alanı için tüm çalışma alanını kolayca ilişkilendirme ve ilişkili Clip Workspace coğrafi işleme aracı paketi. Ayrıca burada yığını üzerinde araştırdı: gis.stackexchange.com/questions/84989/…
matt wilkie

2

Bu , Analiz araç kutusundaki Bölme aracının yaptığı gibi görünür .

Ancak, çalıştırmak için bir ArcInfo lisansı gerektirir, bu yüzden ArcGIS Desktop kullanıcılarının çoğunluğu tarafından kullanılamaz, bu yüzden Chad'in ArcView ve ArcEditor seviye lisanslarına sahip ArcGIS 10 Desktop kullanıcıları için çalışacak olan cevabını seviyorum.


-1

Öncelikle toplu iş modunda başka bir araç çalıştırırsanız bunu istediğiniz şekilde yapabilirsiniz: Dönüştürme Araçları> Coğrafi Veritabanına> Özellik Sınıfından Özellik Sınıfına. Bu, havza katmanınızı almak ve her havzayı güvenle çıkarmak ve kendi özellik sınıfı olarak kaydetmek için bir ifade kullanmanıza izin verir, ardından toplu modda Klip aracıyla kullanabileceğiniz 50 ayrı katmanınız olur.


2
Cevabı takdir ediyorum, ama bu çok etkili bir çözüm gibi görünmüyor. 50 ayrı havza dosyası ve daha sonra 50 kırpılmış dosya oluşturmamayı tercih ederim.
Radar

-1

Bölünmüş ArcGIS aracı tam olarak bunu yapar.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.