Select to view content in your preferred language

How to find web maps that are using a layer

547
3
01-30-2025 06:55 AM
SanchezNuñez
Frequent Contributor

Good morning,

I am looking for a way to find  AGOL web maps using a specific layer located in AGOL too.

Is there a tool for that?

Thanks

0 Kudos
3 Replies
MErikReedAugusta
MVP Regular Contributor

I can loosely think of a way abusing/using the CIM & Portal access that might work if you have a known list of web maps to check (i.e., those in your organization).  Essentially, you'd review each and every layer in each and every map, and check its source against the AGOL layer you're checking.  It would work for offline data, and in theory, it might work for AGOL data, but it'll be a bit of a mess to write.

If you're needing to look outside that organization, though, the above trick won't work.  For that, I think we'd need a tool from ESRI's side of things, and I'm not familiar with an existing one off the top of my head.

------------------------------
M Reed
"The pessimist may be right oftener than the optimist, but the optimist has more fun, and neither can stop the march of events anyhow." — Lazarus Long, in Time Enough for Love, by Robert A. Heinlein
0 Kudos
Nick_Creedon
Frequent Contributor

I have spent sometime curating this, it is not perfect but is does provide some results. I recommend looking through this first before running it. Add your feature layer name in the " " and then you run it. It should print out all the maps and maps Id's the layer is in.

from arcgis.gis import GIS
import pandas as pd

# Connect to ArcGIS Online
gis = GIS("home")

# Specify the name of your hosted feature layer
feature_layer_name = "Feature_Layer_Name_Here"

# Search for the feature layer item by name
search_results = gis.content.search(query=f'title:"{feature_layer_name}" AND owner:{gis.users.me.username}',
                                    item_type="Feature Layer")

# Check if the search returned any results
if not search_results:
    print(
        f"Error: Could not find a feature layer with the name '{feature_layer_name}'. Please check the name and try again.")
else:
    # Get the feature layer item
    feature_layer_item = search_results[0]

    # Print the details of the found item
    print(f"Found feature layer: {feature_layer_item.title}")
    print(f"Item ID: {feature_layer_item.id}")
    print(f"Item URL: {feature_layer_item.url}")


    # Function to search and count maps
    def search_and_count_maps(feature_layer_item):
        # Search for all web maps in the organization
        web_maps = gis.content.search(query='type:"Web Map"', max_items=1000)

        # Initialize counter and list for maps that include the feature layer
        map_count = 0
        map_list = []

        # Iterate through each web map and inspect its layers
        for web_map in web_maps:
            try:
                map_data = web_map.get_data()
                if 'operationalLayers' in map_data:
                    for layer in map_data['operationalLayers']:
                        if 'url' in layer and feature_layer_item.url in layer['url']:
                            map_count += 1
                            map_list.append({
                                'Map Title': web_map.title,
                                'Map ID': web_map.id
                            })
                            break  # No need to check other layers in this map
            except:
                continue  # In case of an error, skip this map and continue with the next one

        return map_count, map_list


    # Count the maps and get list of maps
    map_count, map_list = search_and_count_maps(feature_layer_item)

    # Print the result
    print(f"The feature layer is included in {map_count} web maps.")

    # Optionally, create a DataFrame to store more detailed information
    if map_list:
        df = pd.DataFrame(map_list)
        print("\nList of Maps:")
        print(df.to_string(index=False))
    else:
        print("No maps found for this feature layer.")

 

ScottB
by Esri Regular Contributor
Esri Regular Contributor

There are third party applications and custom code (like Nick's) that can accomplish this, but nothing out of the box. It is something the ArcGIS Online product team is looking into, but we don't have anything to announce at the moment. 

0 Kudos