Clone a Group

This sample notebook can be used for cloning one or more groups, either on the same portal or from one portal to another.

Note: If you want to clone all portal users, groups and content refer to the sample Clone Portal users, groups and content

In this sample, we will clone the Vector Basemaps group from ArcGIS Online to an ArcGIS Enterprise.

In [ ]:
from arcgis.gis import GIS
from IPython.display import display

Define the source and target portals

To start with, define the source and target portals.

In [ ]:
# an anonymous connection to ArcGIS Online is sufficient, 
# since we are cloning a public group
source = GIS()

target = GIS("https://python.playground.esri.com/portal", "arcgis_python", "amazing_arcgis_123")

Search for the group and its contents in the source portal

In the source portal, search for the group to be cloned. In our case the title of the group is 'Vector Basemaps'.

In [ ]:
source_group = source.groups.search("title:Vector Basemaps AND owner:esri", outside_org = True)[0]
source_group
Out[ ]:
Vector Basemaps

Summary: This group contains a set of Esri vector basemaps that are available for use in ArcGIS Online. The group contains both web maps and tile layers.
Description:
For several years, Esri has made available a suite of basemaps that can be used through ArcGIS Online and other apps to create maps and apps. These multi-scale basemaps have been delivered as pre-rendered image tiles (JPG or PNG format) to optimize performance. These basemaps have proven to be very useful and popular, with several billion tiles served each month, but they have some limitations (e.g. users can not customize map, low-res image tiles not optimal for display on high-res devices, etc.).

To provide additional options for users, Esri is introducing this new set of vector basemaps (now in beta release). These basemaps are delivered as vector tiles (PBF format) that are rendered client-side based on a style file that is delivered with the vector tiles. The vector basemaps can be displayed in current, desktop web browsers and, in the near future, various desktop and mobile apps. Users are able to customize the look and feel of the vector basemaps by creating custom styles that are used to render the vector tiles.

Available Vector Basemaps

The initial set of Esri vector basemaps, available through this group, includes nine different map styles built using a single vector tile service.  The group includes vector basemaps in multiple styles, some that closely resemble existing Esri basemaps (e.g. Streets, Topographic, Light and Dark Gray Canvas, Terrain with Labels), and others that are new (e.g. Streets at Night, Navigation, and Imagery Hybrid).  The vector basemaps are available as both web maps, which can be used as a basemap for adding other layers, and as tile layers, which can be added to existing maps either as a basemap or overlay layer.

Learn More

To learn more, including how you can customize the Esri vector basemaps, you can refer to the blog posts tagged with "vector basemap".

Owner: esri
Created: October 27, 2015

List the items that are a part of the group 'Vector Basemaps'.

In [ ]:
source_items = source_group.content()
source_items
Out[ ]:
[<Item title:"Dark Gray Canvas" type:Vector Tile Service owner:esri>,
 <Item title:"Dark Gray Canvas" type:Web Map owner:esri>,
 <Item title:"Dark Gray Canvas Base" type:Vector Tile Service owner:esri>,
 <Item title:"Dark Gray Canvas Reference" type:Vector Tile Service owner:esri>,
 <Item title:"Hybrid Reference Layer" type:Vector Tile Service owner:esri>,
 <Item title:"Imagery Hybrid" type:Web Map owner:esri>,
 <Item title:"Light Gray Canvas" type:Vector Tile Service owner:esri>,
 <Item title:"Light Gray Canvas" type:Web Map owner:esri>,
 <Item title:"Light Gray Canvas Base" type:Vector Tile Service owner:esri>,
 <Item title:"Light Gray Canvas Reference" type:Vector Tile Service owner:esri>,
 <Item title:"Navigation" type:Web Map owner:esri>,
 <Item title:"Streets" type:Web Map owner:esri>,
 <Item title:"Streets (Night)" type:Web Map owner:esri>,
 <Item title:"Streets (with Relief)" type:Web Map owner:esri>,
 <Item title:"Terrain with Labels" type:Web Map owner:esri>,
 <Item title:"Topographic" type:Web Map owner:esri>,
 <Item title:"World Navigation Map" type:Vector Tile Service owner:esri>,
 <Item title:"World Street Map" type:Vector Tile Service owner:esri>,
 <Item title:"World Street Map (Night)" type:Vector Tile Service owner:esri>,
 <Item title:"World Street Map (with Relief)" type:Vector Tile Service owner:esri>,
 <Item title:"World Terrain Base" type:Vector Tile Service owner:esri>,
 <Item title:"World Terrain Reference" type:Vector Tile Service owner:esri>,
 <Item title:"World Terrain with Labels" type:Vector Tile Service owner:esri>,
 <Item title:"World Topographic Map" type:Vector Tile Service owner:esri>]

