ArcGIS Pro

Publish and overwrite web layers in ModelBuilder

As we continue the fight against COVID-19 and enter the wildfire and hurricane season, web applications like dashboards help people make informed, time-sensitive, and even life-saving decisions. Depending on the events your organization is monitoring, things can change rapidly. You’ll need to efficiently publish your web layers, update your data, and overwrite your web layers to keep your dashboards current and relevant.

ModelBuilder in ArcGIS Pro allows you to automate analyzing and updating the data used in your web layers. You may already have a model you routinely run to prepare your data for publishing. All that remains is the ability to publish web layers or overwrite existing ones in the model. In this article, you’ll learn how to create a script tool in ArcGIS Pro 2.8 that publishes or overwrites a web feature layer. The script tool is built on ArcPy functions and geoprocessing tools, allowing you to run it like any other geoprocessing tool in new or existing ModelBuilder models.

Use a custom publishing script tool in ModelBuilder

You’ll be guided through each of the four steps below:

  1. Write a Python script. (Not too familiar with Python? Don’t worry; a sample script is provided that you can modify to meet your specific needs.)
  2. Create a script tool.
  3. Add the script tool to ModelBuilder.
  4. Run the model.

If you want to view the completed script tool and see how it works in an existing model, download this project to follow along.

Step 1: Write a Python script

The code below publishes a new web feature layer or overwrites an existing web feature layer in ArcGIS Online or ArcGIS Enterprise. Copy and paste the script in a text editor like Notepad and save it as a Python file (.py). This script can be modified to meet your specific needs. You’ll learn how to do this under Next Steps at the end of this article. If you would like to learn more about this publishing script and others like it, see Introduction to arcpy.sharing.

Step 2: Create a script tool

Next, follow all three sections below to create a script tool.

Create a custom toolbox to store your tool

1. Open your ArcGIS Pro project. In the Catalog pane, right-click Toolboxes and click New Toolbox.

Create a new toolbox

2. On the New Toolbox dialog box, provide a name for your toolbox and click Save.

Import the Python script

  1. In the Catalog pane, right-click the new toolbox you just created, and select New > Script.
  2. On the New Script dialog box, under General, provide the following:
    Name: PublishWebFeatureLayer
    Label: Publish Web Feature Layer
  1. Browse to the location of the Python script file you saved earlier. Select the file and click OK.
  2. Check Import script.
  3. Leave the Tool Properties dialog box open for the next section.
Script tool properties

Define the parameters of your script tool

Parameters are variables that serve as inputs for your script tool. When you run the tool, the Python script reads the parameter values before executing the rest of the script.

Under Parameters, add the following parameters with their properties:

Note: These properties can be modified based on your preferences. (For example, you can change the Share With Organization parameter so that it defaults to SHARE_ORGANIZATION instead of NO_SHARE_ORGANIZATION.)

0. Label: Map
    Name: in_map
    Data Type: Map
    Type: Required
    Direction: Input

1. Label: Web Layer Name
    Name: service
    Data Type: String
    Type: Required
    Direction: Input

2. Label: Summary
    Name: summary
    Data Type: String
    Type: Optional
    Direction: Input

3. Label: Tags
    Name: tags
    Data Type: String
    Type: Optional
    Direction: Input

4. Label: Description
    Name: description
    Data Type: String
    Type: Optional
    Direction: Input

5. Label: Overwrite Existing Web Layer
    Name: overwrite_existing_service
    Data Type: Boolean
    Type: Optional
    Direction: Input

6. Label: Enable Editing
    Name: enableEditing
    Data Type: Boolean
    Type: Optional
    Direction: Input
    Category: Configuration

7. Label: Enable Sync
    Name: enableSync
    Data Type: Boolean
    Type: Optional
    Direction: Input
    Category: Configuration

8. Label: Enable WFS
    Name: enableWFS
    Data Type: Boolean
    Type: Optional
    Direction: Input
    Category: Configuration

9. Label: Time zone
    Name: timezone
    Data Type: String
    Type: Optional
    Direction: Input
    Category: Configuration

10. Label: Share With Everyone
      Name: share_public
      Data Type: String
      Type: Optional
      Direction: Input
      Category: Share with
      Filter: Value List
                   PUBLIC
                   PRIVATE
      Default: PRIVATE

11. Label: Share With Organization
      Name: share_organization
      Data Type: String
      Type: Optional
      Direction: Input
      Category: Share with
      Filter: Value List
                   SHARE_ORGANIZATION
                   NO_SHARE_ORGANIZATION
      Default: NO_SHARE_ORGANIZATION

12. Label: Share With Groups
      Name: share_groups
      Data Type: String
      Type: Optional
      Direction: Input
      Category: Share with

13. Label: Output Directory
      Name: sddraft_output_directory
      Data Type: Folder
      Type: Required
      Direction: Input
      Category: Output

14. Label: Rest Endpoint
      Name: Rest_Endpoint
      Data Type: String
      Type: Derived
      Direction: Output

Script tool parameters

Now that you’ve imported your script and set parameters for your tool, click OK on the Tool Properties dialog box.

Learn more about setting script tool parameters

