1 votos

Publicar geodatabase de archivos en ArcGIS Online mediante la API de ArcGIS para Python

Leo en la documentación que debería ser posible publicar una geodatabase de archivo local como capa de características alojada en ArcGIS Online. He estado tratando diferentes cosas, pero ese trabajo sigue fallando.

Estoy utilizando el siguiente código:

# Publish zipped fgdb to AGOL

fgdb = r"C:\Users\path\to\zipped\geodatabase.gdb.zip"
serviceProp = {}
serviceProp['type'] = 'Feature Service'
serviceProp['url'] = "https://organisation.url.com"

fgdb1 = gis.content.add(item_properties=serviceProp, data = fgdb, folder = "New folder")
fgdb2 = fgdb1.publish(publish_parameters = {'itemID': fgdb1.id}, file_type = 'fileGeodatabase', build_initial_cache=True, overwrite=True)

¿Alguien ha conseguido hacer algo parecido? Lo mejor que puedo conseguir es una capa de características alojada vacía. El servicio de características parece estar creado, pero no hay capas de características dentro, mientras que la geodatabase de archivos locales contiene 20 capas.


error message related to comment above: using 'File Geodatabase' as a file type.

Mensaje de error relacionado con el comentario anterior: utilizando 'Geodatabase de archivos' como tipo de archivo.

5voto

Galbrezu Puntos 142

Tu código está cerca, pero hay algunas cosas que estás haciendo mal con las propiedades que estás pasando en cada llamada. Pruebe el siguiente código (específicamente la actualización de lo que está pasando por las propiedades y no pasar en el itemId a la publish ... el propio objeto sabe de qué objeto se trata, por lo que no es necesario indicárselo).

import arcgis
from arcgis.gis import GIS

g = arcgis.gis.GIS("https://www.arcgis.com", "USER", "PASSWORD")

fgdb = r"C:\temp\foo.zip"
serviceProp = {}
serviceProp['type'] = 'File Geodatabase'
serviceProp['itemType'] = "file"
serviceProp['tags'] = "sometag"

pubProps = {}
pubProps["hasStaticData"] = 'true'
pubProps["name"] ="foo"
pubProps["maxRecordCount"] = 2000
pubProps["layerInfo"] = {"capabilities":"Query"}

fgdb1 = g.content.add(item_properties=serviceProp, data = fgdb)
print(fgdb1)
>><Item title:"foo" type:File Geodatabase owner:USER>

fgdb2 = fgdb1.publish(publish_parameters = pubProps, file_type = 'filegeodatabase', overwrite=True)
print(fgdb2)
>><Item title:"foo" type:Feature Layer Collection owner:USER>

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