आर्कगिस डेस्कटॉप का उपयोग करके फाइल जियोडेटबेस में फ़ील्ड्स (स्थायी रूप से) को फिर से व्यवस्थित करना?


18

आर्कजीआईएस 10.0 का उपयोग करते हुए, क्या फ़ाइल जियोडैटेबेस में फ़ील्ड्स को फिर से व्यवस्थित करना संभव है, और क्या डेटाबेस के लिए ऑर्डर बरकरार है?

हमने एक्सएमएल को निर्यात करने पर विचार किया, और फील्ड ऑर्डर को बदलने के लिए एक पार्सर लिख दिया, फिर एक्सएमएल से एक नया डेटाबेस फिर से बनाया। यह एक श्रमसाध्य प्रक्रिया की तरह लगता है।

एक अन्य विचार मौजूदा फ़ील्ड परिभाषाओं को एक्सेल में आयात करना है, उन्हें फिर से ऑर्डर करना है, सीएसवी को निर्यात करना है, फिर इन फ़ील्ड को एक नए जियोडेटाबेस में बनाने के लिए एक पायथन स्क्रिप्ट लिखें। क्या इस तरह की स्क्रिप्ट मौजूद है, इससे पहले कि हम इसे स्क्रैच से लिखें?

दुर्भाग्य से ArcGIS आरेख क्षेत्र री-ऑर्डर करने का समर्थन नहीं करता है।

क्या इस प्रक्रिया को सरल बनाने के लिए हम कोई स्क्रिप्ट या हैक का उपयोग कर सकते हैं?


8
उम्मीद आप पर मतदान किया ideas.arcgis.com/ideaView?id=0873000000087wgAAA :-)
PolyGeo

आप ArcGIS आरेख में खेतों को फिर से व्यवस्थित कर सकते हैं, बस खेतों के संग्रह में जाएं और क्षेत्र का चयन करें और ऊपर / नीचे तीर मारा।
blah238

@ blah238 यदि आप इसे उत्तर के रूप में जोड़ सकते हैं, तो मैं इसे स्वीकार करूंगा। यह बहुत अच्छी तरह से काम करता है और Esri द्वारा अर्ध-समर्थित है क्योंकि उनके लोगों में से एक ने लिखा है
स्टीफन लीड

1
यहाँ वीडियो प्रदर्शन है - maps.esri.com/Diagrammer/reorderfields.htm
Dror Har Gil

जवाबों:


6

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


धन्यवाद। ArcGIS आरेख एक छोटा सा अस्थिर है - यह बिल्कुल दुर्घटना नहीं करता है, लेकिन यह कभी-कभी घर-निर्मित महसूस करता है। लेकिन स्कीमा को संशोधित करने के लिए, यह सबसे अच्छा विकल्प लगता है।
स्टीफन लीड

अब 10.0 से काम कर सकते हैं। यह मेरे लिए Win7 x64 पर आर्कजीआईएस 10.1 के साथ ठीक है, लेकिन जब इसे चलाया जाता है तो बस इन टाइम संकलन त्रुटियों और क्विट्स को प्रायोजित करता है।
मैट विल्की

1
यह ध्यान रखना महत्वपूर्ण है कि ArcGIS आरेख 10.3 या उच्चतर के साथ कार्य नहीं करता है।
नक्शा मैन

7

में एक और सवाल का जवाब मैंने कहा कि इसका इस्तेमाल करने के लिए संभव है सारांश सांख्यिकी PULLITEMS के बराबर (पुन: व्यवस्थित करें क्षेत्रों के लिए वर्ष बात) क्या करना है। यह तकनीक केवल टेबल्स पर अच्छी तरह से काम करती है लेकिन अब एक और स्क्रिप्ट उपलब्ध है जो कहती है कि यह फीचर क्लास और टेबल दोनों पर काम करती है।

मैं आर्कगिस मेक क्वेरी टेबल टूल का उपयोग करके स्थायी रूप से पुन: ऑर्डर करने वाले फ़ील्ड के उत्तर की सिफारिश करूंगा ? जो @klewis के उत्तर से प्रेरित था।


