6 votos

Obtener valor de los metadatos en Python script para el atributo

Estoy trabajando en una pitón script para crear algunas clases de características a partir de tablas dbf. Como parte del script me gustaría sacar dos valores (FGDC "fecha de publicación" y ArcGIS Spatial Reference ArcGIS Coordiante System "Projection") de los metadatos de una clase de característica de referencia lineal y escribirlos en un campo de la clase de característica. He mirado algunos de los módulos que analizan archivos .xml, pero la clase de característica de referencia lineal no tiene un .xml independiente. A continuación está la parte del script donde me gustaría tirar y calcular los valores.

#Pull COORDSYS and MAPVERSION from RCI Metadata

    #Calculate Values for Coordsys, Mapsource, MapVersion, publish date, CAR xfer date, coord xfer date
    today = datetime.date.today()
    pub_date = today.strftime("%m/%d/%y")
    arcpy.CalculateField_management(input,"COORDSYS",XXX,"PYTHON_9.3")
    arcpy.CalculateField_management(input,"MAPSOURCE",mapsource_ON,"PYTHON_9.3")
    arcpy.CalculateField_management(input,"MAPVERSION",XXX,"PYTHON_9.3")
    arcpy.CalculateField_management(input,"DTPUBLISHE",pub_date,"PYTHON_9.3")
    arcpy.CalculateField_management(input,"DTCARXTRCT",pulldate,"PYTHON_9.3")
    arcpy.CalculateField_management(input,"DTCOORDXTR",pub_date,"PYTHON_9.3")

Gracias por cualquier ayuda que pueda proporcionar.

4voto

Mirko Puntos 78

¿crear un archivo .xml independiente para la clase de características es una opción? ... por ejemplo un XML temporal, que se borra extrayendo la información que se necesita?

Si es así, puede que quieras mirar el comando arcpy "XSLTransform_conversion". Para familiarizarte con él, mira en ArcToolbox: Herramientas de conversión > Conjunto de herramientas de metadatos. El comando arcpy sólo llama a esta herramienta.

Esencialmente, esta herramienta permite convertir los metadatos de un formato a otro. En tu caso, podrías exponer los metadatos de la clase de características en un archivo XML utilizando el parámetro de la herramienta "hoja XSL" llamado "copia exacta de". Estas hojas XSL están disponibles en su carpeta de instalación de ArcGIS, en .. \Metadata\Stylesheets\gpTools. Como dice, esta hoja XSL en particular NO hará NINGUNA modificación al contenido de los metadatos de la clase de características, sólo lo exportará a un archivo XML.

La ayuda de ESRI en esta herramienta está disponible aquí y aquí es una ayuda adicional en el conjunto de herramientas de metadatos.

4voto

porpor Puntos 33

Aquí está el código que finalmente hizo el truco. Este es el mismo método propuesto por Helene arriba. Cualquier comentario sobre cómo mejorarlo es bienvenido.

    #Create XML from RCI Basemap Metadata
    translator = "C:\Program Files (x86)\ArcGIS\Desktop10.2\Metadata\Translator\ARCGIS2FGDC.xml"
    arcpy.ExportMetadata_conversion(roads,translator,arcpy.env.workspace+"\\"+"roads_Export.xml")

    #Get MAPVERSION from RCI Basemap
    from xml.etree.ElementTree import ElementTree
    from xml.etree.ElementTree import Element, SubElement

    xmlfile = arcpy.env.workspace+"\\"+"roads_Export.xml"

    tree = ElementTree()
    tree.parse(xmlfile)

    spot = tree.find("idinfo/citation/citeinfo/pubdate")
    pub_date = spot.text

    year = pub_date[0:4]
    month = pub_date[4:6]
    month_num = int(month)

    if 0 < month_num < 3:
        version = year+"Q1"
    elif 3 < month_num < 6:
        version = year+"Q2"
    elif 6 < month_num < 9:
        version = year+"Q3"
    elif 9 < month_num < 12:
        version = year+"Q4"

    #Calculate Values for Coordsys, Mapsource, MapVersion, publish date, CAR xfer date, coord xfer date

    arcpy.CalculateField_management(input,"MAPVERSION",'"{0}"'.format(version),"PYTHON")

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