¿Es posible utilizar la biblioteca arcpy con capas de servicios de características alojadas de ArcGIS Online?
Conozco la API de ArcGIS para Python, pero la API carece de muchas de las características de arcpy.
En mi caso, me gustaría hacer un script para rellenar un nuevo campo de una capa de puntos con los atributos XY de la capa (latitud y longitud). Esto se conoce como "Calcular geometría" en ArcMap y "Añadir atributos de geometría" en ArcGIS Pro.
Necesito que esto se haga con un script, en lugar de hacerlo manualmente, porque estoy trabajando con una capa que frecuentemente tiene puntos adicionales añadidos a través de Survey123. Survey123 no registra automáticamente la longitud y latitud de los puntos añadidos a través de su formulario, y de nuevo, la API de ArcGIS para Python no cubre 'Calcular geometría', que yo sepa. Por último, preferiría no descargar la capa de ArcGIS Online, ejecutar scripts arcpy en ella localmente, y luego volver a publicar la capa, ya que esto tiende a restablecer la simbología, los nombres de los campos, etc. - pero si alguien que sabe más sobre ArcGIS Online puede ayudar con esta estrategia, que podría resolver el problema también.
El código de arcpy sería algo tan simple como
import arcpy
arcpy.env.workspace = <some file gdb>
arcpy.AddGeometryAttributes_management(<name of the layer as a string>, "POINT_X_Y_Z_M")
Pero en mi caso, en lugar de una clase de característica en un archivo de geodatabase almacenado localmente, todo lo que tengo es un servicio de característica alojado. He intentado utilizar la url del punto final REST como espacio de trabajo, pero no parece funcionar. También he tratado de extraer la capa de características en sí a través de la API de ArcGIS para Python, a continuación, utilizando que en el código arcpy:
search_result = gis.content.search(query="<my layer name>", max_items=1, item_type="Feature Service")
# or search_result = gis.content.get(<item ID of my layer>)
item = search_result[0]
item_layers = item.layers
layer_fset = item_layers[0].query()
layer_features = layer_fset.features
layer_flayer = item_layers[0]
Pero eso tampoco parece funcionar. O me estoy perdiendo algo o quizás no es posible.