6

ईटी जियोविजार्ड का मुफ्त संस्करण ऐसा करेगा। मूल -> क्रमबद्ध आकार। मैं सिर्फ एक v10 फ़ाइल geodatabase पर यह परीक्षण किया है और यह काम करता है। हालांकि इसे एक नया फीचर क्लास बनाना है।


5

यदि आपके पास आरेख के लिए Visio नहीं है - तो अन्य सभी उत्तर यहां किसी भी जोड़ को तोड़ते हैं। मैंने अपने मामले में अच्छा काम करने के लिए यह पाया:

  1. Arccatalog (Export - XML) का उपयोग करके पूरे db के लिए स्कीमा निर्यात करें - मैंने डेटा, स्कीमा को निर्यात नहीं किया
  2. Xml को प्रारूपित करने के लिए कुछ ऑनलाइन प्रिट प्रिन्ट सेवा का प्रयोग करें। टेक्स्ट एडिटर में XML फ़ाइल खोलें और अपनी इच्छानुसार फ़ील्ड्स को रीऑर्डर करें
  3. नया डेटाबेस बनाने के लिए स्कीमा पुन: आयात करें
  4. स्रोत के रूप में मूल डेटाबेस का उपयोग कर डेटा पुनः लोड करें

मैंने इसे मूल प्रश्न में "एक श्रमसाध्य प्रक्रिया" के रूप में खारिज कर दिया - लेकिन वास्तव में जब आप इसे इस तरह डालते हैं, तो यह बहुत बुरा नहीं लगता;)
स्टीफन लीड

4

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


यदि आप इसे जांच चुके हैं तो सोच रहे हैं क्योंकि मैं फ़ील्ड को फिर से आदेश देने के लिए मेक टेबल टेबल टूल के लिए एक रास्ता नहीं देख सकता - इसका टूल डायलॉग आपको यह तय करने देता है कि फ़ील्ड को शामिल किया जाना है या नहीं।
PolyGeo

हां, मैंने पायथन लिपि से इसका परीक्षण किया है। ऐसा लगता है कि उपकरण को कई तालिकाओं के संयोजन या शामिल करने के लिए डिज़ाइन किया गया है। हालाँकि, मैं एकल फ़ीचर क्लास इनपुट करके एक नए टेबल या फीचर क्लास को फिर से बनाने में सक्षम हूँ।
क्लेविस

मुझे कुछ याद आ रहा है इसलिए यहाँ एक नया प्रश्न पोस्ट किया है gis.stackexchange.com/questions/32310/… - क्या आप शायद मेरे लिए वहाँ के चरणों का विस्तार कर सकते हैं, कृपया?
PolyGeo

मैंने सिर्फ MakeQueryTable का ही नहीं, बल्कि CopyFeatures और कोड के कुछ छोटे संपादन का उपयोग करके नए प्रश्न का उत्तर दिया, जिन्हें मैंने Python Snippet के रूप में Python विंडो में Copy किया।
PolyGeo

4

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

यह सिफारिश की जाती है कि एक बार मर्ज टूल का उपयोग करें और फिर कॉपी अस पाइथन स्निपेट का उपयोग करें और फिर मैन्युअल रूप से फ़ील्ड ऑर्डर बदलें और फिर पायथन कोड को पायथन विंडो में पेस्ट करें।

यहाँ एक अजगर लिपि है जो मर्ज टूल का उपयोग फ़ील्ड्स को पुन: क्रमबद्ध करने के लिए करती है ( यहाँ से कॉपी की गई है )

import arcpy

