ArcGIS Desktop kullanarak dosya coğrafi veritabanındaki alanlar (kalıcı olarak) yeniden sıralanıyor mu?


18

ArcGIS 10.0 kullanarak, bir dosya coğrafi veritabanındaki alanları yeniden sıralamak ve siparişin veritabanında kalıcı olmasını sağlamak mümkün müdür?

XML'ye dışa aktarmayı ve alan sırasını değiştirmek için bir ayrıştırıcı yazmayı, ardından XML'den yeni bir veritabanı oluşturmayı düşündük. Bu zahmetli bir süreç gibi görünüyor.

Başka bir fikir, varolan alan tanımlarını Excel'e almak, yeniden sıralamak, CSV'ye aktarmak, sonra bu alanları yeni bir Geodatabase'de oluşturmak için bir Python betiği yazmaktır. Sıfırdan yazmadan önce böyle bir senaryo var mı?

Maalesef ArcGIS Diagrammer saha yeniden siparişini desteklemiyor gibi görünüyor.

Bu işlemi basitleştirmek için kullanabileceğimiz herhangi bir komut dosyası veya korsanlık var mı?



ArcGIS Diagrammer'daki alanları yeniden sıralayabilirsiniz, sadece alan koleksiyonuna gidin ve alanı seçin ve yukarı / aşağı oklara basın.
blah238

@ blah238 Eğer bunu bir cevap olarak ekleyebilirsen, kabul edeceğim. Adamlarından biri yazdığı için çok iyi çalışıyor ve Esri tarafından yarı destekleniyor
Stephen Lead

Yanıtlar:


6

Yorumlarda belirtildiği gibi, alanları ArcGIS Diagrammer ile yeniden sıralayabilirsiniz. Bu yanıta daha genel bir adım adım gönderdim: Bir özellik sınıfı alanının length özelliği nasıl güncellenir?


Teşekkürler. ArcGIS Diyagramı biraz kararsızdır - tam olarak çökmez, ancak bazen ev yapımı hisseder. Ancak şemayı değiştirmek için en iyi seçenek gibi görünüyor.
Stephen Lead

Şimdi 10.0'u geçebilir. ArcGIS 10.1 ile Win7 x64'te benim için tamam yüklendi, ancak çalıştırıldığında Just In Time derleme hatalarını ve çıkmalarını söyler.
matt wilkie

1
ArcGIS Diagrammer'ın artık ArcGIS 10.3 veya üstü ile çalışmadığını unutmamak gerekir.
Harita Erkek

7

Başka bir soruya cevap olarak , PULLITEMS (eski yeniden sıralama alanları için eski konuşma) eşdeğerini yapmak için Özet İstatistikleri kullanmanın mümkün olduğunu söyledim. Bu teknik yalnızca Tablolarda iyi çalışır, ancak şimdi hem özellik sınıflarında hem de tabloda çalıştığını söyleyen başka bir komut dosyası vardır.

Ben de tavsiye ederim Cevap için kalıcı olun Sorgu Masa aracı ArcGIS Yeniden sipariş alanlar? esinlenerek @klewis 'Buna cevap ver.


6

ET Geowizard'ların ücretsiz sürümü bunu yapacak. Temel -> Şekilleri sırala. Ben sadece bir v10 Dosya Geodatabase üzerinde test ve çalışıyor. Yine de yeni bir özellik sınıfı oluşturmak zorunda.


5

Diagramer için Visio'nuz yoksa - Buradaki diğer tüm yanıtlar herhangi bir birleşimi kırar. Benim durumumda bu işe yaradı buldum:

  1. Arccatalog (Export - XML) kullanarak tüm db için şemayı dışa aktar - Verileri vermedim, sadece şema
  2. Xml'yi biçimlendirmek için bazı çevrimiçi Pretty Print hizmetlerini kullanma XML dosyasını bir metin düzenleyicisinde açın ve alanları istediğiniz gibi yeniden sıralayın
  3. Yeni bir veritabanı oluşturmak için şemayı yeniden içe aktarın
  4. Özgün veritabanını kaynak olarak kullanarak verileri yeniden yükleme

Ben orijinal soru "zahmetli bir süreç" olarak reddetti - ama aslında böyle koyduğunuzda, çok kötü değil;)
Stephen Lead

4

Alanları yeniden sıralamak için Katmanlar ve Tablo Görünümleri araç kümesinden MakeTableQuery'yi çalıştırmanız gerekir. Dokümanlardan, Alan listesindeki alanların sırası, alanların çıktı katmanında veya tablo görünümünde görünme sırasını gösterir. Ayrıca, alan listesine bir Şekil sütunu eklenirse sonuç bir katman olur; aksi takdirde tablo görünümüdür. Bu, herhangi bir lisans düzeyinde kullanılabilir.


Sorgu Tablosu Yap aracının alanları yeniden sıralaması için bir yol göremediğim için bunu test edip etmediğinizi merak ediyorum - araç iletişim kutusu sadece alanların dahil edilip edilmeyeceğine karar vermenize izin veriyor gibi görünüyor.
PolyGeo

Evet, bunu bir Python betiğinden test ettim. Araç, birden çok tabloyu birleştirmek veya birleştirmek için tasarlanmış gibi görünüyor. Ancak, tek bir özellik sınıfı girerek yeniden sıralanan alanlarla yeni bir tablo veya özellik sınıfı oluşturabiliyorum.
klewis

Ben burada yeni bir soru gönderdi bir şey eksik olmalı gis.stackexchange.com/questions/32310/… - belki benim için orada adımları ayrıntılı, lütfen?
PolyGeo

