1 votos

Exportación de archivos adjuntos mediante script de Python para modificar el nombre del archivo [ArcGIS Desktop 10.8.1]

Estoy tratando de exportar archivos adjuntos de fotos de un conjunto de datos de cruces de ferrocarril tomados con ArcGIS Collector, y me gustaría personalizar la convención de nomenclatura para que el nombre del archivo contenga el número de cruce. Me encontré con un script de @Midavalo que logra esto, sin embargo los archivos exportados ya no tienen formato JPEG . No tengo casi ningún conocimiento de Python.

Tabla de características:

enter image description here

Tabla de anexos:

enter image description here

Escritura modificada:

import arcpy, os
from collections import defaultdict

inFC = r'C:\Users\Desktop\scratch\CustomExportAttachments\CopyFeatures.gdb\Crossings'
inTable = r'C:\Users\Desktop\scratch\CustomExportAttachments\CopyFeatures.gdb\Crossings__ATTACH'
fileLocation = r'C:\Users\Desktop\scratch\CustomExportAttachments\Attachments'

# Get dictionary of ObjectID and associated field value
myFeatures = dict()
with arcpy.da.SearchCursor(inFC, ['OID@', 'CROSSING']) as cursor:
    for row in cursor:
        myFeatures[row[0]] = row[1]

# Create dictionary to count usage of the field value (to increment files)
valueUsage = defaultdict(int)

# Loop through attachments, incrementing field value usage, and using that
# increment value in the filename
with arcpy.da.SearchCursor(inTable, ['ATTACHMENTID', 'ATT_NAME', 'REL_OBJECTID']) as cursor:
    for row in cursor:
        if row[3] in myFeatures:
            attachment = row[0]
            fieldValue = myFeatures[row[3]] # Value of specified field in feature class
            valueUsage[fieldValue] += 1 # Increment value
            filename = "{0}_{1}".format(fieldValue, valueUsage[fieldValue]) # filename = FieldValue_1
            output = os.path.join(fileLocation, filename) # Create output filepath
            open(output, 'wb').write(attachment.tobytes()) # Output attachment to file

Carpeta de salida:

enter image description here

¿Por qué las fotos adjuntas se exportan como "Archivo" en lugar de JPEG, y cómo debo cambiar el script para que esto ocurra?

3voto

Galbrezu Puntos 142

La mejor suposición: el filename es sólo el nombre, sin extensión. Probablemente podrías hacer una adición rápida en el código si sabes que todos los archivos son JPEG.

Cambia la penúltima línea por:

output = os.path.join(fileLocation, filename +".jpg")

Esto debería recuperar su extensión JPEG. Obviamente esta solución podría ser un problema si tienes diferentes tipos de archivos que estás exportando.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X