Las capas de teselas publicadas y alojadas en tu portal admiten la visualización rápida de datasets grandes mediante un conjunto de imágenes de mapa o teselas trazadas previamente. Las teselas alojadas proporcionan contexto geográfico para las capas operacionales. Por ejemplo, puede incluir teselas de las calles de su vecindario para proporcionar una referencia visual de las señales de tráfico en la capa de entidades.
Puedes publicar una capa de teselas para alojarla en tu portal utilizando cualquiera de los métodos siguientes:
- Define un mapa en ArcMap y permite que tu portal cree las teselas.
- Define un mapa en ArcGIS Pro y permite que tu portal cree las teselas.
- Crea y comparte un paquete de teselas en ArcMap y publica en tu portal.
- Crea un paquete de teselas en ArcGIS Pro, carga y publica en tu portal.
- Crea un paquete de teselas vectoriales en ArcGIS Pro, cárgalo y permite que tu portal cree las teselas.
- Publica una capa de teselas desde una capa de entidades alojada existente y de esa manera obtendrás una capa de teselas alojada y una capa de entidades alojada.
- Crea un archivo de definición de servicio en ArcMap, cárgalo y permite que tu portal cree las teselas.
Puede crear una caché en sus teselas automáticamente al publicar o generar la caché manualmente tras la publicación. Consulte Prácticas recomendadas para las cachés de teselas si desea obtener información.
Debe tener privilegios de creación de contenido y publicación de capas de teselas alojadas para publicar un mapa o un archivo de definición de servicio como una capa de teselas alojada.
Definir y publicar un mapa en ArcMap
Desde ArcMap, puedes publicar una capa de teselas para alojarla en tu portal.
Asegúrese de que ArcGIS for Desktop está conectado al portal antes de iniciar ArcMap.
- Inicie ArcMap y abra el mapa que desea publicar.
- Inicie sesión en su portal con una cuenta de organización que tenga privilegios para crear contenido y publicar capas de teselas alojadas.
- Haz clic en Archivo > Iniciar sesión.
- Escriba su nombre de usuario y contraseña del portal y haga clic en Iniciar sesión.
- Haz clic en Archivo > Compartir como > Servicio.
- Seleccione Publicar un servicio y haga clic en Siguiente.
Precaución:
Si opta por sobrescribir el servicio, el elemento de tesela del mapa existente se elimina del portal y se crea un nuevo elemento con el mismo nombre. El nuevo elemento se crea en la carpeta raíz y se le asigna un Id. nuevo. Debe reconfigurar el uso compartido y, si es necesario, volver a mover el elemento a la carpeta donde residía antes de volver a publicarlo.
- En la lista desplegable de los tipos de conexión, elija Mis servicios alojados. A continuación, escriba un nombre para las teselas y haga clic en Continuar.
- Defina las propiedades que desee en el Editor del servicio. Aquí puede elegir lo que los usuarios pueden hacer con sus teselas y controlar de forma detallada cómo las va a exponer el servidor.
Para obtener información sobre la mejor forma de configurar las teselas para la implementación, consulte Ajustar y configurar servicios en la Ayuda de ArcGIS for Server. Algunas de las propiedades a las que se hace referencia en ese tema solo tienen validez para ArcGIS for Server y no se pueden usar cuando se trabaja con capas de teselas alojadas.
Sugerencia:
Si cierra el Editor de servicio durante esta sesión, se le solicitará que guarde su trabajo como un borrador de servicio. Los borradores de servicio le permiten volver a su trabajo de configuración del servicio después. De forma predeterminada, los borradores de servicios se guardan en la carpeta Borradores de su conexión a Mis mapas alojados. Para obtener más información, consulte Acerca de los borradores de servicios en la Ayuda de ArcGIS for Server.
- En el panel izquierdo del Editor del servicio, haga clic en Funcionalidades y, a continuación, active la opción Representación cartográfica en teselas para mostrar el mapa como capa de teselas. Active Acceso a entidades para publicar una capa de teselas con sus teselas si desea configurar ventanas emergentes para la capa cuando la agregue al visor de mapas.
Puede hacer clic en el elemento secundario Representación cartográfica en teselas situado el panel izquierdo del Editor del servicio para establecer las propiedades avanzadas relativas a lo que los clientes pueden hacer con la capa de teselas publicada.
- Haga clic en el elemento Almacenamiento en caché para establecer las propiedades de la caché de teselas. Consulte Crear una caché de mapa en la Ayuda de ArcGIS for Server para obtener información más detallada de los pasos, sin olvidar que algunas de las configuraciones avanzadas de almacenamiento en caché solo están disponibles al publicar directamente en ArcGIS for Server.
- En el panel izquierdo del Editor del servicio, haga clic en Descripción del elemento e introduzca un resumen y etiquetas para su capa de teselas. Debe introducir esta información para poder publicar. Para obtener más información, consulte la sección de descripción del elemento en Establecer las propiedades del servicio de mapas en la Ayuda de ArcGIS for Server.
- En el panel izquierdo del Editor del servicio, haga clic en Uso compartido y elija con quién va a compartir la capa de teselas alojada. De forma predeterminada, su capa de teselas alojada se comparte exclusivamente con Mi contenido, lo que significa que solo usted puede tener acceso a ella. Su capa de teselas siempre estará visible en Mi contenido, pero también puede elegir compartirla con todos, con los miembros de su organización o solo con los miembros de ciertos grupos.
- En el Editor de servicios, haga clic en Analizar .
Esta acción examina su mapa para ver si se puede publicar. Debe solucionar los Errores en la ventana Preparar antes de publicar. Si lo desea, puede arreglar las advertencias y los mensajes informativos para mejorar aún más el rendimiento y el aspecto de sus teselas publicadas. Para obtener más información acerca de cómo resolver estos problemas, consulte Analizar el recurso SIG en la Ayuda de ArcGIS for Server.
- También puede hacer clic en Vista previa en el Editor del servicio. Esto puede darle una idea de cómo se verá la capa de teselas cuando se muestre en la web.
- Después de arreglar los errores y, de forma opcional, las advertencias y los mensajes, haga clic en Publicar .
Nota:
Los datos se copian en el servidor en este punto. El tamaño de los datos y la velocidad de la conexión de red y el ancho de banda afectarán al tiempo necesario para la publicación. También debe calcular algo de tiempo para que se generen las teselas.
Una vez que la capa de teselas se haya publicado en tu portal, la verás cuando expandas el nodo Mis servicios alojados en la ventana Catálogo.
La capa de teselas alojada aparece como dos elementos independientes en la página Mi contenido del sitio web del portal: las teselas y una definición de servicio. Una definición de servicio es un archivo comprimido que contiene el mapa, sus datos y detalles sobre la forma de publicar las teselas. Una definición de servicio pueden transferirse y publicarse en cualquier equipo que ejecute ArcGIS for Server.
Definir y publicar un mapa en ArcGIS Pro
Desde un mapa de ArcGIS Pro, puedes publicar una capa de teselas para alojarla en tu portal.
También se debe tener en cuenta que los navegadores web no pueden visualizar algunos de los símbolos cartográficos más complejos que se puedan haber usado al crear el mapa. La mayoría de los tipos de símbolos están disponibles, pero en algunos casos los símbolos se pueden degradar al publicarlos. Consulte Crear servicios de entidades en la ayuda de ArcGIS for Server para obtener más detalles sobre qué símbolos se admiten y hacer los cambios necesarios en la simbología del mapa antes de publicarlo.
- Inicie ArcGIS Pro y abra el proyecto que contiene el mapa que desea publicar.
- Asegúrate de que la conexión al portal esté activa y de que hayas iniciado sesión en tu organización usando una cuenta que tenga privilegios para crear contenido y publicar capas de teselas alojadas.
- Para publicar una capa de teselas, haz una de las siguientes acciones:
- Seleccione las capas en el panel Contenido. Haz clic con el botón derecho del ratón en el conjunto de selección y haz clic en Compartir como capa web.
Para publicar todas las capas del mapa, haz clic en Capa web en el grupo Compartir como de la pestaña Compartir y, a continuación, haz clic en Publicar capa web.
Sugerencia:
Si la opción de menú Compartir como capa web no está activa, podría deberse a una de las siguientes razones:
- La cuenta con la que ha iniciado sesión no tiene permisos para publicar capas de entidades alojadas.
- Su portal no está configurado con un servidor host, un requisito indispensable para alojar capas web.
- Está intentando publicar una capa multiparche, que no es compatible.
- Escribe un nombre para la capa de teselas. La capa se guarda en Mi contenido de manera predeterminada. Puede guardarla en una carpeta de Mi contenido escribiendo el nombre de la carpeta o yendo a una carpeta existente.
- Elige Copiar todos los datos.
- Elige Tesela para el Tipo de capa.
Con esto se desactivan automáticamente el resto de opciones del Tipo de capa, dado que solo se puede activar una opción cada vez al copiar datos.
- Indique un resumen y etiquetas para la capa de teselas.
- Especifique cómo se compartirá la capa de teselas. Todas las capas que se publiquen se compartirán automáticamente en el espacio de trabajo personal que tiene en su organización (Mi contenido). El contenido está inaccesible para otros hasta que se comparte con una o varias de las siguientes opciones:
- Portal for ArcGIS: seleccionar esta opción permite compartir la capa con todos los usuarios autenticados de la organización.
- Todos: al seleccionar esta opción haces que la capa esté disponible para cualquiera que acceda a tu portal.
- Grupos: puede compartir la capa con los miembros de los grupos a los que pertenece.
- Haz clic en Configuración y después en el botón Configurar propiedades de capa web para especificar la configuración de la caché.
- Elija un Esquema de ordenamiento en teselas.
- Cambie el tamaño y arrastre la barra Nivel de detalle para indicar las escalas mínima y máxima de la capa de teselas.
El tamaño estimado de la caché resultante cambia a medida que se modifica la escala mínima y máxima.
- Elige Crear caché automáticamente en el momento de publicar la capa o bien Crear caché manualmente después de publicar la capa.
Abra la capa de teselas en el sitio web del portal una vez publicada para crear la caché manualmente.
- Haga clic en la pestaña Contenido para confirmar que la capa de teselas incluirá las capas de datos previstas.
- Haga clic en Analizar para comprobar si hay algún error o problema.
Si se detecta algún problema, se mostrará en la pestaña Mensajes. Haga clic con el botón derecho del ratón en cada mensaje para obtener más información, consulte la ayuda correspondiente al error o advertencia, y acceda a las soluciones sugeridas. Debe arreglar los errores antes de publicar. Si lo desea, puede arreglar las advertencias para mejorar el rendimiento y la apariencia de la capa de teselas alojada.
- Después de arreglar los errores y, de forma opcional, las advertencias, haz clic en Publicar.
Nota:
Los datos se copian en el servidor en este punto. El tamaño de los datos, la velocidad de la red y el ancho de banda afectarán al tiempo necesario para publicar.
Una vez finalizada la publicación, puede hacer clic en Administrar la capa web para abrir el sitio web del portal.
Crear y compartir un paquete de teselas en ArcMap y publicar
ArcMap te permite crear teselas para un documento de mapa y almacenarlas en un archivo de paquete de teselas (.tpk) que se puede transferir fácilmente. Puedes crear un paquete de teselas en ArcMap, compartirlo en tu portal y publicarlo como capa de teselas alojada.
A continuación se describen dos flujos de trabajo diferentes. El primero se puede usar para los paquetes de teselas con tamaños pequeños o medianos y conservará elementos del documento de mapa como la leyenda y los elementos de texto cuando las teselas se publiquen desde el paquete de teselas. El segundo flujo de trabajo se recomienda para publicar paquetes de teselas grandes, pero solo conserva los datos cuando las teselas se publican desde el paquete de teselas.
Siga estos pasos para publicar un paquete de teselas de tamaño pequeño o mediano:
- Abra el mapa en ArcMap.
- Inicie sesión en su portal con una cuenta de organización que tenga privilegios para crear contenido y publicar capas de teselas alojadas.
- Haga clic en Personalizar > Opciones de ArcMap > Uso compartido y asegúrese de que la opción Habilitar herramientas de ArcGIS Runtime esté activada.
Esto habilita la opción de menú que se utiliza en el paso siguiente.
- En ArcMap, haga clic en Archivo > Compartir como > Paquete de teselas.
- Configure todos los ajustes en los subpasos siguientes. Configure los demás ajustes a su gusto.
- En la pestaña Paquete de teselas, elige Cargar el paquete en mi cuenta de Portal for ArcGIS.
- En la pestaña Formato de tesela, seleccione ArcGIS Online / Bing Maps / Google Maps como Esquema de ordenamiento en teselas.
- En la pestaña Descripción del elemento, indique los elementos requeridos.
- En la pestaña Compartir, puede elegir si desea compartir el paquete con el público o con grupos específicos.
- Haga clic en Compartir.
Es posible que se le pida que guarde el mapa antes de crear el paquete de teselas.
La generación del paquete de teselas puede tardar un rato, especialmente si se han incluido escalas grandes.
- Una vez que hayas terminado de generar tu paquete de teselas, inicia sesión en tu portal utilizando la misma cuenta que utilizaste al crear el paquete de teselas en ArcMap y haz clic en Mi contenido.
- Haga clic en el paquete de teselas para mostrar la página de detalles del elemento.
- Haga clic en Publicar.
- Escriba un título y unas etiquetas y haga clic en Publicar.
Las teselas se desempaquetan y se crea una capa de teselas alojada en tu portal. Debería poder ver las teselas de mapa en Mi contenido.
Para crear y compartir paquetes de teselas grandes, Esri recomienda utilizar el conjunto de herramientas Caché de teselas en lugar de usar el flujo de trabajo anterior. Estas herramientas pueden aprovechar la presencia de múltiples núcleos de procesamiento.
Ejecute estas herramientas en el orden siguiente:
- Ejecute Generar esquema de ordenamiento en teselas de la caché de teselas para definir la cuadrícula de teselas y el formato de imagen.
- Ejecute Administrar caché de tesela para crear las teselas.
- Ejecute Exportar caché de tesela para crear el paquete de teselas.
- Ejecuta Compartir paquete (en el conjunto de herramientas Paquete) para cargar las teselas en tu portal.
Tendrá que especificar una capa de entidades con la capa de teselas alojadas si desea configurar ventanas emergentes.
Crear un paquete de teselas en ArcGIS Pro y cargar en tu organización
Utiliza la herramienta de geoprocesamiento Crear paquete de teselas de mapa para crear un paquete de teselas, agregar el paquete a tu organización y publicar una capa de teselas.
- Abre el proyecto que contiene los datos que deseas empaquetar.
- Abre y ejecuta la herramienta de geoprocesamientoCrear paquete de teselas de mapa.
- Cuando se haya terminado de generar el paquete de teselas, inicia sesión en tu portal utilizando una cuenta que tenga privilegios para crear contenido y publicar capas de teselas alojadas y haz clic Mi contenido.
- Agrega el paquete de teselas De mi equipo.
- Activa la casilla junto a Publicar este archivo como capa de teselas.
- Escriba un título y etiquetas y haga clic en Agregar elemento.
Las teselas se desempaquetan y se crea una capa de teselas alojada en tu portal. Deberías poder ver las teselas de mapa y el paquete de teselas en Mi contenido.
Crear y publicar un paquete de teselas vectoriales
A partir de la versión 1.2, ArcGIS Pro permite crear teselas vectoriales para un mapa y almacenarlas en un archivo de teselas vectoriales (.vtpk) que se puede transferir fácilmente. Puedes compartir un paquete de teselas vectoriales desde ArcGIS Pro a tu portal y publicar el paquete de teselas vectoriales cargado como capa de teselas alojada. Utilice la capa de teselas alojada resultante para los mapas base en el visor de mapas o en aplicaciones personalizadas.
- Abre el proyecto de ArcGIS Pro que contiene los datos vectoriales del mapa que deseas empaquetar en teselas y publica.
- Inicia sesión en tu portal desde ArcGIS Pro utilizando una cuenta que tenga privilegios para crear contenido.
- Utilice la herramienta de geoprocesamiento Crear paquete de teselas vectoriales para crear un paquete de teselas vectoriales.
- Si su paquete de teselas vectoriales tiene más de 2 GB, siga estos pasos para agregar y publicar el paquete:
- Ejecute la herramienta de geoprocesamiento Compartir paquete para agregar el paquete de teselas vectoriales a su portal.
- Inicia sesión en el sitio web del portal y abre Mi contenido. Debes tener privilegios para publicar capas de teselas alojadas.
- Haga clic en el paquete de teselas vectoriales para mostrar la página de detalles del elemento y haga clic en Publicar.
- Escriba un título y unas etiquetas y haga clic en Publicar.
- Si tu paquete de teselas vectoriales tiene menos de 2GB, puedes utilizar el método anterior para agregarlo a tu portal y publicar una capa de teselas o bien puedes iniciar sesión en el portal y agregar el paquete de teselas vectoriales.
- Inicia sesión en el sitio web del portal y haz clic en Mi contenido. Debes tener privilegios para crear contenido y publicar capas de teselas alojadas.
- Haga clic en Agregar elemento > De mi equipo.
- Examine la ubicación del archivo del paquete de teselas vectoriales (.vtpk).
- Deje activada la opción Publicar este archivo como capa de teselas.
- Escriba un título y etiquetas y haga clic en Agregar elemento.
Las teselas vectoriales se desempaquetan y se crea una capa de teselas alojada. Puede ver la capa de teselas en Mi contenido y agregarla al visor de mapas.
Nota:
Las capas de teselas vectoriales se pueden mostrar en el visor de mapas si utiliza Internet Explorer 11 y también en casi todas las versiones actuales de otros navegadores, como Chrome y Firefox. Actualmente no se admite Microsoft Edge.
Tenga en cuenta también que las capas de teselas vectoriales ofrecen el mejor rendimiento en los equipos con un hardware más reciente.
Publicar desde una capa de entidades alojada
Puede publicar una capa de teselas alojada en el portal usando una capa de entidades alojada existente si el servidor de alojamiento del portal usa ArcGIS Data Store. Esto garantiza un flujo de trabajo útil si no tiene productos de ArcGIS instalados localmente. Por ejemplo, puede publicar un shapefile como una capa de entidades alojada y publicarla como una capa de teselas alojada.
Nota:
Los cambios que se realizan en la capa de entidades alojada no se reflejan automáticamente en la capa de teselas alojada. Debe volver a publicar la capa de teselas alojada desde la capa de entidades alojada actualizada.
Asimismo, tenga en cuenta que se aplicarán algunas restricciones de estilo al publicar una capa de teselas alojada desde una capa de entidades alojada.
Siga estos pasos para publicar una capa de teselas alojada desde una capa de entidades alojada:
- Inicie sesión con una cuenta que tenga privilegios para publicar capas de teselas alojadas y haga clic en Mi contenido.
- Para publicar, haga una de las siguientes acciones:
- Haga clic en la capa de entidades alojada que desea publicar y en Publicar.
- Haga clic en Crear > Capa de teselas y elija una Capa de entidades para publicar como teselas.
- Escriba un título, etiquetas y un resumen y escoja una carpeta para la capa de teselas alojada.
- De manera opcional, cambie el rango en el que se mostrará la capa eligiendo escalas en las listas desplegables Rango visible.
- Haga clic en Aceptar.
- Active las casillas de verificación situadas junto a las escalas en las que desea que se creen las teselas. A continuación, haga clic en Crear teselas.
Precaución:
Si incluye escalas grandes en el rango de escala, pueden incrementarse mucho los recursos consumidos en el servidor. No cree teselas más allá de la precisión de los datos.
- Revise el mensaje acerca de la cantidad de teselas que se van a crear. Si desea continuar, haga clic en Sí, crear teselas.
Publicar desde un archivo de definición de servicio
Publicar teselas y generar una caché pueden usar muchos recursos del servidor. Si tienes que publicar un gran número de capas de teselas, los autores del mapa podrían crear en ArcMap archivos de definición de servicio (.sd) que contengan toda la información necesaria para publicar una capa de teselas en el portal. A continuación, puede usar una secuencia de comandos para cargar y publicar los archivos de definición de servicio en el portal fuera del horario comercial. Las capas de teselas resultantes se alojarán en el servidor de alojamiento del portal.
Crear un archivo de definición de servicio
El autor del mapa debería seguir estos pasos para crear un archivo de definición de servicio que contenga los datos y la simbología necesarios para la capa de teselas que se va a alojar en el portal.
- Inicie ArcMap e inicie sesión en el portal.
- Cree y guarde un mapa.
Para obtener información sobre la creación y la publicación de un mapa, consulte los temas relativos al servicio de mapas en la Ayuda de ArcGIS.
- Haz clic en Archivo > Compartir como > Servicio.
- Elija Guardar un archivo de definición del servicio y haga clic en Siguiente.
- Haga clic en Escoger una conexión y elija Mis servicios alojados en la lista desplegable.
- Escriba un nombre para el archivo y haga clic en Siguiente.
- Especifique el directorio del equipo cliente en el que se debe crear el archivo de definición de servicio y haga clic en Continuar.
Se abre el Editor de servicio.
- En el panel izquierdo del Editor del servicio, haga clic en Almacenamiento en caché.
- Elija un Esquema de ordenamiento en teselas.
- Elija las escalas mínima y máxima para las teselas y Calcular el tamaño de la caché.
- Haga clic en Construir caché manualmente después de publicar el servicio.
- Si lo prefiere, puede hacer clic en Configuración avanzada y definir los ajustes de caché adicionales para la caché de teselas.
- En el panel izquierdo del Editor del servicio, haga clic en Descripción del elemento e introduzca la información de su capa de teselas.
Debe indicar al menos un resumen y etiquetas antes de crear el archivo de definición de servicio.
- Haga clic en Analizar para asegurarse de que no hay errores.
Debe resolver todos los errores para poder publicar el archivo de definición del servicio. Si lo prefiere, puede realizar las correcciones de las advertencias y los mensajes que hayan aparecido.
- Después de arreglar los errores y, de forma opcional, las advertencias y los mensajes, haga clic en Presentar .
El archivo de definición de servicio se guarda en la ubicación especificada.
Cargar la definición del servicio y publicar
Una vez que reciba el archivo de definición de servicio del autor, puede cargarlo manualmente en Mi contenido en el portal y publicar una capa de teselas o programar una secuencia de comandos para cargar y publicar el archivo.
Cargar manualmente y publicar
Inicie sesión en el sitio web del portal para agregar y publicar el archivo de definición de servicio en el portal.
- Inicie sesión en el portal como miembro con privilegios para crear contenido y publicar capas de teselas alojadas y abra Mi contenido.
- Haga clic en Agregar elemento.
- Elija cargar el archivo desde su equipo.
- Haga clic en el botón Examinar y elija el archivo de definición de servicio.
- Active Publique este archivo como un servicio.
- Escriba los términos de las etiquetas separados por comas.
Las etiquetas son palabras o frases cortas que describen un elemento y facilitan su búsqueda. Territorio federal se considera una etiqueta, mientras que Federal,territorio se considera dos etiquetas.
- Haga clic en Agregar elemento para agregar el archivo de definición de servicio y publicar la capa de teselas.
La capa de teselas se publica en el servidor de alojamiento del portal y tanto la definición del servicio como las teselas se agregan a Mi contenido.
- Cuando la capa de teselas se haya publicado, tendrá la opción de Empezar a construir teselas. Haga clic en el vínculo para crear las teselas.
De manera predeterminada, solo usted tiene acceso al archivo de definición de servicio y a la capa de teselas alojada. Puede compartir el archivo y las teselas con otros usuarios de su organización o con grupos concretos.
Ejecutar una secuencia de comandos para cargar y publicar
Para cargar y publicar un archivo de definición de servicio después de varias horas, automatice la siguiente secuencia de comandos para que se ejecute en su equipo con ArcGIS Server:
- Copie la siguiente secuencia de comandos en un archivo de texto y guarde el archivo con una extensión .py.
import os, sys, json, urllib, urllib2, httplib, urlparse, mimetools, mimetypes from cStringIO import StringIO # generates a new token from Portal def generate_token(baseurl, username, password): tokenUrl = urlparse.urljoin(baseurl, 'sharing/generateToken') postdata = { 'username': username, 'password': password, 'client': 'requestip', 'expiration': 60, 'f': 'json' } encoded_postdata = urllib.urlencode(postdata) opener = urllib2.build_opener() try: resp = opener.open(tokenUrl, data=encoded_postdata) except urllib2.HTTPError as e: raise Exception('Unable to connect to Portal, please check the url: {} {}'.format(e.code, e.reason)) resp_json = json.loads(resp.read()) if 'error' in resp_json: raise Exception('\n'.join(resp_json['error']['details'])) return resp_json['token'] sys.exit(1) # create proper multi-part POST request data def _encode_multipart_formdata(fields, files): boundary = mimetools.choose_boundary() buf = StringIO() for (key, value) in fields.iteritems(): buf.write('--%s\r\n' % boundary) buf.write('Content-Disposition: form-data; name="%s"' % key) buf.write('\r\n\r\n%s\r\n' % str(value)) for (key, filepath, filename) in files: buf.write('--%s\r\n' % boundary) buf.write('Content-Disposition: form-data; name="%s"; filename="%s"\r\n' % (key, filename)) buf.write('Content-Type: %s\r\n' % (mimetypes.guess_type(filename)[0] or 'application/octet-stream')) f = open(filepath, "rb") try: buf.write('\r\n' + f.read() + '\r\n') finally: f.close() buf.write('--' + boundary + '--\r\n\r\n') buf = buf.getvalue() return boundary, buf # send multi-part POST request def _postmultipart(host, selector, fields, files, ssl): boundary, body = _encode_multipart_formdata(fields, files) headers = { 'Content-Type': 'multipart/form-data; boundary={0}'.format(boundary) } if ssl: h = httplib.HTTPSConnection(host) else: h = httplib.HTTPConnection(host) h.request('POST', selector, body, headers) resp = h.getresponse() return resp.read() # first upload the SD file and create an item in Portal def addSDItem(baseurl, user, token, title, file, folder = ''): addUrl = 'sharing/rest/content/users/{}/{}addItem' if folder != '': addUrl = addUrl.format(user, folder + '/') else: addUrl = addUrl.format(user, '') url = urlparse.urljoin(baseurl, addUrl) files = [('file', file, os.path.split(file)[1])] fields = { 'token' : token, 'f' : 'json', 'type' : 'Service Definition', 'title' : title, 'tags' : 'sampletag', 'name': title, 'typeKeywords' : 'Data, Service Definition, ArcGIS, sd' } ssl = url.startswith('https://') parsed_url = urlparse.urlparse(url) print('Uploading {} to {}..'.format(file, baseurl)) resp = _postmultipart(parsed_url.netloc, str(parsed_url.path), fields, files, ssl) resp_json = json.loads(resp) if 'error' in resp_json: raise Exception('Unable to upload file {}: {}'.format(file, resp_json['error']['message'])) return resp_json['id'] # second publish the uploaded SD item as a new tiled service def publishTiles(baseurl, user, token, itemid): publishUrl = urlparse.urljoin(baseurl, 'sharing/rest/content/users/{}/publish'.format(user)) query_dict= { 'f' : 'json', 'token': token, 'itemid': itemid, 'buildInitialCache' : True, 'publishParameters' : { 'name' : 'cities' }, 'fileType': 'serviceDefinition' } query_string = urllib.urlencode(query_dict) print('Publishing tile service from item..') response = urllib.urlopen(publishUrl, query_string) resp_json = json.loads(response.read()) if 'error' in resp_json: raise Exception('Unable to publish item: {}'.format(resp_json['error']['message'])) # read input from command line when run as a standalone script if __name__ == '__main__': try: url = sys.argv[1] user = sys.argv[2] password = sys.argv[3] f = sys.argv[4] title = sys.argv[5] if not url.endswith('/'): url += '/' # make sure the url ends with / except: # if too few parameters are passed on command line, show usage help print('Usage: ') print(' publishServiceItem.py [portalUrl] [userName] [password] [sdFilePath] [titleOfServiceItem]') print('') print('portalUrl The secure url to the portal, e.g. https://portalmachine.example.com/arcgis/') print('userName The username of a user to publish the service.') print(' This user must have the required publishing privileges.') print('password The password of the user') print('sdFilePath Path to the .sd file containing the service definition') print(' E.g. c:\\temp\cachedService.sd') print('titleOfServiceItem The title to assign to the published item in the portal.') sys.exit(1) token = generate_token(url, user, password) id = addSDItem(url, user, token, title, f) publishTiles(url, user, token, id) print('Publishing complete. Tile generation has been started and may take a while to finish.')
- Cree un archivo de lotes o una secuencia de comandos de shell que programará para que ejecute la secuencia de comandos de Python.
- En el archivo, llame a la secuencia de comandos y proporcione opciones específicas del sitio.
Por ejemplo, para ejecutar la secuencia de comandos publishServiceItem.py, escriba la dirección URL de su portal, el nombre de usuario con el que se debe conectar, la contraseña del usuario, la ruta del archivo de definición de servicio y un título para el servicio que se va a crear. En este ejemplo, la URL del portal es https://portal.domain.com/arcgis/, el nombre de usuario y la contraseña son pub1 y pub.1, la ruta del archivo de definición de servicio es C:\maps\SDs\mymap.sd y el nombre del servicio es studytiles.
publishServiceItem.py https://portal.domain.com/arcgis/ pub1 pub.1 C:\maps\SDs\mymap.sd studytiles
Sugerencia:
Como alternativa, puede usar la siguiente secuencia de comandos simplificada para cargar un archivo de definición de servicio en el portal, publicar una capa de teselas y generar una caché. Sin embargo, debe instalar dos paquetes de Python adicionales, PortalPy y Python Requests, para ejecutar esta secuencia de comandos. PortalPy se instala con Portal for ArcGIS. Consulte Tareas administrativas con PortalPy mediante secuencias de comandos en la ayuda de Portal for ArcGIS para obtener más información sobre la instalación y el uso de este módulo.
import portalpy, requests, urlparse, sys, os # first upload the SD file and create an item in Portal def addSDItem(baseurl, user, token, title, file, folder = ''): addUrl = 'sharing/rest/content/users/{}/{}addItem' if folder != '': addUrl = addUrl.format(user, folder + '/') else: addUrl = addUrl.format(user, '') url = urlparse.urljoin(baseurl, addUrl) files = { 'file' : (os.path.split(file)[1], open(file, 'rb')) } fields = { 'token' : token, 'f' : 'json', 'type' : 'Service Definition', 'title' : title, 'tags' : 'sampletag', 'name': title, 'typeKeywords' : 'Data, Service Definition, ArcGIS, sd' } print('Uploading {} to {}..'.format(file, baseurl)) # send POST with upload request # verify=False turns off SSL cert validation, turn on for production environments with CA-signed certs resp = requests.post(url, data=fields, files=files, verify=False) resp_json = resp.json() if 'error' in resp_json: raise Exception('Unable to upload file {}: {}'.format(file, resp_json['error']['message'])) return resp_json['id'] # second publish the uploaded SD item as a new tiled service def publishTiles(baseurl, user, token, itemid): publishUrl = urlparse.urljoin(baseurl, 'sharing/rest/content/users/{}/publish'.format(user)) query_dict= { 'f' : 'json', 'token': token, 'itemid': itemid, 'buildInitialCache' : True, 'publishParameters' : "{ 'name' : 'cities' }", 'fileType': 'serviceDefinition' } print('Publishing tile service from item..') # send POST with publish request # verify=False turns off SSL cert validation, turn on for production environments with CA-signed certs response = requests.post(publishUrl, data=query_dict, verify=False) resp_json = response.json() if 'error' in resp_json: raise Exception('Unable to publish item: {}'.format(resp_json['error']['message'])) # read input from command line when run as a standalone script if __name__ == '__main__': try: url = sys.argv[1] user = sys.argv[2] password = sys.argv[3] f = sys.argv[4] title = sys.argv[5] if not url.endswith('/'): url += '/' # make sure the url ends with / except: # if too few parameters are passed on command line, show usage help print('Usage: ') print(' publishServiceItem.py [portalUrl] [userName] [password] [sdFilePath] [titleOfServiceItem]') print('') print('portalUrl The secure url to the portal, e.g. https://portalmachine.example.com/arcgis/') print('userName The username of a user to publish the service.') print(' This user must have the required publishing privileges.') print('password The password of the user') print('sdFilePath Path to the .sd file containing the service definition') print(' E.g. c:\\temp\cachedService.sd') print('titleOfServiceItem The title to assign to the published item in the portal.') sys.exit(1) portal = portalpy.Portal(url, user, password) token = portal.generate_token(user, password) id = addSDItem(url, user, token, title, f) publishTiles(url, user, token, id) print('Publishing complete. Tile generation has been started and may take a while to finish.')
- Programe la secuencia de comandos para que se ejecute en los momentos de menor uso del portal.
Consulte Programar la secuencia de comandos de Python para que se ejecute en períodos prescritos en la Ayuda de geoprocesamiento de ArcGIS para obtener más información sobre la programación de una secuencia de comandos.