def reorder_fields(table, out_table, field_order, add_missing=True):
    """ 
    Reorders fields in input featureclass/table
    :table:         input table (fc, table, layer, etc)
    :out_table:     output table (fc, table, layer, etc)
    :field_order:   order of fields (objectid, shape not necessary)
    :add_missing:   add missing fields to end if True (leave out if False)
    -> path to output table
    """
    existing_fields = arcpy.ListFields(table)
    existing_field_names = [field.name for field in existing_fields]

    existing_mapping = arcpy.FieldMappings()
    existing_mapping.addTable(table)

    new_mapping = arcpy.FieldMappings()

    def add_mapping(field_name):
        mapping_index = existing_mapping.findFieldMapIndex(field_name)

        # required fields (OBJECTID, etc) will not be in existing mappings
        # they are added automatically
        if mapping_index != -1:
            field_map = existing_mapping.fieldMappings[mapping_index]
            new_mapping.addFieldMap(field_map)

    # add user fields from field_order
    for field_name in field_order:
        if field_name not in existing_field_names:
            raise Exception("Field: {0} not in {1}".format(field_name, table))

        add_mapping(field_name)

    # add missing fields at end
    if add_missing:
        missing_fields = [f for f in existing_field_names if f not in field_order]
        for field_name in missing_fields:
            add_mapping(field_name)

    # use merge with single input just to use new field_mappings
    arcpy.Merge_management(table, out_table, new_mapping)
    return out_table

उपयोग:

new_field_order = ["field2", "field3", "field1"]
reorder_fields(in_fc, out_fc, new_field_order)

यह उस टूल डायलॉग से अच्छा काम करता है, जहां मैंने पहली बार एक फ़ील्ड को डिलीट किया था, जिसे मैं लास्ट में ले जाना चाहता था, एक नया फ़ील्ड जोड़ा और फिर ऐड इनपुट फील्ड ऐड किया। हालाँकि, जैसा कि आपने कहा, पायथन में इसका उपयोग करना उपकरण से आसान है जब अधिक जटिल री-ऑर्डरिंग की आवश्यकता होती है।
PolyGeo

3

Esri से एक्स-रे नामक एक नि: शुल्क विस्तार होता है जिसमें एक उपकरण होता है जिसे Reorder फ़ील्ड्स में बनाया जाता है। हमारे लिए बहुत अच्छा काम किया है और उपयोग करने में आसान है।

आर्ककॉस्टिक्स के लिए एक्स-रे एड-इन का उपयोग आपके जियोडेटाबेस डिजाइनों को विकसित करने, परिष्कृत करने और दस्तावेज करने के लिए किया जा सकता है


जीआईएस स्टैक एक्सचेंज में आपका स्वागत है, और टिप के लिए धन्यवाद। मैंने आपके उत्तर को स्टैक एक्सचेंज मानकों के अनुरूप होने के लिए फिर से स्वरूपित किया - मैंने उत्पाद के बारे में एक लिंक और एक उद्धरण शामिल किया, और बाहरी जानकारी को हटा दिया।
स्टीफन लीड

2

अब तक सबसे अधिक कुशल तरीका मैंने खेतों का नाम बदलने, उनके डिफ़ॉल्ट क्रम को बदलने और Microsoft एक्सेस का उपयोग करने के लिए कई अन्य चीजों में पाया है:

  1. नए व्यक्तिगत जियोडेटाबेस बनाएं
  2. सुविधा वर्ग या तालिका को p-gdb में खींचें और छोड़ें
  3. पहुंच में खोलें और:
    • शुरुआत में सभी तालिकाओं को अनदेखा करना GDB_, टेबल डिज़ाइन मोड में खुले टेबल
    • नाम बदलना, आदेश बदलना, नया जोड़ना आदि।
  4. खींचें और अपने असली ऑपरेशनल gdb पर वापस जाएँ

टिप्पणियाँ:

हमेशा एक मौजूदा बैक अप लें। आप आंतरिक जीडीबी संरचना के साथ सीधे खिलवाड़ कर रहे हैं और आप आसानी से अपने डेटा को डीबी को बदलकर उस बिंदु पर रख सकते हैं जो आर्कगिस को नहीं पता है कि इसे कैसे पढ़ना है।

