The ArcGIS API for Python team has worked diligently to enhance the user experience of working with the API. All of this work culminated with a major release to v2.0 in February 2022, which focused on improving performance and security for our users, framework and UX upgrades, introduction of new modules and functionality, and removal of deprecated functionality. In the June 2022 release of version 2.0.1, the team has continued to improve many of these features. Here are some highlights organized into common workflows and themes:
Core API
More is always better…right? When it comes to security, we think so. We worked closely with teams developing the urllib3 and requests libraries, and the result is a big improvement in our handling of port forward proxies, which has been highly requested on the Esri Community. We now generate tokens with terms and conditions and check more locations for token presence, assign the API Key security handler, and add proxy detection and certificate verification to the arcgis.auth module. Looking ahead, we will continue to keep the API secure and add new ways to avoid security threats.
Given the varied organizational configurations the API encounters, we constantly review and revise how we structure requests and responses, so they provide us with clearer direction to track down specific error causes. We continued adding details to login messages and zeroed in on the return information from invalid logins. In particular, with OAuth2, we changed how we assign some variables to determine what information is missing. We also tracked down situations where a missing security question in ArcGIS Online raised an uninformative error. So now we handle these situations!
Administration
In 2.0.1, we introduced several new capabilities for ArcGIS Online and ArcGIS Enterprise administrators via the new arcgis.gis.sharing submodule. With the new invitations property on any user object, you can administer accepting or declining of group invitations by your individual organization’s users through the module’s classes. Powerful additions to the report property and the new provisions method will make maintaining your licenses smooth as silk. Check out the full 2.0.1 release notes for more details on organization administration.
Content Management
Type hinting is here! We took the leap and added this functionality to further clean up the architecture for the API. Implementing type hints improves your experience by making explicit the types we’re using and by weaning the API off any excessive dependency on multiple return types, overloaded methods, or duck typing. It took effort to add type hinting in order to modernize and improve the work of IDEs and Linters with the API, but you will find it totally worthwhile!
Although we love to write Python code, we are a GIS company after all, and maps are central to everything we do. Therefore, we have added several new features such as the configure_pop_ups() and view_bookmarks() methods to improve the experience of working with web maps in the map widget. Stop hunting through your web map’s data. Instead, access a method to make your pop-ups, well…POP! And with view_bookmarks(), a single method enables or disables that functionality, so combined with the bookmarks property, your web map visualizations are all that simpler to control.
Huge additions to the arcgis.apps.storymap submodule really amp up your ability to automate your StoryMapping. Some behind-the-scenes security checks enable you to easily create multiple StoryMap objects. In addition, the publish argument within the save() method now lets you publish directly from where you’re using the API. Plus, we reworked how the map node updates layers, so layer management is snappier than ever. Don’t forget to check out the new get() method on the Sidecar to unlock full editing on that node. So good!
Analysis and Data Science
In version 2.0.1, we listened to your feedback and added several enhancements and new functionalities related to the APIs’ analysis and data science capabilities. One of the main focus areas has been on creating better interoperability between ArcGIS Pro data (e.g. feature classes) and WebGIS data (e.g. hosted feature layers), and to improve data I/O between ArcPy and the ArcGIS API for Python. Currently, this interoperability is mainly achieved using the Spatially Enabled DataFrame (SeDF), which is an easy way to convert feature classes/feature layers to Pandas DataFrames, do your data wrangling and manipulation, then convert back to whatever GIS data model you require.
In version 2.0.1, we also improved the type hinting when bringing feature layers in as SeDF such that it aligns better with the ArcGIS Pro geodatabase data model. We have also added the ability for the SeDF to directly ingest ArcGIS Pro layer objects, and improved the interoperability between the ArcGIS API for Python feature set and the ArcPy feature set. Going forward, we will continue to focus on implementing user suggestions and strengthening this interoperability story.
Diving into the feature analysis tools, you’ll see another great addition that will be helpful to many users. In version 2.0.1, several of the feature analysis tools now support overwrite as a key in the context parameter. When you set this key to True, you can overwrite an existing feature layer with the output of a feature analysis tool. We will continue to add support for overwrite in all other feature analysis tools in future releases.
Last, we can’t forget the arcgis.learn module of the API. The sheer amount of new capabilities in this module is far too extensive to include here, so check out our help documentation for all new things in arcgis.learn.
Documentation
One of first things you may notice when visiting the ArcGIS API for Python documentation home page is that it has a completely different look and feel than previous versions. Migrating the old documentation to this new framework is aimed at improving the user experience of working with the API, as well as making it visually consistent with all other ArcGIS Developer APIs (e.g. ArcGIS API for JavaScript, ArcGIS Runtime API for .NET, etc.). Many of the driving forces behind this migration have been based on your feedback and suggestions. Here are a few examples:
- The Guides have been moved from the banner at the top of the screen to the left side of the documentation home page itself.
- Both the Guides and Samples have a new responsive design which allows for a better experience when viewing them on mobile devices (e.g. less scrolling, easier navigation).
- All Guides and Samples have an automatic table of contents (TOC) located at the top of the page. The headings within the TOC are highlighted as you scroll through the corresponding section in each Guide or Sample, and you have the ability to navigate to any section from the TOC.
- Search functionality has improved type hinting so users can query a specific topic in the documentation and jump directly to it.
- Content on the left side of the home page can be expanded into subgroups, which allows you to navigate to specific sections and eliminates timely and unnecessary scrolling through large documents.
Guides and samples
We’ve also continued our efforts to build practical Guides and Samples for our users. In the Guides, we’ve restructured the original three guides for Working with Big Data into ten new guides, covering different spatial analytical methods for big data, data enrichment, and building custom big data GeoAnalytics tools. We’ve also added two new guides to support deep learning workflows such as image translation using Generative Adversarial Networks and Automated Deep Learning (AutoDL).
The five newly added Samples at version 2.0.1 include:
- Training a wind turbine detection model using large volumes of training data
- Lunar Craters Detection using Deep Learning
- Landsat 8 to Sentinel-2 using Pix2Pix
- Image scene classification using FeatureClassifier
- Covid case forecasting Using TimeSeriesModel from arcgis.learn
Esri Community
We want to remind you to check out the ArcGIS API for Python Esri Community page, where you can ask questions, suggest ideas for enhancements and improvements, connect with other users, and read recent blogs. The team really does monitor these pages very closely, and we use your feedback and suggestions to help us prioritize what we build into the API going forward. So please use it!
Article Discussion: