Пакетне відсікання на робочому столі ArcGIS за допомогою ArcPy?


12

Я натрапив на кілька подібних питань для старих версій ArcGIS, але не знайшов відповідної відповіді для ArcGIS 10.

У мене є два фасони форми багатокутника, які охоплюють велику територію (наприклад, цілий штат / провінція). Перший формний файл являє собою покрив для всієї держави, а другий - 50 окремих вододілів. Я хотів би вирізати формуляри наземного покриву на основі кожного вододілу (кожен має унікальну назву, що зберігається в полі). Тоді я хотів би зберегти вихідні відсічені файли (по одному для кожного з 50 вододілів), використовуючи ім'я вододілу.

Враховуючи, що необхідно виконати 50 кліпів, цей процес є чудовим кандидатом для пакетної обробки.


1
Що ви знайшли для старих версій ArcGIS і що робить їх непридатними для використання з ArcGIS 10?
nmpeterson

2
@Radar Погляньте на це питання: gis.stackexchange.com/q/8104/1297 Він охоплює те, що ви шукаєте. Якщо вам потрібна будь-яка допомога щодо модифікації ваших потреб, дайте мені знати. Я позначив це як можливий дублікат.
SaultDon

@SaultDon: Ви хочете сказати, що рішення на веб- сайті gis.stackexchange.com/q/8104/1297 , безумовно, також працюватимуть в ArcGIS 10?
whuber

@SaultDon - У ArcGIS 10 були внесені деякі зміни, які спричиняють застарілість конкретної відповіді. Я сподіваюся знайти найкраще рішення для Arc10, а не просто зламану версію сценарію 9.3.
Радар

@whuber Не як є, потребує змін, які можуть не бути очевидними. Радар - Ти маєш рацію, вони простіші =)
SaultDon

Відповіді:


17

Наступний сценарій відбиває вододіли багатокутника до меж округу полігону, називаючи кожен вихідний елементкласу чимось на зразок імені HspWBD_HU12_county. Випробуваний і він працює. Переконайтеся, що у ваших значеннях у полі NAME немає спеціальних символів чи пробілів (прості методи рядка Python можуть очистити це для вас).

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

Абсолютно ідеальний хоч класичний тип курсору !!
SIslam

8

Коли ви використовуєте ArcGIS 10, я б використовував модельєр із вбудованим інструментом: Ітерація Вибір функції для виконання цього завдання. Дивіться псевдомодель на малюнку. для цього зовсім не потрібно знати пітонів. псевдомодель


Більш глибоке пояснення цього підходу див. У Легкому відсіканні цілого робочого простору для конкретної досліджуваної області та пов'язаного з ним пакета інструментів для геообробки Clip Workspace . Також досліджено тут на стеці: gis.stackexchange.com/questions/84989/…
matt wilkie

2

Це звучить точно так, як робить інструмент "Розщеплення" з набору інструментів "Аналіз ".

Однак для запуску потрібна ліцензія ArcInfo, тому вона недоступна для більшості користувачів ArcGIS Desktop, тому мені подобається відповідь Чада, яка також буде працювати для користувачів ArcGIS 10 Desktop з ліцензіями рівня ArcView та ArcEditor.


-1

Це можна зробити так, як вам потрібно, якщо спочатку запустити інший інструмент у пакетному режимі: Інструменти перетворення> До бази даних геоданих> Клас особливості в клас функцій. Це дозволить вам використовувати вираз, щоб взяти свій вододільний шар і витягнути кожен вододіл окремо і зберегти його як власний клас функцій, тоді у вас буде 50 окремих шарів, які ви можете використовувати за допомогою інструменту Clip у пакетному режимі.


2
Я високо ціную відповідь, але це здається не дуже ефективним рішенням. Я б краще не створив 50 окремих вододільних файлів, а потім ще 50 відсічених файлів.
Радар

-1

Інструмент Split в ArcGIS робить саме це.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.