ArcGIS Desktop을 사용하여 파일 지오 데이터베이스에서 필드를 영구적으로 재정렬 하시겠습니까?


18

ArcGIS 10.0을 사용하면 파일 지오 데이터베이스에서 필드를 재정렬하고 순서가 데이터베이스에 유지됩니까?

XML로 내보내고 필드 순서를 변경하기 위해 구문 분석기를 작성한 다음 XML에서 새 데이터베이스를 다시 작성하는 것을 고려했습니다. 이것은 힘든 과정처럼 보입니다.

또 다른 아이디어는 기존 필드 정의를 Excel로 가져 와서 재정렬하고 CSV로 내 보낸 다음 Python 스크립트를 작성하여 새 지오 데이터베이스에 이러한 필드를 만드는 것입니다. 처음부터 작성하기 전에 이와 같은 스크립트가 존재합니까?

불행히도 ArcGIS Diagrammer는 필드 재정렬을 지원하지 않는 것 같습니다.

이 프로세스를 단순화하는 데 사용할 수있는 스크립트 나 해킹이 있습니까?


8
당신은에서 투표 한 희망 ideas.arcgis.com/ideaView?id=0873000000087wgAAA :-)
PolyGeo

ArcGIS Diagrammer에서 필드를 재정렬 할 수 있습니다. 필드 컬렉션으로 이동하여 필드를 선택하고 위 / 아래 화살표를 누르십시오.
blah238

@ blah238 답변으로 추가 할 수 있으면 수락하겠습니다. Esri는 이들 중 한 명이 썼기 때문에 매우 잘 작동하고 반 지원됩니다
Stephen Lead

1
여기 비디오 데모가 있습니다 -maps.esri.com/Diagrammer/reorderfields.htm
Geog

답변:


6

주석에서 언급했듯이 ArcGIS Diagrammer를 사용하여 필드를 재정렬 할 수 있습니다. 이 답변에 더 일반적인 단계를 게시했습니다 . 피쳐 클래스 필드의 길이 속성을 업데이트하는 방법은 무엇입니까?


감사. ArcGIS Diagrammer는 약간 불안정하여 정확하게 충돌하지는 않지만 때로는 집에서 만든 느낌입니다. 그러나 스키마를 수정하는 것이 가장 좋은 옵션 인 것 같습니다.
Stephen Lead

10.0 이후에 작동 할 수 있습니다. ArcGIS 10.1과 함께 Win7 x64에 설치되어 있지만 실행하면 Just In Time 컴파일 오류가 발생하고 종료됩니다.
matt wilkie 21시 33 분

1
ArcGIS Diagrammer는 더 이상 ArcGIS 10.3 이상에서 작동하지 않습니다.
Map Man

7

다른 질문에 대한 대답 나는 그것을 사용할 수 있다고 말했다 요약 통계를 PULLITEMS에 해당하는 (재주문 필드의 옛 발언을) 할 수 있습니다. 이 기술 은 테이블에서만 잘 작동하지만 기능 클래스와 테이블 모두에서 작동한다고 말하는 또 다른 스크립트가 있습니다.

나는 또한 추천 할 것입니다 대답영구적으로 확인 쿼리 테이블 도구는 ArcGIS를 사용하여 다시 주문 필드를? @klewis에서 영감을 얻었습니다.


6

ET Geowizards 무료 버전이이를 수행합니다. 기본-> 도형 정렬. 방금 v10 파일 지오 데이터베이스에서 테스트했으며 작동합니다. 그래도 새로운 기능 클래스를 작성해야합니다.


5

Visioer for Diagramer가없는 경우 여기에있는 다른 모든 답변은 조인을 중단합니다. 내 경우에는 이것이 잘 작동한다는 것을 알았습니다.

  1. Arccatalog (Export-XML)를 사용하여 전체 DB에 대한 스키마 내보내기-데이터를 내 보내지 않았습니다. 스키마 만
  2. 온라인 Pretty Print 서비스를 사용하여 XML 형식 지정 텍스트 편집기에서 XML 파일을 열고 원하는대로 필드를 다시 정렬하십시오.
  3. 스키마를 다시 가져 와서 새 데이터베이스를 작성하십시오.
  4. 원본 데이터베이스를 소스로 사용하여 데이터를 다시로드하십시오.

나는 원래의 질문에서 "노동적인 과정"으로 일축했다. 그러나 실제로 당신이 그것을 그렇게했을 때, 그것은 나쁘게 들리지 않는다;)
Stephen Lead

4

필드를 재정렬하려면 레이어 및 테이블 뷰 도구 세트에서 MakeTableQuery를 실행해야합니다. 설명서에서 필드 목록의 필드 순서는 출력 레이어 또는 테이블보기에 필드가 표시되는 순서를 나타냅니다. 또한 셰이프 열이 필드 목록에 추가되면 결과는 레이어입니다. 그렇지 않으면 테이블보기입니다. 모든 라이센스 수준에서 사용할 수 있습니다.


쿼리 테이블 만들기 도구를 사용하여 필드를 다시 정렬하는 방법을 볼 수 없기 때문에 이것을 테스트했는지 궁금합니다. 도구 대화 상자는 필드를 포함할지 여부를 결정할 수있는 것처럼 보입니다.
PolyGeo

예, 파이썬 스크립트에서 이것을 테스트했습니다. 이 도구는 여러 테이블을 결합하거나 조인하도록 설계된 것 같습니다. 그러나 단일 피쳐 클래스를 입력하여 재정렬 된 필드로 새 테이블 또는 피쳐 클래스를 작성할 수 있습니다.
klewis