आर्कजीआईएस पक्ष पर कुछ आरक्षित कीवर्ड हैं जिनका उपयोग फ़ील्ड नामों के लिए नहीं किया जा सकता है। इन कीवर्ड के साथ पहुंच खुशी से फ़ील्ड बनाएगी या नाम बदलेगी, लेकिन जब आप उन्हें वापस लाते हैं तो वे स्वचालित रूप से एक अंडरस्कोर संलग्न होते हैं। तो Currentबन जाता है Current_। इसके अलावा आंशिक रूप से अतिव्यापी पहुँच आरक्षित खोजशब्दों पर ध्यान दें ।

व्यक्तिगत GDB में 2GB फ़ाइल आकार सीमा है, इसलिए GDB के भीतर सभी तालिकाओं और फ़ीचर वर्गों का कुल आकार इससे अधिक नहीं हो सकता है।

छोटी परियोजनाओं (<2GB) के लिए हमेशा व्यक्तिगत GDB का उपयोग करना आपको लुभावना लग सकता है। मत करो। प्रदर्शन संक्षिप्त है और एक्सेस 'एसक्यूएल सिंटैक्स में सूक्ष्म अंतर हैं जो लेबल एक्सप्रेशंस, डेफिनिशन क्वेरी, और इसी तरह गैर-पोर्टेबल हैं।


बेशक, इस विधि को आधिकारिक तौर पर मंजूरी नहीं दी गई है, और अगर कुछ गलत हो जाता है तो आप टेक सपोर्ट को कॉल करने में सक्षम नहीं होंगे;)
स्टीफन लीड


2

यह पायथन स्क्रिप्ट ऐसा करने के लिए एक "डक्ट-टेप" विधि है। यह 20 क्षेत्रों तक सीमित है, लेकिन इसे आसानी से जोड़ा जा सकता है ताकि आपके डेटा के कई क्षेत्रों के लिए इसे चलाया जा सके।

स्क्रिप्ट को स्क्रिप्ट टूल के रूप में चलाने के लिए डिज़ाइन किया गया है, इसलिए आपको आर्ककॉस्टिक्स के भीतर मापदंडों को सेट करना होगा।

पैरामीटर निम्नानुसार होना चाहिए:

  • InputFC - फ़ीचर क्लास
  • आउटपुट स्थान - कार्यक्षेत्र
  • आउटपुट नाम - स्ट्रिंग
  • फ़ील्ड 1 - फ़ील्ड
  • फ़ील्ड 2 - फ़ील्ड
  • फील्ड 20 का सारा रास्ता

कोड:

import arcpy, os, sys
from arcpy import env

arcpy.env.overwriteOutput = True

inFC = arcpy.GetParameterAsText(0)
outLoc = arcpy.GetParameterAsText(1)
outName = arcpy.GetParameterAsText(2)
field1 = arcpy.GetParameterAsText(3)
field2 = arcpy.GetParameterAsText(4)
field3 = arcpy.GetParameterAsText(5)
field4 = arcpy.GetParameterAsText(6)
field5 = arcpy.GetParameterAsText(7)
field6 = arcpy.GetParameterAsText(8)
field7 = arcpy.GetParameterAsText(9)
field8 = arcpy.GetParameterAsText(10)
field9 = arcpy.GetParameterAsText(11)
field10 = arcpy.GetParameterAsText(12)
field11 = arcpy.GetParameterAsText(13)
field12 = arcpy.GetParameterAsText(14)
field13 = arcpy.GetParameterAsText(15)
field14 = arcpy.GetParameterAsText(16)
field15 = arcpy.GetParameterAsText(17)
field16 = arcpy.GetParameterAsText(18)
field17 = arcpy.GetParameterAsText(19)
field18 = arcpy.GetParameterAsText(20)
field19 = arcpy.GetParameterAsText(21)
field20 = arcpy.GetParameterAsText(22)

fieldList = ["SHAPE@"]

arcpy.AddMessage(" ")

arcpy.AddMessage("Appending field choices to new List ")

arcpy.AddMessage(" ")

if (field1 != ""):
    fieldList.append(field1)
if (field2 != ""):
    fieldList.append(field2)
