Usar capas de escena web

Las capas de escena representan grandes datos geoespaciales en 3D, lo que facilita que el público comprenda y experimente información geográfica de una forma más realista. Las capas de escena son capas almacenadas en caché que están optimizadas para visualizar grandes cantidades de contenido 3D. Las capas de escena pueden incluir puntos 3D, nubes de puntos, objetos 3D, edificios, mallas integradas y vóxeles. La capa de escena cumple con la especificación Capa de escena 3D indexada (I3S). Las capas de escena no se pueden compartir con ArcGIS Online y ArcGIS Enterprise como capas de escenas web. Las capas de escena pueden hacer referencia a muchas fuentes diferentes, que se tratan en este tema.

Fuentes de capas de escena
Se muestran opciones de implementación y administración de datos para capas de escena.

Paquete de capas de escena (.slpk)

Los paquetes de capas de escena están diseñados para transferir rápidamente datos 3D como un único archivo. Un paquete de capas de escena se puede visualizar en un cliente de escritorio, por ejemplo, AllSource o ArcGIS Earth, o cargarse y publicarse en ArcGIS Online o ArcGIS Enterprise.

También es posible publicar el archivo .slpk en ArcGIS Enterprise o ArcGIS Online mediante la herramienta Compartir paquete para crear una capa de escena web. Este es el flujo de trabajo recomendado al publicar paquetes de capas de escena de más de 500 GB. Para paquetes de capas de escena de menos de 500 GB, la aplicación de inicio de Portal for ArcGIS se puede usar para cargar y publicar capas de escenas web.

REST de capa de escena 3D indexada (.i3sREST)

El formato .i3sREST se basa en estándares web modernos, REST y JSON. El formato .i3sREST está optimizado para clientes web a fin de manejar, analizar y renderizar cuando se almacenan en almacenes en la nube como Amazon S3, Azure Blob Store, Alibaba OSS o Google Cloud. El formato .i3sREST se proporciona directamente desde el data store, lo que permite mejorar la escalabilidad en ArcGIS Enterprise.

El formato .i3sREST listo para servir es el más adecuado para contenido de capas de escena de más de 200 GB. Puede crear .i3sREST en AllSource. Una vez que el contenido de la capa de escena esté disponible en el almacén en la nube, puede publicarla como una capa de escena utilizando ArcGIS API for Python en ArcGIS Enterprise 10.8.1 y versiones posteriores.

Paquete de capas de escena extraído (.eslpk)

El formato .eslpk es un directorio de carpetas no archivado de un paquete de capas de escena compatible con sistemas de archivos. Este formato I3S se puede proporcionar utilizando un controlador de teselas diseñado para manejar las extensiones de archivo. Los paquetes de capas de escena extraídos son para ArcGIS Enterprise.

Puede crear un paquete de capas de escena extraído con la herramienta Extraer paquete. Una vez que el contenido de la capa de escena esté disponible en directorios de sistemas de archivos o un almacén de objetos compatible Amazon S3 local como MinIO, puede publicarla como capa de escena mediante ArcGIS API for Python en ArcGIS Enterprise 10.8.1 y versiones posteriores.

Nota:

El contenido de las capas de escena en los formatos .eslpk o .i3sREST no es compatible con ArcGIS Online.

I3S: Servicio de escenas 3D indexadas

Además de .slpk, .i3sREST y .eslpk, puede crear una capa de escena directamente en ArcGIS Enterprise o ArcGIS Online al compartir capas de escena web o escenas web individuales desde AllSource. Las capas de edificios, multiparche o puntos 3D se pueden compartir con una capa de entidades asociada. Permite funcionalidades adicionales de análisis y edición que no son posibles con capas de escena web publicadas desde paquetes de capas de escena.

Herramientas que crean contenido de capas de escena

AllSource admite la creación de contenido de capas de escena en varios formatos en las siguientes herramientas de geoprocesamiento.

Publicar una capa de escena con ArcGIS API for Python

Las capas de escena en los formatos .eslpk o .i3sREST se pueden publicar en ArcGIS Enterprise mediante ArcGIS API for Python.

Nota:

Los siguientes son obligatorios:

  • Contenido de escenas en formato listo para servir
  • Privilegios de rol de publicador en ArcGIS Enterprise

  1. Agregue a su portal la ubicación donde reside el contenido de la capa de escena como elemento de data store. Consulte Elementos de almacén en la nube para obtener información sobre cómo configurar una cadena de conexión para los almacenes en la nube compatibles.
    import json
    from arcgis.gis import GIS
    
    # Connect to your GIS
    # Create a connection to your portal for publishing
    gis=GIS(url="https://my_portal_name/portal", username="my_username", password="my_pwd")
    
    # Step 1a.  Create a user managed data store item configuration for AWS cloud store with scene content
    # path to the i3srest content 
    ds_config = {"provider": "amazon",
                 "type": "cloudStore",
                 "path": "/cloudStores/mys3",
                 "info": {"isManaged": False,
                 "connectionString": "{\"credentialType\":\"accesskey\",\"accessKeyId\":\"MY_ACCESS_KEY\",
                  \"secretAccessKey\":\"MY_SECRET_ACCESS_KEY\",\"region\":\"us-west-1\",
                  \"defaultEndpointsProtocol\":\"https\"}", "objectStore": "MY_AWS_BUCKET"}} 
    txt = json.dumps(ds_config)
    txt = json.dumps(ds_config)
    
    # Step1b. 
    # Add data store as an item to my portal
    ds_item = gis.content.add(
                {
                'title' : "title_for_my_folder_data_store",
                'type' : "Data Store",# must be this
                'tags' : "Scene content",
                'text' : txt
                })
    ds_item

  2. Registre la carpeta o el data store en la nube en el servidor federado deseado del portal de ArcGIS Enterprise.
    # Step 2:  Register the data store item to a server federated to ArcGIS Enterprise
    # The server can be either Hosting or Federated server
    
    server_list = gis.admin.federation.servers
    server_list
    
    server_id = None
    for server in server_list['servers']:
        if server['serverRole'] == 'HOSTING_SERVER':
            server_id = server['id']
            break
    if server_id is None:
        raise Exception("Cannot find HOSTING SERVER on this Enterprise configuration")
    
    server_id
    gis.datastore.register(item=ds_item, server_id=server_id)

  3. Enumere el contenido del data store para seleccionar la carpeta con el contenido de la capa de escena deseado.
    ## Step 3. List the contents of my data store item 
    ds = gis.datastore
    desc = ds.describe(item=ds_item.id, server_id=server_id, path='/', store_type='datastore').result()
    cache_store_id = desc['definition']['datastoreId']

  4. Publique el contenido de la capa de escena ubicado en el data store.
    ## Step 4a. Create a dictionary for your service configuration
    service_conf= {
      "type": "SceneServer",
      "serviceName": "name_of_scene_layer",
      "properties": {
        "pathInCachedStore" : "/myscene_content.i3srest",
        "cacheStoreId": cache_store_id,
      }
    }
    service_conf
    
    ## Step 4b. Publish the scene layer content 
    ##          located in data store managed by you as a scene layer
    
    ds.publish(config=service_conf, server_id=server_id, folder="/",
                     description="pointsceneLayer by python API", 
                     tags="pythonAPI test").result()
    
    ## My scene layer is published and now is serving content directly from my data store

La capa de escena se ha publicado ahora desde el almacén en la nube.