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.
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" 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 )) |
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
Comentarios
Publicar un comentario