if (field3 != ""):
    fieldList.append(field3)
if (field4 != ""):
    fieldList.append(field4)
if (field5 != ""):
    fieldList.append(field5)
if (field6 != ""):
    fieldList.append(field6)
if (field7 != ""):
    fieldList.append(field7)
if (field8 != ""):
    fieldList.append(field8)
if (field9 != ""):
    fieldList.append(field9)
if (field10 != ""):
    fieldList.append(field10)
if (field11 != ""):
    fieldList.append(field1)
if (field12 != ""):
    fieldList.append(field12)
if (field13 != ""):
    fieldList.append(field13)
if (field14 != ""):
    fieldList.append(field14)
if (field15 != ""):
    fieldList.append(field15)
if (field16 != ""):
    fieldList.append(field16)
if (field17 != ""):
    fieldList.append(field17)
if (field18 != ""):
    fieldList.append(field18)
if (field19 != ""):
    fieldList.append(field19)
if (field20 != ""):
    fieldList.append(field20)

arcpy.AddMessage(" ")

#arcpy.AddMessage(fieldList)

oldFieldList = arcpy.ListFields(inFC)

fieldTypes = []

numOfFields = len(fieldList)

fieldIndex = 1

reorderedFields = []

for fld in fieldList:
    for f in oldFieldList:
        if f.name == fld:
            arcpy.AddMessage(f.name)
            reorderedFields.append(f)
            break

arcpy.AddMessage(" ")

arcpy.AddMessage(reorderedFields)

desc = arcpy.Describe(inFC)
geoType = desc.shapeType.upper()
spatRef = arcpy.Describe(inFC).spatialReference

arcpy.CreateFeatureclass_management(outLoc, outName, geoType, "", "", "", spatRef)
newFeat = os.path.join(outLoc, outName)

for flds in reorderedFields:
    if (flds.type == "String"):
        fLength = flds.length
        arcpy.AddField_management(newFeat, flds.name, flds.type, "", "", str(fLength))
    else:
        arcpy.AddField_management(newFeat, flds.name, flds.type)

arcpy.AddMessage(" ")

arcpy.AddMessage(fieldList)

arcpy.AddMessage(" ")

arcpy.AddMessage("Features will be copied with new Schema...")

count = 0