나는 무언가를 놓치고 있어야하므로 여기 gis.stackexchange.com/questions/32310/에 새로운 질문을 게시했습니다 .-저를 위해 단계를 자세히 설명해 주시겠습니까?
PolyGeo

방금 MakeQueryTable뿐만 아니라 CopyFeatures 및 Python Asnip Copy를 Python 창에 사용하여 얻은 약간의 코드 편집을 사용하여 새 질문에 대답했습니다.
PolyGeo

4

로 다음 병합 도구 , 당신은 쉽게 재주문 필드를 영구적으로 할 수 있습니다. 테이블 및 기능 클래스와 함께 작동합니다. 재정렬은 파이썬 스크립트를 통해 그리고 도구 대화 상자를 사용하여 수행 할 수 있습니다 (필드를 제거하고 대화 상자에 다시 추가하여). 대화 상자를 통한 순서 변경은 완벽한 방법은 아닙니다.

병합 도구를 한 번 사용한 다음 Python Snippet으로 복사 를 사용한 다음 필드 순서를 수동으로 변경 한 다음 Python 코드를 Python 창에 붙여 넣는 것이 좋습니다.

병합 도구를 사용하여 필드를 재정렬하는 Python 스크립트는 다음과 같습니다 ( 여기 에서 복사 ).

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)

마지막으로 이동하려는 필드를 삭제하고 새 필드를 추가 한 다음 입력 필드 추가를 수행 한 도구 대화 상자에서 잘 작동하는 것 같습니다. 그러나 말했듯이 더 복잡한 재정렬이 필요한 경우 도구를 사용하는 것보다 Python에서 사용하는 것이 더 쉽습니다.
PolyGeo

3

Esri에서 X-Ray 라고하는 무료 확장 기능이 있으며 여기에는 필드 순서를 변경하기위한 도구가 포함되어 있습니다. 우리를 위해 큰 일을하고 사용하기 쉽습니다.

ArcCatalog 용 X-Ray 애드 인을 사용하여 지오 데이터베이스 디자인을 개발, 개선 및 문서화 할 수 있습니다.


GIS Stack Exchange에 오신 것을 환영합니다. 팁을 주셔서 감사합니다. 귀하의 답변을 Stack Exchange 표준에 맞게 수정했습니다. 제품에 대한 링크와 견적을 포함 시켰으며 외부 정보를 제거했습니다.
Stephen Lead

2

지금까지 필자가 필드 이름을 바꾸고 기본 순서를 변경하는 가장 효율적인 방법은 Microsoft Access를 사용하는 것입니다.

  1. 새로운 개인 지오 데이터베이스 생성
  2. 피처 클래스 또는 테이블을 p-gdb로 드래그 앤 드롭
  3. Access에서 열고 :
    • 시작하는 모든 테이블을 무시하고 테이블 GDB_디자인 모드에서 테이블 열기
    • 이름 변경, 순서 변경, 새로 추가 등
  4. 실제 운영 gdb로 드래그 앤 드롭

노트:

항상 전류를 백업하십시오. 내부 GDB 구조를 직접 엉망으로 만들고 ArcGIS가 더 이상 읽지 않는 방법으로 DB를 변경하여 데이터를 쉽게 휴지통에 버릴 수 있습니다.

몇 가지가 있습니다 예약 된 키워드 필드 이름을 사용할 수 없습니다는 ArcGIS 측이. Access는 이러한 키워드를 사용하여 행복하게 필드를 만들거나 이름을 바꾸지 만 다시 가져 오면 자동으로 밑줄이 추가됩니다. 이렇게 Current됩니다 Current_. 또한 부분적으로 겹치는 Access 예약 키워드가 있습니다.

개인 GDB의 파일 크기 제한은 2GB이므로 GDB 내의 모든 테이블 및 기능 클래스의 총 크기는이를 초과 할 수 없습니다.

소규모 프로젝트 (<2GB)에는 항상 개인 GDB를 사용하는 것이 좋습니다. 하지마 레이블 표현식, 정의 쿼리 등을 이식 할 수 없게 만드는 Access의 SQL 구문에는 약간의 성능 차이가 있습니다.


물론,이 방법은 공식적으로 승인되지 않았으며, 문제가 발생하면 기술 지원 부서에 연락 할 수 없습니다.)
Stephen Lead


2

이 파이썬 스크립트는 이것을하기위한 일종의 "덕트 테이프"방법입니다. 필드는 20 개로 제한되어 있지만 데이터가있는 많은 필드에서 실행할 수 있도록 쉽게 추가 할 수 있습니다.

스크립트는 스크립트 도구로 실행되도록 설계되었으므로 ArcCatalog 내에서 매개 변수를 설정해야합니다.

매개 변수는 다음과 같아야합니다.

  • InputFC-기능 클래스
  • 출력 위치-작업 공간
  • 출력 이름-문자열
  • Field1-필드
  • Field2-필드
  • Field20에 이르는 모든 길

암호:

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

나는 이것이 가장 예쁘거나 가장 효율적인 방법이 아니라는 것을 알고 있지만 실제로는 꽤 잘 작동하며 작성하는 데 약 30 분 밖에 걸리지 않았습니다. 필자는 필드를 재정렬해야 할 때 항상 사용하며 Diagrammer 또는 Microsoft Access가 필요하지 않습니다. 물론 최대 필드 수는 문제가 될 수 있지만 다시 스크립트 내에서 사용자 정의 할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.