4 votos

¿Comprobación de la existencia de una miniatura para un archivo especificado mediante ArcPy?

He escrito una herramienta muy simple que construye miniaturas para cada documento de mapa en una carpeta : root_fld significa carpeta raíz y rec indica si la búsqueda debe ser recursiva.

import arcpy
import os
import fnmatch
import glob

# getting list of mxds
if rec:
    # going recursive
    matches = []
    for root, dirnames, filenames in os.walk(root_fld):
        for filename in fnmatch.filter(filenames, '*.mxd'):
            matches.append(os.path.join(root, filename))
else:
    # going flat
    matches = glob.glob(os.path.join(root_fld, '*.mxd'))

# create thmb
for m in matches:
    mxd = arcpy.mapping.MapDocument(m)
    mxd.makeThumbnail()
    mxd.save()

Funciona bien pero algunas miniaturas son un dolor para crear y me gustaría que mi script filtrara e ignorara los mxds que ya tienen una miniatura :

...
if not mxd.hasThumbnail():
    mxd.makeThumbnail()
    mxd.save()

Según la documentación de la clase MapDocument ( http://resources.arcgis.com/fr/help/main/10.1/index.html#//00s30000000n000000 ), esta propiedad no parece existir. ¿Pero tal vez haya una solución?

2voto

John Kramlich Puntos 286

Como ha señalado, no hay ninguna propiedad para comprobar la existencia de una miniatura. En VBA puede comprobar la existencia de una miniatura con este sencillo código:

Public Sub test()
    Dim pMapDocument As IMapDocument
    Set pMapDocument = ThisDocument
    Dim pic As stdole.IPicture
    On Error GoTo eH
    Set pic = pMapDocument.Thumbnail
    Exit Sub
eH:
    MsgBox "Map Document has no thumbnail!", vbExclamation
End Sub

Aunque nunca lo he hecho se puede utilizar ArcObjects desde python. Es bastante útil pdf que te guía en el proceso de usar un módulo llamado comtypes . Esta es probablemente la única solución para usted.

0voto

john Puntos 11

Por lo que veo sólo se puede borrar y hacer la miniatura. Podrías hacer que borrara y luego rehiciera cada una de las miniaturas, pero probablemente ya hayas pensado en eso.

Pero según tengo entendido, algunas miniaturas no se están creando correctamente con Python, por lo que las has creado manualmente y quieres que se salten.

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