Sadece yeni soruya sadece MakeQueryTable'ı değil, aynı zamanda CopyFeatures ve Python Penceresine Kopyalama Python Snippet'i olarak kullandığım bazı küçük düzenleme komutlarını kullanarak cevap verdim.
PolyGeo

4

İle Merge Aracı alanları kalıcı olarak kolayca yeniden sıralayabilirsiniz. Tablolar ve özellik sınıflarıyla çalışır. Yeniden sıralama, python komut dosyası aracılığıyla ve hatta Araç iletişim kutusu ile yapılabilir (Bir alanı kaldırarak ve iletişim kutusuna yeniden ekleyerek). Her ne kadar diyalog yoluyla yeniden sipariş vermek mükemmel bir yaklaşım değildir.

Birleştirme aracını bir kez kullanmanız ve ardından Python Snippet Olarak Kopyala'yı kullanmanız önerilir. ve ardından alan siparişlerini manuel olarak değiştirmeniz ve python kodunu python pencerelerine yapıştırmanız .

Alanları yeniden sıralamak için Birleştirme Aracı'nı kullanan bir python betiği ( buradan kopyalanır )

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

KULLANIM:

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

Bu, son olarak taşımak istediğim bir alanı ilk sildiğim, yeni bir alan ekledikten sonra Giriş Alanı Ekle'yi yaptığım araç iletişim kutusundan iyi çalışıyor gibi görünüyor. Bununla birlikte, dediğin gibi, daha karmaşık yeniden sıralama gerektiğinde Python'da kullanmak araçtan daha kolaydır.
PolyGeo

3

Esri'den X-Ray adlı alanları yeniden düzenlemek için yapılmış bir araç içeren ücretsiz bir uzantı var . Bizim için harika çalıştı ve kullanımı kolaydır.

ArcCatalog için X-Ray eklentisi, coğrafi veritabanı tasarımlarınızı geliştirmek, iyileştirmek ve belgelemek için kullanılabilir


GIS Stack Exchange'e hoş geldiniz ve bahşiş için teşekkürler. Cevabınızı Stack Exchange standartlarına daha uygun olacak şekilde yeniden biçimlendirdim - ürün hakkında bir bağlantı ve bir teklif ekledim ve yabancı bilgileri kaldırdım.
Stephen Lead

2

Şimdiye kadar alanları yeniden adlandırmak, varsayılan sıralarını değiştirmek ve diğer bazı şeyleri bulmak için bulduğum en verimli yöntem Microsoft Access kullanmaktır:

  1. Yeni Kişisel Coğrafi Veritabanı oluşturun
  2. Özellik sınıfını veya tabloyu p-gdb'ye sürükleyip bırakın
  3. Access'te aç ve:
    • Başlangıçta tüm tabloları yok sayarak tabloları GDB_tablo tasarım modunda açın
    • yeniden adlandırma, siparişi değiştirme, yeni ekleme vb.
  4. Gerçek operasyonel gdb'nize sürükleyip bırakın

Notlar:

Daima yedekleyin. Doğrudan dahili GDB yapısı ile uğraşıyorsunuz ve DB'yi ArcGIS'in artık nasıl okuyacağını bilmediği bir noktaya getirerek verilerinizi kolayca çöpe atabilirsiniz.

ArcGIS tarafında alan adları için kullanılamayan bazı ayrılmış anahtar kelimeler var. Access, bu anahtar kelimelerle alanları mutlu bir şekilde oluşturur veya yeniden adlandırır, ancak bunları geri getirdiğinizde otomatik olarak bir alt çizgi eklenir. Böylece Currentolur Current_. Ayrıca kısmen çakışan Access'e ayrılmış anahtar kelimeleri de not edin .

Kişisel GDB'nin 2GB dosya boyutu sınırı olduğundan, GDB içindeki tüm tabloların ve özellik sınıflarının toplam boyutu bunu aşamaz.

Küçük projeler için her zaman kişisel GDB'leri kullanmak cazip gelebilir (<2GB). Yapma. Performans uçsuz bucaksızdır ve Access'in SQL sözdiziminde Etiket İfadelerini, Tanım Sorgularını vb. Taşınabilir olmayan küçük değişiklikler vardır.


Tabii ki, bu yöntem resmi olarak onaylanmamıştır ve bir şeyler ters giderse Teknik Destek'i
Stephen Lead


2

Bu Python Script bunu yapmak için bir tür "koli bandı" yöntemidir. 20 alanla sınırlıdır, ancak verilerinizin sahip olduğu birçok alanda çalışmasına izin vermek için kolayca eklenebilir.

Komut dosyası bir komut dosyası aracı olarak çalışacak şekilde tasarlanmıştır, bu nedenle ArcCatalog içinde parametreleri ayarlamanız gerekir.

Parametreler aşağıdaki gibi olmalıdır:

  • InputFC - Özellik Sınıfı
  • Çıktı Konumu - Çalışma Alanı
  • Çıktı Adı - Dize
  • Field1 - Alan
  • Field2 - Alan
  • Field20'ye kadar

Kod:

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

Bunun bunu yapmanın en güzel ya da en etkili yolu olmadığını anlıyorum ama aslında oldukça güzel çalışıyor ve yazmak için sadece yarım saat sürdü. Alanları her zaman yeniden sıralamam gerektiğinde kullanıyorum ve Diyagramcı veya Microsoft Access gerektirmiyor. Tabii ki maksimum alan sayısı bir sorun olabilir, ancak yine kod içinde özelleştirilebilir.

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.