Teníamos una gran necesidad de una capacidad similar y terminamos construyendo una biblioteca Python general, gratuita y de código abierto para ese propósito. Puede encontrarlo en https://github.com/ucd-cws/arcpy_metadata o ejecutando un "pip install arcpy_metadata". Existe cierta documentación de las características y cómo usarla, con algunas contribuciones adicionales del World Resources Institute. Intentamos mantener las cosas relativamente Pythonic para que se integre bien y se pueda aprender rápidamente. Aquí hay un ejemplo:
import arcpy_metadata as md
import datetime
metadata = md.MetadataEditor(path_to_some_feature_class) # also has a feature_layer parameter if you're working with one, but edits get saved back to the source feature class
metadata.title = "The metadata title!"
generated_time = "This layer was generated on {0:s}".format(datetime.datetime.now().strftime("%m/%d/%Y %I:%M %p"))
metadata.purpose = "Layer represents locations of the rare Snipe."
metadata.abstract.append("generated by ___ software")
metadata.abstract.append(generated_time) # .prepend also exists
metadata.tags.add(["foo", "bar", "baz"]) # tags.extend is equivalent to maintain list semantics
metadata.finish() # save the metadata back to the original source feature class and cleanup. Without calling finish(), your edits are NOT saved!
Todavía tiene mucho que se podría agregar, pero es bastante extensible si subclasifica los elementos que ya están allí o los configura correctamente. Todavía se trata de software de calidad alfa, pero funciona y estamos contentos con él.
Para cualquiera que busque esta capacidad dentro de ArcGIS Pro, a partir de la versión 2.5, ahora incluye una API de metadatos de Python. Hay más detalles en la documentación de la clase Metadata .