Clone the group in the target portal if it does not already exist.

We create a new group in the target portal with all the properties of the group in the source portal.

In [ ]:
import tempfile
if not target.groups.search('Vector Basemaps'):
    try:
        with tempfile.TemporaryDirectory() as temp_dir:
            thumbnail_file = source_group.download_thumbnail(temp_dir)
            
            #create a group in the target portal with all the properties of the group in the source
            target_group = target.groups.create(title = source_group.title,
                                                 tags = source_group.tags,
                                                 description = source_group.description,
                                                 snippet = source_group.snippet,
                                                 access = source_group.access, 
                                                 thumbnail= thumbnail_file,
                                                 is_invitation_only = True,
                                                 sort_field = 'avgRating',
                                                 sort_order ='asc',
                                                 is_view_only=True)
            #display the group
            display(target_group)
            
    except Exception as e:
        print('Group {} could not be created'.format(source_group.title))
        print(e)
else:
    print('Group {} already exists in the portal'.format(source_group.title))
    target_group = target.groups.search('Vector Basemaps')[0]
Vector Basemaps

Summary: This group contains a set of Esri vector basemaps that are available for use in ArcGIS Online. The group contains both web maps and tile layers.
Description:
For several years, Esri has made available a suite of basemaps that can be used through ArcGIS Online and other apps to create maps and apps. These multi-scale basemaps have been delivered as pre-rendered image tiles (JPG or PNG format) to optimize performance. These basemaps have proven to be very useful and popular, with several billion tiles served each month, but they have some limitations (e.g. users can not customize map, low-res image tiles not optimal for display on high-res devices, etc.).

To provide additional options for users, Esri is introducing this new set of vector basemaps (now in beta release). These basemaps are delivered as vector tiles (PBF format) that are rendered client-side based on a style file that is delivered with the vector tiles. The vector basemaps can be displayed in current, desktop web browsers and, in the near future, various desktop and mobile apps. Users are able to customize the look and feel of the vector basemaps by creating custom styles that are used to render the vector tiles.

Available Vector Basemaps

The initial set of Esri vector basemaps, available through this group, includes nine different map styles built using a single vector tile service.  The group includes vector basemaps in multiple styles, some that closely resemble existing Esri basemaps (e.g. Streets, Topographic, Light and Dark Gray Canvas, Terrain with Labels), and others that are new (e.g. Streets at Night, Navigation, and Imagery Hybrid).  The vector basemaps are available as both web maps, which can be used as a basemap for adding other layers, and as tile layers, which can be added to existing maps either as a basemap or overlay layer.

Learn More

To learn more, including how you can customize the Esri vector basemaps, you can refer to the blog posts tagged with "vector basemap".

Owner: arcgis_python
Created: June 29, 2017

Clone the contents of the group to the target portal

It is possible that some items to be cloned may already be present on the target portal. In such a situation, we simply share those items with the target group. Thus, in the section below, we renew our list of items to be cloned by removing from it, any item that was existing on the target portal beforehand.

In [ ]:
#making a list for the items to be cloned in the target portal
items_to_be_cloned = list(source_items)

#checking for the presence of the item in the target portal 
for item in source_items:
    searched_items = target.content.search(query='title:'+item.title, item_type = item.type)   
    
    for s_item in searched_items:
        
        if s_item.title == item.title:
            
            #if an item is not a part of the group in the target portal then share it 
            if s_item not in target_group.content():
                s_item.share(groups= [target_group])
            
            #remove the already existing item from the list of items to be cloned
            items_to_be_cloned.remove(item)                
            
            #display the item
            display(s_item)      
                     
            break
