Actualice las características de sus servicios alojados con ArcGIS Pro y la API de ArcGIS para Python



 

 

 

Actualice las características de sus servicios alojados con ArcGIS Pro y la API de ArcGIS para Python



Por Kevin Hibma

Muchas organizaciones comparten mapas de forma pública con ArcGIS Online y han definido un proceso para actualizar y sincronizar las capas de entidades locales de sus datos. Uno de los métodos está bien definido utilizando ArcMap; selecciona la opción “sobrescribir” las capas de entidades alojadas cuando publique sus actualizaciones de nuevo en ArcGIS Online. En 2013 y 2014 hemos explicado cómo puede actualizar sus servicios de entidades alojadas de forma automática, en un tiempo prescrito, usando Python. En el espíritu de este flujo de trabajo muy popular para programar actualizaciones, este blog va a proporcionar el código Python para actualizar de forma más sencilla los servicios que utilizan ArcGIS Pro 1.4  y la nueva API de ArcGIS para Python.

Suponiendo que ya ha compartido un mapa web desde ArcGIS Pro para ArcGIS Online. Tendrá que tomar notas del nombre de usuario y la contraseña de la cuenta de editor, el nombre del servicio, así como el archivo de proyecto original (.aprx). Cuando se publica un mapa web desde ArcGIS Pro, las capas subyacentes característica pueden tener _WFL1 añadido al nombre para asegurar que están dentro de una organización. Investigue su contenido alojado y esté seguro de la definición de servicio (.sd) y la capa de nombres de características antes de proceder.





El primer paso es instalar la API de ArcGIS para Python; desde de ArcGIS Pro, busca y agrega el paquete de ArcGIS usando el Gestor de paquetes de Python. Como alternativa, abra un símbolo del sistema de Python: Inicio> ArcGIS> ArcGIS Pro> Python Command Prompt y utilice el siguiente comando, “estoy de acuerdo al actualizar el paquete” (si es necesario):




conda install -c esri arcgis 
Después de instalar la API de ArcGIS Python es necesario definir las etapas de su proceso de actualización. Por lo general, esto implicará a uno o más autores que trabajan en las bases de datos locales que fueron compartidos con ArcGIS Online. El documento de origen y los datos serán utilizados para crear un archivo de definición de servicio (.sd) usando Python. En un tiempo prescrito, tal vez todas las noches a la medianoche, el archivo .sd local se cargará en ArcGIS Online con sus nuevos datos donde serán utilizados para sustituir el servicio alojado.



Copie el siguiente código y guárdelo localmente como un archivo de Python (updatewebmap.py). Este código .sd crea el archivo y carga/publica en ArcGIS Online. Un número de variables tendrá que ser ajustada dentro del script; la ruta de acceso al proyecto, el nombre del servicio de nombre de usuario, contraseña y opciones de uso compartido de metadatos cuando se crea el archivo.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
import arcpy
import os, sys
from arcgis.gis import GIS
### Start setting variables
# Set the path to the project
prjPath = r"C:\PROJECTS\NightlyUpdates\NightlyUpdates.aprx"
# Update the following variables to match:
#  Feature service/SD name in arcgis.com, user/password of the owner account
sd_fs_name = "MyPublicMap"
portal = "http://www.arcgis.com" # Can also reference a local portal
user = "UserName"
password = "p@sswOrd"
# Set sharing options
shrOrg = True
shrEveryone = False
shrGroups = ""
### End setting variables
# Local paths to create temporary content
relPath = sys.path[0]
sddraft = os.path.join(relPath, "WebUpdate.sddraft")
sd = os.path.join(relPath, "WebUpdate.sd")
# Create a new SDDraft and stage to SD
print("Creating SD file")
arcpy.env.overwriteOutput = True
prj = arcpy.mp.ArcGISProject(prjPath)
mp = prj.listMaps()[0]
arcpy.mp.CreateWebLayerSDDraft(mp, sddraft, sd_fs_name, 'MY_HOSTED_SERVICES', 'FEATURE_ACCESS','', True, True)
arcpy.StageService_server(sddraft, sd)
print("Connecting to {}".format(portal))
gis = GIS(portal, user, password)
# Find the SD, update it, publish /w overwrite and set sharing and metadata
print("Search for original SD on portal...")
sdItem = gis.content.search("{} AND owner:{}".format(sd_fs_name, user), item_type="Service Definition")[0]
print("Found SD: {}, ID: {} \n Uploading and overwriting...".format(sdItem.title, sdItem.id))
sdItem.update(data=sd)
print("Overwriting existing feature service...")
fs = sdItem.publish(overwrite=True)
if shrOrg or shrEveryone or shrGroups:
  print("Setting sharing options...")
  fs.share(org=shrOrg, everyone=shrEveryone, groups=shrGroups)
print("Finished updating: {} - ID: {}".format(fs.title, fs.id))
Puede ejecutar el código desde la línea de comandos con el siguiente comando.




C:\Program Files\ArcGIS\Pro\bin\Python\envs\arcgispro-py3\python.exe c:\mycode\updatewebmap.py




Una vez que esté seguro de que su script haya actualizado las características de su servicio alojado, puede utilizar el comando en una tarea programada. Este blog tiene más información sobre cómo crear una tarea programada.

Notas importantes:

El script de Python necesita ser ejecutado en una máquina con una licencia valida de ArcGIS Pro. El script de Python utiliza comandos de ArcPy para crear y poner en etapas los datos que se publicarán.

El script de Python asume que el primer mapa se encuentran dentro de un proyecto será el de publicar. Si está trabajando en un proyecto con más de un mapa, actualice el código Python o cree un nuevo proyecto con sólo el mapa que desea compartir.

El servicio asociado de definición (.sd) debe existir en ArcGIS Online, junto con las capas de entidades alojados y un mapa web. Si cualquiera de estos artículos falta, que necesita para publicar un mapa web desde ArcGIS Pro independiente de este script antes de implementar el flujo de trabajo al día.

La API de ArcGIS para Python proporciona muchas opciones y configuraciones para trabajar con su contenido alojado. Explorare las opciones que publicamos y contenidos.

Lea el artículo orginal | Para más información sobre Python Script contacte a uno de nuestros ejecutivos | Visítenos en www.sigsa.info

Entradas populares