ModelBuilder का उपयोग करते हुए फ़ीचर वर्ग आउटपुट फ़ाइल नाम Iterating?


11

मैं मॉडल बिल्डर में फीचर क्लास (पॉलीगोन) की एक श्रृंखला को पुनर्जन्म में बदलने की कोशिश कर रहा हूं, ताकि मैं मल्टीप्लेयर फाइल नामों के साथ एक समस्या पैदा कर पाऊं।

मॉडल बिल्डर विंडो में "इटर्सेट फीचर क्लास" टूल डालने के बाद, और इनपुट के रूप में सभी पॉलीगोन को स्टोर करने वाले मेरे जीडीबी को जोड़ने से आउटपुट फीचर (ग्रीन बबल) स्वचालित रूप से मेरे पहले बहुभुज का नाम बन जाता है। परिणामस्वरूप मॉडल जिसे मैं चलाने का प्रयास करता हूं, सूची में अगले बहुभुज पर जाने के बजाय उस नामित बहुभुज को पुनरावृत्ति करता प्रतीत होता है। आउटपुट रैस्टर बनाए जाते हैं, लेकिन बाद के पॉलीगोन से मेल खाने वाले नए नाम के साथ एक नया रैस्टर बनाने के बजाय उस फ़ाइल का नाम अधिलेखित कर देते हैं।

मैं क्या गलत कर रहा हूं?

जवाबों:


10

यहाँ मॉडल है, यह आरोन द्वारा वर्णित के रूप में इनलाइन प्रतिस्थापन का उपयोग करता है। ध्यान दें कि बहुभुज का उत्पादन रेखापुंज उपकरण के लिए है .. \ fGBD_Scratch.gdb \ ras_s मान% । मान उस पुनरावृत्ति से आ रहा है जो इस मामले में अद्वितीय पंक्तियों को सौंपने के लिए एफआईडी के लिए निर्धारित किया गया था। तो पहला रास्टर डेटासेट ras_1 होगा, फिर ras_2, आदि।

नमूना


क्या आप आउटपुट में डाले गए नाम के दोनों ओर बस "%" जोड़ते हैं? उदाहरण के लिए% नाम% _clip?
मैकडोना

हां, इसलिए आपके उदाहरण में 'नाम' आपके मॉडल का एक चर है, जो आमतौर पर एक पुनरावृत्त से कुछ होता है।
हॉर्नबीड

1
हां, लेकिन आपका नाम% साइन से शुरू नहीं होना चाहिए ... इसे उल्टे क्रम में उपयोग करें, अर्थात क्लिप_% नाम%
maycca

10

मॉडल बिल्डर में नामकरण से निपटने के कई तरीके हैं। आर्कजीआईएस में इस पर एक सहायता अनुभाग है: इनलाइन चर प्रतिस्थापन का उपयोग करने का एक त्वरित दौरा

इट्रेटर से अनन्य नाम जल्दी से बनाने के लिए एक चालाक तरीका %i%या %n%सिस्टम चर को कॉल करके है , जो निम्न रूप में फ़ाइलों को आउटपुट करता है: file1, file2, file3, file4 ... %i%सिस्टम चर वर्तमान सूची स्थिति को संदर्भित करता है, जबकि %n%सिस्टम चर वर्तमान मॉडल पुनरावृत्ति का संदर्भ देता है। आप इसे एक उपकरण के आउटपुट पैरामीटर में अभ्यास में डाल देंगे जिसका आप उपयोग कर रहे हैं। उदाहरण के लिए:

आउटपुट फ़ीचर क्लास

C:\temp\out%i%.shp

1

ऐसा लगता है कि आप नेस्टेड छोरों के एक जोड़े को करना चाहते हैं, एक कार्यक्षेत्र में फीचर कक्षाओं के लिए, और प्रत्येक फीचर क्लास में सुविधाओं के लिए एक। यह ModelBuilder के साथ करने के लिए दर्दनाक (लेकिन संभव है ) है।

यदि आप अपने हाथों को पायथन के साथ गंदा करना चाहते हैं (जो मैं निश्चित रूप से इस तरह के सामान के लिए सलाह देता हूं), तो यहां एक उदाहरण है जो आपको शुरू करने के लिए है:

import arcpy, os

# Your source file geodatabase
input_workspace = r"c:\GISData\input.gdb"

# Your output raster folder
output_workspace = r"c:\GISData\rasters"

# The file extension for the output rasters -- when not saving to a geodatabase, specify .tif for a TIFF file format, .img for an ERDAS IMAGINE file format, or no extension for a GRID raster format.
output_ext = ".img"

# The field used to assign values to the output raster -- hopefully this is the same for all of your feature classes
value_field = "VALUE"

# Note: Instead of hardcoding the above values, you could also use arcpy.GetParameterAsText to allow the user to specify them via script tool parameters

# Set current workspace to the source file geodatabase
arcpy.env.workspace = input_workspace

# Loop over the feature classes
for fc in arcpy.ListFeatureClasses():

  # Get the name of the ObjectID field so we can use it to name the output rasters
  oid_field = arcpy.Describe(fc).OIDFieldName

  # Loop over the features in the current feature class
  for row in arcpy.SearchCursor(fc):

    # Figure out what to name the output raster. In this case we should get something like "c:\GISData\rasters\myFeatureClass_1.img"
    out_raster = os.path.join(output_workspace, "{0}_{1}{2}".format(os.path.basename(fc), row.getValue(oid_field), output_ext))

    # Convert to raster
    arcpy.PolygonToRaster_conversion(row, value_field, out_raster)

निष्कलंक, लेकिन उम्मीद है कि आपको विचार मिलेगा। IMO, पायथन लिपियों के लिए मॉडलब्यूलर मॉडल की तुलना में काम करना बहुत आसान है, लेकिन कार्यों का सबसे तुच्छ।

Python / ArcPy सीखने के संसाधनों के लिए, इस प्रश्न से आगे नहीं देखें: ArcPy सीखने के लिए कुछ संसाधन क्या हैं?


मॉडल बिल्डर में नेस्टेड लूप दुख है। हो सके तो टाल दें।
मोक्स
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.