Let’s examine the script tool you created. Double-click your script tool to open it.

Publish Web Feature Layer script tool

Publish Web Feature Layer is now a custom geoprocessing tool that can be run like any other system geoprocessing tool. It’s ready to be added to a model.

Optional: Include metadata

When creating a custom geoprocessing tool, it’s recommended to include documentation that helps others use your tool.

Right-click your script and click Edit Metadata.

Enter tags, summary, and usage. Under Syntax, fill out the fields below and click Save.

in_map:

Dialog Explanation: Map to publish.

Scripting Explanation: Map object of the map to publish.

service:

Dialog Explanation: Enter the name of a new or existing web layer. If the name already exists, the web layer will be overwritten. Otherwise, a new web layer will be created.

Scripting Explanation: A string that represents the service name.

summary:

Dialog Explanation: Enter a short summary of the web layer.

Scripting Explanation: A string that represents summary.

tags:

Dialog Explanation: Enter keywords or terms that describe the web layer.

Scripting Explanation: A string that represents tags, with different tags separated by comma.

description:

Dialog Explanation: Enter an in-depth description of the item.

Scripting Explanation: A string that represents a description.

overwrite_existing_service:

Dialog Explanation: If checked and a web layer with the same name exists, it will be overwritten.

Scripting Explanation: A Boolean that determines whether to overwrite an existing web layer.

enableEditing:

Dialog Explanation: Allow users to edit the web layer.

Scripting Explanation: A Boolean that determines whether to enable editing.

enableSync:

Dialog Explanation: Disconnected editing with synchronization.

Scripting Explanation: A Boolean that determines whether to enable sync.

enableWFS:

Dialog Explanation: Include a WFS layer.

Scripting Explanation: A Boolean that determines whether to share a WFS layer as well.

timezone:

Dialog Explanation: Enter the time zone in which your date values are stored.

Scripting Explanation: A string to set the time zone.

share_public:

Dialog Explanation: Share web layer with the public.

Scripting Explanation: A string that determines if the layer is PUBLIC or PRIVATE.

share_organization:

Dialog Explanation: Share web layer with all authenticated users in your organization.

Scripting Explanation: A string that determines whether the layer is shared to the organization.

share_groups:

Dialog Explanation: Share web layer with groups you belong to and its members.

Scripting Explanation: List of existing groups that the layer is to be shared to.

sddraft_output_directory:

Dialog Explanation: The folder on disk where your .sddraft and .sd files will be stored.

Scripting Explanation: Output directory to create .sddraft and .sd files.

Step 3: Add the script tool to ModelBuilder

To use the tool in ModelBuilder, open an existing model or right-click the toolbox and select New > Model to create a new model. Right-click the script in your toolbox and click Add To Model (or drag it into your model).

Model with Publish Web Feature Layer as a custom geoprocessing tool

You can include other geoprocessing tools in your model. For example, you can set other processes as preconditions so that they execute before the web layer is overwritten. To learn more, see Use ModelBuilder.

Step 4: Run the model

Double-click the tool and fill out the fields. To overwrite a web layer, provide the name of the existing web layer and check the Overwrite Existing Web Layer check box. If the name already exists, the web layer will be overwritten. Otherwise, a new web layer will be created. Before running it, validate the model to ensure that it will successfully run by clicking ModelBuilder > Run > Validate. Once the model has been validated, click Run to run the entire model. You can also schedule a model to run repeatedly or at a designated time.

Run the model

After the model successfully runs, add the web layer to a map in ArcGIS Pro or open it in Map Viewer.

Next steps

In this article, you learned how to publish and overwrite web feature layers in ModelBuilder by creating and running a script tool in a model. One of the advantages of authoring your own script tool is that you can modify it to meet your specific needs. A couple of examples are provided below. If you want to learn more about automating sharing workflows in ArcGIS Pro, see Introduction to arcpy.sharing.

Let’s suppose you want to publish your web feature layer to a portal folder and allow users to export the data. This can be done by adding the portalFolder and allowExporting properties in the FeatureSharingDraft.

Right-click the script tool in your toolbox and click Edit. Modify the Python file as shown below.

Modify the Python file to include portal and export properties
Modify the Python file to include portal and export properties

Save the file. Right-click the script tool and click Properties. Add two more script tool parameters (6 and 11) for the new properties.

Add the new parameters to the script tool

Using what you’ve learned in the previous sections, you can create a script tool specific to map image layers. The code below publishes or overwrites a map image layer on ArcGIS Enterprise. Follow the same steps discussed previously: save the code as a new Python file (.py), create a script tool, import the .py file, and define script tool parameters. Add the script tool to ModelBuilder and run the model when you have configured it to meet your needs.

The need for readily available information during times of crisis makes your GIS work invaluable. In this article, we’ve discussed how to create and use script tools and ModelBuilder in ArcGIS Pro to efficiently publish and update your web layers. Learn more about how to share your work in ArcGIS Pro.

About the author

Jonah is a product engineer and writer on the ArcGIS Pro Sharing Team with a background in environmental science.

Connect:
25 Comments
Oldest
Newest
Inline Feedbacks
View all comments

Next Article

Engaging Volunteers for a Cause

Read this article