Sharing Python Tools - Practical Solutions and Considerations

As a Python enthusiast, I've integrated automation into many of my daily GIS tasks over the past decade. However, I recognize that not everyone shares my passion for coding. At work, I'm always willing to answer questions and demonstrate programmatic solutions to everyday problems. But I also aim to avoid being preachy or condescending.

When I develop solutions that could benefit my team, I consider various methods for sharing them:

Solution Adoption Rate Reason
Jupyter Notebooks Low People are generally reluctant to learn how to use them.
Python Script Geoprocessing Tools (ArcGIS Pro) High Team members are already familiar with these tools.
Python Scripts with UI (Tkinter) High Simple and easy to use, can be deployed with a .bat file.
Streamlit Apps Low Cannot run them on their own, security concerns related to running them in the cloud.

Each of these solutions has its own pros and cons, but I have found ways to use each of them in different situations.

Important Constraints

Constraint Challenge Solution
Python Package Installation Installing new Python packages is not easy. Constrain solutions to use only packages available by default in ArcGIS Pro.
Running Python Code Running Python code correctly can be difficult. Ensure solutions run within ArcGIS Pro or use simple deployment methods like .bat files.
Jupyter Notebooks Notebooks are difficult to use unless interested. Avoid using notebooks unless there is a strong push for their adoption.
Hosting Web Apps Not easy to host web apps on the intranet. Explore internal hosting options or justify the need for a dedicated server or cloud solution.
External Python Code Execution Cannot use arcpy outside of ArcGIS Pro (e.g., Streamlit). Use alternatives like geopandas for geoprocessing and folium for mapping.

Additional Suggestions

Documentation and Training
- Provide clear and concise documentation and training sessions.
- Create short tutorial videos to demonstrate tool usage effectively.

User Feedback
- Regularly solicit feedback to understand user pain points and improve tools.
- Incorporate user suggestions to enhance user-friendliness.

Incremental Adoption
- Start with small projects to demonstrate the value of automation.
- Gradually introduce more complex solutions as users become more comfortable.

IT Collaboration
- Work with the IT department to explore secure options for hosting web apps.
- Advocate for dedicated resources for automation and web app hosting.

Hybrid Solutions
- Use interfaces that users are familiar with and gradually introduce new ones with proper support.
- Consider hybrid solutions that combine simpler tasks automated within ArcGIS Pro with more complex external tools.

Community Building
- Foster a community of practice within the team for sharing scripts, tips, and tricks.
- Encourage collaboration and knowledge sharing to build a supportive learning environment.

By focusing on these areas, we can bridge the gap between technical and non-technical users, making Python-based automation more accessible and beneficial for everyone on the team.