with arcpy.da.SearchCursor(inFC, fieldList) as cursor:
    for row in cursor:
        insertCursor = arcpy.da.InsertCursor(newFeat, (fieldList))
        if (numOfFields == 21):
            insertCursor.insertRow((row[0], row[1], row[2], row[3], row[4], row[5], row[6], row[7], row[8], row[9], row[10], row[11], row[12], row[13], row[14], row[15], row[16], row[17], row[18], row[19], row[20]))
            arcpy.AddMessage(" ")
            arcpy.AddMessage("Index: " + str(count) + " -----> " + str(row[1]) + ', ' + str(row[2]) + ', ' + str(row[3]) + ', ' + str(row[4]) + ', ' + str(row[5]) + ', ' + str(row[6]) + ', ' + str(row[7]) + ', ' + str(row[8]) + ', ' + str(row[9]) + ', ' + str(row[10]) + ', ' + str(row[11]) + ', ' + str(row[12]) + ', ' + str(row[13]) + ', ' + str(row[14]) + ', ' + str(row[15]) + ', ' + str(row[16]) + ', ' + str(row[17]) + ', ' + str(row[18]) + ', ' + str(row[19]) + ', ' + str(row[20]))
            count += 1
        elif (numOfFields == 20):
            insertCursor.insertRow((row[0], row[1], row[2], row[3], row[4], row[5], row[6], row[7], row[8], row[9], row[10], row[11], row[12], row[13], row[14], row[15], row[16], row[17], row[18], row[19]))
            arcpy.AddMessage(" ")
            arcpy.AddMessage("Index: " + str(count) + " -----> " + str(row[1]) + ', ' + str(row[2]) + ', ' + str(row[3]) + ', ' + str(row[4]) + ', ' + str(row[5]) + ', ' + str(row[6]) + ', ' + str(row[7]) + ', ' + str(row[8]) + ', ' + str(row[9]) + ', ' + str(row[10]) + ', ' + str(row[11]) + ', ' + str(row[12]) + ', ' + str(row[13]) + ', ' + str(row[14]) + ', ' + str(row[15]) + ', ' + str(row[16]) + ', ' + str(row[17]) + ', ' + str(row[18]) + ', ' + str(row[19]))
            count += 1
        elif (numOfFields == 19):
            insertCursor.insertRow((row[0], row[1], row[2], row[3], row[4], row[5], row[6], row[7], row[8], row[9], row[10], row[11], row[12], row[13], row[14], row[15], row[16], row[17], row[18]))
            arcpy.AddMessage(" ")
            arcpy.AddMessage("Index: " + str(count) + " -----> " + str(row[1]) + ', ' + str(row[2]) + ', ' + str(row[3]) + ', ' + str(row[4]) + ', ' + str(row[5]) + ', ' + str(row[6]) + ', ' + str(row[7]) + ', ' + str(row[8]) + ', ' + str(row[9]) + ', ' + str(row[10]) + ', ' + str(row[11]) + ', ' + str(row[12]) + ', ' + str(row[13]) + ', ' + str(row[14]) + ', ' + str(row[15]) + ', ' + str(row[16]) + ', ' + str(row[17]) + ', ' + str(row[18]))
            count += 1
        elif (numOfFields == 18):
            insertCursor.insertRow((row[0], row[1], row[2], row[3], row[4], row[5], row[6], row[7], row[8], row[9], row[10], row[11], row[12], row[13], row[14], row[15], row[16], row[17]))
            arcpy.AddMessage(" ")
            arcpy.AddMessage("Index: " + str(count) + " -----> " + str(row[1]) + ', ' + str(row[2]) + ', ' + str(row[3]) + ', ' + str(row[4]) + ', ' + str(row[5]) + ', ' + str(row[6]) + ', ' + str(row[7]) + ', ' + str(row[8]) + ', ' + str(row[9]) + ', ' + str(row[10]) + ', ' + str(row[11]) + ', ' + str(row[12]) + ', ' + str(row[13]) + ', ' + str(row[14]) + ', ' + str(row[15]) + ', ' + str(row[16]) + ', ' + str(row[17]))
            count += 1
        elif (numOfFields == 17):
            insertCursor.insertRow((row[0], row[1], row[2], row[3], row[4], row[5], row[6], row[7], row[8], row[9], row[10], row[11], row[12], row[13], row[14], row[15], row[16]))
            arcpy.AddMessage(" ")
            arcpy.AddMessage("Index: " + str(count) + " -----> " + str(row[1]) + ', ' + str(row[2]) + ', ' + str(row[3]) + ', ' + str(row[4]) + ', ' + str(row[5]) + ', ' + str(row[6]) + ', ' + str(row[7]) + ', ' + str(row[8]) + ', ' + str(row[9]) + ', ' + str(row[10]) + ', ' + str(row[11]) + ', ' + str(row[12]) + ', ' + str(row[13]) + ', ' + str(row[14]) + ', ' + str(row[15]) + ', ' + str(row[16]))
            count += 1
        elif (numOfFields == 16):
            insertCursor.insertRow((row[0], row[1], row[2], row[3], row[4], row[5], row[6], row[7], row[8], row[9], row[10], row[11], row[12], row[13], row[14], row[15]))
            arcpy.AddMessage(" ")
            arcpy.AddMessage("Index: " + str(count) + " -----> " + str(row[1]) + ', ' + str(row[2]) + ', ' + str(row[3]) + ', ' + str(row[4]) + ', ' + str(row[5]) + ', ' + str(row[6]) + ', ' + str(row[7]) + ', ' + str(row[8]) + ', ' + str(row[9]) + ', ' + str(row[10]) + ', ' + str(row[11]) + ', ' + str(row[12]) + ', ' + str(row[13]) + ', ' + str(row[14]) + ', ' + str(row[15]))
            count += 1
        elif (numOfFields == 15):
            insertCursor.insertRow((row[0], row[1], row[2], row[3], row[4], row[5], row[6], row[7], row[8], row[9], row[10], row[11], row[12], row[13], row[14]))
            arcpy.AddMessage(" ")
            arcpy.AddMessage("Index: " + str(count) + " -----> " + str(row[1]) + ', ' + str(row[2]) + ', ' + str(row[3]) + ', ' + str(row[4]) + ', ' + str(row[5]) + ', ' + str(row[6]) + ', ' + str(row[7]) + ', ' + str(row[8]) + ', ' + str(row[9]) + ', ' + str(row[10]) + ', ' + str(row[11]) + ', ' + str(row[12]) + ', ' + str(row[13]) + ', ' + str(row[14]))
            count += 1
        elif (numOfFields == 14):
            insertCursor.insertRow((row[0], row[1], row[2], row[3], row[4], row[5], row[6], row[7], row[8], row[9], row[10], row[11], row[12], row[13]))
            arcpy.AddMessage(" ")
            arcpy.AddMessage("Index: " + str(count) + " -----> " + str(row[1]) + ', ' + str(row[2]) + ', ' + str(row[3]) + ', ' + str(row[4]) + ', ' + str(row[5]) + ', ' + str(row[6]) + ', ' + str(row[7]) + ', ' + str(row[8]) + ', ' + str(row[9]) + ', ' + str(row[10]) + ', ' + str(row[11]) + ', ' + str(row[12]) + ', ' + str(row[13]))
            count += 1
        elif (numOfFields == 13):
            insertCursor.insertRow((row[0], row[1], row[2], row[3], row[4], row[5], row[6], row[7], row[8], row[9], row[10], row[11], row[12]))
            arcpy.AddMessage(" ")
            arcpy.AddMessage("Index: " + str(count) + " -----> " + str(row[1]) + ', ' + str(row[2]) + ', ' + str(row[3]) + ', ' + str(row[4]) + ', ' + str(row[5]) + ', ' + str(row[6]) + ', ' + str(row[7]) + ', ' + str(row[8]) + ', ' + str(row[9]) + ', ' + str(row[10]) + ', ' + str(row[11]) + ', ' + str(row[12]))
            count += 1
        elif (numOfFields == 12):
            insertCursor.insertRow((row[0], row[1], row[2], row[3], row[4], row[5], row[6], row[7], row[8], row[9], row[10], row[11]))
            arcpy.AddMessage(" ")
            arcpy.AddMessage("Index: " + str(count) + " -----> " + str(row[1]) + ', ' + str(row[2]) + ', ' + str(row[3]) + ', ' + str(row[4]) + ', ' + str(row[5]) + ', ' + str(row[6]) + ', ' + str(row[7]) + ', ' + str(row[8]) + ', ' + str(row[9]) + ', ' + str(row[10]) + ', ' + str(row[11]))
            count += 1
        elif (numOfFields == 11):
            insertCursor.insertRow((row[0], row[1], row[2], row[3], row[4], row[5], row[6], row[7], row[8], row[9], row[10]))
            arcpy.AddMessage(" ")
            arcpy.AddMessage("Index: " + str(count) + " -----> " + str(row[1]) + ', ' + str(row[2]) + ', ' + str(row[3]) + ', ' + str(row[4]) + ', ' + str(row[5]) + ', ' + str(row[6]) + ', ' + str(row[7]) + ', ' + str(row[8]) + ', ' + str(row[9]) + ', ' + str(row[10]))
            count += 1
        elif (numOfFields == 10):
            insertCursor.insertRow((row[0], row[1], row[2], row[3], row[4], row[5], row[6], row[7], row[8], row[9]))
            arcpy.AddMessage(" ")
            arcpy.AddMessage("Index: " + str(count) + " -----> " + str(row[1]) + ', ' + str(row[2]) + ', ' + str(row[3]) + ', ' + str(row[4]) + ', ' + str(row[5]) + ', ' + str(row[6]) + ', ' + str(row[7]) + ', ' + str(row[8]) + ', ' + str(row[9]))
            count += 1
        elif (numOfFields == 9):
            insertCursor.insertRow((row[0], row[1], row[2], row[3], row[4], row[5], row[6], row[7], row[8]))
            arcpy.AddMessage(" ")
            arcpy.AddMessage("Index: " + str(count) + " -----> " + str(row[1]) + ', ' + str(row[2]) + ', ' + str(row[3]) + ', ' + str(row[4]) + ', ' + str(row[5]) + ', ' + str(row[6]) + ', ' + str(row[7]) + ', ' + str(row[8]))
            count += 1
        elif (numOfFields == 8):
            insertCursor.insertRow((row[0], row[1], row[2], row[3], row[4], row[5], row[6], row[7]))
            arcpy.AddMessage(" ")
            arcpy.AddMessage("Index: " + str(count) + " -----> " + str(row[1]) + ', ' + str(row[2]) + ', ' + str(row[3]) + ', ' + str(row[4]) + ', ' + str(row[5]) + ', ' + str(row[6]) + ', ' + str(row[7]))
            count += 1
        elif (numOfFields == 7):
            insertCursor.insertRow((row[0], row[1], row[2], row[3], row[4], row[5], row[6]))
            arcpy.AddMessage(" ")
            arcpy.AddMessage("Index: " + str(count) + " -----> " + str(row[1]) + ', ' + str(row[2]) + ', ' + str(row[3]) + ', ' + str(row[4]) + ', ' + str(row[5]) + ', ' + str(row[6]))
            count += 1
        elif (numOfFields == 6):
            insertCursor.insertRow((row[0], row[1], row[2], row[3], row[4], row[5]))
            arcpy.AddMessage(" ")
            arcpy.AddMessage("Index: " + str(count) + " -----> " + str(row[1]) + ', ' + str(row[2]) + ', ' + str(row[3]) + ', ' + str(row[4]) + ', ' + str(row[5]))
            count += 1
        elif (numOfFields == 5):
            insertCursor.insertRow((row[0], row[1], row[2], row[3], row[4]))
            arcpy.AddMessage(" ")
            arcpy.AddMessage("Index: " + str(count) + " -----> " + str(row[1]) + ', ' + str(row[2]) + ', ' + str(row[3]) + ', ' + str(row[4]))
            count += 1
        elif (numOfFields == 4):
            insertCursor.insertRow((row[0], row[1], row[2], row[3]))
            arcpy.AddMessage(" ")
            arcpy.AddMessage("Index: " + str(count) + " -----> " + str(row[1]) + ', ' + str(row[2]) + ', ' + str(row[3]))
            count += 1
        elif (numOfFields == 3):
            insertCursor.insertRow((row[0], row[1], row[2]))
            arcpy.AddMessage(" ")
            arcpy.AddMessage("Index: " + str(count) + " -----> " + str(row[1]) + ', ' + str(row[2]))
            count += 1
        elif (numOfFields == 2):
            insertCursor.insertRow((row[0], row[1]))
            arcpy.AddMessage(" ")
            arcpy.AddMessage("Index: " + str(count) + " -----> " + str(row[1]))
            count += 1

मुझे लगता है कि यह ऐसा करने के लिए सबसे सुंदर या सबसे कुशल तरीका नहीं है, लेकिन यह वास्तव में काफी अच्छा काम करता है और लिखने में केवल आधा घंटा लगता है। मैं यह हर समय उपयोग करता हूं जब मुझे खेतों को फिर से व्यवस्थित करने की आवश्यकता होती है, और इसके लिए आरेख या माइक्रोसॉफ्ट एक्सेस की आवश्यकता नहीं होती है। बेशक खेतों की अधिकतम संख्या एक मुद्दा हो सकती है लेकिन फिर से स्क्रिप्ट के भीतर अनुकूलित किया जा सकता है।

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