Imagery Hybrid
Satellite and high-resolution aerial imagery for the world with political boundaries, roads, and labels for places and roads.Web Map by esri_livingatlas
Last Modified: October 06, 2016
0 comments, 1 views
Light Gray Canvas
This web map draws attention to your thematic content by providing a neutral background with minimal colors, labels, and features.Web Map by esri_livingatlas
Last Modified: October 06, 2016
44 comments, 1 views
Streets
Presents highway-level data for the world and street-level data for North America, Europe and more.Web Map by esri_livingatlas
Last Modified: October 06, 2016
0 comments, 1 views
Terrain with Labels
Basemap features shaded relief, bathymetry and coastal water features that provide neutral background with political boundaries and placenames.Web Map by esri_livingatlas
Last Modified: October 06, 2016
0 comments, 0 views
Topographic
Topographic map which includes boundaries, cities, water features, physiographic features, parks, landmarks, transportation, and buildings.Web Map by esri_livingatlas
Last Modified: October 06, 2016
2 comments, 0 views

Now after having removed the existing items from the list of items to be cloned, we can easily copy the remaining content of the source group to the newly created group in the target portal.

In [ ]:
#cloning all items that were not present on the portal before
for item in items_to_be_cloned:    
    try:
        with tempfile.TemporaryDirectory() as temp_dir:
            thumbnail_file = item.download_thumbnail(temp_dir)
            metadata_file = item.download_metadata(temp_dir)
            target_item_properties = {'title': item.title,
                                      'tags': item.tags,
                                      'text':item.get_data(True),
                                      'type':item.type,
                                      'url':item.url
                                     }       
            #create an item
            target_item = target.content.add(target_item_properties, thumbnail=thumbnail_file)
            
            #share that item with the group on the target portal
            target_item.share(groups=[target_group])
            
            #display the item
            display(target_item)
            
    except Exception as e:
        print('Item {} could not be created in the target portal'.format(item.title))
        print(e)
Dark Gray Canvas
Vector Tile Layer by arcgis_python
Last Modified: June 29, 2017
0 comments, 0 views
Dark Gray Canvas
Web Map by arcgis_python
Last Modified: June 29, 2017
0 comments, 0 views
Dark Gray Canvas Base
Vector Tile Layer by arcgis_python
Last Modified: June 29, 2017
0 comments, 0 views
Dark Gray Canvas Reference
Vector Tile Layer by arcgis_python
Last Modified: June 29, 2017
0 comments, 0 views
Hybrid Reference Layer
Vector Tile Layer by arcgis_python
Last Modified: June 29, 2017
0 comments, 0 views
Light Gray Canvas
Vector Tile Layer by arcgis_python
Last Modified: June 29, 2017
0 comments, 0 views
Light Gray Canvas Base
Vector Tile Layer by arcgis_python
Last Modified: June 29, 2017
0 comments, 0 views
Light Gray Canvas Reference
Vector Tile Layer by arcgis_python
Last Modified: June 29, 2017
0 comments, 0 views
Navigation
Web Map by arcgis_python
Last Modified: June 29, 2017
0 comments, 0 views
Streets (Night)
Web Map by arcgis_python
Last Modified: June 29, 2017
0 comments, 0 views
Streets (with Relief)
Web Map by arcgis_python
Last Modified: June 29, 2017
0 comments, 0 views
World Navigation Map
Vector Tile Layer by arcgis_python
Last Modified: June 29, 2017
0 comments, 0 views
World Street Map
Vector Tile Layer by arcgis_python
Last Modified: June 29, 2017
0 comments, 0 views
World Street Map (Night)
Vector Tile Layer by arcgis_python
Last Modified: June 29, 2017
0 comments, 0 views
World Street Map (with Relief)
Vector Tile Layer by arcgis_python
Last Modified: June 29, 2017
0 comments, 0 views
World Terrain Base
Vector Tile Layer by arcgis_python
Last Modified: June 29, 2017
0 comments, 0 views
World Terrain Reference
Vector Tile Layer by arcgis_python
Last Modified: June 29, 2017
0 comments, 0 views
World Terrain with Labels
Vector Tile Layer by arcgis_python
Last Modified: June 29, 2017
0 comments, 0 views
World Topographic Map
Vector Tile Layer by arcgis_python
Last Modified: June 29, 2017
0 comments, 0 views

Feedback on this topic?