Я намагаюся зрозуміти створення геопроцесу за допомогою ModelBuilder, але не знаю, чому важливо використовувати шари функції замість класів функцій при створенні геопроцесу з ModelBuilder. Може хтось, будь ласка, пояснить, чому?
Я намагаюся зрозуміти створення геопроцесу за допомогою ModelBuilder, але не знаю, чому важливо використовувати шари функції замість класів функцій при створенні геопроцесу з ModelBuilder. Може хтось, будь ласка, пояснить, чому?
Відповіді:
Моделі можуть мати багато підпроцесорних вихідних шарів залежно від їх розміру та складності. Для усунення запису файлів на жорсткий диск деякі інструменти змушують використовувати шари функцій (наприклад, Iterate Selection Feature або Select by Attribute ). Шари функцій тимчасові і не зберігатимуться після закінчення вашої моделі.
Див. Розділ Зробити шар функції
Є кілька причин, чому ви хочете посилатись на Feature Layers у ModelBuilder, на відміну від класів Feature. Спочатку корисно зрозуміти відмінності.
Отже, враховуючи цей фон, ось кілька причин, чому ви хочете використовувати інструмент "Зробити функціональний шар" в якості переходу між необробленими даними та іншими інструментами геообробки.
Якщо ви хочете запустити модель з ArcCatalog або експортувати свою модель в сценарій Python, який можна запустити за межами ArcGIS, вам потрібно скористатися "Шарами функцій" для того, щоб ваші вихідні вихідні дані були перетворені на "Шари". Це було б аналогічно "додаванню даних" у ваш сеанс ArcMap.
Використання шарів дозволяє легко підмножувати ваші дані під час проходження процесу ModelBuilder. Скажімо, ви хотіли обробити всі дані з атрибутом "A" одним методом, але всі дані з атрибутом "B" іншим методом. Ви можете один раз посилатись на свої необроблені дані, а потім розділити їх на дві "гілки" за допомогою функціональних шарів та обробити кожен набір незалежно, але впливаючи / оновлюючи єдиний набір даних.
Включення тимчасових шарів у ваші моделі також скорочує час обробки. З точки зору обробки, це набагато ефективніше запис у пам'ять порівняно із записом на диск. Аналогічно, ви можете записувати тимчасові дані в робочу область in_memory , що також є обчислювально ефективнішим.
Багато операцій в ArcGIS вимагають тимчасових шарів як вхідних даних. Наприклад, Select Layer By Location (Управління даними) - це дуже потужний і зручний інструмент, який дозволяє вибрати функції шару, що розділяє просторові відносини з іншою функцією вибору. Ви можете вказати складні відносини, такі як "HAVE_THEIR_CENTER_IN" або "BOUNDARY_TOUCHES" тощо.
Редагувати:
З цікавості та детальної обробки відмінностей за допомогою функціональних шарів та робочої області в пам’яті розглянемо наступний тест на швидкість, де на 100 м буферизовано 39 000 балів:
import arcpy, time
from arcpy import env
# Set overwrite
arcpy.env.overwriteOutput = 1
# Parameters
input_features = r'C:\temp\39000points.shp'
output_features = r'C:\temp\temp.shp'
###########################
# Method 1 Buffer a feature class and write to disk
StartTime = time.clock()
arcpy.Buffer_analysis(input_features,output_features, "100 Feet")
EndTime = time.clock()
print "Method 1 finished in %s seconds" % (EndTime - StartTime)
time.sleep(5)
############################
# Method 2 Buffer a feature class and write in_memory
StartTime = time.clock()
arcpy.Buffer_analysis(input_features, "in_memory/temp", "100 Feet")
EndTime = time.clock()
print "Method 2 finished in %s seconds" % (EndTime - StartTime)
time.sleep(5)
############################
# Method 3 Make a feature layer, buffer then write to in_memory
StartTime = time.clock()
arcpy.MakeFeatureLayer_management(input_features, "out_layer")
arcpy.Buffer_analysis("out_layer", "in_memory/temp", "100 Feet")
EndTime = time.clock()
print "Method 3 finished in %s seconds" % (EndTime - StartTime)
time.sleep(5)
Ми можемо бачити, що методи 2 і 3 еквівалентні і приблизно в 3 рази швидші, ніж метод 1. Це показує можливість використання функціональних шарів як проміжних кроків у більших робочих процесах.
in_memory
робочу область, як і раніше, є даними (наприклад, класи класів та таблиць), як і раніше, займають (можливо, багато) простір. Шари функцій, з іншого боку, - це перегляд даних, що дозволяє вибрати підмножину даних та використовувати їх у наступних процесах, а не дублювати дані лише для отримання їх підмножини. Особливості шарів займають майже не місце. Мені подобається вважати їх "покажчиками з метаданими", наприклад, вони вказують на деякі дані та описують, як запитувати / рендерувати їх.
in-memory
робоча область - це в основному база даних геоданих, яка сидить у пам’яті, якщо ви хочете думати про це таким чином.