CÓMO

Establecer una zona horaria y especificar el horario de verano al publicar una capa de entidades con ArcPy

Last Published: December 29, 2020

Resumen

Al publicar una capa de entidades desde ArcGIS Pro, es posible establecer una zona horaria y especificar el horario de verano con ArcPy modificando las propiedades de configuración para la publicación.

Procedimiento

  1. Importe los módulos necesarios.
import arcpy import os import xml.dom.minidom as DOM import codecs import xml.etree.ElementTree as ET
  1. Defina la función para habilitar las extensiones necesarias y lea el archivo de borrador de definición de servicio (.sddraft). Busque todos los elementos denominados TypeName para definir los nombres de la extensión de objeto de servidor (SOE), habilitar el acceso a entidades y escribir en el archivo .sddraft.
def enable_extensions(sddraftPath, soe): doc = DOM.parse(sddraftPath)     typeNames = doc.getElementsByTagName('TypeName') for typeName in typeNames: if typeName.firstChild.data == soe: extension = typeName.parentNode for extElement in extension.childNodes: if extElement.tagName == 'Enabled': extElement.firstChild.data = 'true' f = open(sddraftPath, 'w') doc.writexml(f) f.close()
  1. Defina la función para configurar las propiedades de una extensión y lea el archivo .sddraft. La SOE es la extensión a la que se deben agregar las propiedades. Busque todos los elementos denominados TypeName para definir los nombres de la extensión de objeto de servidor (SOE), habilitar el acceso a entidades y escribir en el archivo .sddraft.
def enable_configproperties(sddraftPath, soe, property_set): doc = DOM.parse(sddraftPath)   typeNames = doc.getElementsByTagName('TypeName') for typeName in typeNames:          if typeName.firstChild.data == soe: extension = typeName.parentNode              # prp = extension.childNodes.getElementsByTagNameNS('PropertyArray') for extElement in extension.childNodes:                  if extElement.tagName == 'Definition': for definition in extElement.childNodes:           if definition.tagName == 'ConfigurationProperties': for config_prop in definition.childNodes:               if config_prop.tagName == 'PropertyArray': for prop in property_set: prop_set = doc.createElement("PropertySetProperty") attr = doc.createAttribute("xsi:type") attr.value = "typens:PropertySetProperty" prop_set.setAttributeNode(attr) prop_key = doc.createElement("Key") txt = doc.createTextNode(prop["key"]) prop_key.appendChild(txt) prop_set.appendChild(prop_key) prop_value = doc.createElement("Value") attr = doc.createAttribute("xsi:type") attr.value = "xs:string" prop_value.setAttributeNode(attr) txt = doc.createTextNode(prop["value"]) prop_value.appendChild(txt) prop_set.appendChild(prop_value) config_prop.appendChild(prop_set)                                          f = open(sddraftPath, 'w') doc.writexml(f) f.close()
  1. Conéctese al portal especificado y defina las credenciales de inicio de sesión. Publicar un mapa en el proyecto de ArcGIS actual (.aprx). Defina la zona horaria y especifique el horario de verano. Habilite las extensiones en el servidor de mapas y publique la capa de entidades.
Nota: Puede haber un error al conectarse al portal a través de arcpy.SignInToPortal(). Consulte Problema: No se puede iniciar sesión en ArcGIS Online con ArcPy para obtener más información.
if __name__ == "__main__": arcpy.SignInToPortal("https://www.arcgis.com/", "username", "password") # aprx = arcpy.mp.ArcGISProject("CURRENT") aprx = arcpy.mp.ArcGISProject(r"aprx path") m = aprx.listMaps('<Map_Name>')[0] # si se utiliza para compartir capas seleccionadas # layers = m.listLayers() # lyr = layers[0] name = "service name" in_server = "https://server.domain.com:6443/arcgis/" sddraft = m.getWebLayerSharingDraft('FEDERATED_SERVER', 'MAP_IMAGE', name) sddraft.federatedServerUrl = in_server sddraft.copyDataToServer = False sddraft.exportToSDDraft("location and name of sddraft") #The desired timezone can be in UTC or PDT property_set = [{ "key": "dateFieldsRespectsDayLightSavingTime", "value": "true" }, { "key": "dateFieldsTimezoneID", "value": "<desired_timezone>" }] # Para establecer la zona horaria del servicio de entidades alojado, soe = "FeatureServer" enable_configproperties(sddraftPath, soe="MapServer", property_set=property_set)   # Se habilitan extensiones en el servidor de mapas   enable_extensions(sddraftPath, "FeatureServer") # enable_extensions(sddraftPath, "VersionManagementServer") # enable_extensions(sddraftPath, "LRServer")   print("Start Staging")   arcpy.StageService_server("location and name of sddraft", "location and name of sd")   print("Start Uploadinb")   arcpy.UploadServiceDefinition_server("location and name of sd", in_server)   print("Finish publishing")

Id. de artículo: 000024162

Obtenga soporte con IA

Resuelva su problema rápidamente con el chatbot de inteligencia artificial de soporte de Esri.

Empieza a chatear ahora

Información relacionada

Descubrir más sobre este tema

Obtener ayuda de expertos en ArcGIS

Contactar con el soporte técnico

Empieza a chatear ahora

Ir a opciones de descarga