Más

¿Forma vacía de ArcPy?

¿Forma vacía de ArcPy?


Tengo un pequeño script para buscar a través de una clase de característica y copiar una fila completa a otra clase de característica. Está funcionando bien, ya que obtengo todos los atributos de la fila, pero no hay geometría para la capa y no aparecen formas. Es una capa POLYLINE y todas mis shape_lengths = 0

importar arcpy de arcpy importar env arcpy.env.overwriteOutput = True env.workspace = r "C:  temp  gamma  Gamma_Survey_With_Lines.gdb" Detector_Line = env.workspace + "/ Detector_Line" GammaDetectionLocation = env.workspace + "/ GammaDetectionLocation arcpy. , "CopyofDetectorLine", "POLYLINE", Detector_Line, "DISABLED", "DISABLED", Detector_Line) cur = arcpy.InsertCursor (lyr2Explode) field = "GlobalID" cursor = arcpy.SearchCursor (Detector_Line) para la fila en el cursor: #print ( row.getValue (campo)) globalid = row.getValue (campo) arcpy.SelectLayerByAttribute_management ("GammaDetectionLocation1", "NEW_SELECTION", "SourceTrack = '" + globalid + "'") count = int (arcpy.GetCount_management ("Gamma ectionLocation1 "). getOutput (0)) if (count == 0): print count feat = cur.newRow () feat.shape = row.Shape feat.setValue (" UserID "," doodie ") cur.insertRow (feat )

Parece que los campos son idénticos entre las dos capas. Intentaría enumerar todos los campos y agregar el"[email protected]"token para asegurarse de enganchar la geometría.

Quizás algo como esto:

#Lista de campos #Obtener todos los campos flds = [f.name for f in ListFields (Detector_Line)] #Añadir forma @ token flds + = ["SHAPE @"] con arcpy.da.SearchCursor (Detector_Line, flds) como sCur: con arcpy.da.InsertCursor (lyr2Explode, flds) como iCur: para la fila en sCur: print (fila [17]) globalid = fila [17] arcpy.SelectLayerByAttribute_management ("GammaDetectionLocation1", "NEW_SELECTION", "Source globalTraidck = '" + "'") count = int (arcpy.GetCount_management ("GammaDetectionLocation1"). getOutput (0)) if (count == 0): print count iCur.insertRow (fila)

si hay problemas con el campo OID, puede modificarlo como tal:

oidFld = arcpy.Describe (Detector_Line) .OIDFieldName flds = [f.name para f en ListFields (Detector_Line) si f.name! = oidFld]…